Fix case-sensitive relationship type compares

Relationship type names are data and the seeded rows mix casings
(controls, Controlled By, connectedto); the PC and machine detail/form
pages compared === Controls and silently showed no relationships.
Compares are now case-folded in all 7 sites.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
cproudlock
2026-07-11 14:30:02 -04:00
parent 26c280df25
commit e6edbd23f8
3 changed files with 17 additions and 7 deletions

View File

@@ -252,13 +252,18 @@ const equipment = ref(null)
const { warranties, heroWarranty, warrantyDate } = useWarrantyBadge(() => equipment.value?.assetid)
const relationships = ref({ incoming: [], outgoing: [] })
// type name is data, sites may seed 'controls' or 'Controls' - compare folded
function isControls(rel) {
return (rel.relationshiptypename || '').toLowerCase() === 'controls'
}
const controllingPc = computed(() => {
// For equipment, find a related computer in any "Controls" relationship
// Check both incoming (computer controls this) and outgoing (legacy data may have equipment -> computer)
// First check incoming - computer as source controlling this equipment
for (const rel of relationships.value.incoming || []) {
if (rel.sourceasset?.assettypename === 'computer' && rel.relationshiptypename === 'Controls') {
if (rel.sourceasset?.assettypename === 'computer' && isControls(rel)) {
return {
...rel.sourceasset,
relationshipType: rel.relationshiptypename
@@ -268,7 +273,7 @@ const controllingPc = computed(() => {
// Also check outgoing - legacy data may have equipment -> computer Controls relationships
for (const rel of relationships.value.outgoing || []) {
if (rel.targetasset?.assettypename === 'computer' && rel.relationshiptypename === 'Controls') {
if (rel.targetasset?.assettypename === 'computer' && isControls(rel)) {
return {
...rel.targetasset,
relationshipType: rel.relationshiptypename

View File

@@ -473,8 +473,8 @@ onMounted(async () => {
relationshipTypes.value = [{ relationshiptypeid: 1, relationshiptype: 'Controls' }]
}
// Set default relationship type to "Controls" if available
const controlsType = relationshipTypes.value.find(t => t.relationshiptype === 'Controls')
// Set default relationship type to "Controls" if available (name is data, compare folded)
const controlsType = relationshipTypes.value.find(t => (t.relationshiptype || '').toLowerCase() === 'controls')
if (controlsType) {
relationshipTypeId.value = controlsType.relationshiptypeid
}
@@ -515,7 +515,7 @@ onMounted(async () => {
// Check incoming relationships for a controlling PC
for (const rel of relationships.incoming || []) {
if (rel.sourceasset?.assettypename === 'computer' && rel.relationshiptypename === 'Controls') {
if (rel.sourceasset?.assettypename === 'computer' && (rel.relationshiptypename || '').toLowerCase() === 'controls') {
controllingPcId.value = rel.sourceasset.assetid
relationshipTypeId.value = rel.relationshiptypeid
existingRelationshipId.value = rel.assetrelationshipid

View File

@@ -272,13 +272,18 @@ const installedApps = ref([])
// Warranty fetch + hero badge (shared across asset detail pages).
const { warranties, heroWarranty, warrantyDate: formatWarrantyDate } = useWarrantyBadge(() => computer.value?.assetid)
// type name is data, sites may seed 'controls' or 'Controls' - compare folded
function isControls(rel) {
return (rel.relationshiptypename || '').toLowerCase() === 'controls'
}
const controlledEquipment = computed(() => {
// For computers, find related equipment in any "Controls" relationship
const items = []
// Check outgoing - computer controls equipment
for (const rel of relationships.value.outgoing || []) {
if (rel.targetasset?.assettypename === 'equipment' && rel.relationshiptypename === 'Controls') {
if (rel.targetasset?.assettypename === 'equipment' && isControls(rel)) {
items.push({
...rel.targetasset,
relationshipid: rel.relationshipid,
@@ -289,7 +294,7 @@ const controlledEquipment = computed(() => {
// Also check incoming - legacy data may have equipment -> computer Controls relationships
for (const rel of relationships.value.incoming || []) {
if (rel.sourceasset?.assettypename === 'equipment' && rel.relationshiptypename === 'Controls') {
if (rel.sourceasset?.assettypename === 'equipment' && isControls(rel)) {
items.push({
...rel.sourceasset,
relationshipid: rel.relationshipid,