mirror of
https://github.com/fluxscape/fluxscape.git
synced 2026-01-11 23:02:55 +01:00
chore(editor): Convert Universal Search to TypeScript (#89)
This commit is contained in:
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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) {
|
||||||
Reference in New Issue
Block a user