chore(editor): Convert Universal Search to TypeScript (#89)

This commit is contained in:
Eric Tuvesson
2025-02-25 13:55:53 +01:00
committed by GitHub
parent 0e13a8b033
commit 2cfd36147a
2 changed files with 31 additions and 28 deletions

View File

@@ -72,7 +72,7 @@ export class NodeGraphNode extends Model {
metadata?: Record<string, any>; metadata?: Record<string, any>;
private _variant: TSFixme; private _variant: TSFixme;
private _label: TSFixme; _label: TSFixme;
private _type: TSFixme; private _type: TSFixme;
private _ports: TSFixme; private _ports: TSFixme;

View File

@@ -1,13 +1,16 @@
const { ProjectModel } = require('../models/projectmodel'); import type { ComponentModel } from '@noodl-models/componentmodel';
import type { NodeGraphNode } from '@noodl-models/nodegraphmodel';
function matchStrings(string1, string2) { import { ProjectModel } from '../models/projectmodel';
function matchStrings(string1: string, string2: string) {
return string1.toLowerCase().indexOf(string2.toLowerCase()) !== -1; return string1.toLowerCase().indexOf(string2.toLowerCase()) !== -1;
} }
function searchInNodeRecursive(node, searchTerms, component) { function searchInNodeRecursive(node: NodeGraphNode, searchTerms: string, component: ComponentModel) {
var results = []; let results = [];
var matchLabel = null; let matchLabel = null;
var i = 0; let i = 0;
if (node._label !== undefined && matchStrings(node._label, searchTerms)) { if (node._label !== undefined && matchStrings(node._label, searchTerms)) {
matchLabel = node.label; matchLabel = node.label;
@@ -16,7 +19,7 @@ function searchInNodeRecursive(node, searchTerms, component) {
} else if (matchStrings(node.type.displayName || node.type.name, searchTerms)) { } else if (matchStrings(node.type.displayName || node.type.name, searchTerms)) {
matchLabel = node.label; matchLabel = node.label;
} else { } else {
let parameterNames = Object.keys(node.parameters); const parameterNames = Object.keys(node.parameters);
for (const parameterNameIndex in parameterNames) { for (const parameterNameIndex in parameterNames) {
const parameterName = parameterNames[parameterNameIndex]; const parameterName = parameterNames[parameterNameIndex];
@@ -25,7 +28,7 @@ function searchInNodeRecursive(node, searchTerms, component) {
matchStrings(node.parameters[parameterName], searchTerms) matchStrings(node.parameters[parameterName], searchTerms)
) { ) {
let displayLabel = parameterName; let displayLabel = parameterName;
let connectionPort = node.type.ports?.find((port) => port.name === parameterName); const connectionPort = node.type.ports?.find((port) => port.name === parameterName);
if (connectionPort) { if (connectionPort) {
displayLabel = connectionPort.displayName; displayLabel = connectionPort.displayName;
} }
@@ -51,9 +54,9 @@ function searchInNodeRecursive(node, searchTerms, component) {
} }
if (matchLabel === null) { if (matchLabel === null) {
var ports = node.dynamicports; const ports = node.dynamicports;
for (i = 0; i < ports.length; ++i) { for (i = 0; i < ports.length; ++i) {
var port = ports[i]; const port = ports[i];
if (matchStrings(port.name, searchTerms)) { if (matchStrings(port.name, searchTerms)) {
matchLabel = node.label + ' : ' + port.name; matchLabel = node.label + ' : ' + port.name;
break; break;
@@ -62,9 +65,9 @@ function searchInNodeRecursive(node, searchTerms, component) {
} }
if (matchLabel === null) { if (matchLabel === null) {
var ports = node.ports; const ports = node.ports;
for (i = 0; i < ports.length; ++i) { for (i = 0; i < ports.length; ++i) {
var port = ports[i]; const port = ports[i];
if (matchStrings(port.name, searchTerms)) { if (matchStrings(port.name, searchTerms)) {
matchLabel = node.label + ' : ' + port.name; matchLabel = node.label + ' : ' + port.name;
break; break;
@@ -84,16 +87,16 @@ function searchInNodeRecursive(node, searchTerms, component) {
} }
for (i = 0; i < node.children.length; ++i) { for (i = 0; i < node.children.length; ++i) {
var child = node.children[i]; const child = node.children[i];
var childResults = searchInNodeRecursive(child, searchTerms, component); const childResults = searchInNodeRecursive(child, searchTerms, component);
results = results.concat(childResults); results = results.concat(childResults);
} }
return results; return results;
} }
function searchInComponent(component, searchTerms) { function searchInComponent(component: ComponentModel, searchTerms: string) {
var results = []; let results = [];
if (matchStrings(component.displayName, searchTerms)) { if (matchStrings(component.displayName, searchTerms)) {
results.push({ results.push({
componentTarget: component, componentTarget: component,
@@ -102,14 +105,14 @@ function searchInComponent(component, searchTerms) {
}); });
} }
for (var i = 0; i < component.graph.roots.length; ++i) { for (let i = 0; i < component.graph.roots.length; ++i) {
var node = component.graph.roots[i]; const node = component.graph.roots[i];
var nodeResults = searchInNodeRecursive(node, searchTerms, component); const nodeResults = searchInNodeRecursive(node, searchTerms, component);
results = results.concat(nodeResults); results = results.concat(nodeResults);
} }
if (component.graph.commentsModel.comments) { if (component.graph.commentsModel.comments) {
for (var i = 0; i < component.graph.commentsModel.comments.length; ++i) { for (let i = 0; i < component.graph.commentsModel.comments.length; ++i) {
const comment = component.graph.commentsModel.comments[i]; const comment = component.graph.commentsModel.comments[i];
if (matchStrings(comment.text, searchTerms)) { if (matchStrings(comment.text, searchTerms)) {
results.push({ results.push({
@@ -132,17 +135,17 @@ function searchInComponent(component, searchTerms) {
} }
} }
export function performSearch(searchTerms) { export function performSearch(searchTerms: string) {
var results = []; const results = [];
var root = ProjectModel.instance.getRootNode(); const root = ProjectModel.instance.getRootNode();
if (root === undefined) return; if (root === undefined) return;
var components = ProjectModel.instance.components; const components = ProjectModel.instance.components;
for (var i = 0; i < components.length; ++i) { for (let i = 0; i < components.length; ++i) {
var component = components[i]; const component = components[i];
var componentResults = searchInComponent(component, searchTerms); const componentResults = searchInComponent(component, searchTerms);
if (componentResults !== null) { if (componentResults !== null) {
//limit the label length (it can search in markdown, css, etc) //limit the label length (it can search in markdown, css, etc)
for (const result of componentResults.results) { for (const result of componentResults.results) {