Skip to content

Commit babc851

Browse files
authored
Update fast-search-card.js
1 parent faa76a9 commit babc851

File tree

1 file changed

+75
-13
lines changed

1 file changed

+75
-13
lines changed

dist/fast-search-card.js

Lines changed: 75 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11492,59 +11492,121 @@ class FastSearchCard extends HTMLElement {
1149211492
return null;
1149311493
}
1149411494

11495-
11496-
// 🎯 FIND RELATED SCRIPTS
11495+
// 🎯 FIND RELATED SCRIPTS - Erweiterte Metadaten-Analyse
1149711496
findRelatedScripts(deviceId, deviceArea) {
1149811497
if (!this._hass || !this.allItems) return [];
1149911498

11499+
// Device-ID und Area-ID des Ziel-Devices ermitteln
11500+
const targetDeviceId = this.getDeviceId(deviceId);
11501+
const targetAreaId = this.getAreaId(deviceId, deviceArea);
11502+
11503+
console.log(`📜 Target Device ID: ${targetDeviceId}, Area ID: ${targetAreaId}`);
11504+
1150011505
return this.allItems.filter(item => {
1150111506
if (item.domain !== 'script') return false;
1150211507

11503-
// METHODE 1: Gleiche Area
11508+
// METHODE 1: Gleiche Area (bestehend)
1150411509
if (item.area === deviceArea && deviceArea !== 'Ohne Raum') {
1150511510
console.log(`✅ Script ${item.name} in same area: ${deviceArea}`);
1150611511
return true;
1150711512
}
1150811513

11509-
// METHODE 2: Name-Matching
11514+
// 🆕 METHODE 2: Script hat gleiche Area-ID
11515+
const scriptAreaId = this.getAreaId(item.id);
11516+
if (targetAreaId && scriptAreaId === targetAreaId) {
11517+
console.log(`✅ Script ${item.name} has same area ID: ${targetAreaId}`);
11518+
return true;
11519+
}
11520+
11521+
// 🆕 METHODE 3: Script hat gleiche Device-ID
11522+
const scriptDeviceId = this.getDeviceId(item.id);
11523+
if (targetDeviceId && scriptDeviceId === targetDeviceId) {
11524+
console.log(`✅ Script ${item.name} on same device: ${targetDeviceId}`);
11525+
return true;
11526+
}
11527+
11528+
// METHODE 4: Name-Matching (bestehend, aber erweitert)
1151011529
const scriptName = item.name.toLowerCase();
1151111530
const deviceName = deviceId.split('.')[1].toLowerCase();
1151211531
const areaName = deviceArea.toLowerCase();
1151311532

11514-
if (scriptName.includes(deviceName) || scriptName.includes(areaName)) {
11515-
console.log(`✅ Script ${item.name} matches by name`);
11516-
return true;
11533+
// Erweiterte Name-Patterns
11534+
const namePatterns = [
11535+
deviceName,
11536+
areaName,
11537+
deviceId.replace(/[._]/g, ' ').toLowerCase(),
11538+
// Device-spezifische Patterns
11539+
deviceName.replace(/[._]/g, ' '),
11540+
areaName.replace(/[._]/g, ' ')
11541+
];
11542+
11543+
for (const pattern of namePatterns) {
11544+
if (pattern && scriptName.includes(pattern)) {
11545+
console.log(`✅ Script ${item.name} matches pattern: ${pattern}`);
11546+
return true;
11547+
}
1151711548
}
1151811549

1151911550
return false;
1152011551
});
1152111552
}
1152211553

11523-
// 🎯 FIND RELATED AUTOMATIONS
11554+
// 🎯 FIND RELATED AUTOMATIONS - Erweiterte Metadaten-Analyse
1152411555
findRelatedAutomations(deviceId, deviceArea) {
1152511556
if (!this._hass || !this.allItems) return [];
1152611557

11558+
// Device-ID und Area-ID des Ziel-Devices ermitteln
11559+
const targetDeviceId = this.getDeviceId(deviceId);
11560+
const targetAreaId = this.getAreaId(deviceId, deviceArea);
11561+
11562+
console.log(`⚙️ Target Device ID: ${targetDeviceId}, Area ID: ${targetAreaId}`);
11563+
1152711564
return this.allItems.filter(item => {
1152811565
if (item.domain !== 'automation') return false;
1152911566

11530-
// Gleiche Logik wie Scripts
11567+
// METHODE 1: Gleiche Area (bestehend)
1153111568
if (item.area === deviceArea && deviceArea !== 'Ohne Raum') {
1153211569
console.log(`✅ Automation ${item.name} in same area: ${deviceArea}`);
1153311570
return true;
1153411571
}
1153511572

11573+
// 🆕 METHODE 2: Automation hat gleiche Area-ID
11574+
const autoAreaId = this.getAreaId(item.id);
11575+
if (targetAreaId && autoAreaId === targetAreaId) {
11576+
console.log(`✅ Automation ${item.name} has same area ID: ${targetAreaId}`);
11577+
return true;
11578+
}
11579+
11580+
// 🆕 METHODE 3: Automation hat gleiche Device-ID
11581+
const autoDeviceId = this.getDeviceId(item.id);
11582+
if (targetDeviceId && autoDeviceId === targetDeviceId) {
11583+
console.log(`✅ Automation ${item.name} on same device: ${targetDeviceId}`);
11584+
return true;
11585+
}
11586+
11587+
// METHODE 4: Name-Matching (erweitert wie bei Scripts)
1153611588
const autoName = item.name.toLowerCase();
1153711589
const deviceName = deviceId.split('.')[1].toLowerCase();
1153811590
const areaName = deviceArea.toLowerCase();
1153911591

11540-
if (autoName.includes(deviceName) || autoName.includes(areaName)) {
11541-
console.log(`✅ Automation ${item.name} matches by name`);
11542-
return true;
11592+
const namePatterns = [
11593+
deviceName,
11594+
areaName,
11595+
deviceId.replace(/[._]/g, ' ').toLowerCase(),
11596+
deviceName.replace(/[._]/g, ' '),
11597+
areaName.replace(/[._]/g, ' ')
11598+
];
11599+
11600+
for (const pattern of namePatterns) {
11601+
if (pattern && autoName.includes(pattern)) {
11602+
console.log(`✅ Automation ${item.name} matches pattern: ${pattern}`);
11603+
return true;
11604+
}
1154311605
}
1154411606

1154511607
return false;
1154611608
});
11547-
}
11609+
}
1154811610

1154911611
// 🎯 RENDER ACTION RESULTS
1155011612
renderActionResults(relatedActions, container, filter = 'all') {

0 commit comments

Comments
 (0)