Spaces:
Running
Running
var dagcomponentfuncs = window.dashAgGridComponentFunctions = window.dashAgGridComponentFunctions || {}; | |
dagcomponentfuncs.ModelLink = function(props) { | |
if (!props.data.Model_Link) { | |
return props.value; // Just return text if no link | |
} | |
return React.createElement( | |
'a', | |
{ | |
href: props.data.Model_Link, | |
target: '_blank', | |
style: { | |
color: '#007bff', | |
textDecoration: 'none' | |
} | |
}, | |
props.value | |
); | |
}; | |
dagcomponentfuncs.PinRenderer = function(props) { | |
return React.createElement( | |
'div', | |
{ | |
onClick: function() { | |
const api = props.api; | |
const modelId = props.data.Model_Display; | |
const isPinned = props.data.pinned || false; | |
if (isPinned) { | |
// Unpin | |
const currentPinned = api.getGridOption('pinnedTopRowData') || []; | |
const newPinnedRows = currentPinned.filter(row => row.Model_Display !== modelId); | |
api.setGridOption('pinnedTopRowData', newPinnedRows); | |
} else { | |
// Pin | |
const currentPinned = api.getGridOption('pinnedTopRowData') || []; | |
const pinnedRow = {...props.data, pinned: true}; | |
api.setGridOption('pinnedTopRowData', [...currentPinned, pinnedRow]); | |
} | |
}, | |
style: { | |
cursor: 'pointer', | |
textAlign: 'center', | |
fontSize: '16px' | |
} | |
}, | |
props.data.pinned ? 'π' : 'β' | |
); | |
}; | |
dagcomponentfuncs.TypeRenderer = function(props) { | |
const typeMap = { | |
'Base': ['Base', '#ddd'] | |
}; | |
// Determine type from raw flags | |
let type = 'Unknown'; | |
if (props.data['Base']) { | |
type = 'Base'; | |
} | |
const [letter, color] = typeMap[type] || ['', '#999']; | |
return React.createElement('div', { | |
style: { | |
display: 'flex', | |
alignItems: 'center', | |
height: '100%' | |
} | |
}, | |
React.createElement('div', { | |
style: { | |
color: color, | |
display: 'flex', | |
alignItems: 'center', | |
justifyContent: 'center', | |
fontWeight: 'bold', | |
fontSize: '14px', | |
lineHeight: '1', | |
textAlign: 'center' | |
} | |
}, letter) | |
); | |
}; | |
dagcomponentfuncs.BehaviorRenderer = function(props) { | |
const typeMap = { | |
'10': ['10', '#6bde57'], | |
'9': ['9', '#88bd11'], | |
'8': ['8', '#b0d38d'], | |
'7': ['7', '#c3c669'], | |
'6': ['6', '#dabe78'], | |
'5': ['5', '#cb7951'] | |
}; | |
let type = props.data['Behavior']; | |
const [behavior, color] = typeMap[type] || ['?', '#999']; | |
return React.createElement('div', { | |
style: { | |
display: 'flex', | |
alignItems: 'center', | |
height: '100%' | |
} | |
}, | |
React.createElement('div', { | |
style: { | |
color: color, | |
display: 'flex', | |
alignItems: 'center', | |
justifyContent: 'center', | |
fontWeight: 'bold', | |
fontSize: '14px', | |
lineHeight: '1', | |
textAlign: 'center' | |
} | |
}, behavior) | |
); | |
}; | |
dagcomponentfuncs.ScoreRenderer = function(props) { | |
const typeMap = { | |
'10': ['#6bde57'], | |
'9': ['#88bd11'], | |
'8': ['#b0d38d'], | |
'7': ['#c3c669'], | |
'6': ['#dabe78'], | |
'5': ['#cb7951'] | |
}; | |
let type = 'Unknown'; | |
if (props.data['Score'] >= 90) { | |
type = '10'; | |
} else if (props.data['Score'] >= 80) { | |
type = '9'; | |
} else if (props.data['Score'] >= 70) { | |
type = '8'; | |
} else if (props.data['Score'] >= 60) { | |
type = '7'; | |
} else if (props.data['Score'] >= 50) { | |
type = '6'; | |
} else if (props.data['Score'] >= 40) { | |
type = '5'; | |
} | |
const [score, color] = [props.data['Score'], typeMap[type]] || [props.data['Score'], '#999']; | |
return React.createElement('div', { | |
style: { | |
display: 'flex', | |
alignItems: 'center', | |
height: '100%' | |
} | |
}, | |
React.createElement('div', { | |
style: { | |
color: color, | |
display: 'flex', | |
alignItems: 'center', | |
justifyContent: 'center', | |
fontWeight: 'bold', | |
fontSize: '14px', | |
lineHeight: '1', | |
textAlign: 'center' | |
} | |
}, score) | |
); | |
}; |