From 7f8575d81933d82ff3e1836fc50c7d3c92cdb943 Mon Sep 17 00:00:00 2001 From: Akash Gupta Date: Sun, 19 Feb 2023 05:10:49 +0530 Subject: [PATCH 001/553] Added standard Typography files --- mathesar_ui/src/component-library/common/styles/main.scss | 1 + .../component-library/common/styles/typographies/typography.scss | 1 + 2 files changed, 2 insertions(+) create mode 100644 mathesar_ui/src/component-library/common/styles/typographies/typography.scss diff --git a/mathesar_ui/src/component-library/common/styles/main.scss b/mathesar_ui/src/component-library/common/styles/main.scss index 910445d5d4..21d0a056a8 100644 --- a/mathesar_ui/src/component-library/common/styles/main.scss +++ b/mathesar_ui/src/component-library/common/styles/main.scss @@ -1,2 +1,3 @@ @import './variables.scss'; @import 'components/input.scss'; +@import './typographies/typography.scss'; \ No newline at end of file diff --git a/mathesar_ui/src/component-library/common/styles/typographies/typography.scss b/mathesar_ui/src/component-library/common/styles/typographies/typography.scss new file mode 100644 index 0000000000..d0a044ddae --- /dev/null +++ b/mathesar_ui/src/component-library/common/styles/typographies/typography.scss @@ -0,0 +1 @@ +@import './header_typography.scss' \ No newline at end of file From 46c1d91bfc6752821c5427afcb75ccb42a48536e Mon Sep 17 00:00:00 2001 From: Akash Gupta Date: Sun, 19 Feb 2023 05:11:06 +0530 Subject: [PATCH 002/553] Added Header typography file --- .../typographies/header_typography.scss | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 mathesar_ui/src/component-library/common/styles/typographies/header_typography.scss diff --git a/mathesar_ui/src/component-library/common/styles/typographies/header_typography.scss b/mathesar_ui/src/component-library/common/styles/typographies/header_typography.scss new file mode 100644 index 0000000000..ffeaf77159 --- /dev/null +++ b/mathesar_ui/src/component-library/common/styles/typographies/header_typography.scss @@ -0,0 +1,19 @@ +.ultra_large_header { + font-size: var(--text-size-ultra-large); +} + +.large_header { + font-size: var(--size-large); +} + +.normal_bold_header { + font-weight: normal; +} + +.extra_bold_header { + font-weight: 600; +} + +.bold_header { + font-weight: 500; +} \ No newline at end of file From 3a9ed189cc68ff24e669183f406e95e14ede072c Mon Sep 17 00:00:00 2001 From: Akash Gupta Date: Sun, 19 Feb 2023 05:11:18 +0530 Subject: [PATCH 003/553] Changed header files --- mathesar_ui/src/pages/admin-users/UserListingPage.svelte | 4 +--- .../src/pages/import-preview/ImportPreviewPage.svelte | 8 +++----- mathesar_ui/src/pages/record/TableWidget.svelte | 5 +---- mathesar_ui/src/pages/user-profile/ProfilePage.svelte | 6 ++---- 4 files changed, 7 insertions(+), 16 deletions(-) diff --git a/mathesar_ui/src/pages/admin-users/UserListingPage.svelte b/mathesar_ui/src/pages/admin-users/UserListingPage.svelte index 294f4b7995..02317c9387 100644 --- a/mathesar_ui/src/pages/admin-users/UserListingPage.svelte +++ b/mathesar_ui/src/pages/admin-users/UserListingPage.svelte @@ -44,7 +44,7 @@ {#if $requestStatus?.state === 'processing'}

Loading...

{:else if $requestStatus?.state === 'success'} -

+

Users ({filteredUsers.length})

@@ -107,8 +107,6 @@ } h1 { - font-size: var(--text-size-ultra-large); - font-weight: normal; margin: 0; } diff --git a/mathesar_ui/src/pages/import-preview/ImportPreviewPage.svelte b/mathesar_ui/src/pages/import-preview/ImportPreviewPage.svelte index 3a1bb9f7dd..ab1dc8ddb4 100644 --- a/mathesar_ui/src/pages/import-preview/ImportPreviewPage.svelte +++ b/mathesar_ui/src/pages/import-preview/ImportPreviewPage.svelte @@ -341,7 +341,7 @@ {:else}
-

Table Name

+

Table Name

@@ -359,7 +359,7 @@
-

Column names and data types

+

Column names and data types

Column names and data types are automatically detected, use the controls in the preview table to review and update them if @@ -396,7 +396,7 @@ {#if processedColumns.length > 0}

-

Table Preview

+

Table Preview

-

+

@@ -55,9 +55,6 @@ align-items: center; overflow: hidden; - > h3 { - font-weight: 500; - } } .top > :global(*) { overflow: hidden; diff --git a/mathesar_ui/src/pages/user-profile/ProfilePage.svelte b/mathesar_ui/src/pages/user-profile/ProfilePage.svelte index aaf5cecd05..3bea4fb6db 100644 --- a/mathesar_ui/src/pages/user-profile/ProfilePage.svelte +++ b/mathesar_ui/src/pages/user-profile/ProfilePage.svelte @@ -30,7 +30,7 @@

User Profile

{#if userProfile} -

Account Details

+

Account Details

@@ -39,7 +39,7 @@ {#if !userProfile.isSuperUser} -

Delete Account

+

Delete Account

Please contact your administrator to request permanent deletion of your account @@ -57,8 +57,6 @@ From c6d6073ba6b417eed98ff45d35644b1c62b4fc7b Mon Sep 17 00:00:00 2001 From: Akash Gupta Date: Sun, 19 Feb 2023 05:26:01 +0530 Subject: [PATCH 004/553] Lint and formating --- .../src/component-library/common/styles/main.scss | 2 +- .../styles/typographies/header_typography.scss | 12 ++++++------ .../common/styles/typographies/typography.scss | 2 +- .../pages/import-preview/ImportPreviewPage.svelte | 8 ++++++-- .../src/pages/user-profile/ProfilePage.svelte | 8 ++++++-- 5 files changed, 20 insertions(+), 12 deletions(-) diff --git a/mathesar_ui/src/component-library/common/styles/main.scss b/mathesar_ui/src/component-library/common/styles/main.scss index 21d0a056a8..d584c615d2 100644 --- a/mathesar_ui/src/component-library/common/styles/main.scss +++ b/mathesar_ui/src/component-library/common/styles/main.scss @@ -1,3 +1,3 @@ @import './variables.scss'; @import 'components/input.scss'; -@import './typographies/typography.scss'; \ No newline at end of file +@import './typographies/typography.scss'; diff --git a/mathesar_ui/src/component-library/common/styles/typographies/header_typography.scss b/mathesar_ui/src/component-library/common/styles/typographies/header_typography.scss index ffeaf77159..90f8c1b89f 100644 --- a/mathesar_ui/src/component-library/common/styles/typographies/header_typography.scss +++ b/mathesar_ui/src/component-library/common/styles/typographies/header_typography.scss @@ -1,19 +1,19 @@ .ultra_large_header { - font-size: var(--text-size-ultra-large); + font-size: var(--text-size-ultra-large); } .large_header { - font-size: var(--size-large); + font-size: var(--size-large); } .normal_bold_header { - font-weight: normal; + font-weight: normal; } .extra_bold_header { - font-weight: 600; + font-weight: 600; } .bold_header { - font-weight: 500; -} \ No newline at end of file + font-weight: 500; +} diff --git a/mathesar_ui/src/component-library/common/styles/typographies/typography.scss b/mathesar_ui/src/component-library/common/styles/typographies/typography.scss index d0a044ddae..afee2aff2f 100644 --- a/mathesar_ui/src/component-library/common/styles/typographies/typography.scss +++ b/mathesar_ui/src/component-library/common/styles/typographies/typography.scss @@ -1 +1 @@ -@import './header_typography.scss' \ No newline at end of file +@import './header_typography.scss'; diff --git a/mathesar_ui/src/pages/import-preview/ImportPreviewPage.svelte b/mathesar_ui/src/pages/import-preview/ImportPreviewPage.svelte index ab1dc8ddb4..b4ff72ca14 100644 --- a/mathesar_ui/src/pages/import-preview/ImportPreviewPage.svelte +++ b/mathesar_ui/src/pages/import-preview/ImportPreviewPage.svelte @@ -341,7 +341,9 @@ {:else}
-

Table Name

+

+ Table Name +

@@ -359,7 +361,9 @@
-

Column names and data types

+

+ Column names and data types +

Column names and data types are automatically detected, use the controls in the preview table to review and update them if diff --git a/mathesar_ui/src/pages/user-profile/ProfilePage.svelte b/mathesar_ui/src/pages/user-profile/ProfilePage.svelte index 3bea4fb6db..896b9db123 100644 --- a/mathesar_ui/src/pages/user-profile/ProfilePage.svelte +++ b/mathesar_ui/src/pages/user-profile/ProfilePage.svelte @@ -30,7 +30,9 @@

User Profile

{#if userProfile} -

Account Details

+

+ Account Details +

@@ -39,7 +41,9 @@ {#if !userProfile.isSuperUser} -

Delete Account

+

+ Delete Account +

Please contact your administrator to request permanent deletion of your account From 0f9042117fe82bc21d2a9d940bab5e50b818366a Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Wed, 22 Feb 2023 12:33:39 +0200 Subject: [PATCH 005/553] Create ubuntu-debian.md --- docs/docs/installation/ubuntu-debian.md | 27 +++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 docs/docs/installation/ubuntu-debian.md diff --git a/docs/docs/installation/ubuntu-debian.md b/docs/docs/installation/ubuntu-debian.md new file mode 100644 index 0000000000..33b039fda6 --- /dev/null +++ b/docs/docs/installation/ubuntu-debian.md @@ -0,0 +1,27 @@ +# Install on Ubuntu 20.04+ or Debian 11 + +Installation should only take a few minutes. + +## What we will do: +- Prepare our server to run Docker and Docker Compose. Mathesar has been tested with Docker v23 and Docker Compose v2.10 (although v2.0 or higher should work). + - [Docker installation documentation](https://docs.docker.com/desktop/) + - [`docker-compose` installation documentation](https://docs.docker.com/compose/install/) +- Run the install script to pull the required docker-compose.yaml file and start the installation. +- You need to be a user with root access to the machine you're trying to install Mathesar on. + +## Preparing our server. +- Prerequisites + - Ubuntu 20.04 + - Root privileges + - A domain name for your Mathesar installation, pointing to your server. This is however not a necesity. + +### Step one +First, we need to update the software repository and upgrade all packages using the apt command below. SSH to your server and elevate to the `root` user. +```sh +apt update && apt upgrade +``` +### Step two +Clean the system of any potential pre-installed Docker packages. +```sh +apt-get remove docker docker-engien docker.io +``` From bcc9f417fdf6615a56ed351462f4af1477835606 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Wed, 22 Feb 2023 13:14:22 +0200 Subject: [PATCH 006/553] Update and rename ubuntu-debian.md to ubuntu.md --- docs/docs/installation/ubuntu-debian.md | 27 ---- docs/docs/installation/ubuntu.md | 174 ++++++++++++++++++++++++ 2 files changed, 174 insertions(+), 27 deletions(-) delete mode 100644 docs/docs/installation/ubuntu-debian.md create mode 100644 docs/docs/installation/ubuntu.md diff --git a/docs/docs/installation/ubuntu-debian.md b/docs/docs/installation/ubuntu-debian.md deleted file mode 100644 index 33b039fda6..0000000000 --- a/docs/docs/installation/ubuntu-debian.md +++ /dev/null @@ -1,27 +0,0 @@ -# Install on Ubuntu 20.04+ or Debian 11 - -Installation should only take a few minutes. - -## What we will do: -- Prepare our server to run Docker and Docker Compose. Mathesar has been tested with Docker v23 and Docker Compose v2.10 (although v2.0 or higher should work). - - [Docker installation documentation](https://docs.docker.com/desktop/) - - [`docker-compose` installation documentation](https://docs.docker.com/compose/install/) -- Run the install script to pull the required docker-compose.yaml file and start the installation. -- You need to be a user with root access to the machine you're trying to install Mathesar on. - -## Preparing our server. -- Prerequisites - - Ubuntu 20.04 - - Root privileges - - A domain name for your Mathesar installation, pointing to your server. This is however not a necesity. - -### Step one -First, we need to update the software repository and upgrade all packages using the apt command below. SSH to your server and elevate to the `root` user. -```sh -apt update && apt upgrade -``` -### Step two -Clean the system of any potential pre-installed Docker packages. -```sh -apt-get remove docker docker-engien docker.io -``` diff --git a/docs/docs/installation/ubuntu.md b/docs/docs/installation/ubuntu.md new file mode 100644 index 0000000000..8b32aa2e96 --- /dev/null +++ b/docs/docs/installation/ubuntu.md @@ -0,0 +1,174 @@ +# Install on Ubuntu 20.04+ + +Installation should only take a few minutes. + +## What we will do: +- Prepare our server to run Docker and Docker Compose. Mathesar has been tested with Docker v23 and Docker Compose v2.10 (although v2.0 or higher should work). + - [Docker installation documentation](https://docs.docker.com/desktop/) + - [`docker-compose` installation documentation](https://docs.docker.com/compose/install/) +- Run the install script to pull the required docker-compose.yaml file and start the installation. +- You need to be a user with root access to the machine you're trying to install Mathesar on. + +## Preparing our server. +- Prerequisites + - Ubuntu 20.04 + - Root privileges + - A domain name for your Mathesar installation, pointing to your server. This is however not a necesity. + +### Step one +First, we need to update the software repository and upgrade all packages using the apt command below. SSH to your server and elevate to the `root` user. +```sh +apt update && apt upgrade +``` +### Step two +Clean the system of any potential pre-installed Docker packages. +```sh +apt-get remove docker docker-engien docker.io +``` +### Step three: Installing Docker +We wil now install Docker on this systme. +Firstly, we have to install the required Docker dependencies on the system: +```sh +sudo apt install apt-transport-https ca-certificates curl software-properties-common +``` +The next step is to add Docker's official GPG key to the keyring. This is to ensure the validity of downloaded Docker packages from it's repository. +```sh +curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - +``` +Now that the key is added, we can add the stable repo for Docker. +```sh +sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable" +``` +We have to update the system: +```sh +apt update +``` +We can now install Docker using the following command: +```sh +sudo apt install docker-ce +``` +Once installation is completed, you can run the following commands to make sure that Docker is running, and that it will start with the system. +```sh +systemctl enable docker && systemctl start docker +``` + +### Step four : Install Docker-compose +We will install Docker-compose next. We will start by downloading the latest Docker-compose version. +```sh +sudo curl -L "https://github.com/docker/compose/releases/download/2.16.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose +``` +Once downloaded, we have to change the properties so that it is an executable: + +```sh +sudo chmod +x /usr/local/bin/docker-compose +``` +That is it. Now the server is run Mathesar. + +## Quickstart +To install the newest version of Mathesar, cut-and-paste the below command into a terminal window and follow the instructions: +#### Important +Do not use 'admin' as your login username. Create a unique login username. + +```sh +bash <(curl -sL https://raw.githubusercontent.com/centerofci/mathesar/master/install.sh) +``` + +To access Mathesar, navigate to `localhost` in your web browser (if installed locally) or to your server IP or it's domain name, and login using the admin user name and password you set during the installation. + +## Administration + +For the commands below, you need to replace `$MATHESAR_CONFIG_DIR` with the actual value you set during the installation process. By default, this should be `/etc/mathesar`. + +### Starting and stopping Mathesar + +The command to stop all containers used for Mathesar, and release their ports, etc. is: +```sh +sudo docker compose -f $MATHESAR_CONFIG_DIR/docker-compose.yml --profile prod down +``` + +The command to start Mathesar (say, after stopping it, or a reboot of the machine) is: +```sh +sudo docker compose -f $MATHESAR_CONFIG_DIR/docker-compose.yml --profile prod up +``` + +### Upgrading Mathesar +The command to manually upgrade Mathesar to the newest version is: + +```sh +sudo docker exec mathesar-watchtower-1 /watchtower --run-once +``` + +## Under the Hood + +### Installation Steps +These are the steps that the installation script performs, explained in more depth: + +#### Docker Version Check + +The installer double-checks your Docker and Docker Compose versions, making sure that `docker` is at least version 20.0.0, and `docker-compose` is at least version 2.0.0. + +#### Database Configuration + +Mathesar actually uses two databases; one internal system database for metadata such as table display options, and a separate user database for your actual table data. The installer helps you set up credentials for both databases (a username and password), and also lets you customize the name of your user database. Finally, Mathesar helps you customize the port exposed to your host machine from the database container. This is useful, since you'll need to have an exposed port to login to the Mathesar database(s) using an alternate client such as `psql`, but there could be a conflict on the default port. + +The credentials created in this section are used to login directly to the database (i.e., not through the Mathesar UI). + +#### Webserver Configuration + +This section lets you customize the details of the webserver that provides the Mathesar web UI, and API endpoints. Most of the customizations available here are only relevant if you're planning to expose your installation of Mathesar to the wider internet. You can configure the domain as well as the ports to use for http and https traffic, respectively. + +#### Admin User Configuration + +Here, the installer helps you create a user (separate from the database user) that you will use to login to Mathesar through the main web UI. This section walks you through that process to create a username and password for that user. You're allowed to use the same details as the database user above, but it's not required, or particularly recommended. The user created in this section will have admin privileges in Mathesar, and be able to create other users after the installation is complete. + +#### Configuration Directory + +We need to store all the details configured above, and we do so in a file in your configuration directory. Note that this contains your passwords and other secrets, so **it should be kept secure**. By default, this directory is `/etc/mathesar/`, but you can change it. + +We'll store two files under that directory: +- `.env`: This file has the above-mentioned configurations. +- `docker-compose.yml` This is a config file downloaded from Mathesar's git repo. It defines the different Docker containers used by Mathesar, and how they're networked together. + +#### Docker Setup + +- The installer downloads the `docker-compose.yml` file from Mathesar's repo. +- The installer pulls all Docker images needed for Mathesar to run properly, and starts the various services in sequence. + +#### Final Steps + +If everything has worked, then the installer prints a message letting you know that it's succeeded, and gives a little information about where you should go to login to Mathesar. + +### Docker containers +This installation process creates the following containers: +- `mathesar_service`, which runs the main Mathesar application. +- `mathesar_db`, which which runs the database (PostgreSQL 13). +- `mathesar-caddy-reverse-proxy-1`, which helps route traffic to the `mathesar_service` container. +- `mathesar-watchtower-1`, which helps upgrade Mathesar installation when new releases are available. + +### Files +This installation process creates the following files in the Mathesar configuration directory: +- `.env`. This file defines the environment inside of the various Mathesar `docker` containers. It should be kept safe, since it has sensitive information about the passwords you set for Mathesar. If you've forgotten your admin username or password, look at this file. +- `docker-compose.yml`. This is the main file defining the Mathesar containers listed above, and the connections between them. + +## Troubleshooting + +### Docker versions + +The most common problem we've encountered is users with out-of-date `docker` or `docker-compose` versions. + +- To determine your `docker-compose` version, run `docker compose version`. (Note the lack of hyphen.) You need `docker-compose` version 2.0 or higher for the installation to succeed. Better if it's version 2.10 or higher. +- To determine your `docker` version, run `docker --version`. We've tested with `docker` version 23, but lower versions may work. + +If you run `docker-compose --version` and see a relatively old version, try `docker compose version` and see whether it's different. The latter is the version that will be used in the script. + +### Ports + +You may see errors about various ports being unavailable (or already being bound). In this case, please restart from a clean `docker` state, and choose non-default ports during the installation process for PostgreSQL, http traffic, or https traffic as appropriate. + +### Permissions + +If you have permissions issues when the script begins running `docker` commands, please double-check that your user is in the `sudoers` file. Try running `sudo -v`. If that gives an error, your user lacks needed permissions and you should speak with the administrator of your system. + +## Getting more help + +If you're having an issue not covered by this documentation, please open an issue [on GitHub](https://github.com/centerofci/mathesar/issues). From c3930fcae67230f21579fc73ae3127d009859786 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Wed, 22 Feb 2023 13:15:00 +0200 Subject: [PATCH 007/553] Update ubuntu.md --- docs/docs/installation/ubuntu.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/installation/ubuntu.md b/docs/docs/installation/ubuntu.md index 8b32aa2e96..651862fae3 100644 --- a/docs/docs/installation/ubuntu.md +++ b/docs/docs/installation/ubuntu.md @@ -26,7 +26,7 @@ Clean the system of any potential pre-installed Docker packages. apt-get remove docker docker-engien docker.io ``` ### Step three: Installing Docker -We wil now install Docker on this systme. +We wil now install Docker on this system. Firstly, we have to install the required Docker dependencies on the system: ```sh sudo apt install apt-transport-https ca-certificates curl software-properties-common From a1dc97d820e7eb19d7acfcdaea213d86495b1a32 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Wed, 22 Feb 2023 13:16:08 +0200 Subject: [PATCH 008/553] Update ubuntu.md --- docs/docs/installation/ubuntu.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/docs/installation/ubuntu.md b/docs/docs/installation/ubuntu.md index 651862fae3..d20270c700 100644 --- a/docs/docs/installation/ubuntu.md +++ b/docs/docs/installation/ubuntu.md @@ -65,10 +65,13 @@ sudo chmod +x /usr/local/bin/docker-compose That is it. Now the server is run Mathesar. ## Quickstart -To install the newest version of Mathesar, cut-and-paste the below command into a terminal window and follow the instructions: + #### Important Do not use 'admin' as your login username. Create a unique login username. + +To install the newest version of Mathesar, cut-and-paste the below command into a terminal window and follow the instructions: + ```sh bash <(curl -sL https://raw.githubusercontent.com/centerofci/mathesar/master/install.sh) ``` From 925efb4f35e2013f24f315b799b196e482b3db19 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Wed, 22 Feb 2023 13:18:55 +0200 Subject: [PATCH 009/553] Create debian.md --- docs/docs/installation/debian.md | 177 +++++++++++++++++++++++++++++++ 1 file changed, 177 insertions(+) create mode 100644 docs/docs/installation/debian.md diff --git a/docs/docs/installation/debian.md b/docs/docs/installation/debian.md new file mode 100644 index 0000000000..384eba566d --- /dev/null +++ b/docs/docs/installation/debian.md @@ -0,0 +1,177 @@ +# Install on Debian 11 + +Installation should only take a few minutes. + +## What we will do: +- Prepare our server to run Docker and Docker Compose. Mathesar has been tested with Docker v23 and Docker Compose v2.10 (although v2.0 or higher should work). + - [Docker installation documentation](https://docs.docker.com/desktop/) + - [`docker-compose` installation documentation](https://docs.docker.com/compose/install/) +- Run the install script to pull the required docker-compose.yaml file and start the installation. +- You need to be a user with root access to the machine you're trying to install Mathesar on. + +## Preparing our server. +- Prerequisites + - Debian 11 + - Root privileges + - A domain name for your Mathesar installation, pointing to your server. This is however not a necesity. + +### Step one +First, we need to update the software repository and upgrade all packages using the apt command below. SSH to your server and elevate to the `root` user. +```sh +apt update && apt upgrade +``` +### Step two +Clean the system of any potential pre-installed Docker packages. +```sh +apt-get remove docker docker-engien docker.io +``` +### Step three: Installing Docker +We wil now install Docker on this system. +Firstly, we have to install the required Docker dependencies on the system: +```sh +udo apt -y install apt-transport-https ca-certificates curl gnupg2 software-properties-common +``` +The next step is to add Docker's official GPG key to the keyring. This is to ensure the validity of downloaded Docker packages from it's repository. +```sh +ccurl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg +``` +Now that the key is added, we can add the stable repo for Docker. +```sh +echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list +``` +We have to update the system: +```sh +apt update +``` +We can now install Docker using the following command: +```sh +apt-get install docker-ce docker-ce-cli containerd.io +``` +Once installation is completed, you can run the following commands to make sure that Docker is running, and that it will start with the system. +```sh +systemctl enable docker && systemctl start docker +``` + +### Step four : Install Docker-compose +We will install Docker-compose next. We will start by downloading the latest Docker-compose version. +```sh +sudo curl -L "https://github.com/docker/compose/releases/download/2.16.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose +``` +Once downloaded, we have to change the properties so that it is an executable: + +```sh +sudo chmod +x /usr/local/bin/docker-compose +``` +That is it. Now the server is run Mathesar. + +## Quickstart + +#### Important +Do not use 'admin' as your login username. Create a unique login username. + + +To install the newest version of Mathesar, cut-and-paste the below command into a terminal window and follow the instructions: + +```sh +bash <(curl -sL https://raw.githubusercontent.com/centerofci/mathesar/master/install.sh) +``` + +To access Mathesar, navigate to `localhost` in your web browser (if installed locally) or to your server IP or it's domain name, and login using the admin user name and password you set during the installation. + +## Administration + +For the commands below, you need to replace `$MATHESAR_CONFIG_DIR` with the actual value you set during the installation process. By default, this should be `/etc/mathesar`. + +### Starting and stopping Mathesar + +The command to stop all containers used for Mathesar, and release their ports, etc. is: +```sh +sudo docker compose -f $MATHESAR_CONFIG_DIR/docker-compose.yml --profile prod down +``` + +The command to start Mathesar (say, after stopping it, or a reboot of the machine) is: +```sh +sudo docker compose -f $MATHESAR_CONFIG_DIR/docker-compose.yml --profile prod up +``` + +### Upgrading Mathesar +The command to manually upgrade Mathesar to the newest version is: + +```sh +sudo docker exec mathesar-watchtower-1 /watchtower --run-once +``` + +## Under the Hood + +### Installation Steps +These are the steps that the installation script performs, explained in more depth: + +#### Docker Version Check + +The installer double-checks your Docker and Docker Compose versions, making sure that `docker` is at least version 20.0.0, and `docker-compose` is at least version 2.0.0. + +#### Database Configuration + +Mathesar actually uses two databases; one internal system database for metadata such as table display options, and a separate user database for your actual table data. The installer helps you set up credentials for both databases (a username and password), and also lets you customize the name of your user database. Finally, Mathesar helps you customize the port exposed to your host machine from the database container. This is useful, since you'll need to have an exposed port to login to the Mathesar database(s) using an alternate client such as `psql`, but there could be a conflict on the default port. + +The credentials created in this section are used to login directly to the database (i.e., not through the Mathesar UI). + +#### Webserver Configuration + +This section lets you customize the details of the webserver that provides the Mathesar web UI, and API endpoints. Most of the customizations available here are only relevant if you're planning to expose your installation of Mathesar to the wider internet. You can configure the domain as well as the ports to use for http and https traffic, respectively. + +#### Admin User Configuration + +Here, the installer helps you create a user (separate from the database user) that you will use to login to Mathesar through the main web UI. This section walks you through that process to create a username and password for that user. You're allowed to use the same details as the database user above, but it's not required, or particularly recommended. The user created in this section will have admin privileges in Mathesar, and be able to create other users after the installation is complete. + +#### Configuration Directory + +We need to store all the details configured above, and we do so in a file in your configuration directory. Note that this contains your passwords and other secrets, so **it should be kept secure**. By default, this directory is `/etc/mathesar/`, but you can change it. + +We'll store two files under that directory: +- `.env`: This file has the above-mentioned configurations. +- `docker-compose.yml` This is a config file downloaded from Mathesar's git repo. It defines the different Docker containers used by Mathesar, and how they're networked together. + +#### Docker Setup + +- The installer downloads the `docker-compose.yml` file from Mathesar's repo. +- The installer pulls all Docker images needed for Mathesar to run properly, and starts the various services in sequence. + +#### Final Steps + +If everything has worked, then the installer prints a message letting you know that it's succeeded, and gives a little information about where you should go to login to Mathesar. + +### Docker containers +This installation process creates the following containers: +- `mathesar_service`, which runs the main Mathesar application. +- `mathesar_db`, which which runs the database (PostgreSQL 13). +- `mathesar-caddy-reverse-proxy-1`, which helps route traffic to the `mathesar_service` container. +- `mathesar-watchtower-1`, which helps upgrade Mathesar installation when new releases are available. + +### Files +This installation process creates the following files in the Mathesar configuration directory: +- `.env`. This file defines the environment inside of the various Mathesar `docker` containers. It should be kept safe, since it has sensitive information about the passwords you set for Mathesar. If you've forgotten your admin username or password, look at this file. +- `docker-compose.yml`. This is the main file defining the Mathesar containers listed above, and the connections between them. + +## Troubleshooting + +### Docker versions + +The most common problem we've encountered is users with out-of-date `docker` or `docker-compose` versions. + +- To determine your `docker-compose` version, run `docker compose version`. (Note the lack of hyphen.) You need `docker-compose` version 2.0 or higher for the installation to succeed. Better if it's version 2.10 or higher. +- To determine your `docker` version, run `docker --version`. We've tested with `docker` version 23, but lower versions may work. + +If you run `docker-compose --version` and see a relatively old version, try `docker compose version` and see whether it's different. The latter is the version that will be used in the script. + +### Ports + +You may see errors about various ports being unavailable (or already being bound). In this case, please restart from a clean `docker` state, and choose non-default ports during the installation process for PostgreSQL, http traffic, or https traffic as appropriate. + +### Permissions + +If you have permissions issues when the script begins running `docker` commands, please double-check that your user is in the `sudoers` file. Try running `sudo -v`. If that gives an error, your user lacks needed permissions and you should speak with the administrator of your system. + +## Getting more help + +If you're having an issue not covered by this documentation, please open an issue [on GitHub](https://github.com/centerofci/mathesar/issues). From 58e7f59b7fbaadab935899cc96731518f7e09316 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Wed, 22 Feb 2023 13:21:44 +0200 Subject: [PATCH 010/553] Create centos.md --- docs/docs/installation/centos.md | 105 +++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 docs/docs/installation/centos.md diff --git a/docs/docs/installation/centos.md b/docs/docs/installation/centos.md new file mode 100644 index 0000000000..058cd81d4e --- /dev/null +++ b/docs/docs/installation/centos.md @@ -0,0 +1,105 @@ + + +```sh +bash <(curl -sL https://raw.githubusercontent.com/centerofci/mathesar/master/install.sh) +``` + +To access Mathesar, navigate to `localhost` in your web browser, and login using the admin user name and password you set during the installation. + +## Administration + +For the commands below, you need to replace `$MATHESAR_CONFIG_DIR` with the actual value you set during the installation process. By default, this should be `/etc/mathesar`. + +### Starting and stopping Mathesar + +The command to stop all containers used for Mathesar, and release their ports, etc. is: +```sh +sudo docker compose -f $MATHESAR_CONFIG_DIR/docker-compose.yml --profile prod down +``` + +The command to start Mathesar (say, after stopping it, or a reboot of the machine) is: +```sh +sudo docker compose -f $MATHESAR_CONFIG_DIR/docker-compose.yml --profile prod up +``` + +### Upgrading Mathesar +The command to manually upgrade Mathesar to the newest version is: + +```sh +sudo docker exec mathesar-watchtower-1 /watchtower --run-once +``` + +## Under the Hood + +### Installation Steps +These are the steps that the installation script performs, explained in more depth: + +#### Docker Version Check + +The installer double-checks your Docker and Docker Compose versions, making sure that `docker` is at least version 20.0.0, and `docker-compose` is at least version 2.0.0. + +#### Database Configuration + +Mathesar actually uses two databases; one internal system database for metadata such as table display options, and a separate user database for your actual table data. The installer helps you set up credentials for both databases (a username and password), and also lets you customize the name of your user database. Finally, Mathesar helps you customize the port exposed to your host machine from the database container. This is useful, since you'll need to have an exposed port to login to the Mathesar database(s) using an alternate client such as `psql`, but there could be a conflict on the default port. + +The credentials created in this section are used to login directly to the database (i.e., not through the Mathesar UI). + +#### Webserver Configuration + +This section lets you customize the details of the webserver that provides the Mathesar web UI, and API endpoints. Most of the customizations available here are only relevant if you're planning to expose your installation of Mathesar to the wider internet. You can configure the domain as well as the ports to use for http and https traffic, respectively. + +#### Admin User Configuration + +Here, the installer helps you create a user (separate from the database user) that you will use to login to Mathesar through the main web UI. This section walks you through that process to create a username and password for that user. You're allowed to use the same details as the database user above, but it's not required, or particularly recommended. The user created in this section will have admin privileges in Mathesar, and be able to create other users after the installation is complete. + +#### Configuration Directory + +We need to store all the details configured above, and we do so in a file in your configuration directory. Note that this contains your passwords and other secrets, so **it should be kept secure**. By default, this directory is `/etc/mathesar/`, but you can change it. + +We'll store two files under that directory: +- `.env`: This file has the above-mentioned configurations. +- `docker-compose.yml` This is a config file downloaded from Mathesar's git repo. It defines the different Docker containers used by Mathesar, and how they're networked together. + +#### Docker Setup + +- The installer downloads the `docker-compose.yml` file from Mathesar's repo. +- The installer pulls all Docker images needed for Mathesar to run properly, and starts the various services in sequence. + +#### Final Steps + +If everything has worked, then the installer prints a message letting you know that it's succeeded, and gives a little information about where you should go to login to Mathesar. + +### Docker containers +This installation process creates the following containers: +- `mathesar_service`, which runs the main Mathesar application. +- `mathesar_db`, which which runs the database (PostgreSQL 13). +- `mathesar-caddy-reverse-proxy-1`, which helps route traffic to the `mathesar_service` container. +- `mathesar-watchtower-1`, which helps upgrade Mathesar installation when new releases are available. + +### Files +This installation process creates the following files in the Mathesar configuration directory: +- `.env`. This file defines the environment inside of the various Mathesar `docker` containers. It should be kept safe, since it has sensitive information about the passwords you set for Mathesar. If you've forgotten your admin username or password, look at this file. +- `docker-compose.yml`. This is the main file defining the Mathesar containers listed above, and the connections between them. + +## Troubleshooting + +### Docker versions + +The most common problem we've encountered is users with out-of-date `docker` or `docker-compose` versions. + +- To determine your `docker-compose` version, run `docker compose version`. (Note the lack of hyphen.) You need `docker-compose` version 2.0 or higher for the installation to succeed. Better if it's version 2.10 or higher. +- To determine your `docker` version, run `docker --version`. We've tested with `docker` version 23, but lower versions may work. + +If you run `docker-compose --version` and see a relatively old version, try `docker compose version` and see whether it's different. The latter is the version that will be used in the script. + +### Ports + +You may see errors about various ports being unavailable (or already being bound). In this case, please restart from a clean `docker` state, and choose non-default ports during the installation process for PostgreSQL, http traffic, or https traffic as appropriate. + +### Permissions + +If you have permissions issues when the script begins running `docker` commands, please double-check that your user is in the `sudoers` file. Try running `sudo -v`. If that gives an error, your user lacks needed permissions and you should speak with the administrator of your system. + +## Getting more help + +If you're having an issue not covered by this documentation, please open an issue [on GitHub](https://github.com/centerofci/mathesar/issues). From 4580b5995f8dbb2f5cd1ea06943496c562f7d71a Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Wed, 22 Feb 2023 13:28:21 +0200 Subject: [PATCH 011/553] Update centos.md --- docs/docs/installation/centos.md | 71 ++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) diff --git a/docs/docs/installation/centos.md b/docs/docs/installation/centos.md index 058cd81d4e..748a37bd9a 100644 --- a/docs/docs/installation/centos.md +++ b/docs/docs/installation/centos.md @@ -1,4 +1,75 @@ +# Install on CentOS 7+ +Installation should only take a few minutes. + +## What we will do: +- Prepare our server to run Docker and Docker Compose. Mathesar has been tested with Docker v23 and Docker Compose v2.10 (although v2.0 or higher should work). + - [Docker installation documentation](https://docs.docker.com/desktop/) + - [`docker-compose` installation documentation](https://docs.docker.com/compose/install/) +- Run the install script to pull the required docker-compose.yaml file and start the installation. +- You need to be a user with root access to the machine you're trying to install Mathesar on. + +## Preparing our server. +- Prerequisites + - CentOS 7 + - Root privileges + - A domain name for your Mathesar installation, pointing to your server. This is however not a necesity. + +### Step one +First, we need to update the software repository and upgrade all packages using the apt command below. SSH to your server and elevate to the `root` user. +```sh +yum update && yum upgrade +``` +### Step two +Clean the system of any potential pre-installed Docker packages. +```sh +sudo yum remove docker docker-engien docker.io +``` +### Step three: Installing Docker +We wil now install Docker on this system. +Firstly, we have to install the required Docker dependencies on the system: +```sh +yum install -y yum-utils device-mapper-persistent-data lvm2 curl +``` +The next step is to add the stable repo for Docker. +```sh +yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo +``` +We have to update the system: +```sh +yum update +``` +We can now install Docker using the following command: +```sh +sudo yum install docker-ce docker-ce-cli +``` +Once installation is completed, you can run the following commands to make sure that Docker is running, and that it will start with the system. +```sh +systemctl enable docker && systemctl start docker +``` + +### Step four : Install Docker-compose +We will install Docker-compose next. We will start by downloading the latest Docker-compose version. +```sh +sudo curl -L "https://github.com/docker/compose/releases/download/2.16.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose +Once downloaded, we have to change the properties so that it is an executable: + +```sh +sudo chmod +x /usr/local/bin/docker-compose +``` +Lastly, we created the required link between the binaries: +```sh +ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose +``` +That is it. Now the server is run Mathesar. + +## Quickstart + +#### Important +Do not use 'admin' as your login username. Create a unique login username. + + +To install the newest version of Mathesar, cut-and-paste the below command into a terminal window and follow the instructions: ```sh bash <(curl -sL https://raw.githubusercontent.com/centerofci/mathesar/master/install.sh) From ae9eac897837eb1b83901906a52a0c60bd049782 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Wed, 22 Feb 2023 13:29:14 +0200 Subject: [PATCH 012/553] Update centos.md --- docs/docs/installation/centos.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/docs/installation/centos.md b/docs/docs/installation/centos.md index 748a37bd9a..7309736d17 100644 --- a/docs/docs/installation/centos.md +++ b/docs/docs/installation/centos.md @@ -52,6 +52,7 @@ systemctl enable docker && systemctl start docker We will install Docker-compose next. We will start by downloading the latest Docker-compose version. ```sh sudo curl -L "https://github.com/docker/compose/releases/download/2.16.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose +``` Once downloaded, we have to change the properties so that it is an executable: ```sh From 87f6a4bc1544b5c7c7bdfc4a380055a51327f0f2 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Wed, 22 Feb 2023 13:30:17 +0200 Subject: [PATCH 013/553] Update centos.md --- docs/docs/installation/centos.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/installation/centos.md b/docs/docs/installation/centos.md index 7309736d17..c2066e2600 100644 --- a/docs/docs/installation/centos.md +++ b/docs/docs/installation/centos.md @@ -62,7 +62,7 @@ Lastly, we created the required link between the binaries: ```sh ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose ``` -That is it. Now the server is run Mathesar. +That is it. We are now ready to run Mathesar. ## Quickstart From d691a3893df74c1e4cfb053ff4ea9cb02905cdfd Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Wed, 22 Feb 2023 13:30:39 +0200 Subject: [PATCH 014/553] Update debian.md --- docs/docs/installation/debian.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/installation/debian.md b/docs/docs/installation/debian.md index 384eba566d..027084ea3b 100644 --- a/docs/docs/installation/debian.md +++ b/docs/docs/installation/debian.md @@ -62,7 +62,7 @@ Once downloaded, we have to change the properties so that it is an executable: ```sh sudo chmod +x /usr/local/bin/docker-compose ``` -That is it. Now the server is run Mathesar. +That is it. We are now ready to run Mathesar. ## Quickstart From 925e49cf178d75d14e366852c04e1cfc1c0b71c8 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Wed, 22 Feb 2023 13:30:58 +0200 Subject: [PATCH 015/553] Update ubuntu.md --- docs/docs/installation/ubuntu.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/installation/ubuntu.md b/docs/docs/installation/ubuntu.md index d20270c700..d6ceef30f8 100644 --- a/docs/docs/installation/ubuntu.md +++ b/docs/docs/installation/ubuntu.md @@ -62,7 +62,7 @@ Once downloaded, we have to change the properties so that it is an executable: ```sh sudo chmod +x /usr/local/bin/docker-compose ``` -That is it. Now the server is run Mathesar. +That is it. We are now ready to run Mathesar. ## Quickstart From badefd507d09999231e41f820ac60904c405ba30 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Wed, 22 Feb 2023 13:34:20 +0200 Subject: [PATCH 016/553] Update index.md --- docs/docs/index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/docs/index.md b/docs/docs/index.md index afc2f148e8..edbe8b8776 100644 --- a/docs/docs/index.md +++ b/docs/docs/index.md @@ -10,4 +10,5 @@ You can use Mathesar to build **data models**, **enter data**, and even **build You host Mathesar on your own server. Currently, we only support installing using Docker Compose, although we will support additional installation methods soon. - [Install with Docker Compose](installation/docker-compose.md). +- [Install with Docker Compose on Ubuntu](installation/ubuntu.md). From f0f3d79e0d6cb78237675198c9d2d5fb79d41eb8 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Wed, 22 Feb 2023 13:35:42 +0200 Subject: [PATCH 017/553] Update index.md --- docs/docs/index.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/docs/index.md b/docs/docs/index.md index edbe8b8776..f3b8a8d3be 100644 --- a/docs/docs/index.md +++ b/docs/docs/index.md @@ -11,4 +11,6 @@ You host Mathesar on your own server. Currently, we only support installing usin - [Install with Docker Compose](installation/docker-compose.md). - [Install with Docker Compose on Ubuntu](installation/ubuntu.md). +- [Install with Docker Compose on Debian](installation/debian.md). +- [Install with Docker Compose on CentOS](installation/centos.md). From 49376beb51fb38c0f9036e9a60e5ea1728742507 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Thu, 23 Feb 2023 12:36:37 +0200 Subject: [PATCH 018/553] Create debian-manual.md --- docs/docs/installation/debian-manual.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 docs/docs/installation/debian-manual.md diff --git a/docs/docs/installation/debian-manual.md b/docs/docs/installation/debian-manual.md new file mode 100644 index 0000000000..ff24f45761 --- /dev/null +++ b/docs/docs/installation/debian-manual.md @@ -0,0 +1,7 @@ +# Manual install on Debian 11 + +Installation should only take a few minutes. + +## What we will do: +- Install Nginx webserver. +- You need to be a user with root access to the machine you're trying to install Mathesar on. From 6af9c21e888efd9bfebb12f074425fed1eb5a972 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Thu, 23 Feb 2023 12:42:41 +0200 Subject: [PATCH 019/553] Update debian-manual.md --- docs/docs/installation/debian-manual.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/docs/docs/installation/debian-manual.md b/docs/docs/installation/debian-manual.md index ff24f45761..857a22f0e4 100644 --- a/docs/docs/installation/debian-manual.md +++ b/docs/docs/installation/debian-manual.md @@ -5,3 +5,28 @@ Installation should only take a few minutes. ## What we will do: - Install Nginx webserver. - You need to be a user with root access to the machine you're trying to install Mathesar on. + +## Preparing our server. +- Prerequisites + - Debian 11 + - Root privileges + +### Step one: Install Nginx +First, we need to update the software repository and upgrade all packages using the apt command below. SSH to your server and elevate to the `root` user. +```sh +apt update && apt upgrade +``` +Next we will install the required packages. +```sh +apt install locales build-essential acl ntp git python3-pip ipython3 +``` +Once installation has completed, we can install Nginx +```sh +apt install nginx +``` + +### Step two +Clean the system of any potential pre-installed Docker packages. +```sh +apt-get remove docker docker-engien docker.io +``` From 417923fe91cc7f76eb5088e54478979fcbcce27f Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Thu, 23 Feb 2023 13:11:02 +0200 Subject: [PATCH 020/553] Update debian-manual.md --- docs/docs/installation/debian-manual.md | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/docs/docs/installation/debian-manual.md b/docs/docs/installation/debian-manual.md index 857a22f0e4..fc992cb40e 100644 --- a/docs/docs/installation/debian-manual.md +++ b/docs/docs/installation/debian-manual.md @@ -3,7 +3,8 @@ Installation should only take a few minutes. ## What we will do: -- Install Nginx webserver. +- Install Nginx webserver. +- Install - You need to be a user with root access to the machine you're trying to install Mathesar on. ## Preparing our server. @@ -11,19 +12,23 @@ Installation should only take a few minutes. - Debian 11 - Root privileges -### Step one: Install Nginx +### Step one: Prepare the server First, we need to update the software repository and upgrade all packages using the apt command below. SSH to your server and elevate to the `root` user. ```sh -apt update && apt upgrade +# apt update && apt upgrade ``` Next we will install the required packages. ```sh -apt install locales build-essential acl ntp git python3-pip ipython3 +# apt install locales build-essential acl ntp git python3-pip ipython3 ``` -Once installation has completed, we can install Nginx +Now we need to add a new usergroup and allow passwordless login: ```sh -apt install nginx +# sudo groupadd deployers +# useradd deployer +# usermod -a -G deployers deployer ``` +Now you need to edit the '/etc/sudoers' file with the 'visudo' command, and add this line: 'deployer ALL=(ALL) NOPASSWD: ALL' under the "# User privilege specification" section. + ### Step two Clean the system of any potential pre-installed Docker packages. From 50ebf80e432e74c4e1de353319fc6c95a34ba211 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Thu, 23 Feb 2023 13:16:34 +0200 Subject: [PATCH 021/553] Update debian-manual.md --- docs/docs/installation/debian-manual.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/installation/debian-manual.md b/docs/docs/installation/debian-manual.md index fc992cb40e..96d87e3732 100644 --- a/docs/docs/installation/debian-manual.md +++ b/docs/docs/installation/debian-manual.md @@ -27,7 +27,7 @@ Now we need to add a new usergroup and allow passwordless login: # useradd deployer # usermod -a -G deployers deployer ``` -Now you need to edit the '/etc/sudoers' file with the 'visudo' command, and add this line: 'deployer ALL=(ALL) NOPASSWD: ALL' under the "# User privilege specification" section. +Now you need to edit the `/etc/sudoers` file with the 'visudo' command, and add this line: `deployer ALL=(ALL) NOPASSWD: ALL` under the `# User privilege specification` section. ### Step two From 33628fc922a65370d14ecebd066b8069261c42c5 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Mon, 27 Feb 2023 09:30:24 +0200 Subject: [PATCH 022/553] Update ubuntu.md --- docs/docs/installation/ubuntu.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/installation/ubuntu.md b/docs/docs/installation/ubuntu.md index d6ceef30f8..241f30967a 100644 --- a/docs/docs/installation/ubuntu.md +++ b/docs/docs/installation/ubuntu.md @@ -11,7 +11,7 @@ Installation should only take a few minutes. ## Preparing our server. - Prerequisites - - Ubuntu 20.04 + - Ubuntu 20.04 with at least `60 GB` disk space. - Root privileges - A domain name for your Mathesar installation, pointing to your server. This is however not a necesity. From 520ee337c01659fd07aa6defa0cd674a0259a6d7 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Mon, 27 Feb 2023 09:31:01 +0200 Subject: [PATCH 023/553] Update ubuntu.md --- docs/docs/installation/ubuntu.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/installation/ubuntu.md b/docs/docs/installation/ubuntu.md index 241f30967a..127f52d1ad 100644 --- a/docs/docs/installation/ubuntu.md +++ b/docs/docs/installation/ubuntu.md @@ -11,7 +11,7 @@ Installation should only take a few minutes. ## Preparing our server. - Prerequisites - - Ubuntu 20.04 with at least `60 GB` disk space. + - Ubuntu 20.04 with at least `60 GB` disk space and ``4GB`` of RAM. - Root privileges - A domain name for your Mathesar installation, pointing to your server. This is however not a necesity. From d575774483c2c9d19bed800ea79cb59be60f7229 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Mon, 27 Feb 2023 09:31:18 +0200 Subject: [PATCH 024/553] Update ubuntu.md --- docs/docs/installation/ubuntu.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/installation/ubuntu.md b/docs/docs/installation/ubuntu.md index 127f52d1ad..e86be17c43 100644 --- a/docs/docs/installation/ubuntu.md +++ b/docs/docs/installation/ubuntu.md @@ -11,7 +11,7 @@ Installation should only take a few minutes. ## Preparing our server. - Prerequisites - - Ubuntu 20.04 with at least `60 GB` disk space and ``4GB`` of RAM. + - Ubuntu 20.04 with at least `60 GB` disk space and `4GB` of RAM. - Root privileges - A domain name for your Mathesar installation, pointing to your server. This is however not a necesity. From c919bdff14504912da446f3d002fc8db37753e03 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Mon, 27 Feb 2023 09:31:59 +0200 Subject: [PATCH 025/553] Update debian.md --- docs/docs/installation/debian.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/installation/debian.md b/docs/docs/installation/debian.md index 027084ea3b..8146e3bad0 100644 --- a/docs/docs/installation/debian.md +++ b/docs/docs/installation/debian.md @@ -11,7 +11,7 @@ Installation should only take a few minutes. ## Preparing our server. - Prerequisites - - Debian 11 + - Debian 11 with at least `60 GB` disk space and `4GB` of RAM. - Root privileges - A domain name for your Mathesar installation, pointing to your server. This is however not a necesity. From 8b1feb6be464f25876660d5e5de9c3f0738bd515 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Mon, 27 Feb 2023 09:32:20 +0200 Subject: [PATCH 026/553] Update centos.md --- docs/docs/installation/centos.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/installation/centos.md b/docs/docs/installation/centos.md index c2066e2600..e30e3e81b2 100644 --- a/docs/docs/installation/centos.md +++ b/docs/docs/installation/centos.md @@ -11,7 +11,7 @@ Installation should only take a few minutes. ## Preparing our server. - Prerequisites - - CentOS 7 + - CentOS 7 with at least `60 GB` disk space and `4GB` of RAM. - Root privileges - A domain name for your Mathesar installation, pointing to your server. This is however not a necesity. From 5927fe698776bd06307b1bf24b1ef2088a05d900 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Mon, 27 Feb 2023 09:32:38 +0200 Subject: [PATCH 027/553] Update debian-manual.md --- docs/docs/installation/debian-manual.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/installation/debian-manual.md b/docs/docs/installation/debian-manual.md index 96d87e3732..c3cc72aae2 100644 --- a/docs/docs/installation/debian-manual.md +++ b/docs/docs/installation/debian-manual.md @@ -9,7 +9,7 @@ Installation should only take a few minutes. ## Preparing our server. - Prerequisites - - Debian 11 + - Debian 11 with at least `60 GB` disk space and `4GB` of RAM. - Root privileges ### Step one: Prepare the server From 28bde6b943d5a86367c11e47832825a50dd6624b Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Tue, 28 Feb 2023 12:21:54 +0200 Subject: [PATCH 028/553] Update debian-manual.md --- docs/docs/installation/debian-manual.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/installation/debian-manual.md b/docs/docs/installation/debian-manual.md index c3cc72aae2..f4b1c04a5d 100644 --- a/docs/docs/installation/debian-manual.md +++ b/docs/docs/installation/debian-manual.md @@ -33,5 +33,5 @@ Now you need to edit the `/etc/sudoers` file with the 'visudo' command, and add ### Step two Clean the system of any potential pre-installed Docker packages. ```sh -apt-get remove docker docker-engien docker.io +apt-get remove docker docker-engine docker.io ``` From 96b600d0006ec783bfab5c9fb524a7da8683e313 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Tue, 28 Feb 2023 12:28:56 +0200 Subject: [PATCH 029/553] Update debian-manual.md --- docs/docs/installation/debian-manual.md | 39 +++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/docs/docs/installation/debian-manual.md b/docs/docs/installation/debian-manual.md index f4b1c04a5d..234303a765 100644 --- a/docs/docs/installation/debian-manual.md +++ b/docs/docs/installation/debian-manual.md @@ -3,6 +3,8 @@ Installation should only take a few minutes. ## What we will do: +- Prepare the server +- Install Docker & Docker-compose - Install Nginx webserver. - Install - You need to be a user with root access to the machine you're trying to install Mathesar on. @@ -35,3 +37,40 @@ Clean the system of any potential pre-installed Docker packages. ```sh apt-get remove docker docker-engine docker.io ``` +Now that we are sure there is no pre-configured or installed Docker on the system, we can begin the installation. +Firstly, we have to install the required Docker dependencies on the system: +```sh +sudo apt -y install apt-transport-https ca-certificates curl gnupg2 software-properties-common +``` +The next step is to add Docker's official GPG key to the keyring. This is to ensure the validity of downloaded Docker packages from it's repository. +```sh +curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg +``` +Now that the key is added, we can add the stable repo for Docker. +```sh +echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list +``` +We have to update the system: +```sh +apt update +``` +We can now install Docker using the following command: +```sh +apt-get install docker-ce docker-ce-cli containerd.io +``` +Once installation is completed, you can run the following commands to make sure that Docker is running, and that it will start with the system. +```sh +systemctl enable docker && systemctl start docker +``` + +##### Install Docker-compose +We will install Docker-compose next. We will start by downloading the latest Docker-compose version. +```sh +sudo curl -L "https://github.com/docker/compose/releases/download/2.16.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose +``` +Once downloaded, we have to change the properties so that it is an executable: + +```sh +sudo chmod +x /usr/local/bin/docker-compose +``` +That is it. From 3194d131c7527e15a5c6ea7e6a26da19365ef37e Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Tue, 28 Feb 2023 12:58:04 +0200 Subject: [PATCH 030/553] Update debian-manual.md --- docs/docs/installation/debian-manual.md | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/docs/docs/installation/debian-manual.md b/docs/docs/installation/debian-manual.md index 234303a765..45fb1a1253 100644 --- a/docs/docs/installation/debian-manual.md +++ b/docs/docs/installation/debian-manual.md @@ -73,4 +73,19 @@ Once downloaded, we have to change the properties so that it is an executable: ```sh sudo chmod +x /usr/local/bin/docker-compose ``` -That is it. +That is it. We can now move to the next step. +### Step Three: Install Nginx with Letsencrypt and Gurnicorn3 +We will start off by installing Nginx on the system. This will already be in the Debian repository so simply run the install command. + +```sh +sudo apt install nginx +``` +##### Letsencrypt +We now will install certbot for Letsencrypt as well as gunicorn3. +```sh +sudo apt-get install certbot + +sudo apt-get install gunicorn3 +``` + + From f694172779cb3dba78abafb2fb800a34f29ccd8a Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Tue, 28 Feb 2023 13:12:36 +0200 Subject: [PATCH 031/553] Update debian-manual.md --- docs/docs/installation/debian-manual.md | 31 +++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/docs/docs/installation/debian-manual.md b/docs/docs/installation/debian-manual.md index 45fb1a1253..7bbe4abd45 100644 --- a/docs/docs/installation/debian-manual.md +++ b/docs/docs/installation/debian-manual.md @@ -80,6 +80,33 @@ We will start off by installing Nginx on the system. This will already be in th ```sh sudo apt install nginx ``` +We have to remove default nginx config, so that we can install a nginx site for letsencrypt requests +```sh +rm -f /etc/nginx/sites-enabled/default +``` +Next we will create a new site: +```sh +touch /etc/nginx/sites-enabled/http +``` +```sh +echo "server_tokens off; + +server { + listen 80 default_server; + server_name {{ main_domain_name }}; + + location /.well-known/acme-challenge { + root /var/www/letsencrypt; + try_files $uri $uri/ =404; + } + + location / { + rewrite ^ https://{{ main_domain_name }}$request_uri? permanent; + } +}" > /etc/nginx/sites-enabled/http +``` + + ##### Letsencrypt We now will install certbot for Letsencrypt as well as gunicorn3. ```sh @@ -87,5 +114,9 @@ sudo apt-get install certbot sudo apt-get install gunicorn3 ``` +Now we need to create a directory for Letsencrypt +```sh +mkdir /var/www/letsencrypt +``` From dbb27ac49c158750dc651d67d69bd3534146b4ca Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Tue, 28 Feb 2023 13:19:25 +0200 Subject: [PATCH 032/553] Update debian-manual.md --- docs/docs/installation/debian-manual.md | 30 +++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/docs/docs/installation/debian-manual.md b/docs/docs/installation/debian-manual.md index 7bbe4abd45..b7a46e6440 100644 --- a/docs/docs/installation/debian-manual.md +++ b/docs/docs/installation/debian-manual.md @@ -105,7 +105,37 @@ server { } }" > /etc/nginx/sites-enabled/http ``` +Now we will install our system Nginx configuration: +```sh +echo "user www-data; +worker_processes auto; +pid /run/nginx.pid; + +events { + worker_connections 768; +} + +http { + + sendfile on; + tcp_nopush on; + tcp_nodelay on; + keepalive_timeout 65; + types_hash_max_size 2048; + include /etc/nginx/mime.types; + default_type application/octet-stream; + access_log /var/log/nginx/access.log; + error_log /var/log/nginx/error.log; + + gzip on; + gzip_comp_level 6; + gzip_disable "msie6"; + + include /etc/nginx/conf.d/*.conf; + include /etc/nginx/sites-enabled/*; +}" > /etc/nginx/nginx.conf +``` ##### Letsencrypt We now will install certbot for Letsencrypt as well as gunicorn3. From 51d709657674a88fd92c9b521471a4fce644a69a Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Tue, 28 Feb 2023 13:22:35 +0200 Subject: [PATCH 033/553] Update debian-manual.md --- docs/docs/installation/debian-manual.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/docs/installation/debian-manual.md b/docs/docs/installation/debian-manual.md index b7a46e6440..f171e22c53 100644 --- a/docs/docs/installation/debian-manual.md +++ b/docs/docs/installation/debian-manual.md @@ -84,10 +84,11 @@ We have to remove default nginx config, so that we can install a nginx site for ```sh rm -f /etc/nginx/sites-enabled/default ``` -Next we will create a new site: +Next we will create a new site. Begin by creating the http file in '/etc/nginx/sites-enabled'. ```sh touch /etc/nginx/sites-enabled/http ``` +Now, we can add our custom directives to the file. You can copy/paste this in your terminal and run it. ```sh echo "server_tokens off; @@ -105,7 +106,8 @@ server { } }" > /etc/nginx/sites-enabled/http ``` -Now we will install our system Nginx configuration: +Now we will install our system Nginx configuration. +You can copy/paste this in your terminal and run it. ```sh echo "user www-data; worker_processes auto; From 94643d09a8036b9600d8153f8c02745ba310db80 Mon Sep 17 00:00:00 2001 From: Wali Muhammad <107250980+Wali-Muhammad123@users.noreply.github.com> Date: Thu, 2 Mar 2023 13:16:38 +0000 Subject: [PATCH 034/553] Added validate_password() to the install.sh for password validation --- install.sh | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 95f45be875..d86282aaf9 100755 --- a/install.sh +++ b/install.sh @@ -55,6 +55,12 @@ ${prompt}" done echo "${password}" } +validate_password(){ + #check if the password is 8 characters long + if [ ${#1} -lt 8 ]; then + return 1 + fi +} create_password () { local password @@ -65,8 +71,13 @@ Repeat the password: " local repeat_retry=" Passwords do not match! Try again. " - +local validation_prompt=" +Password must be at least 8 characters long ! +" password=$(get_password "${prompt}") + #validate the password entered + until validate_password "${password}"; do + password=$(create_password "${validation_prompt}") read -rs -p "${repeat_prompt}" password_check if [ "${password}" != "${password_check}" ]; then password=$(create_password "${repeat_retry}") From 220c0c8cdbad6637d4fb0ee127f63f22aa4ac7f7 Mon Sep 17 00:00:00 2001 From: Wali Muhammad <107250980+Wali-Muhammad123@users.noreply.github.com> Date: Thu, 2 Mar 2023 13:43:16 +0000 Subject: [PATCH 035/553] Debugged install.sh --- install.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/install.sh b/install.sh index d86282aaf9..f8a8a61cf6 100755 --- a/install.sh +++ b/install.sh @@ -56,12 +56,11 @@ ${prompt}" echo "${password}" } validate_password(){ - #check if the password is 8 characters long - if [ ${#1} -lt 8 ]; then - return 1 + #check if the password is at least 8 characters long + if [ ${#1} -lt 8 ]; then + return 1 fi } - create_password () { local password local password_check @@ -72,7 +71,7 @@ Repeat the password: " Passwords do not match! Try again. " local validation_prompt=" -Password must be at least 8 characters long ! +Password must be at least 8 characters long !. " password=$(get_password "${prompt}") #validate the password entered @@ -82,6 +81,7 @@ Password must be at least 8 characters long ! if [ "${password}" != "${password_check}" ]; then password=$(create_password "${repeat_retry}") fi + done echo "${password}" } From e0e2a7258dac96c58eb1befc0c05947fcafa1aa4 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Mon, 6 Mar 2023 10:14:25 +0200 Subject: [PATCH 036/553] Update debian-manual.md --- docs/docs/installation/debian-manual.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/docs/installation/debian-manual.md b/docs/docs/installation/debian-manual.md index f171e22c53..3853e9ee1b 100644 --- a/docs/docs/installation/debian-manual.md +++ b/docs/docs/installation/debian-manual.md @@ -17,17 +17,17 @@ Installation should only take a few minutes. ### Step one: Prepare the server First, we need to update the software repository and upgrade all packages using the apt command below. SSH to your server and elevate to the `root` user. ```sh -# apt update && apt upgrade +apt update && apt upgrade ``` Next we will install the required packages. ```sh -# apt install locales build-essential acl ntp git python3-pip ipython3 +apt install locales build-essential acl ntp git python3-pip ipython3 ``` Now we need to add a new usergroup and allow passwordless login: ```sh -# sudo groupadd deployers -# useradd deployer -# usermod -a -G deployers deployer +sudo groupadd deployers +useradd deployer +usermod -a -G deployers deployer ``` Now you need to edit the `/etc/sudoers` file with the 'visudo' command, and add this line: `deployer ALL=(ALL) NOPASSWD: ALL` under the `# User privilege specification` section. From 4c67c134de549bc824bb71d221160a19e7da82cb Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Mon, 6 Mar 2023 10:23:33 +0200 Subject: [PATCH 037/553] Update debian-manual.md --- docs/docs/installation/debian-manual.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/installation/debian-manual.md b/docs/docs/installation/debian-manual.md index 3853e9ee1b..96db02b1fe 100644 --- a/docs/docs/installation/debian-manual.md +++ b/docs/docs/installation/debian-manual.md @@ -29,7 +29,7 @@ sudo groupadd deployers useradd deployer usermod -a -G deployers deployer ``` -Now you need to edit the `/etc/sudoers` file with the 'visudo' command, and add this line: `deployer ALL=(ALL) NOPASSWD: ALL` under the `# User privilege specification` section. +Now you need to edit the `/etc/sudoers` file with the 'visudo' command, and add this line: `deployer ALL=(ALL) NOPASSWD: ALL` under the `# User privilege specification` section. If it fails to save, then edit again and move that to the last line of the file. Remember to use TAB between the username and the first `ALL` section ### Step two From a20ff955d46971b9283465afe695a3c4e2574829 Mon Sep 17 00:00:00 2001 From: IamEzio Date: Mon, 6 Mar 2023 18:52:00 +0530 Subject: [PATCH 038/553] added validators --- mathesar_ui/src/components/form/validators.ts | 38 +++++++++++++++++++ .../UserDetailsForm.svelte | 9 ++++- 2 files changed, 45 insertions(+), 2 deletions(-) diff --git a/mathesar_ui/src/components/form/validators.ts b/mathesar_ui/src/components/form/validators.ts index 3377084e5d..8cb5e5845e 100644 --- a/mathesar_ui/src/components/form/validators.ts +++ b/mathesar_ui/src/components/form/validators.ts @@ -84,6 +84,44 @@ export function max( : invalid(msg ?? `Value must be at most ${upperBound}.`); } +function isUsernameInvalid(v: string): boolean { + // Usernames may contain alphanumeric, @, _, ., + and - characters. + return !v.match(/^[@_.+-0-9a-z]+$/); +} + +export function validateUsernameCharacters( + msg = 'Username should not contain non-alphanumeric characters.' +): ValidationFn { + return (v) => + v === null || v === undefined || !isUsernameInvalid(v) + ? valid() + : invalid(msg); +} + +export function validateUsernameLength( + msg = 'Username should be less than or equal to 150 characters.' +): ValidationFn { + return (v) => + v === null || v === undefined || v.length <= 150 + ? valid() + : invalid(msg); +} + +function isEmailInvalid(v: string): boolean { + return !v.toLowerCase().match( + /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/ + ); +} + +export function validateEmail( + msg = 'Invalid email format.' +): ValidationFn { + return (v) => + v === null || v === undefined || !isEmailInvalid(v) + ? valid() + : invalid(msg); +} + export function getErrors({ value, isRequired, diff --git a/mathesar_ui/src/systems/users-and-permissions/UserDetailsForm.svelte b/mathesar_ui/src/systems/users-and-permissions/UserDetailsForm.svelte index 95b32e94ed..7c2a344304 100644 --- a/mathesar_ui/src/systems/users-and-permissions/UserDetailsForm.svelte +++ b/mathesar_ui/src/systems/users-and-permissions/UserDetailsForm.svelte @@ -12,6 +12,9 @@ requiredField, makeForm, FormSubmitWithCatch, + validateUsernameLength, + validateUsernameCharacters, + validateEmail, type FieldStore, } from '@mathesar/components/form'; import userApi, { type User } from '@mathesar/api/users'; @@ -30,8 +33,10 @@ $: isUserUpdatingThemselves = userProfile && userProfile.id === user?.id; $: isNewUser = user === undefined; $: fullName = optionalField(user?.full_name ?? ''); - $: username = requiredField(user?.username ?? ''); - $: email = optionalField(user?.email ?? ''); + $: username = requiredField( + user?.username ?? '', + [validateUsernameLength(), validateUsernameCharacters()]); + $: email = optionalField(user?.email ?? '', [validateEmail()]); $: userType = requiredField<'user' | 'admin' | undefined>( user?.is_superuser ? 'admin' : 'user', ); From 042a2b21c0407698780f28d3b3a5797f9112fdc5 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Tue, 7 Mar 2023 11:08:30 +0200 Subject: [PATCH 039/553] Create ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 152 ++++++++++++++++++++++++ 1 file changed, 152 insertions(+) create mode 100644 docs/docs/installation/ubuntu-manual.md diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md new file mode 100644 index 0000000000..5a7748c9c3 --- /dev/null +++ b/docs/docs/installation/ubuntu-manual.md @@ -0,0 +1,152 @@ +# Manual install on Ubuntu 22 + +Installation should only take a few minutes. + +## What we will do: +- Prepare the server +- Install Docker & Docker-compose +- Install Nginx webserver. +- Install +- You need to be a user with root access to the machine you're trying to install Mathesar on. + +## Preparing our server. +- Prerequisites + - Ubntu 22 with at least `60 GB` disk space and `4GB` of RAM. + - Root privileges + +### Step one: Prepare the server +First, we need to update the software repository and upgrade all packages using the apt command below. SSH to your server and elevate to the `root` user. +```sh +apt update && apt upgrade +``` +Next we will install the required packages. +```sh +apt install locales build-essential acl ntp git python3-pip ipython3 +``` +Now we need to add a new usergroup and allow passwordless login: +```sh +sudo groupadd deployers +useradd deployer +usermod -a -G deployers deployer +``` +Now you need to edit the `/etc/sudoers` file with the 'visudo' command, and add this line: `deployer ALL=(ALL) NOPASSWD: ALL` under the `# User privilege specification` section. If it fails to save, then edit again and move that to the last line of the file. Remember to use TAB between the username and the first `ALL` section + + +### Step two +Clean the system of any potential pre-installed Docker packages. +```sh +apt-get remove docker docker-engine docker.io +``` +Now that we are sure there is no pre-configured or installed Docker on the system, we can begin the installation. +Firstly, we have to install the required Docker dependencies on the system: +```sh +sudo apt -y install apt-transport-https ca-certificates curl gnupg2 software-properties-common +``` +The next step is to add Docker's official GPG key to the keyring. This is to ensure the validity of downloaded Docker packages from it's repository. +```sh +curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg +``` +Now that the key is added, we can add the stable repo for Docker. +```sh +echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list +``` +We have to update the system: +```sh +apt update +``` +We can now install Docker using the following command: +```sh +apt-get install docker-ce docker-ce-cli containerd.io +``` +Once installation is completed, you can run the following commands to make sure that Docker is running, and that it will start with the system. +```sh +systemctl enable docker && systemctl start docker +``` + +##### Install Docker-compose +We will install Docker-compose next. We will start by downloading the latest Docker-compose version. +```sh +sudo curl -L "https://github.com/docker/compose/releases/download/2.16.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose +``` +Once downloaded, we have to change the properties so that it is an executable: + +```sh +sudo chmod +x /usr/local/bin/docker-compose +``` +That is it. We can now move to the next step. +### Step Three: Install Nginx with Letsencrypt and Gurnicorn3 +We will start off by installing Nginx on the system. This will already be in the Debian repository so simply run the install command. + +```sh +sudo apt install nginx +``` +We have to remove default nginx config, so that we can install a nginx site for letsencrypt requests +```sh +rm -f /etc/nginx/sites-enabled/default +``` +Next we will create a new site. Begin by creating the http file in '/etc/nginx/sites-enabled'. +```sh +touch /etc/nginx/sites-enabled/http +``` +Now, we can add our custom directives to the file. You can copy/paste this in your terminal and run it. +```sh +echo "server_tokens off; + +server { + listen 80 default_server; + server_name {{ main_domain_name }}; + + location /.well-known/acme-challenge { + root /var/www/letsencrypt; + try_files $uri $uri/ =404; + } + + location / { + rewrite ^ https://{{ main_domain_name }}$request_uri? permanent; + } +}" > /etc/nginx/sites-enabled/http +``` +Now we will install our system Nginx configuration. +You can copy/paste this in your terminal and run it. +```sh +echo "user www-data; +worker_processes auto; +pid /run/nginx.pid; + +events { + worker_connections 768; +} + +http { + + sendfile on; + tcp_nopush on; + tcp_nodelay on; + keepalive_timeout 65; + types_hash_max_size 2048; + include /etc/nginx/mime.types; + default_type application/octet-stream; + + access_log /var/log/nginx/access.log; + error_log /var/log/nginx/error.log; + + gzip on; + gzip_comp_level 6; + gzip_disable "msie6"; + + include /etc/nginx/conf.d/*.conf; + include /etc/nginx/sites-enabled/*; +}" > /etc/nginx/nginx.conf +``` + +##### Letsencrypt +We now will install certbot for Letsencrypt as well as gunicorn3. +```sh +sudo apt-get install certbot + +sudo apt-get install gunicorn3 +``` +Now we need to create a directory for Letsencrypt +```sh +mkdir /var/www/letsencrypt +``` From 406adcc973f1cdea2d90c34a3dd6086c0d8b0ac3 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Tue, 7 Mar 2023 11:17:29 +0200 Subject: [PATCH 040/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 35 ++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index 5a7748c9c3..6751ff640c 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -5,8 +5,8 @@ Installation should only take a few minutes. ## What we will do: - Prepare the server - Install Docker & Docker-compose -- Install Nginx webserver. -- Install +- Install PostgreSQL +- Install Nginx webserver - You need to be a user with root access to the machine you're trying to install Mathesar on. ## Preparing our server. @@ -19,6 +19,7 @@ First, we need to update the software repository and upgrade all packages using ```sh apt update && apt upgrade ``` +Once the system has been updated, I recommend you perform a reboot to get the new kernel running incase it was updated. Next we will install the required packages. ```sh apt install locales build-essential acl ntp git python3-pip ipython3 @@ -74,7 +75,35 @@ Once downloaded, we have to change the properties so that it is an executable: sudo chmod +x /usr/local/bin/docker-compose ``` That is it. We can now move to the next step. -### Step Three: Install Nginx with Letsencrypt and Gurnicorn3 + +### Step Three: Install PostGreSQL +SSH to your server and run the following commands to update all the packages installed. +```sh +apt update && apt update +``` +Now we will install the dependencies for PostGreSQL. Note some of these may already be installed from a previous step. +```sh +apt install curl gpg gnupg2 software-properties-common apt-transport-https lsb-release ca-certificates +``` +Now that we have updated and rebooted our system, let’s add the APT repository required to pull the packages form the PostgreSQL repository. +```sh +curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc|sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg +``` +After importing GPG key, add repository contents to your Ubuntu 22.04|20.04|18.04 system: +```sh +echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" |sudo tee /etc/apt/sources.list.d/pgdg.list +``` +The repository added contains many different packages including third party addons. They include: + + - postgresql-client + - postgresql + - libpq-dev + - postgresql-server-dev + - pgadmin packages + + + +### Step Four: Install Nginx with Letsencrypt and Gurnicorn3 We will start off by installing Nginx on the system. This will already be in the Debian repository so simply run the install command. ```sh From 54c8017e1561b63b458967b954063d5c2838660a Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Tue, 7 Mar 2023 11:19:14 +0200 Subject: [PATCH 041/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index 6751ff640c..7c0e90a73b 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -100,7 +100,14 @@ The repository added contains many different packages including third party addo - libpq-dev - postgresql-server-dev - pgadmin packages - +With the repository added we can install the PostgreSQL 13 packages on our Ubuntu 22.04|20.04|18.04 Linux server. But first update the package index for the version to be available at the OS level. +```sh +apt update +``` +Now we can install PostGreSQL 13 on the system. +```sh +apt install postgresql-13 postgresql-client-13 +``` ### Step Four: Install Nginx with Letsencrypt and Gurnicorn3 From 269dc69bd2a226025b6a6c2a99a683ba0d641a85 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Tue, 7 Mar 2023 11:20:33 +0200 Subject: [PATCH 042/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index 7c0e90a73b..1e49c321c1 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -33,7 +33,7 @@ usermod -a -G deployers deployer Now you need to edit the `/etc/sudoers` file with the 'visudo' command, and add this line: `deployer ALL=(ALL) NOPASSWD: ALL` under the `# User privilege specification` section. If it fails to save, then edit again and move that to the last line of the file. Remember to use TAB between the username and the first `ALL` section -### Step two +### Step two: Install Docker & Docker-compose Clean the system of any potential pre-installed Docker packages. ```sh apt-get remove docker docker-engine docker.io From 70c61c7e58d2558f7eb7ac1859494e4525897b8b Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Tue, 7 Mar 2023 11:21:35 +0200 Subject: [PATCH 043/553] Update debian-manual.md --- docs/docs/installation/debian-manual.md | 36 +++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/docs/docs/installation/debian-manual.md b/docs/docs/installation/debian-manual.md index 96db02b1fe..9b97b1d941 100644 --- a/docs/docs/installation/debian-manual.md +++ b/docs/docs/installation/debian-manual.md @@ -32,7 +32,7 @@ usermod -a -G deployers deployer Now you need to edit the `/etc/sudoers` file with the 'visudo' command, and add this line: `deployer ALL=(ALL) NOPASSWD: ALL` under the `# User privilege specification` section. If it fails to save, then edit again and move that to the last line of the file. Remember to use TAB between the username and the first `ALL` section -### Step two +### Step two: Install Docker & Docker-compose Clean the system of any potential pre-installed Docker packages. ```sh apt-get remove docker docker-engine docker.io @@ -74,7 +74,39 @@ Once downloaded, we have to change the properties so that it is an executable: sudo chmod +x /usr/local/bin/docker-compose ``` That is it. We can now move to the next step. -### Step Three: Install Nginx with Letsencrypt and Gurnicorn3 +### Step Three: Install PostGreSQL +SSH to your server and run the following commands to update all the packages installed. +```sh +apt update && apt update +``` +Now we will install the dependencies for PostGreSQL. Note some of these may already be installed from a previous step. +```sh +apt install curl gpg gnupg2 software-properties-common apt-transport-https lsb-release ca-certificates +``` +Now that we have updated and rebooted our system, let’s add the APT repository required to pull the packages form the PostgreSQL repository. +```sh +curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc|sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg +``` +After importing GPG key, add repository contents to your Ubuntu 22.04|20.04|18.04 system: +```sh +echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" |sudo tee /etc/apt/sources.list.d/pgdg.list +``` +The repository added contains many different packages including third party addons. They include: + + - postgresql-client + - postgresql + - libpq-dev + - postgresql-server-dev + - pgadmin packages +With the repository added we can install the PostgreSQL 13 packages on our Ubuntu 22.04|20.04|18.04 Linux server. But first update the package index for the version to be available at the OS level. +```sh +apt update +``` +Now we can install PostGreSQL 13 on the system. +```sh +apt install postgresql-13 postgresql-client-13 +``` +### Step Four: Install Nginx with Letsencrypt and Gurnicorn3 We will start off by installing Nginx on the system. This will already be in the Debian repository so simply run the install command. ```sh From abc94bf57d16db898485f0f2f00cf6970e4481fb Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Tue, 7 Mar 2023 11:24:37 +0200 Subject: [PATCH 044/553] Update debian-manual.md --- docs/docs/installation/debian-manual.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/docs/installation/debian-manual.md b/docs/docs/installation/debian-manual.md index 9b97b1d941..eb1bb83f89 100644 --- a/docs/docs/installation/debian-manual.md +++ b/docs/docs/installation/debian-manual.md @@ -5,8 +5,8 @@ Installation should only take a few minutes. ## What we will do: - Prepare the server - Install Docker & Docker-compose -- Install Nginx webserver. -- Install +- Install PostgreSQL +- Install Nginx webserver - You need to be a user with root access to the machine you're trying to install Mathesar on. ## Preparing our server. From e082a1e49737634351fb66a55f9bdd05e5586cd2 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Tue, 7 Mar 2023 11:39:39 +0200 Subject: [PATCH 045/553] Update debian-manual.md --- docs/docs/installation/debian-manual.md | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/docs/docs/installation/debian-manual.md b/docs/docs/installation/debian-manual.md index eb1bb83f89..99e7e6b9c7 100644 --- a/docs/docs/installation/debian-manual.md +++ b/docs/docs/installation/debian-manual.md @@ -5,7 +5,7 @@ Installation should only take a few minutes. ## What we will do: - Prepare the server - Install Docker & Docker-compose -- Install PostgreSQL +- Install PostgreSQL & Create Database - Install Nginx webserver - You need to be a user with root access to the machine you're trying to install Mathesar on. @@ -106,6 +106,21 @@ Now we can install PostGreSQL 13 on the system. ```sh apt install postgresql-13 postgresql-client-13 ``` +#### Create Database, Database user +Before we start, we first need to secure our database as the root user's password is not set. +```sh +sudo su - postgres +psql -c "alter user postgres with password 'StrongAdminP@ssw0rd'" +``` +Now we can create our database, and user. Replace `yourdbname`, `youruser` and `yourpass` with your own, secure variables. Remember the `;` after each command. +```sh +sudo -u postgres psql #if you are not already in psql prompt +CREATE DATABASE yourdbname; +CREATE USER youruser WITH ENCRYPTED PASSWORD 'yourpass'; +GRANT ALL PRIVILEGES ON DATABASE yourdbname TO youruser; +``` + + ### Step Four: Install Nginx with Letsencrypt and Gurnicorn3 We will start off by installing Nginx on the system. This will already be in the Debian repository so simply run the install command. From d7c98cb07b1377acb955001d9c12d280254ccf1c Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Tue, 7 Mar 2023 11:41:15 +0200 Subject: [PATCH 046/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index 1e49c321c1..2d3c4e4138 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -108,6 +108,19 @@ Now we can install PostGreSQL 13 on the system. ```sh apt install postgresql-13 postgresql-client-13 ``` +#### Create Database, Database user +Before we start, we first need to secure our database as the root user's password is not set. +```sh +sudo su - postgres +psql -c "alter user postgres with password 'StrongAdminP@ssw0rd'" +``` +Now we can create our database, and user. Replace `yourdbname`, `youruser` and `yourpass` with your own, secure variables. Remember the `;` after each command. +```sh +sudo -u postgres psql #if you are not already in psql prompt +CREATE DATABASE yourdbname; +CREATE USER youruser WITH ENCRYPTED PASSWORD 'yourpass'; +GRANT ALL PRIVILEGES ON DATABASE yourdbname TO youruser; +``` ### Step Four: Install Nginx with Letsencrypt and Gurnicorn3 From cec158ea2d1d0aafc1cbd2081e76f7234ed5ed90 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Tue, 7 Mar 2023 13:35:49 +0200 Subject: [PATCH 047/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index 2d3c4e4138..aba279955d 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -26,8 +26,8 @@ apt install locales build-essential acl ntp git python3-pip ipython3 ``` Now we need to add a new usergroup and allow passwordless login: ```sh -sudo groupadd deployers -useradd deployer +sudo groupadd deployers \ +useradd deployer \ usermod -a -G deployers deployer ``` Now you need to edit the `/etc/sudoers` file with the 'visudo' command, and add this line: `deployer ALL=(ALL) NOPASSWD: ALL` under the `# User privilege specification` section. If it fails to save, then edit again and move that to the last line of the file. Remember to use TAB between the username and the first `ALL` section From 95091085ff09f3d39c0c2801536c10093cd5d984 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Tue, 7 Mar 2023 13:57:32 +0200 Subject: [PATCH 048/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index aba279955d..c64e170410 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -45,11 +45,11 @@ sudo apt -y install apt-transport-https ca-certificates curl gnupg2 software-pro ``` The next step is to add Docker's official GPG key to the keyring. This is to ensure the validity of downloaded Docker packages from it's repository. ```sh -curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg +curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg ``` Now that the key is added, we can add the stable repo for Docker. ```sh -echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list +echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null ``` We have to update the system: ```sh From ee9b317df74cc0c8a2d54e2cbe091d788ab2c297 Mon Sep 17 00:00:00 2001 From: IamEzio Date: Tue, 7 Mar 2023 17:44:24 +0530 Subject: [PATCH 049/553] formatted code --- mathesar_ui/src/components/form/validators.ts | 18 +++++++++--------- .../UserDetailsForm.svelte | 7 ++++--- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/mathesar_ui/src/components/form/validators.ts b/mathesar_ui/src/components/form/validators.ts index 8cb5e5845e..2bb9c1a26b 100644 --- a/mathesar_ui/src/components/form/validators.ts +++ b/mathesar_ui/src/components/form/validators.ts @@ -90,7 +90,7 @@ function isUsernameInvalid(v: string): boolean { } export function validateUsernameCharacters( - msg = 'Username should not contain non-alphanumeric characters.' + msg = 'Username should not contain non-alphanumeric characters.', ): ValidationFn { return (v) => v === null || v === undefined || !isUsernameInvalid(v) @@ -99,22 +99,22 @@ export function validateUsernameCharacters( } export function validateUsernameLength( - msg = 'Username should be less than or equal to 150 characters.' + msg = 'Username should be less than or equal to 150 characters.', ): ValidationFn { return (v) => - v === null || v === undefined || v.length <= 150 - ? valid() - : invalid(msg); + v === null || v === undefined || v.length <= 150 ? valid() : invalid(msg); } function isEmailInvalid(v: string): boolean { - return !v.toLowerCase().match( - /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/ - ); + return !v + .toLowerCase() + .match( + /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/, + ); } export function validateEmail( - msg = 'Invalid email format.' + msg = 'Invalid email format.', ): ValidationFn { return (v) => v === null || v === undefined || !isEmailInvalid(v) diff --git a/mathesar_ui/src/systems/users-and-permissions/UserDetailsForm.svelte b/mathesar_ui/src/systems/users-and-permissions/UserDetailsForm.svelte index 7c2a344304..073e06b5c8 100644 --- a/mathesar_ui/src/systems/users-and-permissions/UserDetailsForm.svelte +++ b/mathesar_ui/src/systems/users-and-permissions/UserDetailsForm.svelte @@ -33,9 +33,10 @@ $: isUserUpdatingThemselves = userProfile && userProfile.id === user?.id; $: isNewUser = user === undefined; $: fullName = optionalField(user?.full_name ?? ''); - $: username = requiredField( - user?.username ?? '', - [validateUsernameLength(), validateUsernameCharacters()]); + $: username = requiredField(user?.username ?? '', [ + validateUsernameLength(), + validateUsernameCharacters(), + ]); $: email = optionalField(user?.email ?? '', [validateEmail()]); $: userType = requiredField<'user' | 'admin' | undefined>( user?.is_superuser ? 'admin' : 'user', From b178009d5c17bda74810d2879bfcb0e75193760a Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Wed, 8 Mar 2023 11:33:52 +0200 Subject: [PATCH 050/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index c64e170410..ff4cd8ac7f 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -7,7 +7,7 @@ Installation should only take a few minutes. - Install Docker & Docker-compose - Install PostgreSQL - Install Nginx webserver -- You need to be a user with root access to the machine you're trying to install Mathesar on. +- You need to be a user with root access to the machine you're trying to install Mathesar on. We will use mathesar.example.com as the URL for our website. ## Preparing our server. - Prerequisites @@ -143,7 +143,7 @@ echo "server_tokens off; server { listen 80 default_server; - server_name {{ main_domain_name }}; + server_name mathesar.example.com; location /.well-known/acme-challenge { root /var/www/letsencrypt; @@ -151,7 +151,7 @@ server { } location / { - rewrite ^ https://{{ main_domain_name }}$request_uri? permanent; + rewrite ^ https://mathesar.example.com$request_uri? permanent; } }" > /etc/nginx/sites-enabled/http ``` @@ -199,3 +199,9 @@ Now we need to create a directory for Letsencrypt ```sh mkdir /var/www/letsencrypt ``` +We will also need a directory for our website itself. In this case, we will use `mathesar.example.com` as noted earlier. We will also assign it to the `www-data` user and group. +```sh +mkdir /var/www/mathesar.example.com +chgrp www-data /var/www/mathesar.example.com/ +chown -R www-data:www-data /var/www/mathesar.example.com +``` From 8efe08bab4f2835783c9efe2f7032b265295441f Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Wed, 8 Mar 2023 11:48:45 +0200 Subject: [PATCH 051/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 64 ++++++++++++++++++++++++- 1 file changed, 63 insertions(+), 1 deletion(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index ff4cd8ac7f..5b83b4e926 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -199,9 +199,71 @@ Now we need to create a directory for Letsencrypt ```sh mkdir /var/www/letsencrypt ``` -We will also need a directory for our website itself. In this case, we will use `mathesar.example.com` as noted earlier. We will also assign it to the `www-data` user and group. +We will also need a directory for our website itself. In this case, we will use `mathesar.example.com` as noted earlier. We will also assign it to the `www-data` user and group. Then we will change the permissions of the folder to get it ready for a website. ```sh mkdir /var/www/mathesar.example.com chgrp www-data /var/www/mathesar.example.com/ chown -R www-data:www-data /var/www/mathesar.example.com +chmod 0755 /var/www/mathesar.example.com/ ``` +Next, we will install the Nginx site for mathesar.example.com. + +```sh +echo "# Gunicorn socket +upstream app_server { + # fail_timeout=0 means we always retry an upstream even if it failed + # to return a good HTTP response + + server unix:/run/gunicorn.sock fail_timeout=0; +} + +# HTTPS server +server { + listen 443 ssl default deferred; + server_name {{ main_domain_name }}; + + ssl_certificate /etc/letsencrypt/live/mathesar.example.com/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/mathesar.example.com/privkey.pem; + ssl_trusted_certificate /etc/letsencrypt/live/mathesar.example.com/fullchain.pem; + + ssl_session_cache shared:SSL:50m; + ssl_session_timeout 5m; + ssl_stapling on; + ssl_stapling_verify on; + + ssl_protocols TLSv1 TLSv1.1 TLSv1.2; + ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4"; + + ssl_dhparam /etc/nginx/dhparams.pem; + ssl_prefer_server_ciphers on; + + access_log /var/log/nginx/mathesar.example.com.access.log; + error_log /var/log/nginx/mathesar.example.com.error.log; + + location / { + # checks for static file, if not found proxy to app + try_files $uri @proxy_to_app; + } + + location /static/ { + alias {{ repo_path }}/static/; + } + + location @proxy_to_app { + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header Host $http_host; + + # note for the future: + # turn buffering off if using websockets or long polling + # also need to make sure gunicorn workers are running in async + # class + # proxy_buffering off; + + # we don't want nginx trying to do something clever with + # redirects, we set the Host: header above already. + proxy_redirect off; + proxy_pass http://app_server; + } +}" > /etc/nginx/sites-enabled/mathesar.example.com + From 3a09ddea75d5804095fa597aeb4f3f2f4a7b18db Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Fri, 10 Mar 2023 12:47:00 +0200 Subject: [PATCH 052/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index 5b83b4e926..412b46ccb0 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -246,7 +246,7 @@ server { } location /static/ { - alias {{ repo_path }}/static/; + alias mathesar.example.com/mathesar/static/; } location @proxy_to_app { From 14bca254e61f2576ddadc7b2c497fd060753df06 Mon Sep 17 00:00:00 2001 From: sukshan Date: Fri, 10 Mar 2023 17:03:08 +0530 Subject: [PATCH 053/553] Selecting first non primary cell of newly created Record --- .../src/components/sheet/SheetSelection.ts | 8 ++++++++ .../src/systems/table-view/StatusPane.svelte | 15 ++++++++++++--- mathesar_ui/src/systems/table-view/row/Row.svelte | 1 + 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/mathesar_ui/src/components/sheet/SheetSelection.ts b/mathesar_ui/src/components/sheet/SheetSelection.ts index 1b6c35b0d0..7a3b300c33 100644 --- a/mathesar_ui/src/components/sheet/SheetSelection.ts +++ b/mathesar_ui/src/components/sheet/SheetSelection.ts @@ -339,6 +339,14 @@ export default class SheetSelection< } } + selectAndActivateFirstCellAfterAddingNewRecord(): void { + const currentRows = this.getRows(); + const currentColumns = this.getColumns(); + if (currentRows.length > 0 && currentColumns.length > 1) { + this.activateCell(currentRows[currentRows.length - 1], currentColumns[1]); + } + } + getIncludedCells(selectionBounds: SelectionBounds): Cell[] { const { startRowIndex, endRowIndex, startColumnId, endColumnId } = selectionBounds; diff --git a/mathesar_ui/src/systems/table-view/StatusPane.svelte b/mathesar_ui/src/systems/table-view/StatusPane.svelte index f0dc330365..51d62e240b 100644 --- a/mathesar_ui/src/systems/table-view/StatusPane.svelte +++ b/mathesar_ui/src/systems/table-view/StatusPane.svelte @@ -26,8 +26,14 @@ export let context: 'page' | 'widget' = 'page'; - $: ({ recordsData, meta, isLoading, columnsDataStore, constraintsDataStore } = - $tabularData); + $: ({ + recordsData, + meta, + isLoading, + columnsDataStore, + constraintsDataStore, + selection, + } = $tabularData); $: ({ pagination } = meta); $: ({ size: pageSize, leftBound, rightBound } = $pagination); $: ({ totalCount, state, newRecords } = recordsData); @@ -67,7 +73,10 @@ disabled={$isLoading} size="medium" appearance="primary" - on:click={() => recordsData.addEmptyRecord()} + on:click={() => { + recordsData.addEmptyRecord(); + selection.selectAndActivateFirstCellAfterAddingNewRecord(); + }} > New Record diff --git a/mathesar_ui/src/systems/table-view/row/Row.svelte b/mathesar_ui/src/systems/table-view/row/Row.svelte index 45bda80ac6..8799f0b2df 100644 --- a/mathesar_ui/src/systems/table-view/row/Row.svelte +++ b/mathesar_ui/src/systems/table-view/row/Row.svelte @@ -54,6 +54,7 @@ function checkAndCreateEmptyRow() { if (isPlaceholderRow(row)) { void recordsData.addEmptyRecord(); + selection.selectAndActivateFirstCellAfterAddingNewRecord(); } } From 1e298d59b51d722bd62db630ae1c390c5598a0ad Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Fri, 10 Mar 2023 13:49:24 +0200 Subject: [PATCH 054/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index 412b46ccb0..ae891ca686 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -267,3 +267,23 @@ server { } }" > /etc/nginx/sites-enabled/mathesar.example.com +With this in place, we can not install the SSL certificate for our domain. You can run this command: +```sh +letsencrypt certonly -n --webroot -w /var/www/letsencrypt -m you@mathesar.example.com --agree-tos -d mathesar.example.com +``` +Now that the SSL certificate is installed, lets create a cron job so that it gets renewed once a week. From the command you will see `0 0 * * FRI` and this means it will renew at 00:00 every Friday. +```sh +echo "0 0 * * FRI root letsencrypt certonly -n --webroot -w /var/www/letsencrypt -m marius@mathesar.cloudnation.co.za --agree-tos -d mathesar.cloudnation.co.za" >> /etc/crontab +``` +Wait three minutes, and then check whether your cron file edit is valid by running the following command: +```sh +grep cron /var/log/syslog | tail -10 +``` +If you see ` (*system*) RELOAD (/etc/crontab)` without any error message attached, you did this correctly. + +Lastly, we will also generate the dhparams for Nginx: +```sh +openssl dhparam -dsaparam -out /etc/nginx/dhparams.pem 2048 +``` + +va From 43bdb1bfb170bb2427d8f27ba60d98f656e8173f Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Fri, 10 Mar 2023 13:50:48 +0200 Subject: [PATCH 055/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index ae891ca686..3f725d3769 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -273,7 +273,7 @@ letsencrypt certonly -n --webroot -w /var/www/letsencrypt -m you@mathesar.exampl ``` Now that the SSL certificate is installed, lets create a cron job so that it gets renewed once a week. From the command you will see `0 0 * * FRI` and this means it will renew at 00:00 every Friday. ```sh -echo "0 0 * * FRI root letsencrypt certonly -n --webroot -w /var/www/letsencrypt -m marius@mathesar.cloudnation.co.za --agree-tos -d mathesar.cloudnation.co.za" >> /etc/crontab +echo "0 0 * * FRI root letsencrypt certonly -n --webroot -w /var/www/letsencrypt -m you@mathesar.example.com --agree-tos -d mathesar.example.com" >> /etc/crontab ``` Wait three minutes, and then check whether your cron file edit is valid by running the following command: ```sh From 2081c9792585f8a0463bcf26196fdd79e9c47452 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Fri, 10 Mar 2023 13:51:32 +0200 Subject: [PATCH 056/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index 3f725d3769..89f293076f 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -279,7 +279,7 @@ Wait three minutes, and then check whether your cron file edit is valid by runni ```sh grep cron /var/log/syslog | tail -10 ``` -If you see ` (*system*) RELOAD (/etc/crontab)` without any error message attached, you did this correctly. +If you see ` (*system*) RELOAD (/etc/crontab)` in the log output without any error message attached, you did this correctly. Lastly, we will also generate the dhparams for Nginx: ```sh From 46f7f49628491fd176c9f3428ca29d77da2694f7 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Fri, 10 Mar 2023 13:53:05 +0200 Subject: [PATCH 057/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index 89f293076f..bd89701464 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -4,8 +4,9 @@ Installation should only take a few minutes. ## What we will do: - Prepare the server -- Install Docker & Docker-compose -- Install PostgreSQL +- ### Install Docker & Docker-compose +- ### Database +- - Install PostgreSQL - Install Nginx webserver - You need to be a user with root access to the machine you're trying to install Mathesar on. We will use mathesar.example.com as the URL for our website. From 0c4701f2dc7eb7597ec70080ad0c4fe90ef4d0b9 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Fri, 10 Mar 2023 13:53:47 +0200 Subject: [PATCH 058/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index bd89701464..5b81c03cb7 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -4,10 +4,11 @@ Installation should only take a few minutes. ## What we will do: - Prepare the server -- ### Install Docker & Docker-compose -- ### Database +- ###### Install Docker & Docker-compose +- ###### Database - - Install PostgreSQL -- Install Nginx webserver +- ##### Web Server +- - Install Nginx webserver - You need to be a user with root access to the machine you're trying to install Mathesar on. We will use mathesar.example.com as the URL for our website. ## Preparing our server. From 991c4966dbbc19b35c5174f46a4ca366b76d5124 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Fri, 10 Mar 2023 13:54:38 +0200 Subject: [PATCH 059/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index 5b81c03cb7..a7c36658a8 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -6,9 +6,9 @@ Installation should only take a few minutes. - Prepare the server - ###### Install Docker & Docker-compose - ###### Database -- - Install PostgreSQL -- ##### Web Server -- - Install Nginx webserver + - Install PostgreSQL +- ###### Web Server + - Install Nginx webserver - You need to be a user with root access to the machine you're trying to install Mathesar on. We will use mathesar.example.com as the URL for our website. ## Preparing our server. From 4b7c602c097d45215f58826f62aabd04a73b3ee5 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Fri, 10 Mar 2023 14:03:41 +0200 Subject: [PATCH 060/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index a7c36658a8..9f0a523005 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -7,8 +7,12 @@ Installation should only take a few minutes. - ###### Install Docker & Docker-compose - ###### Database - Install PostgreSQL + - Create Database, Database user - ###### Web Server - - Install Nginx webserver + - Install Nginx webserver + - Install Letsencrypt and Gurnicorn3 +- ##### Install Mathesar +- - You need to be a user with root access to the machine you're trying to install Mathesar on. We will use mathesar.example.com as the URL for our website. ## Preparing our server. From 990afa46ee922a7168da6002b0df8244dee81944 Mon Sep 17 00:00:00 2001 From: silentninja Date: Sat, 11 Mar 2023 00:27:21 +0400 Subject: [PATCH 061/553] Add documentation to rebuild docker image when the cod changes locally --- docs/docs/contributing/local-dev.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/docs/contributing/local-dev.md b/docs/docs/contributing/local-dev.md index f67b09854a..afedbdfa37 100644 --- a/docs/docs/contributing/local-dev.md +++ b/docs/docs/contributing/local-dev.md @@ -54,6 +54,11 @@ For more detailed information on Mathesar's frontend development, see [the READM For more detailed information on working on Mathesar's documentation, see [the README in the `docs` folder](https://github.com/centerofci/mathesar/blob/master/docs/README.md). +## Development Notes +- It is recommended to rebuild Docker images when code changes are pulled from the remote server or when switching branches using the command: + - `sudo docker compose --profile dev up --force-recreate --build dev-service` + + ## Demo mode Mathesar can be run in "live demo mode". This creates a new database for every user session, adds a banner to the UI, and enables analytics, sent to the Mathesar team. From 4b06aa252f325239f1eba38f9108224cd0158d4d Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Mon, 13 Mar 2023 12:26:35 +0200 Subject: [PATCH 062/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 30 ++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index 9f0a523005..344e84ffad 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -291,5 +291,33 @@ Lastly, we will also generate the dhparams for Nginx: ```sh openssl dhparam -dsaparam -out /etc/nginx/dhparams.pem 2048 ``` +We are not finished with the Nginx & Letsencrypt section. + +### Step Five: Install the Mathesar application +##### Add the NodeJS key. +Firstly, we will add the NodeJS apt key, as well as the APT repo. +```sh +KEYRING=/usr/share/keyrings/nodesource.gpg +curl -fsSL https://deb.nodesource.com/gpgkey/nodesource.gpg.key | gpg --dearmor | sudo tee "$KEYRING" >/dev/null +gpg --no-default-keyring --keyring "$KEYRING" --list-keys +``` +You should see a key with ID `9FD3B784BC1C6FC31A8A0A1C1655A0AB68576280` which will confirm this worked. +Now you need to change the permissions on this key: +```sh +chmod a+r /usr/share/keyrings/nodesource.gpg +``` +##### Add Repository from NodeSource +Now we will add the desired NodeSource repository. +```sh +VERSION=node_16.x +KEYRING=/usr/share/keyrings/nodesource.gpg +DISTRO="$(lsb_release -s -c)" +echo "deb [signed-by=$KEYRING] https://deb.nodesource.com/$VERSION $DISTRO main" | sudo tee /etc/apt/sources.list.d/nodesource.list +echo "deb-src [signed-by=$KEYRING] https://deb.nodesource.com/$VERSION $DISTRO main" | sudo tee -a /etc/apt/sources.list.d/nodesource.list +``` +Now we can update our APT repositories and then install NodeJS. +```sh +sudo apt update +apt install nodejs +``` -va From d165bd0523368b7780301de3e8b529d6e3c9e0a7 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Mon, 13 Mar 2023 12:46:28 +0200 Subject: [PATCH 063/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index 344e84ffad..6a58e9d8eb 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -317,7 +317,15 @@ echo "deb-src [signed-by=$KEYRING] https://deb.nodesource.com/$VERSION $DISTRO m ``` Now we can update our APT repositories and then install NodeJS. ```sh -sudo apt update +sudo apt update && apt upgrade apt install nodejs ``` - +Now we will install further required packages on the system. +```sh +apt install python3-django python3-virtualenv libpq-dev +``` +Next, we will create the gunicorn user and group on the system. +```sh +sudo groupadd gunicorn +useradd gunicorn +``` From e8a798a0ae61688283b968fe7bf0a66a6fa44e73 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Tue, 14 Mar 2023 11:30:19 +0200 Subject: [PATCH 064/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index 6a58e9d8eb..57b7e64897 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -12,7 +12,8 @@ Installation should only take a few minutes. - Install Nginx webserver - Install Letsencrypt and Gurnicorn3 - ##### Install Mathesar -- + - Set up NodeJS + - Set up Gunicorn - You need to be a user with root access to the machine you're trying to install Mathesar on. We will use mathesar.example.com as the URL for our website. ## Preparing our server. From e7f67cc8760687f614793581ed90957b38fba8ed Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Tue, 14 Mar 2023 11:32:06 +0200 Subject: [PATCH 065/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index 57b7e64897..56c9a1b22a 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -295,6 +295,8 @@ openssl dhparam -dsaparam -out /etc/nginx/dhparams.pem 2048 We are not finished with the Nginx & Letsencrypt section. ### Step Five: Install the Mathesar application +#### Set up NodeJS + ##### Add the NodeJS key. Firstly, we will add the NodeJS apt key, as well as the APT repo. ```sh @@ -321,6 +323,9 @@ Now we can update our APT repositories and then install NodeJS. sudo apt update && apt upgrade apt install nodejs ``` +#### Set up Gunicorn + + Now we will install further required packages on the system. ```sh apt install python3-django python3-virtualenv libpq-dev From a7c0bd3339a295ceb3832c8a3a45adb80cef1f63 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Tue, 14 Mar 2023 11:36:26 +0200 Subject: [PATCH 066/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index 56c9a1b22a..897f221e26 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -335,3 +335,11 @@ Next, we will create the gunicorn user and group on the system. sudo groupadd gunicorn useradd gunicorn ``` +Next we will create the configuration file for Gunicorn on our site. You can create the file here: ``/var/www/mathesar.example.com/gunicorn_conf.py`` and copy the following code into it. Pay attention as you have to edit the code according to your FQDN / URL. + +```sh +errorlog = '/var/log/gunicorn/mathesar.example.com-error.log' +loglevel = 'info' +accesslog = '/var/log/gunicorn/mathesar.example.com-access.log' +access_log_format = '%(h)s %(l)s %(u)s %(t)s "%(r)s" %(s)s %(b)s "%(f)s" "%(a)s"' +``` From 1db26d39cc6d0c75d7838fa3d4652747ee165687 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Tue, 14 Mar 2023 12:03:35 +0200 Subject: [PATCH 067/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 51 ++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 2 deletions(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index 897f221e26..cd014ad6f6 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -333,9 +333,9 @@ apt install python3-django python3-virtualenv libpq-dev Next, we will create the gunicorn user and group on the system. ```sh sudo groupadd gunicorn -useradd gunicorn +useradd gunicorn -g gunicorn ``` -Next we will create the configuration file for Gunicorn on our site. You can create the file here: ``/var/www/mathesar.example.com/gunicorn_conf.py`` and copy the following code into it. Pay attention as you have to edit the code according to your FQDN / URL. +Next we will create the configuration file for Gunicorn on our site. You must create the file here: `/var/www/mathesar.example.com/gunicorn_conf.py` and copy the following code into it. Pay attention as you have to edit the code according to your FQDN / URL. ```sh errorlog = '/var/log/gunicorn/mathesar.example.com-error.log' @@ -343,3 +343,50 @@ loglevel = 'info' accesslog = '/var/log/gunicorn/mathesar.example.com-access.log' access_log_format = '%(h)s %(l)s %(u)s %(t)s "%(r)s" %(s)s %(b)s "%(f)s" "%(a)s"' ``` +Next we will create the logging directory for Gunicorn and assign it to the gunicorn user & group. +```sh +sudo mkdir /var/log/gunicorn # Only if it does not exist already, but installation of Gunicorn should have created this and assigned to www-data user/group +chmod 0755 /var/log/gunicorn +chgroup gunicorn /var/log/gunicorn +chown gunicorn /var/log/gunicorn +``` +Next we will create the Gunicorn systemd service. You must create the file here: `/lib/systemd/system/gunicorn.service` and copy the following code into it. Pay attention as you have to edit the code according to your FQDN / URL. +```sh +[Unit] +Description=gunicorn daemon +Requires=gunicorn.socket +After=network.target + +[Service] +Type=notify +User=gunicorn +Group=gunicorn +RuntimeDirectory=gunicorn +WorkingDirectory=/var/www/mathesar.example.com/mathesar +ExecStart=/bin/bash -c '/opt/virtualenvs/mathesar/bin/gunicorn -c /var/www/mathesar.example.com/gunicorn_conf.py config.wsgi:application' +EnvironmentFile=/etc/gunicorn-env + +ExecReload=/bin/kill -s HUP $MAINPID +KillMode=mixed +TimeoutStopSec=5 +PrivateTmp=true + +[Install] +WantedBy=multi-user.target +``` +Next we will create the Gunicorn systemd socker. You must create the file here: `/lib/systemd/system/gunicorn.socket` and copy the following code into it. Pay attention as you have to edit the code according to your FQDN / URL. + +```sh +[Unit] +Description=gunicorn socket + +[Socket] +ListenStream=/run/gunicorn.sock +# Our service won't need permissions for the socket, since it +# inherits the file descriptor by socket activation +# only the nginx daemon will need access to the socket +SocketUser=www-data + +[Install] +WantedBy=sockets.target +``` From d0c8c02895e3302cab6af091c818caf6d14f2cd7 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Tue, 14 Mar 2023 12:08:05 +0200 Subject: [PATCH 068/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index cd014ad6f6..1b48d5a773 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -325,7 +325,6 @@ apt install nodejs ``` #### Set up Gunicorn - Now we will install further required packages on the system. ```sh apt install python3-django python3-virtualenv libpq-dev @@ -374,6 +373,8 @@ PrivateTmp=true [Install] WantedBy=multi-user.target ``` +The permissions for the file must be 0644 so run this when you are done: `chmod 0644 /lib/systemd/system/gunicorn.service` + Next we will create the Gunicorn systemd socker. You must create the file here: `/lib/systemd/system/gunicorn.socket` and copy the following code into it. Pay attention as you have to edit the code according to your FQDN / URL. ```sh @@ -390,3 +391,12 @@ SocketUser=www-data [Install] WantedBy=sockets.target ``` +The permissions for the file must be 0644 so run this when you are done: `chmod 0644 /lib/systemd/system/gunicorn.socket` + +Next we will create the Gunicorn environment file for the service. You must create the file here: `/etc/gunicorn-env` and copy the following code into it. Pay attention as you have to edit the code according to your FQDN / URL. +```sh +{% for k,v in django_settings.items() %} +{{ k }}={{ v }} +{% endfor %} +``` +The permissions for the file must be 0400 so run this when you are done: `chmod 0400 /etc/gunicorn-env` From 5da1ad96265e084c4f52fd93f9c0f38f0071ce95 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Tue, 14 Mar 2023 12:19:04 +0200 Subject: [PATCH 069/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index 1b48d5a773..8163af3e65 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -327,7 +327,7 @@ apt install nodejs Now we will install further required packages on the system. ```sh -apt install python3-django python3-virtualenv libpq-dev +apt install python3-django python3-virtualenv libpq-dev python3.10-venv ``` Next, we will create the gunicorn user and group on the system. ```sh @@ -400,3 +400,22 @@ Next we will create the Gunicorn environment file for the service. You must cre {% endfor %} ``` The permissions for the file must be 0400 so run this when you are done: `chmod 0400 /etc/gunicorn-env` + +We will now reload systemctl: +```sh +systemctl daemon-reload +``` +#### Create the virtual environment + +We need to create a virtual environment for the Mathesar application. Wew will do this by running the following command: +```sh +python3 -m venv /opt/virtualenvs/mathesar +``` + +#### Clone the Mathesar repo + +We can now clone the Mathesar repo into our working folder. +```sh +git clone https://github.com/centerofci/mathesar.git /var/www/mathesar.example.com/ +``` + From ba521a14bfae70e7af8436d83f0f5d87464d201a Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Tue, 14 Mar 2023 12:39:29 +0200 Subject: [PATCH 070/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index 8163af3e65..003feeb673 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -418,4 +418,8 @@ We can now clone the Mathesar repo into our working folder. ```sh git clone https://github.com/centerofci/mathesar.git /var/www/mathesar.example.com/ ``` - +Now, we can update the requirements: +```sh +cd /var/www/mathesar.example.com +pip install -r requirements.txt +``` From bed995c42fa5df7ada491b9d4d0295389e7e816b Mon Sep 17 00:00:00 2001 From: Charvi Date: Tue, 14 Mar 2023 17:53:45 +0530 Subject: [PATCH 071/553] changes in docs --- docs/docs/contributing/local-dev.md | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/docs/docs/contributing/local-dev.md b/docs/docs/contributing/local-dev.md index f67b09854a..80cae7fb1f 100644 --- a/docs/docs/contributing/local-dev.md +++ b/docs/docs/contributing/local-dev.md @@ -40,7 +40,20 @@ It is recommended that you keep the Docker containers running while you make cha ## Developing in Windows -Windows users who want to run the Mathesar Docker development environment in WSL are advised to clone the repository in a Linux filesystem. When the project resides in a Windows filesystem, WSL does not work well with hot module replacement (HMR), which is required for frontend development. Please refer to our [Common Issues wiki page](https://wiki.mathesar.org/engineering/common-issues), and the [frontend development README file](https://github.com/centerofci/mathesar/blob/master/mathesar_ui/README.md#developing-in-windows) for more details. +Windows users who want to run the Mathesar Docker development environment in WSL are advised to clone the repository in a Linux filesystem. When the project resides in a Windows filesystem, WSL does not work well with hot module replacement (HMR), which is required for frontend development. +Run the commands listed below in the repository's root directory after cloning: + +``` +git config --global core.autocrlf input + +``` +``` +sudo apt-get install -y dos2unix +sudo find . -type f -exec dos2unix {} \; +``` +These commands install the dos2unix utility, which converts text files from the DOS/Microsoft Windows format (with CRLF line endings) to the Unix/Linux format (with LF line endings). Next, the find utility is used to locate all files (-type f) in the current directory (.) and its subdirectories, and the dos2unix command is then executed on each of them (-exec dos2unix ;). +then after that execute the docker compose command inside of WSL. +Please refer to our [Common Issues wiki page](https://wiki.mathesar.org/engineering/common-issues), and the [frontend development README file](https://github.com/centerofci/mathesar/blob/master/mathesar_ui/README.md#developing-in-windows) for more details. ## Configuration Options From bca48c77002d2c894fae4476b78c6f6dcf7b7345 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Wed, 15 Mar 2023 09:32:06 +0200 Subject: [PATCH 072/553] Create ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index 003feeb673..8163af3e65 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -418,8 +418,4 @@ We can now clone the Mathesar repo into our working folder. ```sh git clone https://github.com/centerofci/mathesar.git /var/www/mathesar.example.com/ ``` -Now, we can update the requirements: -```sh -cd /var/www/mathesar.example.com -pip install -r requirements.txt -``` + From fce690eb091a0b64145a0ca01b34b12db27d91c9 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Wed, 15 Mar 2023 09:53:07 +0200 Subject: [PATCH 073/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index 8163af3e65..037c6388b8 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -38,6 +38,11 @@ useradd deployer \ usermod -a -G deployers deployer ``` Now you need to edit the `/etc/sudoers` file with the 'visudo' command, and add this line: `deployer ALL=(ALL) NOPASSWD: ALL` under the `# User privilege specification` section. If it fails to save, then edit again and move that to the last line of the file. Remember to use TAB between the username and the first `ALL` section +You can test it with the following command: +```sh +visudo -c +``` +The output should look like this: `/etc/sudoers: parsed OK`. ### Step two: Install Docker & Docker-compose From 7d1307562feea5033c039db542acccd5a8f74f4e Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Wed, 15 Mar 2023 09:54:19 +0200 Subject: [PATCH 074/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index 037c6388b8..1b5cf05f1c 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -42,7 +42,7 @@ You can test it with the following command: ```sh visudo -c ``` -The output should look like this: `/etc/sudoers: parsed OK`. +The output should look like this: `/etc/sudoers: parsed OK`. ### Step two: Install Docker & Docker-compose From de37895cd0e61c7d12688761ccdbf4fecc113da0 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Wed, 15 Mar 2023 10:08:24 +0200 Subject: [PATCH 075/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index 1b5cf05f1c..262b7f936b 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -14,12 +14,12 @@ Installation should only take a few minutes. - ##### Install Mathesar - Set up NodeJS - Set up Gunicorn -- You need to be a user with root access to the machine you're trying to install Mathesar on. We will use mathesar.example.com as the URL for our website. - +- You need to be a user with root access to the machine you're trying to install Mathesar on. ## Preparing our server. - Prerequisites - Ubntu 22 with at least `60 GB` disk space and `4GB` of RAM. - Root privileges + - FQDN (fully qualified domain name) for your installation. We will use `mathesar.example.com` as the FQDN for our website ### Step one: Prepare the server First, we need to update the software repository and upgrade all packages using the apt command below. SSH to your server and elevate to the `root` user. From b805eee61daaf31b3873c1bdaba3133fad49be01 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Wed, 15 Mar 2023 10:16:05 +0200 Subject: [PATCH 076/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index 262b7f936b..273a88441a 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -19,7 +19,7 @@ Installation should only take a few minutes. - Prerequisites - Ubntu 22 with at least `60 GB` disk space and `4GB` of RAM. - Root privileges - - FQDN (fully qualified domain name) for your installation. We will use `mathesar.example.com` as the FQDN for our website + - Domain name, or subdomain, for your installation. We will use `mathesar.example.com` as the domain for our website ### Step one: Prepare the server First, we need to update the software repository and upgrade all packages using the apt command below. SSH to your server and elevate to the `root` user. From e4893e9b6f059d4931ee797bd925eed44c5317a0 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Wed, 15 Mar 2023 10:18:36 +0200 Subject: [PATCH 077/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index 273a88441a..c22d8df445 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -149,9 +149,9 @@ Next we will create a new site. Begin by creating the http file in '/etc/nginx/s ```sh touch /etc/nginx/sites-enabled/http ``` -Now, we can add our custom directives to the file. You can copy/paste this in your terminal and run it. +Now, we can add our custom directives to the file. You can edit the file and add the following code to it. ```sh -echo "server_tokens off; +server_tokens off; server { listen 80 default_server; @@ -165,7 +165,7 @@ server { location / { rewrite ^ https://mathesar.example.com$request_uri? permanent; } -}" > /etc/nginx/sites-enabled/http +} ``` Now we will install our system Nginx configuration. You can copy/paste this in your terminal and run it. From d915c5bbbd9ee481d08d039595b0dca3d7bc7061 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Wed, 15 Mar 2023 10:29:57 +0200 Subject: [PATCH 078/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index c22d8df445..673e58ddfc 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -279,7 +279,7 @@ server { } }" > /etc/nginx/sites-enabled/mathesar.example.com -With this in place, we can not install the SSL certificate for our domain. You can run this command: +With this in place, we can now install the SSL certificate for our domain. You can run this command: ```sh letsencrypt certonly -n --webroot -w /var/www/letsencrypt -m you@mathesar.example.com --agree-tos -d mathesar.example.com ``` From f434e37013381cf4f54a7a1243b9370292265bbd Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Wed, 15 Mar 2023 10:42:34 +0200 Subject: [PATCH 079/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index 673e58ddfc..efcd1824d2 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -199,6 +199,10 @@ http { include /etc/nginx/sites-enabled/*; }" > /etc/nginx/nginx.conf ``` +Now we will install Gunicorn using Python PIP. +```sh +pip3 install gunicorn +``` ##### Letsencrypt We now will install certbot for Letsencrypt as well as gunicorn3. From 308dc1970353770cccc904422a8c44d6ef60a4b2 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Wed, 15 Mar 2023 11:10:18 +0200 Subject: [PATCH 080/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index efcd1824d2..0404dfb4b0 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -236,7 +236,7 @@ upstream app_server { # HTTPS server server { listen 443 ssl default deferred; - server_name {{ main_domain_name }}; + server_name mathesar.example.com; ssl_certificate /etc/letsencrypt/live/mathesar.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/mathesar.example.com/privkey.pem; From d0f74967eee94b77b75a0f943fc45ba4a4da2c50 Mon Sep 17 00:00:00 2001 From: Brent Moran Date: Wed, 15 Mar 2023 23:42:46 +0800 Subject: [PATCH 081/553] add prototype SQL functions for table alter functions --- sql/prototype.sql | 124 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 sql/prototype.sql diff --git a/sql/prototype.sql b/sql/prototype.sql new file mode 100644 index 0000000000..6ee3e821fa --- /dev/null +++ b/sql/prototype.sql @@ -0,0 +1,124 @@ +/* +Functions for testing feasibility of moving different Mathesar pieces to the database. +*/ + +CREATE SCHEMA mathesar_internal; + +CREATE OR REPLACE FUNCTION mathesar_internal.execute_ddl(text, variadic anyarray) RETURNS TEXT + AS $$ + DECLARE + cmd TEXT; + BEGIN + cmd := format($1, VARIADIC $2); + EXECUTE cmd; + RETURN cmd; + END; +$$ +LANGUAGE plpgsql VOLATILE; + + +/* +db.tables.operations.alter +*/ + +-- Rename table + +CREATE OR REPLACE FUNCTION mathesar_internal.change_table_name_internal(text, text) RETURNS TEXT + AS $$ + BEGIN + RETURN mathesar_internal.execute_ddl('ALTER TABLE %s RENAME TO %s', $1, $2); + END; +$$ +LANGUAGE plpgsql VOLATILE; + + +CREATE OR REPLACE FUNCTION mathesar_internal.change_table_name(oid, text) RETURNS TEXT + AS $$ + BEGIN + RETURN mathesar_internal.change_table_name_internal($1::regclass::text, $2); + END; +$$ +LANGUAGE plpgsql VOLATILE; + + +CREATE OR REPLACE FUNCTION mathesar_internal.change_table_name(text, text, text) RETURNS TEXT + AS $$ + DECLARE qualified_name TEXT; + BEGIN + qualified_name := format('%s.%s', quote_ident($1), quote_ident($2)); + RETURN mathesar_internal.change_table_name_internal(qualified_name, quote_ident($3)); + END; +$$ +LANGUAGE plpgsql VOLATILE; + + +-- Comment on Table + +CREATE OR REPLACE FUNCTION mathesar_internal.comment_on_table_internal(text, text) RETURNS TEXT + AS $$ + BEGIN + RETURN mathesar_internal.execute_ddl('COMMENT ON TABLE %s IS ''%s''', $1, $2); + END; +$$ +LANGUAGE plpgsql VOLATILE; + + +CREATE OR REPLACE FUNCTION mathesar_internal.comment_on_table(oid, text) RETURNS TEXT + AS $$ + BEGIN + RETURN mathesar_internal.comment_on_table_internal($1::regclass::text, $2); + END; +$$ +LANGUAGE plpgsql VOLATILE; + + +CREATE OR REPLACE FUNCTION mathesar_internal.comment_on_table(text, text, text) RETURNS TEXT + AS $$ + DECLARE qualified_name TEXT; + BEGIN + qualified_name := format('%s.%s', quote_ident($1), quote_ident($2)); + RETURN mathesar_internal.comment_on_table_internal(qualified_name, quote_ident($3)); + END; +$$ +LANGUAGE plpgsql VOLATILE; + + +-- Alter Table: LEFT IN PYTHON (for now) + + +-- Update pk sequence to latest + +CREATE OR REPLACE FUNCTION mathesar_internal.update_pk_sequence_to_latest_internal(text, text) RETURNS TEXT + AS $$ + BEGIN + RETURN mathesar_internal.execute_ddl( + 'SELECT setval(pg_get_serial_sequence(''%1$s'', ''%2$s''), coalesce(max(%2$s) + 1, 1), false) FROM %1$s', + $1, $2 + ); + END; +$$ +LANGUAGE plpgsql VOLATILE; + + +CREATE OR REPLACE FUNCTION mathesar_internal.update_pk_sequence_to_latest(oid, integer) RETURNS TEXT + AS $$ + DECLARE qualified_table_name TEXT; + DECLARE colname TEXT; + BEGIN + SELECT $1::regclass::text INTO qualified_table_name; + SELECT attname::text FROM pg_attribute WHERE attrelid=$1 AND attnum=$2 INTO colname; + RETURN mathesar_internal.update_pk_sequence_to_latest_internal(qualified_table_name, colname); + END; +$$ +LANGUAGE plpgsql VOLATILE; + + +CREATE OR REPLACE FUNCTION mathesar_internal.update_pk_sequence_to_latest(text, text, text) RETURNS TEXT + AS $$ + DECLARE qualified_table_name TEXT; + BEGIN + qualified_table_name := format('%s.%s', quote_ident($1), quote_ident($2)); + RETURN mathesar_internal.update_pk_sequence_to_latest_internal(qualified_table_name, quote_ident($3)); + END; +$$ +LANGUAGE plpgsql VOLATILE; From da833f4a33033191799dbe9fdf63f102dc67904a Mon Sep 17 00:00:00 2001 From: Brent Moran Date: Thu, 16 Mar 2023 08:03:46 +0800 Subject: [PATCH 082/553] add view creator function, reorganize --- {sql => db/sql}/prototype.sql | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) rename {sql => db/sql}/prototype.sql (79%) diff --git a/sql/prototype.sql b/db/sql/prototype.sql similarity index 79% rename from sql/prototype.sql rename to db/sql/prototype.sql index 6ee3e821fa..84c1c50d07 100644 --- a/sql/prototype.sql +++ b/db/sql/prototype.sql @@ -2,7 +2,16 @@ Functions for testing feasibility of moving different Mathesar pieces to the database. */ -CREATE SCHEMA mathesar_internal; +CREATE SCHEMA IF NOT EXISTS mathesar_internal; + +CREATE OR REPLACE FUNCTION mathesar_internal.execute_ddl(text) RETURNS TEXT + AS $$ + BEGIN + EXECUTE $1; + RETURN $1; + END; +$$ +LANGUAGE plpgsql VOLATILE; CREATE OR REPLACE FUNCTION mathesar_internal.execute_ddl(text, variadic anyarray) RETURNS TEXT AS $$ @@ -122,3 +131,23 @@ CREATE OR REPLACE FUNCTION mathesar_internal.update_pk_sequence_to_latest(text, END; $$ LANGUAGE plpgsql VOLATILE; + + +-- This function will create a Mathesar view: for use in event trigger + +CREATE OR REPLACE FUNCTION mathesar_internal.create_mathesar_view(oid) RETURNS TEXT + AS $$ + DECLARE viewname TEXT; + DECLARE viewcols TEXT; + BEGIN + viewname := format('mathesar_internal.mv_%s', $1); + SELECT string_agg(format('%s AS col%s', quote_ident(attname), attnum), ', ') + FROM pg_attribute + WHERE attrelid=$1 AND attnum>0 + INTO viewcols; + RETURN mathesar_internal.execute_ddl( + 'CREATE VIEW %s AS SELECT %s FROM %s', viewname, viewcols, $1::regclass::text + ); + END; +$$ +LANGUAGE plpgsql VOLATILE; From 0f4cb95ae9cd5e6ac6bd3c10b185dfcf17ce3068 Mon Sep 17 00:00:00 2001 From: Brent Moran Date: Thu, 16 Mar 2023 12:07:23 +0800 Subject: [PATCH 083/553] add view creation trigger, view dropping function --- db/sql/prototype.sql | 65 +++++++++++++++++++++++++++++++++++++------- 1 file changed, 55 insertions(+), 10 deletions(-) diff --git a/db/sql/prototype.sql b/db/sql/prototype.sql index 84c1c50d07..9b7f093662 100644 --- a/db/sql/prototype.sql +++ b/db/sql/prototype.sql @@ -1,6 +1,9 @@ -/* -Functions for testing feasibility of moving different Mathesar pieces to the database. -*/ +-- Functions for testing feasibility of moving different Mathesar pieces to the +-- database. These are part of the 'remove SQLAlchemy' project. + + +-- Initial setup. This defines a general DDL execution function, as well as our +-- internal schema for holding all this functionality, 'mathesar_internal'. CREATE SCHEMA IF NOT EXISTS mathesar_internal; @@ -26,9 +29,7 @@ $$ LANGUAGE plpgsql VOLATILE; -/* -db.tables.operations.alter -*/ +-- db.tables.operations.alter -- Rename table @@ -60,7 +61,6 @@ CREATE OR REPLACE FUNCTION mathesar_internal.change_table_name(text, text, text) $$ LANGUAGE plpgsql VOLATILE; - -- Comment on Table CREATE OR REPLACE FUNCTION mathesar_internal.comment_on_table_internal(text, text) RETURNS TEXT @@ -133,15 +133,15 @@ $$ LANGUAGE plpgsql VOLATILE; --- This function will create a Mathesar view: for use in event trigger +-- This section sets up an event trigger to make a Mathesar view: for use in event trigger CREATE OR REPLACE FUNCTION mathesar_internal.create_mathesar_view(oid) RETURNS TEXT AS $$ DECLARE viewname TEXT; DECLARE viewcols TEXT; BEGIN - viewname := format('mathesar_internal.mv_%s', $1); - SELECT string_agg(format('%s AS col%s', quote_ident(attname), attnum), ', ') + viewname := format('mathesar_internal.mv%s', $1); + SELECT string_agg(format('%s AS c%s', quote_ident(attname), attnum), ', ') FROM pg_attribute WHERE attrelid=$1 AND attnum>0 INTO viewcols; @@ -151,3 +151,48 @@ CREATE OR REPLACE FUNCTION mathesar_internal.create_mathesar_view(oid) RETURNS T END; $$ LANGUAGE plpgsql VOLATILE; + +CREATE OR REPLACE FUNCTION mathesar_internal.create_mathesar_view() + RETURNS event_trigger + AS $$ + DECLARE dc record; + BEGIN + FOR dc IN SELECT * FROM pg_event_trigger_ddl_commands() + LOOP + IF dc.object_type='table' AND upper(dc.command_tag)<>'DROP TABLE' + THEN + PERFORM mathesar_internal.create_mathesar_view(dc.objid); + END IF; + END LOOP; + END; +$$ LANGUAGE plpgsql; + +DROP EVENT TRIGGER IF EXISTS create_mathesar_view; + +CREATE EVENT TRIGGER create_mathesar_view ON ddl_command_end + EXECUTE FUNCTION mathesar_internal.create_mathesar_view(); + +-- This section sets up a function to delete a Mathesar view before dropping its +-- underlying table. Has to be called from the app layer, since it's not +-- possible (without a C extension) to get the info about an object in an event +-- trigger context before actually attempting to drop it. + +CREATE OR REPLACE FUNCTION mathesar_internal.drop_mathesar_view(oid) RETURNS TEXT + AS $$ + DECLARE viewname TEXT; + BEGIN + viewname := format('mathesar_internal.mv%s', $1); + RETURN mathesar_internal.execute_ddl('DROP VIEW IF EXISTS %s', viewname); + END; +$$ +LANGUAGE plpgsql VOLATILE; + +CREATE OR REPLACE FUNCTION mathesar_internal.drop_mathesar_view(text, text) RETURNS TEXT + AS $$ + DECLARE tableid oid; + BEGIN + tableid := format('%s.%s', quote_ident($1), quote_ident($2))::regclass::oid; + RETURN mathesar_internal.drop_mathesar_view(tableid); + END; +$$ +LANGUAGE plpgsql VOLATILE; From 23c505b93dd8544c8bc99db56eff8031d1c69f97 Mon Sep 17 00:00:00 2001 From: Brent Moran Date: Thu, 16 Mar 2023 15:48:17 +0800 Subject: [PATCH 084/553] reformat and document code for easier understanding --- db/sql/prototype.sql | 564 ++++++++++++++++++++++++++++--------------- 1 file changed, 371 insertions(+), 193 deletions(-) diff --git a/db/sql/prototype.sql b/db/sql/prototype.sql index 9b7f093662..f9dda946a8 100644 --- a/db/sql/prototype.sql +++ b/db/sql/prototype.sql @@ -1,198 +1,376 @@ --- Functions for testing feasibility of moving different Mathesar pieces to the --- database. These are part of the 'remove SQLAlchemy' project. - - --- Initial setup. This defines a general DDL execution function, as well as our --- internal schema for holding all this functionality, 'mathesar_internal'. - -CREATE SCHEMA IF NOT EXISTS mathesar_internal; - -CREATE OR REPLACE FUNCTION mathesar_internal.execute_ddl(text) RETURNS TEXT - AS $$ - BEGIN - EXECUTE $1; - RETURN $1; - END; -$$ -LANGUAGE plpgsql VOLATILE; - -CREATE OR REPLACE FUNCTION mathesar_internal.execute_ddl(text, variadic anyarray) RETURNS TEXT - AS $$ - DECLARE - cmd TEXT; - BEGIN - cmd := format($1, VARIADIC $2); - EXECUTE cmd; - RETURN cmd; - END; -$$ -LANGUAGE plpgsql VOLATILE; - - --- db.tables.operations.alter - --- Rename table - -CREATE OR REPLACE FUNCTION mathesar_internal.change_table_name_internal(text, text) RETURNS TEXT - AS $$ - BEGIN - RETURN mathesar_internal.execute_ddl('ALTER TABLE %s RENAME TO %s', $1, $2); - END; -$$ -LANGUAGE plpgsql VOLATILE; - - -CREATE OR REPLACE FUNCTION mathesar_internal.change_table_name(oid, text) RETURNS TEXT - AS $$ - BEGIN - RETURN mathesar_internal.change_table_name_internal($1::regclass::text, $2); - END; -$$ -LANGUAGE plpgsql VOLATILE; - - -CREATE OR REPLACE FUNCTION mathesar_internal.change_table_name(text, text, text) RETURNS TEXT - AS $$ - DECLARE qualified_name TEXT; - BEGIN - qualified_name := format('%s.%s', quote_ident($1), quote_ident($2)); - RETURN mathesar_internal.change_table_name_internal(qualified_name, quote_ident($3)); - END; -$$ -LANGUAGE plpgsql VOLATILE; - --- Comment on Table - -CREATE OR REPLACE FUNCTION mathesar_internal.comment_on_table_internal(text, text) RETURNS TEXT - AS $$ - BEGIN - RETURN mathesar_internal.execute_ddl('COMMENT ON TABLE %s IS ''%s''', $1, $2); - END; -$$ -LANGUAGE plpgsql VOLATILE; - - -CREATE OR REPLACE FUNCTION mathesar_internal.comment_on_table(oid, text) RETURNS TEXT - AS $$ - BEGIN - RETURN mathesar_internal.comment_on_table_internal($1::regclass::text, $2); - END; -$$ -LANGUAGE plpgsql VOLATILE; - - -CREATE OR REPLACE FUNCTION mathesar_internal.comment_on_table(text, text, text) RETURNS TEXT - AS $$ - DECLARE qualified_name TEXT; - BEGIN - qualified_name := format('%s.%s', quote_ident($1), quote_ident($2)); - RETURN mathesar_internal.comment_on_table_internal(qualified_name, quote_ident($3)); - END; -$$ -LANGUAGE plpgsql VOLATILE; - - --- Alter Table: LEFT IN PYTHON (for now) - - --- Update pk sequence to latest - -CREATE OR REPLACE FUNCTION mathesar_internal.update_pk_sequence_to_latest_internal(text, text) RETURNS TEXT - AS $$ - BEGIN - RETURN mathesar_internal.execute_ddl( - 'SELECT setval(pg_get_serial_sequence(''%1$s'', ''%2$s''), coalesce(max(%2$s) + 1, 1), false) FROM %1$s', - $1, $2 - ); - END; -$$ -LANGUAGE plpgsql VOLATILE; - - -CREATE OR REPLACE FUNCTION mathesar_internal.update_pk_sequence_to_latest(oid, integer) RETURNS TEXT - AS $$ - DECLARE qualified_table_name TEXT; - DECLARE colname TEXT; - BEGIN - SELECT $1::regclass::text INTO qualified_table_name; - SELECT attname::text FROM pg_attribute WHERE attrelid=$1 AND attnum=$2 INTO colname; - RETURN mathesar_internal.update_pk_sequence_to_latest_internal(qualified_table_name, colname); - END; -$$ -LANGUAGE plpgsql VOLATILE; - - -CREATE OR REPLACE FUNCTION mathesar_internal.update_pk_sequence_to_latest(text, text, text) RETURNS TEXT - AS $$ - DECLARE qualified_table_name TEXT; - BEGIN - qualified_table_name := format('%s.%s', quote_ident($1), quote_ident($2)); - RETURN mathesar_internal.update_pk_sequence_to_latest_internal(qualified_table_name, quote_ident($3)); - END; -$$ -LANGUAGE plpgsql VOLATILE; - - --- This section sets up an event trigger to make a Mathesar view: for use in event trigger - -CREATE OR REPLACE FUNCTION mathesar_internal.create_mathesar_view(oid) RETURNS TEXT - AS $$ - DECLARE viewname TEXT; - DECLARE viewcols TEXT; - BEGIN - viewname := format('mathesar_internal.mv%s', $1); - SELECT string_agg(format('%s AS c%s', quote_ident(attname), attnum), ', ') - FROM pg_attribute - WHERE attrelid=$1 AND attnum>0 - INTO viewcols; - RETURN mathesar_internal.execute_ddl( - 'CREATE VIEW %s AS SELECT %s FROM %s', viewname, viewcols, $1::regclass::text - ); - END; -$$ -LANGUAGE plpgsql VOLATILE; - -CREATE OR REPLACE FUNCTION mathesar_internal.create_mathesar_view() - RETURNS event_trigger - AS $$ - DECLARE dc record; - BEGIN - FOR dc IN SELECT * FROM pg_event_trigger_ddl_commands() - LOOP - IF dc.object_type='table' AND upper(dc.command_tag)<>'DROP TABLE' - THEN - PERFORM mathesar_internal.create_mathesar_view(dc.objid); - END IF; - END LOOP; - END; +/* +Functions for testing feasibility of moving different Mathesar pieces to the database. These are +part of the 'remove SQLAlchemy' project. + +There are three involved schemas: + __msar: These functions aren't designed to be used except by other Mathesar functions. + Generally need preformatted strings as input, won't do quoting, etc. + msar: These functions are designed to be used more easily. They'll format strings, quote + identifiers, and so on. + msar_views: This schema is where internal mathesar views will be stored. + +The reason they're so abbreviated is to avoid namespace clashes, and also because making them longer +would make using them quite tedious, since they're everywhere. +*/ + +CREATE SCHEMA IF NOT EXISTS __msar; +CREATE SCHEMA IF NOT EXISTS msar; +CREATE SCHEMA IF NOT EXISTS msar_views; + +---------------------------------------------------------------------------------------------------- +---------------------------------------------------------------------------------------------------- +-- GENERAL DDL FUNCTIONS +-- +-- Functions in this section are quite general, and are the basis of the others. +---------------------------------------------------------------------------------------------------- +---------------------------------------------------------------------------------------------------- + +CREATE OR REPLACE FUNCTION +__msar.exec_ddl(command text) RETURNS text AS $$/* +Execute the given command, returning the command executed. + +Not useful for SELECTing from tables. Most useful when you're performing DDL. + +Args: + command: Raw string that will be executed as a command. +*/ +BEGIN + EXECUTE command; + RETURN command; +END; +$$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; + + +CREATE OR REPLACE FUNCTION +__msar.exec_ddl(command_template text, arguments variadic anyarray) RETURNS text AS $$/* +Execute a templated command, returning the command executed. + +The template is given in the first argument, and all further arguments are used to fill in the +template. Not useful for SELECTing from tables. Most useful when you're performing DDL. + +Args: + command_template: Raw string that will be executed as a command. + arguments: arguments that will be used to fill in the template. +*/ +DECLARE formatted_command TEXT; +BEGIN + formatted_command := format(command_template, VARIADIC arguments); + RETURN __msar.exec_ddl(formatted_command); +END; +$$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; + + +---------------------------------------------------------------------------------------------------- +---------------------------------------------------------------------------------------------------- +-- INFO FUNCTIONS +-- +-- Functions in this section get information about a given table or column. +---------------------------------------------------------------------------------------------------- +---------------------------------------------------------------------------------------------------- + +CREATE OR REPLACE FUNCTION +msar.get_fq_table_name(schema_ text, name_ text) RETURNS text AS $$/* +Return the fully-qualified, properly quoted, name for a given table. + +Args: + schema_: The schema of the table, unquoted. + name_: The name of the table, unqualified and unquoted. +*/ +BEGIN + RETURN format('%s.%s', quote_ident(schema_), quote_ident(name_)); +END; +$$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; + + +CREATE OR REPLACE FUNCTION +__msar.get_table_name(table_id oid) RETURNS text AS $$/* +Return the name for a given table, qualified or quoted as appropriate. + +In cases where the table is already included in the search path, the returned name will not be +fully-qualified. + +Args: + table_id: The OID of the table. +*/ +BEGIN + RETURN table_id::regclass::text; +END; +$$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; + + +CREATE OR REPLACE FUNCTION +msar.get_column_name(table_id oid, col_attnum integer) RETURNS text AS $$/* +Return the name for a given table, qualified or quoted as appropriate. + +In cases where the table is already included in the search path, the returned name will not be +fully-qualified. + +Args: + table_id: The OID of the table. +*/ +BEGIN + RETURN attname::text FROM pg_attribute WHERE attrelid=table_id AND attnum=col_attnum; +END; +$$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; + + +CREATE OR REPLACE FUNCTION +msar.get_mathesar_view_name(table_id oid) RETURNS text AS $$/* +Given a table OID, return the name of the special Mathesar view tracking it. + +Args: + table_id: The OID of the table whose associated view we want to name. +*/ +BEGIN + RETURN msar.get_fq_table_name('msar_views', format('mv%s', table_id)); +END; +$$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; + + +---------------------------------------------------------------------------------------------------- +---------------------------------------------------------------------------------------------------- +-- ALTER TABLE FUNCTIONS +-- +-- Functions in this section should always involve 'ALTER TABLE'. +---------------------------------------------------------------------------------------------------- +---------------------------------------------------------------------------------------------------- + + +-- Rename table ------------------------------------------------------------------------------------ + +CREATE OR REPLACE FUNCTION +__msar.change_table_name(old_name text, new_name text) RETURNS text AS $$/* +Change a table's name, returning the command executed. + +Args: + old_name: properly quoted, qualified table name + new_name: properly quoted, unqualified table name +*/ +BEGIN + RETURN __msar.exec_ddl( + 'ALTER TABLE %s RENAME TO %s', old_name, new_name + ); +END; +$$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; + + +CREATE OR REPLACE FUNCTION +msar.change_table_name(table_id oid, new_name text) RETURNS text AS $$/* +Change a table's name, returning the command executed. + +Args: + table_id: the OID of the table whose name we want to change + new_name: unquoted, unqualified table name +*/ +BEGIN + RETURN __msar.change_table_name(__msar.get_table_name(table_id), quote_ident(new_name)); +END; +$$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; + + +CREATE OR REPLACE FUNCTION +msar.change_table_name(schema_ text, old_name text, new_name text) RETURNS text AS $$/* +Change a table's name, returning the command executed. + +Args: + schem: unquoted schema name where the table lives + old_name: unquoted, unqualified original table name + new_name: unquoted, unqualified new table name +*/ +DECLARE fullname text; +BEGIN + fullname := msar.get_fq_table_name(schema_, old_name); + RETURN __msar.change_table_name(fullname, quote_ident(new_name)); +END; +$$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; + + +-- Comment on table -------------------------------------------------------------------------------- + +CREATE OR REPLACE FUNCTION +__msar.comment_on_table(name_ text, comment_ text) RETURNS text AS $$/* +Change the description of a table, returning command executed. + +Args: + name_: The qualified, quoted name of the table whose comment we will change. + comment_: The new comment. Any quotes or special characters must be escaped. +*/ +BEGIN + RETURN __msar.exec_ddl('COMMENT ON TABLE %s IS ''%s''', name_, comment_); +END; +$$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; + + +CREATE OR REPLACE FUNCTION +msar.comment_on_table(table_id oid, comment_ text) RETURNS text AS $$/* +Change the description of a table, returning command executed. + +Args: + table_id: The OID of the table whose comment we will change. + comment_: The new comment. Any quotes or special characters must be escaped. +*/ +BEGIN + RETURN __msar.comment_on_table(__msar.get_table_name(table_id), comment_); +END; +$$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; + + +CREATE OR REPLACE FUNCTION +msar.comment_on_table(schema_ text, name_ text, comment_ text) RETURNS text AS $$/* +Change the description of a table, returning command executed. + +Args: + schema_: The schema of the table whose comment we will change. + name_: The name of the table whose comment we will change. + comment_: The new comment. Any quotes or special characters must be escaped. +*/ +DECLARE qualified_name text; +BEGIN + qualified_name := msar.get_fq_table_name(schema_, name_); + RETURN __msar.comment_on_table(qualified_name, comment_); +END; +$$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; + + +-- Alter Table: LEFT IN PYTHON (for now) ----------------------------------------------------------- + +-- Update table primary key sequence to latest ----------------------------------------------------- + +CREATE OR REPLACE FUNCTION +__msar.update_pk_sequence_to_latest(table_name text, column_ text) RETURNS text AS $$/* +Update the primary key sequence to the maximum of the primary key column, plus one. + +Args: + table_name: fully-qualified, quoted table name + column_: The column name of the primary key. +*/ +BEGIN + RETURN __msar.exec_ddl( + 'SELECT ' + || 'setval(' + || 'pg_get_serial_sequence(''%1$s'', ''%2$s''), coalesce(max(%2$s) + 1, 1), false' + || ') ' + || 'FROM %1$s', + table_name, column_ + ); +END; +$$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; + + +CREATE OR REPLACE FUNCTION +msar.update_pk_sequence_to_latest(table_id oid, col_attnum integer) RETURNS text AS $$/* +Update the primary key sequence to the maximum of the primary key column, plus one. + +Args: + table_id: The OID of the table whose primary key sequence we'll update. + col_attnum: The attnum of the primary key column. +*/ +DECLARE table_name text; +DECLARE colname text; +BEGIN + table_name := __msar.get_table_name(table_id); + colname := msar.get_column_name(table_id, col_attnum); + RETURN __msar.update_pk_sequence_to_latest(qualified_table_name, colname); +END; +$$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; + + +CREATE OR REPLACE FUNCTION +msar.update_pk_sequence_to_latest(schema_ text, table_name text, column_ text) RETURNS text AS $$/* +Update the primary key sequence to the maximum of the primary key column, plus one. + +Args: + table_id: The OID of the table whose primary key sequence we'll update. + col_attnum: The attnum of the primary key column. +*/ +*/ +DECLARE qualified_table_name text; +BEGIN + qualified_table_name := msar.get_fq_table_name(schema_, table_name); + RETURN __msar.update_pk_sequence_to_latest(qualified_table_name, quote_ident(column_)); +END; +$$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; + + +---------------------------------------------------------------------------------------------------- +---------------------------------------------------------------------------------------------------- +-- MATHESAR VIEW FUNCTIONS +-- +-- Functions and triggers in this section are used to create a view that tracks any created or +-- modified table, and also provide a convenient way to set up such a view for an already-existing +-- table or drop such a view. +---------------------------------------------------------------------------------------------------- +---------------------------------------------------------------------------------------------------- + +CREATE OR REPLACE FUNCTION +msar.create_mathesar_view(table_id oid) RETURNS text AS $$/* +Create a view of named mv tracking the table with OID . + +Args: + table_id: This is the OID of the table we want to track. + +*/ +DECLARE viewname text; +DECLARE viewcols text; +BEGIN + viewname := msar.get_msar_view_name(table_id); + SELECT string_agg(format('%s AS c%s', quote_ident(attname), attnum), ', ') + FROM pg_attribute + WHERE attrelid=table_id AND attnum>0 AND NOT attisdropped + INTO viewcols; + RETURN mathesar_internal.exec_ddl( + 'CREATE OR REPLACE VIEW %s AS SELECT %s FROM %s', + viewname, viewcols, __msar.get_table_name(table_id) + ); +END; +$$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; + +CREATE OR REPLACE FUNCTION +__msar.create_mathesar_view() RETURNS event_trigger AS $$/* +This function should not be called directly. +*/ +DECLARE ddl_command record; +BEGIN + FOR ddl_command IN SELECT * FROM pg_event_trigger_ddl_commands() + LOOP + IF ddl_command.object_type='table' AND upper(ddl_command.command_tag)<>'DROP TABLE' + THEN + PERFORM mathesar_internal.create_mathesar_view(ddl_command.objid); + END IF; + END LOOP; +END; $$ LANGUAGE plpgsql; DROP EVENT TRIGGER IF EXISTS create_mathesar_view; CREATE EVENT TRIGGER create_mathesar_view ON ddl_command_end - EXECUTE FUNCTION mathesar_internal.create_mathesar_view(); - --- This section sets up a function to delete a Mathesar view before dropping its --- underlying table. Has to be called from the app layer, since it's not --- possible (without a C extension) to get the info about an object in an event --- trigger context before actually attempting to drop it. - -CREATE OR REPLACE FUNCTION mathesar_internal.drop_mathesar_view(oid) RETURNS TEXT - AS $$ - DECLARE viewname TEXT; - BEGIN - viewname := format('mathesar_internal.mv%s', $1); - RETURN mathesar_internal.execute_ddl('DROP VIEW IF EXISTS %s', viewname); - END; -$$ -LANGUAGE plpgsql VOLATILE; - -CREATE OR REPLACE FUNCTION mathesar_internal.drop_mathesar_view(text, text) RETURNS TEXT - AS $$ - DECLARE tableid oid; - BEGIN - tableid := format('%s.%s', quote_ident($1), quote_ident($2))::regclass::oid; - RETURN mathesar_internal.drop_mathesar_view(tableid); - END; -$$ -LANGUAGE plpgsql VOLATILE; + EXECUTE FUNCTION __msar.create_mathesar_view(); + + +CREATE OR REPLACE FUNCTION msar.drop_mathesar_view(table_id oid) RETURNS text AS $$/* +Drop the Mathesar view tracking the given table. + +Args: + table_id: This is the OID of the table being tracked by the view we'll drop. +*/ +DECLARE viewname text; +BEGIN + viewname := msar.get_mathesar_view_name(table_id) + RETURN mathesar_internal.exec_ddl('DROP VIEW IF EXISTS %s', viewname); +END; +$$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; + + +CREATE OR REPLACE FUNCTION msar.drop_mathesar_view(text, text) RETURNS text AS $$/* +Drop the Mathesar view tracking the given table. + +Args: + schema_: This is the schema of the table being tracked by the view we'll drop. + table_name: This is the name of the table being tracked by the view we'll drop. +*/ +DECLARE table_id oid; +BEGIN + table_id := format('%s.%s', quote_ident($1), quote_ident($2))::regclass::oid; + RETURN mathesar_internal.drop_mathesar_view(table_id); +END; +$$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; From f725bcdf7f42c4f8cf78974bf7c333140318dba6 Mon Sep 17 00:00:00 2001 From: Brent Moran Date: Thu, 16 Mar 2023 15:51:16 +0800 Subject: [PATCH 085/553] fix forgotten name changes --- db/sql/prototype.sql | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/db/sql/prototype.sql b/db/sql/prototype.sql index f9dda946a8..a774e46ca2 100644 --- a/db/sql/prototype.sql +++ b/db/sql/prototype.sql @@ -318,7 +318,7 @@ BEGIN FROM pg_attribute WHERE attrelid=table_id AND attnum>0 AND NOT attisdropped INTO viewcols; - RETURN mathesar_internal.exec_ddl( + RETURN __msar.exec_ddl( 'CREATE OR REPLACE VIEW %s AS SELECT %s FROM %s', viewname, viewcols, __msar.get_table_name(table_id) ); @@ -335,7 +335,7 @@ BEGIN LOOP IF ddl_command.object_type='table' AND upper(ddl_command.command_tag)<>'DROP TABLE' THEN - PERFORM mathesar_internal.create_mathesar_view(ddl_command.objid); + PERFORM msar.create_mathesar_view(ddl_command.objid); END IF; END LOOP; END; @@ -356,7 +356,7 @@ Args: DECLARE viewname text; BEGIN viewname := msar.get_mathesar_view_name(table_id) - RETURN mathesar_internal.exec_ddl('DROP VIEW IF EXISTS %s', viewname); + RETURN __msar.exec_ddl('DROP VIEW IF EXISTS %s', viewname); END; $$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; @@ -371,6 +371,6 @@ Args: DECLARE table_id oid; BEGIN table_id := format('%s.%s', quote_ident($1), quote_ident($2))::regclass::oid; - RETURN mathesar_internal.drop_mathesar_view(table_id); + RETURN msar.drop_mathesar_view(table_id); END; $$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; From 115e293dbd860c125029ff8fe16455fa200ab0ce Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Thu, 16 Mar 2023 09:56:56 +0200 Subject: [PATCH 086/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index 0404dfb4b0..9bc564076f 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -4,7 +4,7 @@ Installation should only take a few minutes. ## What we will do: - Prepare the server -- ###### Install Docker & Docker-compose + - ###### Database - Install PostgreSQL - Create Database, Database user From 12e4ccaa9972ab8ef3936d9f2b3c20215254b1a7 Mon Sep 17 00:00:00 2001 From: Brent Moran Date: Thu, 16 Mar 2023 15:59:28 +0800 Subject: [PATCH 087/553] extract table OID getting function --- db/sql/prototype.sql | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/db/sql/prototype.sql b/db/sql/prototype.sql index a774e46ca2..eb1bec2beb 100644 --- a/db/sql/prototype.sql +++ b/db/sql/prototype.sql @@ -98,6 +98,20 @@ END; $$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; +CREATE OR REPLACE FUNCTION +msar.get_table_oid(schema_ text, name_ text) RETURNS text AS $$/* +Return the OID for a given table. + +Args: + schema_: The schema of the table, unquoted. + name_: The name of the table, unqualified and unquoted. +*/ +BEGIN + RETURN msar.get_fq_table_name(schema_, name_)::regclass::oid; +END; +$$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; + + CREATE OR REPLACE FUNCTION msar.get_column_name(table_id oid, col_attnum integer) RETURNS text AS $$/* Return the name for a given table, qualified or quoted as appropriate. @@ -283,7 +297,6 @@ Args: table_id: The OID of the table whose primary key sequence we'll update. col_attnum: The attnum of the primary key column. */ -*/ DECLARE qualified_table_name text; BEGIN qualified_table_name := msar.get_fq_table_name(schema_, table_name); @@ -347,7 +360,8 @@ CREATE EVENT TRIGGER create_mathesar_view ON ddl_command_end EXECUTE FUNCTION __msar.create_mathesar_view(); -CREATE OR REPLACE FUNCTION msar.drop_mathesar_view(table_id oid) RETURNS text AS $$/* +CREATE OR REPLACE FUNCTION +msar.drop_mathesar_view(table_id oid) RETURNS text AS $$/* Drop the Mathesar view tracking the given table. Args: @@ -355,13 +369,14 @@ Args: */ DECLARE viewname text; BEGIN - viewname := msar.get_mathesar_view_name(table_id) + viewname := msar.get_mathesar_view_name(table_id); RETURN __msar.exec_ddl('DROP VIEW IF EXISTS %s', viewname); END; $$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; -CREATE OR REPLACE FUNCTION msar.drop_mathesar_view(text, text) RETURNS text AS $$/* +CREATE OR REPLACE FUNCTION +msar.drop_mathesar_view(schema_ text, table_name text) RETURNS text AS $$/* Drop the Mathesar view tracking the given table. Args: @@ -370,7 +385,7 @@ Args: */ DECLARE table_id oid; BEGIN - table_id := format('%s.%s', quote_ident($1), quote_ident($2))::regclass::oid; + table_id := msar.get_table_oid(schema_, table_name); RETURN msar.drop_mathesar_view(table_id); END; $$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; From 3855adc8745982eb85217ddab3b716c46fd334c6 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Thu, 16 Mar 2023 10:05:05 +0200 Subject: [PATCH 088/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index 9bc564076f..82184eb262 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -20,6 +20,7 @@ Installation should only take a few minutes. - Ubntu 22 with at least `60 GB` disk space and `4GB` of RAM. - Root privileges - Domain name, or subdomain, for your installation. We will use `mathesar.example.com` as the domain for our website + - Python 3.9 ### Step one: Prepare the server First, we need to update the software repository and upgrade all packages using the apt command below. SSH to your server and elevate to the `root` user. @@ -29,7 +30,7 @@ apt update && apt upgrade Once the system has been updated, I recommend you perform a reboot to get the new kernel running incase it was updated. Next we will install the required packages. ```sh -apt install locales build-essential acl ntp git python3-pip ipython3 +apt install locales build-essential acl ntp git python3-pip ipython3 build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev wget libbz2-dev -y ``` Now we need to add a new usergroup and allow passwordless login: ```sh From 1eedc1610f42394d3acfd24fe48bafe8fc45c40b Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Thu, 16 Mar 2023 10:17:21 +0200 Subject: [PATCH 089/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 56 ++++--------------------- 1 file changed, 7 insertions(+), 49 deletions(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index 82184eb262..a1b759501b 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -30,7 +30,7 @@ apt update && apt upgrade Once the system has been updated, I recommend you perform a reboot to get the new kernel running incase it was updated. Next we will install the required packages. ```sh -apt install locales build-essential acl ntp git python3-pip ipython3 build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev wget libbz2-dev -y +apt install locales build-essential acl ntp git python3-pip ipython3 zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev wget libbz2-dev -y ``` Now we need to add a new usergroup and allow passwordless login: ```sh @@ -46,50 +46,7 @@ visudo -c The output should look like this: `/etc/sudoers: parsed OK`. -### Step two: Install Docker & Docker-compose -Clean the system of any potential pre-installed Docker packages. -```sh -apt-get remove docker docker-engine docker.io -``` -Now that we are sure there is no pre-configured or installed Docker on the system, we can begin the installation. -Firstly, we have to install the required Docker dependencies on the system: -```sh -sudo apt -y install apt-transport-https ca-certificates curl gnupg2 software-properties-common -``` -The next step is to add Docker's official GPG key to the keyring. This is to ensure the validity of downloaded Docker packages from it's repository. -```sh -curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg -``` -Now that the key is added, we can add the stable repo for Docker. -```sh -echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null -``` -We have to update the system: -```sh -apt update -``` -We can now install Docker using the following command: -```sh -apt-get install docker-ce docker-ce-cli containerd.io -``` -Once installation is completed, you can run the following commands to make sure that Docker is running, and that it will start with the system. -```sh -systemctl enable docker && systemctl start docker -``` - -##### Install Docker-compose -We will install Docker-compose next. We will start by downloading the latest Docker-compose version. -```sh -sudo curl -L "https://github.com/docker/compose/releases/download/2.16.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose -``` -Once downloaded, we have to change the properties so that it is an executable: - -```sh -sudo chmod +x /usr/local/bin/docker-compose -``` -That is it. We can now move to the next step. - -### Step Three: Install PostGreSQL +### Step Two: Install PostGreSQL SSH to your server and run the following commands to update all the packages installed. ```sh apt update && apt update @@ -136,7 +93,7 @@ GRANT ALL PRIVILEGES ON DATABASE yourdbname TO youruser; ``` -### Step Four: Install Nginx with Letsencrypt and Gurnicorn3 +### Step Three: Install Nginx with Letsencrypt and Gurnicorn3 We will start off by installing Nginx on the system. This will already be in the Debian repository so simply run the install command. ```sh @@ -304,7 +261,7 @@ openssl dhparam -dsaparam -out /etc/nginx/dhparams.pem 2048 ``` We are not finished with the Nginx & Letsencrypt section. -### Step Five: Install the Mathesar application +### Step Four: Install the Mathesar application #### Set up NodeJS ##### Add the NodeJS key. @@ -426,6 +383,7 @@ python3 -m venv /opt/virtualenvs/mathesar We can now clone the Mathesar repo into our working folder. ```sh -git clone https://github.com/centerofci/mathesar.git /var/www/mathesar.example.com/ +cd /var/www/mathesar.example.com/ +git clone https://github.com/centerofci/mathesar.git ``` - +Once this is installed we will install from requirements.txt From d0a6b013a8077453e6468db162a332ab7acfa168 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Thu, 16 Mar 2023 10:29:33 +0200 Subject: [PATCH 090/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index a1b759501b..c801761e94 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -45,6 +45,31 @@ visudo -c ``` The output should look like this: `/etc/sudoers: parsed OK`. +##### Install Python 3.9 + +We already installed the required dependencies in the previous step, so in the next step, we will download the Official Python 3.9 setup file using the “wget” command: + +```sh + wget https://www.python.org/ftp/python/3.9.7/Python-3.9.7.tgz + ``` + Now we will unpack it, then change to the folder and run the configure script: + ```sh + tar -xvf Python-3.9.7.tgz + cd Python-3.9.7/ + ./configure --enable-optimizations + ``` + Next, utilize the “make” command to compile and build the configurations: + ```sh + make + ``` + Finally, use the below-provided command to install Python 3 binaries on the Ubuntu 22.04 system: + ```sh + sudo make altinstall + ``` + Confirm the Python successful installation by checking its version: +```sh +python3.9 --version +``` ### Step Two: Install PostGreSQL SSH to your server and run the following commands to update all the packages installed. From 31922a6036cefef4baa9db5656de99d1d8760574 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Thu, 16 Mar 2023 11:25:24 +0200 Subject: [PATCH 091/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index c801761e94..bde94cf8ef 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -191,8 +191,6 @@ pip3 install gunicorn We now will install certbot for Letsencrypt as well as gunicorn3. ```sh sudo apt-get install certbot - -sudo apt-get install gunicorn3 ``` Now we need to create a directory for Letsencrypt ```sh From 64189aa10c993a33213025b2a875514333386148 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Thu, 16 Mar 2023 11:30:26 +0200 Subject: [PATCH 092/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index bde94cf8ef..e9f7208622 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -263,7 +263,7 @@ server { proxy_pass http://app_server; } }" > /etc/nginx/sites-enabled/mathesar.example.com - +``` With this in place, we can now install the SSL certificate for our domain. You can run this command: ```sh letsencrypt certonly -n --webroot -w /var/www/letsencrypt -m you@mathesar.example.com --agree-tos -d mathesar.example.com From 136ce2c9ade1084899f69fabbcb9e6a2822e52bc Mon Sep 17 00:00:00 2001 From: Brent Moran Date: Thu, 16 Mar 2023 17:50:01 +0800 Subject: [PATCH 093/553] port over function to get joinable tables --- db/sql/prototype.sql | 100 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) diff --git a/db/sql/prototype.sql b/db/sql/prototype.sql index eb1bec2beb..9fc9cbbdb1 100644 --- a/db/sql/prototype.sql +++ b/db/sql/prototype.sql @@ -389,3 +389,103 @@ BEGIN RETURN msar.drop_mathesar_view(table_id); END; $$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; + + +CREATE TYPE mathesar_types.joinable_tables AS ( + base integer, + target integer, + join_path jsonb, + fkey_path jsonb, + depth integer +); + + +CREATE OR REPLACE FUNCTION +msar.get_joinable_tables(max_depth integer) RETURNS SETOF mathesar_types.joinable_tables AS $$/* +This function returns a table of the form + + base | target | path +-------+--------+--------------------------------- + | | json array of arrays of arrays + +The base and target are OIDs of a base table, and a target table that can be +joined by some combination of joins along single-column foreign key column +restrictions in either way. +*/ +WITH RECURSIVE symmetric_fkeys AS ( + SELECT + c.oid fkey_oid, + c.conrelid::INTEGER left_rel, + c.confrelid::INTEGER right_rel, + c.conkey[1]::INTEGER left_col, + c.confkey[1]::INTEGER right_col, + false reversed + FROM pg_constraint c + WHERE c.contype='f' and array_length(c.conkey, 1)=1 +UNION ALL + SELECT + c.oid fkey_oid, + c.confrelid::INTEGER left_rel, + c.conrelid::INTEGER right_rel, + c.confkey[1]::INTEGER left_col, + c.conkey[1]::INTEGER right_col, + true reversed + FROM pg_constraint c + WHERE c.contype='f' and array_length(c.conkey, 1)=1 +), + +search_fkey_graph(left_rel, right_rel, left_col, right_col, depth, join_path, fkey_path) AS ( + SELECT + sfk.left_rel, + sfk.right_rel, + sfk.left_col, + sfk.right_col, + 1, + jsonb_build_array( + jsonb_build_array( + jsonb_build_array(sfk.left_rel, sfk.left_col), + jsonb_build_array(sfk.right_rel, sfk.right_col) + ) + ), + jsonb_build_array(jsonb_build_array(sfk.fkey_oid, sfk.reversed)) + FROM symmetric_fkeys sfk +UNION ALL + SELECT + sfk.left_rel, + sfk.right_rel, + sfk.left_col, + sfk.right_col, + sg.depth + 1, + join_path || jsonb_build_array( + jsonb_build_array( + jsonb_build_array(sfk.left_rel, sfk.left_col), + jsonb_build_array(sfk.right_rel, sfk.right_col) + ) + ), + fkey_path || jsonb_build_array(jsonb_build_array(sfk.fkey_oid, sfk.reversed)) + FROM symmetric_fkeys sfk, search_fkey_graph sg + WHERE + sfk.left_rel=sg.right_rel + AND depth -1) != jsonb_build_array( + jsonb_build_array(sfk.right_rel, sfk.right_col), + jsonb_build_array(sfk.left_rel, sfk.left_col) + ) +), output_cte AS ( + SELECT + (join_path#>'{0, 0, 0}')::INTEGER base, + (join_path#>'{-1, -1, 0}')::INTEGER target, + join_path, + fkey_path, + depth + FROM search_fkey_graph +) +SELECT * FROM output_cte; +$$ LANGUAGE sql; + + +CREATE OR REPLACE FUNCTION +msar.get_joinable_tables(max_depth integer, table_id oid) RETURNS + SETOF mathesar_types.joinable_tables AS $$ + SELECT * FROM msar.get_joinable_tables(max_depth) WHERE base=table_id +$$ LANGUAGE sql; From beefd89080df64cf17409256dbddeceebf919ca5 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Thu, 16 Mar 2023 13:10:07 +0200 Subject: [PATCH 094/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index e9f7208622..b5c72a2811 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -336,7 +336,7 @@ Next we will create the logging directory for Gunicorn and assign it to the guni ```sh sudo mkdir /var/log/gunicorn # Only if it does not exist already, but installation of Gunicorn should have created this and assigned to www-data user/group chmod 0755 /var/log/gunicorn -chgroup gunicorn /var/log/gunicorn +chgrp gunicorn /var/log/gunicorn chown gunicorn /var/log/gunicorn ``` Next we will create the Gunicorn systemd service. You must create the file here: `/lib/systemd/system/gunicorn.service` and copy the following code into it. Pay attention as you have to edit the code according to your FQDN / URL. From ce73a236e92fa6f47640912ea70aa80128c98f0f Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Thu, 16 Mar 2023 13:13:47 +0200 Subject: [PATCH 095/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index b5c72a2811..9071b71b10 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -397,7 +397,7 @@ systemctl daemon-reload ``` #### Create the virtual environment -We need to create a virtual environment for the Mathesar application. Wew will do this by running the following command: +We need to create a virtual environment for the Mathesar application. We will do this by running the following command: ```sh python3 -m venv /opt/virtualenvs/mathesar ``` From 157a7699c7f7da8ed011a288587df5733f9229b6 Mon Sep 17 00:00:00 2001 From: Your Name Date: Thu, 16 Mar 2023 21:39:52 +0100 Subject: [PATCH 096/553] Update all command in local development contribution guide to use the correct container #2693 --- docs/docs/contributing/local-dev.md | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/docs/docs/contributing/local-dev.md b/docs/docs/contributing/local-dev.md index f67b09854a..d843b6d60d 100644 --- a/docs/docs/contributing/local-dev.md +++ b/docs/docs/contributing/local-dev.md @@ -5,16 +5,18 @@ First, [ensure that you have Docker installed](https://docs.docker.com/get-docker/). Clone the repository and then copy the `.env.example` file to `.env` like so: + ``` cp .env.example .env ``` From the repository's root directory, run: + ``` docker-compose --profile dev up ``` -You should now have a web server and database server running. Opening `http://localhost:8000` in your browser will open the application. +You should now have a web server and database server running. Opening `http://localhost:8000` in your browser will open the application. To get the UI working, you need to login at @@ -22,19 +24,20 @@ To get the UI working, you need to login at with username: -`admin` +`admin` and password: -`password` +`password` If you'd prefer to develop using the Django Rest Framework browsable API, you can use the login functionality at the top right with the same username and password. If you prefer a non-browser tool for API development, you'll have to: + - Use browser to execute one of the methods above, then - Extract the key, value pair for the cookie named `sessionid` using dev tools. - submit that cookie with each request until it expires. - Repeat as necessary (e.g., when the cookie expires). -For sample table data, you can create a new table in the UI using the `patents.csv` file found in `/mathesar/tests/data`. +For sample table data, you can create a new table in the UI using the `patents.csv` file found in `/mathesar/tests/data`. It is recommended that you keep the Docker containers running while you make changes to the code. Any change to the code made locally will sync to the container and the version deployed at `http://localhost:8000` will always be the latest local version of the code. @@ -44,7 +47,7 @@ Windows users who want to run the Mathesar Docker development environment in WSL ## Configuration Options -If you want to use Mathesar with a preexisting Postgres DB, modify the `DATABASES.mathesar_tables` entry of the `config/settings.py` file with appropriate connection details before installing the Mathesar types and functions by running `install.py` as described in the previous step. +If you want to use Mathesar with a preexisting Postgres DB, modify the `DATABASES.mathesar_tables` entry of the `config/settings.py` file with appropriate connection details before installing the Mathesar types and functions by running `install.py` as described in the previous step. ## Frontend @@ -60,23 +63,26 @@ Mathesar can be run in "live demo mode". This creates a new database for every u To run Mathesar in demo mode, you should add an environment variable to `.env`: -``` sh +```sh DJANGO_SETTINGS_MODULE=demo.settings ``` ## Linting To lint the project, run the `lint.sh` script from the root of the repository. The script requires that the Python virtual environment with `flake8` be activated and that Node modules be installed in `mathesar_ui/`. Alternatively, ESLint and Flake8 should be installed globally on the system. + ``` ./lint.sh ``` By default, the script lints both Python and Node.js (if changes are staged), but this can be overridden with the `-p` and `-n` flags respectively. + ``` ./lint.sh -p false ``` You should symlink the script as your pre-commit hook to ensure that your code is linted along-side development. + ``` ln -s ../../lint.sh .git/hooks/pre-commit ``` @@ -86,26 +92,31 @@ ln -s ../../lint.sh .git/hooks/pre-commit If you'd like to run tests before pushing, here's how you do it: Backend tests: + ``` -docker exec mathesar_service pytest mathesar/ db/ +docker exec mathesar_service_dev pytest mathesar/ db/ ``` Frontend tests: + ``` -docker exec mathesar_service bash -c "cd mathesar_ui && npm test" +docker exec mathesar_service_dev bash -c "cd mathesar_ui && npm test" ``` ## Opening a shell in the container If you need to do some work on the container that's running the code, here's how you access it: + ``` -docker exec -it mathesar_service bash +docker exec -it mathesar_service_dev bash ``` To open a PostgreSQL psql terminal for the data in Mathesar: + ``` docker exec -it mathesar_db psql -U mathesar ``` ## Troubleshooting + Please refer to our [Common Issues wiki page](https://wiki.mathesar.org/engineering/common-issues) for instruction on troubleshooting common issues while setting up and running Mathesar. From 4ea44d96c4fbc1f05e113e38afc3d2879b98e930 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Fri, 17 Mar 2023 08:39:11 +0200 Subject: [PATCH 097/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index 9071b71b10..dc227c1a69 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -410,3 +410,6 @@ cd /var/www/mathesar.example.com/ git clone https://github.com/centerofci/mathesar.git ``` Once this is installed we will install from requirements.txt +```sh +pip3 install -r requirements.txt +``` From d9aef4a9fc1017e43793d17cc69adc298a8b910a Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Fri, 17 Mar 2023 09:21:23 +0200 Subject: [PATCH 098/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index dc227c1a69..fc1fe1cc2f 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -70,6 +70,17 @@ We already installed the required dependencies in the previous step, so in the n ```sh python3.9 --version ``` +##### Switch python version +Now that we have multiple Python versions installed, we need to add the symbolic links for every Python version separately. This will allow us to switch versions as needed on our system. Run the following commands: +```sh +sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.10 1 +sudo update-alternatives --install /usr/bin/python python /usr/local/bin/python3.9 2 +``` +This will create the necessary links. You can now select which version of Python you want to use with the following command. (You will select 2 here as we want Python 3.9) +```sh +sudo update-alternatives --config python +``` + ### Step Two: Install PostGreSQL SSH to your server and run the following commands to update all the packages installed. @@ -399,7 +410,7 @@ systemctl daemon-reload We need to create a virtual environment for the Mathesar application. We will do this by running the following command: ```sh -python3 -m venv /opt/virtualenvs/mathesar +python3.9 -m venv /opt/virtualenvs/mathesar ``` #### Clone the Mathesar repo @@ -411,5 +422,5 @@ git clone https://github.com/centerofci/mathesar.git ``` Once this is installed we will install from requirements.txt ```sh -pip3 install -r requirements.txt +pip install -r requirements.txt ``` From ea9fe0ecd41bfdf63aac1ac52f4b87d55c4b7cd7 Mon Sep 17 00:00:00 2001 From: Charvi Date: Fri, 17 Mar 2023 13:49:50 +0530 Subject: [PATCH 099/553] adding nbsp; --- mathesar_ui/src/components/NameWithIcon.svelte | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/mathesar_ui/src/components/NameWithIcon.svelte b/mathesar_ui/src/components/NameWithIcon.svelte index d5c82244b5..a5c85cbfc6 100644 --- a/mathesar_ui/src/components/NameWithIcon.svelte +++ b/mathesar_ui/src/components/NameWithIcon.svelte @@ -16,7 +16,7 @@ - + {#if isLoading} {:else} @@ -24,8 +24,7 @@ {/each} {/if} - - +   {#if name} {name} {:else} From 15f30b82266dc3f4c4e8e2b461b582a86fca9350 Mon Sep 17 00:00:00 2001 From: Sean Colsen Date: Fri, 17 Mar 2023 08:22:37 -0400 Subject: [PATCH 100/553] Improve method name --- mathesar_ui/src/components/sheet/SheetSelection.ts | 2 +- mathesar_ui/src/systems/table-view/StatusPane.svelte | 2 +- mathesar_ui/src/systems/table-view/row/Row.svelte | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/mathesar_ui/src/components/sheet/SheetSelection.ts b/mathesar_ui/src/components/sheet/SheetSelection.ts index 7a3b300c33..a4c8db1bc8 100644 --- a/mathesar_ui/src/components/sheet/SheetSelection.ts +++ b/mathesar_ui/src/components/sheet/SheetSelection.ts @@ -339,7 +339,7 @@ export default class SheetSelection< } } - selectAndActivateFirstCellAfterAddingNewRecord(): void { + selectAndActivateFirstDataEntryCellInLastRow(): void { const currentRows = this.getRows(); const currentColumns = this.getColumns(); if (currentRows.length > 0 && currentColumns.length > 1) { diff --git a/mathesar_ui/src/systems/table-view/StatusPane.svelte b/mathesar_ui/src/systems/table-view/StatusPane.svelte index 51d62e240b..36a0672e1c 100644 --- a/mathesar_ui/src/systems/table-view/StatusPane.svelte +++ b/mathesar_ui/src/systems/table-view/StatusPane.svelte @@ -75,7 +75,7 @@ appearance="primary" on:click={() => { recordsData.addEmptyRecord(); - selection.selectAndActivateFirstCellAfterAddingNewRecord(); + selection.selectAndActivateFirstDataEntryCellInLastRow(); }} > diff --git a/mathesar_ui/src/systems/table-view/row/Row.svelte b/mathesar_ui/src/systems/table-view/row/Row.svelte index 8799f0b2df..30224f21a9 100644 --- a/mathesar_ui/src/systems/table-view/row/Row.svelte +++ b/mathesar_ui/src/systems/table-view/row/Row.svelte @@ -54,7 +54,7 @@ function checkAndCreateEmptyRow() { if (isPlaceholderRow(row)) { void recordsData.addEmptyRecord(); - selection.selectAndActivateFirstCellAfterAddingNewRecord(); + selection.selectAndActivateFirstDataEntryCellInLastRow(); } } From 89428d8753e1b2d89173f604b573f885d50f3937 Mon Sep 17 00:00:00 2001 From: Sean Colsen Date: Fri, 17 Mar 2023 09:55:01 -0400 Subject: [PATCH 101/553] Small content clean up --- docs/docs/contributing/local-dev.md | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/docs/docs/contributing/local-dev.md b/docs/docs/contributing/local-dev.md index 80cae7fb1f..d2727d2dc3 100644 --- a/docs/docs/contributing/local-dev.md +++ b/docs/docs/contributing/local-dev.md @@ -40,20 +40,23 @@ It is recommended that you keep the Docker containers running while you make cha ## Developing in Windows -Windows users who want to run the Mathesar Docker development environment in WSL are advised to clone the repository in a Linux filesystem. When the project resides in a Windows filesystem, WSL does not work well with hot module replacement (HMR), which is required for frontend development. -Run the commands listed below in the repository's root directory after cloning: +1. Install [WSL](https://learn.microsoft.com/en-us/windows/wsl/install) and do all of your development work within it. +1. Make sure you **clone the Mathesar git repository _within WSL_** so that the development files reside in a Linux filesystem. -``` -git config --global core.autocrlf input + !!! tip + If you happen to clone the git repository outside of WSL, then you fix it by running these commands from within WSL. -``` -``` -sudo apt-get install -y dos2unix -sudo find . -type f -exec dos2unix {} \; -``` -These commands install the dos2unix utility, which converts text files from the DOS/Microsoft Windows format (with CRLF line endings) to the Unix/Linux format (with LF line endings). Next, the find utility is used to locate all files (-type f) in the current directory (.) and its subdirectories, and the dos2unix command is then executed on each of them (-exec dos2unix ;). -then after that execute the docker compose command inside of WSL. -Please refer to our [Common Issues wiki page](https://wiki.mathesar.org/engineering/common-issues), and the [frontend development README file](https://github.com/centerofci/mathesar/blob/master/mathesar_ui/README.md#developing-in-windows) for more details. + ``` + git config --global core.autocrlf input + sudo apt-get install -y dos2unix + sudo find . -type f -exec dos2unix {} \; + ``` + + These commands install the `dos2unix` utility, which converts text files from the DOS/Microsoft Windows format (with CRLF line endings) to the Unix/Linux format (with LF line endings). Next, the find utility is used to locate all files (-type f) in the current directory (.) and its subdirectories, and the dos2unix command is then executed on each of them (-exec dos2unix ;). + +1. Execute the `docker compose` command inside of WSL to begin local development + +Refer to our [Common Issues wiki page](https://wiki.mathesar.org/engineering/common-issues), and the [frontend development README file](https://github.com/centerofci/mathesar/blob/master/mathesar_ui/README.md#developing-in-windows) for more details. ## Configuration Options From 0125e79350421d0dc5111d4433d77148a4854fd3 Mon Sep 17 00:00:00 2001 From: Wali Muhammad <107250980+Wali-Muhammad123@users.noreply.github.com> Date: Sat, 18 Mar 2023 15:42:13 +0000 Subject: [PATCH 102/553] Fixed the recursion bug and typo error. --- install.sh | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/install.sh b/install.sh index f8a8a61cf6..0694d3343f 100755 --- a/install.sh +++ b/install.sh @@ -56,7 +56,6 @@ ${prompt}" echo "${password}" } validate_password(){ - #check if the password is at least 8 characters long if [ ${#1} -lt 8 ]; then return 1 fi @@ -71,17 +70,19 @@ Repeat the password: " Passwords do not match! Try again. " local validation_prompt=" -Password must be at least 8 characters long !. +Password must be at least 8 characters long! " password=$(get_password "${prompt}") - #validate the password entered - until validate_password "${password}"; do - password=$(create_password "${validation_prompt}") - read -rs -p "${repeat_prompt}" password_check - if [ "${password}" != "${password_check}" ]; then - password=$(create_password "${repeat_retry}") + #check if the password is at least 8 characters long + + if validate_password "${password}"; then + read -rs -p "${repeat_prompt}" password_check + if [ "${password}" != "${password_check}" ]; then + password=$(create_password "${repeat_retry}") + fi + else + password=$(create_password "${validation_prompt}") fi - done echo "${password}" } From e3a28c7abfbbaed805a9a4fda07e42ac4699ca56 Mon Sep 17 00:00:00 2001 From: Kriti Godey Date: Sat, 18 Mar 2023 12:04:57 -0400 Subject: [PATCH 103/553] Add Sponsors section to README --- README.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/README.md b/README.md index e60b534f1c..22b344e31b 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,24 @@ You can use Mathesar to build **data models**, **enter data**, and even **build +## Sponsors +Our top sponsors! Become a sponsor on [GitHub](https://github.com/sponsors/centerofci) or [Open Collective](https://opencollective.com/mathesar). + + + + + + + +
+ + Thingylabs GmbH +
+ Thingylabs GmbH +
+
+
+ ## Status - [x] **Public Alpha**: You can install and deploy Mathesar on your server. Go easy on us! - [ ] **Public Beta**: Stable and feature-rich enough to implement in production From a9ae59d62f8b18574512071d22cd0a11c4274ac1 Mon Sep 17 00:00:00 2001 From: kgodey Date: Sat, 18 Mar 2023 16:05:12 +0000 Subject: [PATCH 104/553] chore(docs): update TOC --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 22b344e31b..75d69b8d63 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,7 @@ You can use Mathesar to build **data models**, **enter data**, and even **build **Table of Contents** +- [Sponsors](#sponsors) - [Status](#status) - [Join our community!](#join-our-community) - [Screenshots](#screenshots) From 92c302667df051c039dc7565ba45302c98f526b4 Mon Sep 17 00:00:00 2001 From: sukshan Date: Sun, 19 Mar 2023 19:32:29 +0530 Subject: [PATCH 105/553] registered UIQuery model in admin.py --- mathesar/admin.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mathesar/admin.py b/mathesar/admin.py index 08257b4f27..be9d1f1f60 100644 --- a/mathesar/admin.py +++ b/mathesar/admin.py @@ -3,6 +3,7 @@ from mathesar.models.base import Table, Schema, DataFile from mathesar.models.users import User +from mathesar.models.query import UIQuery class MathesarUserAdmin(UserAdmin): @@ -22,3 +23,4 @@ class MathesarUserAdmin(UserAdmin): admin.site.register(Schema) admin.site.register(DataFile) admin.site.register(User, MathesarUserAdmin) +admin.site.register(UIQuery) From 69fa9c312d1b9221f92ff241d05465991a42d12a Mon Sep 17 00:00:00 2001 From: Brent Moran Date: Mon, 20 Mar 2023 21:49:59 +0800 Subject: [PATCH 106/553] reduce max column name to workaround unknown issue --- db/identifiers.py | 2 +- mathesar/tests/api/test_table_api.py | 87 ++++++++++++++++++++++++++++ 2 files changed, 88 insertions(+), 1 deletion(-) diff --git a/db/identifiers.py b/db/identifiers.py index 7d9a175fdd..901b6db0de 100644 --- a/db/identifiers.py +++ b/db/identifiers.py @@ -30,7 +30,7 @@ def truncate_if_necessary(identifier): def is_identifier_too_long(identifier): - postgres_identifier_size_limit = 63 + postgres_identifier_size_limit = 48 size = _get_size_of_identifier_in_bytes(identifier) return size > postgres_identifier_size_limit diff --git a/mathesar/tests/api/test_table_api.py b/mathesar/tests/api/test_table_api.py index 0bec6e6796..53146255b7 100644 --- a/mathesar/tests/api/test_table_api.py +++ b/mathesar/tests/api/test_table_api.py @@ -5,6 +5,7 @@ from sqlalchemy import text from db.columns.operations.select import get_column_attnum_from_name, get_column_attnum_from_names_as_map +from db.identifiers import truncate_if_necessary from db.types.base import PostgresType, MathesarCustomType from db.metadata import get_empty_metadata from mathesar.models.users import DatabaseRole, SchemaRole @@ -15,6 +16,19 @@ from mathesar.models.base import Column, Table, DataFile +# DUPLICATE: We need a better testing organization schema. Now is not the time to fix. +@pytest.fixture +def long_column_data_file(): + data_filepath = 'mathesar/tests/data/long_column_names.csv' + with open(data_filepath, "rb") as csv_file: + data_file = DataFile.objects.create( + file=File(csv_file), + created_from='file', + base_name='longdatafiled', + ) + return data_file + + @pytest.fixture def schema_name(): return 'table_tests' @@ -158,6 +172,7 @@ def check_create_table_response( assert data_file.table_imported_to.id == table.id assert table.import_target == import_target_table check_table_response(response_table, table, expt_name) + return table list_clients_with_results_count = [ @@ -1768,3 +1783,75 @@ def test_table_ui_dependency(client, create_patents_table, get_uid): ] } assert response_data == expected_response + + +def test_create_table_long_name_data_file(client, long_column_data_file, schema): + table_name = 'My Long column name datafile' + # response, response_table, table = _create_table( + # ) + expt_name = _get_expected_name(table_name, data_file=long_column_data_file) + first_row = ( + 1, 'NATION', '8.6', '4.5', '8.5', '4.3', '8.3', '4.6', '78.6', '2.22', + '0.88', '0.66', '1.53', '3.75', '3.26', '0.45', '0.07', '53.9', '52.3', + '0.8', '0.38487', '3.15796', '2.3', '33247', '14.842144', '6.172333', + '47.158545', '1.698662', '2.345577', '7.882694', '0.145406', '3.395302', + '92.085375', '14.447634', '78.873848', '1.738571', '16.161024', + '19.436701', '8.145643', '94.937079', '74.115131', '75.601680', + '22.073834', '11.791045', '1.585233', + '1.016932', '2023-02-01' + ) + column_names = [ + "State or Nation", + "Cycle 1 Total Number of Health Deficiencies", + "Cycle 1 Total Number of Fire Safety Deficiencies", + "Cycle 2 Total Number of Health Deficiencies", + "Cycle 2 Total Number of Fire Safety Deficiencies", + "Cycle 3 Total Number of Health Deficiencies", + "Cycle 3 Total Number of Fire Safety Deficiencies", + "Average Number of Residents per Day", + "Reported Nurse Aide Staffing Hours per Resident per Day", + "Reported LPN Staffing Hours per Resident per Day", + "Reported RN Staffing Hours per Resident per Day", + "Reported Licensed Staffing Hours per Resident per Day", + "Reported Total Nurse Staffing Hours per Resident per Day", + "Total number of nurse staff hours per resident per day on the weekend", + "Registered Nurse hours per resident per day on the weekend", + "Reported Physical Therapist Staffing Hours per Resident Per Day", + "Total nursing staff turnover", + "Registered Nurse turnover", + "Number of administrators who have left the nursing home", + "Case-Mix RN Staffing Hours per Resident per Day", + "Case-Mix Total Nurse Staffing Hours per Resident per Day", + "Number of Fines", + "Fine Amount in Dollars", + "Percentage of long stay residents whose need for help with daily activities has increased", + "Percentage of long stay residents who lose too much weight", + "Percentage of low risk long stay residents who lose control of their bowels or bladder", + "Percentage of long stay residents with a catheter inserted and left in their bladder", + "Percentage of long stay residents with a urinary tract infection", + "Percentage of long stay residents who have depressive symptoms", + "Percentage of long stay residents who were physically restrained", + "Percentage of long stay residents experiencing one or more falls with major injury", + "Percentage of long stay residents assessed and appropriately given the pneumococcal vaccine", + "Percentage of long stay residents who received an antipsychotic medication", + "Percentage of short stay residents assessed and appropriately given the pneumococcal vaccine", + "Percentage of short stay residents who newly received an antipsychotic medication", + "Percentage of long stay residents whose ability to move independently worsened", + "Percentage of long stay residents who received an antianxiety or hypnotic medication", + "Percentage of high risk long stay residents with pressure ulcers", + "Percentage of long stay residents assessed and appropriately given the seasonal influenza vaccine", + "Percentage of short stay residents who made improvements in function", + "Percentage of short stay residents who were assessed and appropriately given the seasonal influenza vaccine", + "Percentage of short stay residents who were rehospitalized after a nursing home admission", + "Percentage of short stay residents who had an outpatient emergency department visit", + "Number of hospitalizations per 1000 long-stay resident days", + "Number of outpatient emergency department visits per 1000 long-stay resident days", + "Processing Date" + ] + processed_column_names = [truncate_if_necessary(col) for col in column_names] + table = check_create_table_response( + client, table_name, expt_name, long_column_data_file, schema, first_row, + processed_column_names, import_target_table=None + ) + # This just makes sure we can get records. This was a bug with long column names. + client.get(f'/api/db/v0/tables/{table.id}/records/') From 51004d25ebd87d5505718cac0cfcb5e2be5c9592 Mon Sep 17 00:00:00 2001 From: smruthi49 Date: Mon, 20 Mar 2023 20:15:35 +0530 Subject: [PATCH 107/553] added docker compose --- docs/docs/contributing/local-dev.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/docs/contributing/local-dev.md b/docs/docs/contributing/local-dev.md index d2727d2dc3..2b1edddae5 100644 --- a/docs/docs/contributing/local-dev.md +++ b/docs/docs/contributing/local-dev.md @@ -13,6 +13,10 @@ From the repository's root directory, run: ``` docker-compose --profile dev up ``` +or use +``` +docker compose --profile dev up +``` You should now have a web server and database server running. Opening `http://localhost:8000` in your browser will open the application. From 2ab0caee58ee2910790cc1597dd807bf0034be13 Mon Sep 17 00:00:00 2001 From: smruthi49 Date: Mon, 20 Mar 2023 21:53:08 +0530 Subject: [PATCH 108/553] dummy commit --- demo/__init__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/demo/__init__.py b/demo/__init__.py index 50e072800f..f3959553ca 100644 --- a/demo/__init__.py +++ b/demo/__init__.py @@ -1 +1,2 @@ default_app_config = 'demo.apps.DemoConfig' +#init \ No newline at end of file From 571c3496d4b934366135fa95d7516e51a4fad694 Mon Sep 17 00:00:00 2001 From: Brent Moran Date: Tue, 21 Mar 2023 11:48:47 +0800 Subject: [PATCH 109/553] add psycopg 3 for calling SQL from Python --- requirements.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index d4c337e7e9..5b12e56675 100644 --- a/requirements.txt +++ b/requirements.txt @@ -14,6 +14,8 @@ drf-access-policy==1.3.0 drf-friendly-errors==0.14 drf-nested-routers==0.93.3 pglast==3.4 +psycopg==3.1.8 +psycopg-binary==3.1.8 psycopg2==2.8.6 python-decouple==3.4 requests==2.28.2 @@ -23,4 +25,4 @@ SQLAlchemy-Utils==0.38.2 thefuzz==0.19.0 whitenoise==6.4.0 git+https://github.com/centerofci/sqlalchemy-filters@models_to_tables#egg=sqlalchemy_filters -gunicorn==20.1.0 \ No newline at end of file +gunicorn==20.1.0 From 8af186ba2e6895349444bc3aad89bfa1bf5c0b7d Mon Sep 17 00:00:00 2001 From: Brent Moran Date: Tue, 21 Mar 2023 17:39:22 +0800 Subject: [PATCH 110/553] add table dropping function, comment out view trigger --- db/sql/prototype.sql | 192 ++++++++++++++++++++++++++++++------------- 1 file changed, 133 insertions(+), 59 deletions(-) diff --git a/db/sql/prototype.sql b/db/sql/prototype.sql index 9fc9cbbdb1..200681133c 100644 --- a/db/sql/prototype.sql +++ b/db/sql/prototype.sql @@ -153,7 +153,7 @@ $$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; -- Rename table ------------------------------------------------------------------------------------ CREATE OR REPLACE FUNCTION -__msar.change_table_name(old_name text, new_name text) RETURNS text AS $$/* +__msar.rename_table(old_name text, new_name text) RETURNS text AS $$/* Change a table's name, returning the command executed. Args: @@ -169,7 +169,7 @@ $$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; CREATE OR REPLACE FUNCTION -msar.change_table_name(table_id oid, new_name text) RETURNS text AS $$/* +msar.rename_table(table_id oid, new_name text) RETURNS text AS $$/* Change a table's name, returning the command executed. Args: @@ -177,24 +177,24 @@ Args: new_name: unquoted, unqualified table name */ BEGIN - RETURN __msar.change_table_name(__msar.get_table_name(table_id), quote_ident(new_name)); + RETURN __msar.rename_table(__msar.get_table_name(table_id), quote_ident(new_name)); END; $$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; CREATE OR REPLACE FUNCTION -msar.change_table_name(schema_ text, old_name text, new_name text) RETURNS text AS $$/* +msar.rename_table(schema_ text, old_name text, new_name text) RETURNS text AS $$/* Change a table's name, returning the command executed. Args: - schem: unquoted schema name where the table lives + schema_: unquoted schema name where the table lives old_name: unquoted, unqualified original table name new_name: unquoted, unqualified new table name */ DECLARE fullname text; BEGIN fullname := msar.get_fq_table_name(schema_, old_name); - RETURN __msar.change_table_name(fullname, quote_ident(new_name)); + RETURN __msar.rename_table(fullname, quote_ident(new_name)); END; $$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; @@ -307,90 +307,164 @@ $$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; ---------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------- --- MATHESAR VIEW FUNCTIONS +-- MATHESAR DROP FUNCTION -- --- Functions and triggers in this section are used to create a view that tracks any created or --- modified table, and also provide a convenient way to set up such a view for an already-existing --- table or drop such a view. +-- Drop a table and its dependent view ---------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------- +-- Drop table -------------------------------------------------------------------------------- + CREATE OR REPLACE FUNCTION -msar.create_mathesar_view(table_id oid) RETURNS text AS $$/* -Create a view of named mv tracking the table with OID . +__msar.drop_table(name_ text, cascade_ boolean, if_exists boolean) RETURNS text AS $$/* +Drop a table. Args: - table_id: This is the OID of the table we want to track. - + name_: The qualified, quoted name of the table we will drop. + cascade_: Whether to add CASCADE. + if_exists_: Whether to ignore an error if the table doesn't exist */ -DECLARE viewname text; -DECLARE viewcols text; +DECLARE + cmd_template TEXT; BEGIN - viewname := msar.get_msar_view_name(table_id); - SELECT string_agg(format('%s AS c%s', quote_ident(attname), attnum), ', ') - FROM pg_attribute - WHERE attrelid=table_id AND attnum>0 AND NOT attisdropped - INTO viewcols; - RETURN __msar.exec_ddl( - 'CREATE OR REPLACE VIEW %s AS SELECT %s FROM %s', - viewname, viewcols, __msar.get_table_name(table_id) - ); + IF if_exists + THEN + cmd_template := 'DROP TABLE IF EXISTS %s'; + ELSE + cmd_template := 'DROP TABLE %s'; + END IF; + IF cascade_ + THEN + cmd_template = cmd_template || ' CASCADE'; + END IF; + RETURN __msar.exec_ddl(cmd_template, name_); END; $$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; -CREATE OR REPLACE FUNCTION -__msar.create_mathesar_view() RETURNS event_trigger AS $$/* -This function should not be called directly. -*/ -DECLARE ddl_command record; -BEGIN - FOR ddl_command IN SELECT * FROM pg_event_trigger_ddl_commands() - LOOP - IF ddl_command.object_type='table' AND upper(ddl_command.command_tag)<>'DROP TABLE' - THEN - PERFORM msar.create_mathesar_view(ddl_command.objid); - END IF; - END LOOP; -END; -$$ LANGUAGE plpgsql; - -DROP EVENT TRIGGER IF EXISTS create_mathesar_view; - -CREATE EVENT TRIGGER create_mathesar_view ON ddl_command_end - EXECUTE FUNCTION __msar.create_mathesar_view(); - CREATE OR REPLACE FUNCTION -msar.drop_mathesar_view(table_id oid) RETURNS text AS $$/* -Drop the Mathesar view tracking the given table. +msar.drop_table(table_id oid, cascade_ boolean, if_exists boolean) RETURNS text AS $$/* +Drop a table, first dropping its dependent mathesar view. Args: - table_id: This is the OID of the table being tracked by the view we'll drop. + table_id: The OID of the table to drop + cascade_: Whether to drop dependent objects. + if_exists_: Whether to ignore an error if the table doesn't exist */ -DECLARE viewname text; BEGIN - viewname := msar.get_mathesar_view_name(table_id); - RETURN __msar.exec_ddl('DROP VIEW IF EXISTS %s', viewname); +-- PERFORM msar.drop_mathesar_view(table_id); + RETURN __msar.drop_table(__msar.get_table_name(table_id), cascade_, if_exists); END; $$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; CREATE OR REPLACE FUNCTION -msar.drop_mathesar_view(schema_ text, table_name text) RETURNS text AS $$/* -Drop the Mathesar view tracking the given table. +msar.drop_table(schema_ text, name_ text, cascade_ boolean, if_exists boolean) RETURNS text AS $$/* +Change the description of a table, returning command executed. Args: - schema_: This is the schema of the table being tracked by the view we'll drop. - table_name: This is the name of the table being tracked by the view we'll drop. + schema_: The schema of the table to drop. + name_: The name of the table to drop. + cascade_: Whether to drop dependent objects. + if_exists_: Whether to ignore an error if the table doesn't exist */ -DECLARE table_id oid; +DECLARE qualified_name text; BEGIN - table_id := msar.get_table_oid(schema_, table_name); - RETURN msar.drop_mathesar_view(table_id); +-- PERFORM msar.drop_mathesar_view(schema_, name_); + qualified_name := msar.get_fq_table_name(schema_, name_); + RETURN __msar.drop_table(qualified_name, cascade_, if_exists); END; $$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; +---------------------------------------------------------------------------------------------------- +---------------------------------------------------------------------------------------------------- +-- MATHESAR VIEW FUNCTIONS +-- +-- Functions and triggers in this section are used to create a view that tracks any created or +-- modified table, and also provide a convenient way to set up such a view for an already-existing +-- table or drop such a view. +---------------------------------------------------------------------------------------------------- +---------------------------------------------------------------------------------------------------- +-- +-- CREATE OR REPLACE FUNCTION +-- msar.create_mathesar_view(table_id oid) RETURNS text AS $$/* +-- Create a view of named mv tracking the table with OID . +-- +-- Args: +-- table_id: This is the OID of the table we want to track. +-- +-- */ +-- DECLARE viewname text; +-- DECLARE viewcols text; +-- BEGIN +-- viewname := msar.get_mathesar_view_name(table_id); +-- SELECT string_agg(format('%s AS c%s', quote_ident(attname), attnum), ', ') +-- FROM pg_attribute +-- WHERE attrelid=table_id AND attnum>0 AND NOT attisdropped +-- INTO viewcols; +-- RETURN __msar.exec_ddl( +-- 'CREATE OR REPLACE VIEW %s AS SELECT %s FROM %s', +-- viewname, viewcols, __msar.get_table_name(table_id) +-- ); +-- END; +-- $$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; +-- +-- CREATE OR REPLACE FUNCTION +-- __msar.create_mathesar_view() RETURNS event_trigger AS $$/* +-- This function should not be called directly. +-- */ +-- DECLARE ddl_command record; +-- BEGIN +-- FOR ddl_command IN SELECT * FROM pg_event_trigger_ddl_commands() +-- LOOP +-- IF ddl_command.object_type='table' AND upper(ddl_command.command_tag)<>'DROP TABLE' +-- THEN +-- PERFORM msar.create_mathesar_view(ddl_command.objid); +-- END IF; +-- END LOOP; +-- END; +-- $$ LANGUAGE plpgsql; +-- +-- DROP EVENT TRIGGER IF EXISTS create_mathesar_view; +-- +-- CREATE EVENT TRIGGER create_mathesar_view ON ddl_command_end +-- EXECUTE FUNCTION __msar.create_mathesar_view(); +-- +-- +-- CREATE OR REPLACE FUNCTION +-- msar.drop_mathesar_view(table_id oid) RETURNS text AS $$/* +-- Drop the Mathesar view tracking the given table. +-- +-- Args: +-- table_id: This is the OID of the table being tracked by the view we'll drop. +-- */ +-- DECLARE viewname text; +-- BEGIN +-- viewname := msar.get_mathesar_view_name(table_id); +-- RETURN __msar.exec_ddl('DROP VIEW IF EXISTS %s', viewname); +-- END; +-- $$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; +-- +-- +-- CREATE OR REPLACE FUNCTION +-- msar.drop_mathesar_view(schema_ text, table_name text) RETURNS text AS $$/* +-- Drop the Mathesar view tracking the given table. +-- +-- Args: +-- schema_: This is the schema of the table being tracked by the view we'll drop. +-- table_name: This is the name of the table being tracked by the view we'll drop. +-- */ +-- DECLARE table_id oid; +-- BEGIN +-- table_id := msar.get_table_oid(schema_, table_name); +-- RETURN msar.drop_mathesar_view(table_id); +-- EXCEPTION WHEN undefined_table THEN +-- RETURN 'NO SUCH TABLE'; +-- END; +-- $$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; + + CREATE TYPE mathesar_types.joinable_tables AS ( base integer, target integer, From 462fe43f64bf7f639433782d336336be2a5e6ce4 Mon Sep 17 00:00:00 2001 From: Brent Moran Date: Tue, 21 Mar 2023 17:47:40 +0800 Subject: [PATCH 111/553] add scaffolding function to make running commands easier --- db/connection.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 db/connection.py diff --git a/db/connection.py b/db/connection.py new file mode 100644 index 0000000000..c34bc25d14 --- /dev/null +++ b/db/connection.py @@ -0,0 +1,21 @@ +import psycopg + + +def execute_msar_func_with_engine(engine, func_name, *args): + """ + Execute an msar function using an SQLAlchemy engine. + + This is temporary scaffolding. + + Args: + engine: and SQLAlchemy engine for connecting to a DB + func_name: The unqualified msar function name (danger; not sanitized) + *args: The list of parameters to pass + """ + conn_str = str(engine.url) + with psycopg.connect(conn_str) as conn: + # Returns a cursor + return conn.execute( + f"SELECT msar.{func_name}({','.join(['%s']*len(args))})", + args + ) From cb048af3ddf8425cbc2b6c698a6583935e6338ca Mon Sep 17 00:00:00 2001 From: Brent Moran Date: Tue, 21 Mar 2023 17:49:08 +0800 Subject: [PATCH 112/553] add scaffolding to install new prototype SQL --- conftest.py | 4 ++++ db/install.py | 7 +++++++ 2 files changed, 11 insertions(+) diff --git a/conftest.py b/conftest.py index 7bb979ce1e..6ea1120f59 100644 --- a/conftest.py +++ b/conftest.py @@ -18,6 +18,8 @@ from fixtures.utils import create_scoped_fixtures +PROTOTYPE_FILE = os.path.join('db', 'sql', 'prototype.sql') + def engine_cache(request): import logging @@ -74,6 +76,8 @@ def __create_db(db_name): created_dbs.add(db_name) # Our default testing database has our types and functions preinstalled. install.install_mathesar_on_database(engine) + with open(PROTOTYPE_FILE) as f, engine.begin() as conn: + conn.execute(text(f.read())) engine.dispose() return db_name yield __create_db diff --git a/db/install.py b/db/install.py index 8a15429bdd..07ebe814e8 100644 --- a/db/install.py +++ b/db/install.py @@ -1,9 +1,12 @@ +import os from sqlalchemy import text from sqlalchemy.exc import OperationalError from db import engine from db.types import install +PROTOTYPE_FILE = os.path.join('sql', 'prototype.sql') + def install_mathesar( database_name, username, password, hostname, port, skip_confirm @@ -17,6 +20,8 @@ def install_mathesar( user_db_engine.connect() print(f"Installing Mathesar on preexisting PostgreSQL database {database_name} at host {hostname}...") install.install_mathesar_on_database(user_db_engine) + with open(PROTOTYPE_FILE) as f, engine.begin() as conn: + conn.execute(text(f.read())) user_db_engine.dispose() except OperationalError: database_created = _create_database( @@ -30,6 +35,8 @@ def install_mathesar( if database_created: print(f"Installing Mathesar on PostgreSQL database {database_name} at host {hostname}...") install.install_mathesar_on_database(user_db_engine) + with open(PROTOTYPE_FILE) as f, engine.begin() as conn: + conn.execute(text(f.read())) user_db_engine.dispose() else: print(f"Skipping installing on DB with key {database_name}.") From 4ad1711e38097774522529f25b5a63e00ce12855 Mon Sep 17 00:00:00 2001 From: Brent Moran Date: Tue, 21 Mar 2023 17:54:46 +0800 Subject: [PATCH 113/553] add python wrappers for alter and drop functions --- db/tables/operations/alter.py | 87 +++++++++++++++++++---------------- db/tables/operations/drop.py | 40 +--------------- 2 files changed, 49 insertions(+), 78 deletions(-) diff --git a/db/tables/operations/alter.py b/db/tables/operations/alter.py index 5d37c48d91..4149b03be7 100644 --- a/db/tables/operations/alter.py +++ b/db/tables/operations/alter.py @@ -1,33 +1,43 @@ -from alembic.migration import MigrationContext -from alembic.operations import Operations -from sqlalchemy import func, select, text - from db import constants +from db.connection import execute_msar_func_with_engine from db.columns.operations.alter import batch_update_columns -from db.tables.operations.select import reflect_table -from db.metadata import get_empty_metadata -from db.utils import execute_statement SUPPORTED_TABLE_ALTER_ARGS = {'name', 'columns', 'description'} def rename_table(name, schema, engine, rename_to): - # TODO reuse metadata - table = reflect_table(name, schema, engine, metadata=get_empty_metadata()) - if rename_to == table.name: - return - with engine.begin() as conn: - ctx = MigrationContext.configure(conn) - op = Operations(ctx) - op.rename_table(table.name, rename_to, schema=table.schema) + """ + Change a table's name, returning the command executed. + + Args: + name: original table name + schema: schema where the table lives + engine: SQLAlchemy engine object for connecting. + rename_to: new table name + """ + if name == rename_to: + result = None + else: + result = execute_msar_func_with_engine( + engine, 'rename_table', schema, name, rename_to + ).fetchone()[0] + return result def comment_on_table(name, schema, engine, comment): - # Not using the DDLElement since the examples from the docs are - # vulnerable to SQL injection attacks. - comment_command = text(f'COMMENT ON TABLE "{schema}"."{name}" IS :c') - with engine.begin() as conn: - conn.execute(comment_command, {'c': comment}) + """ + Change the description of a table, returning command executed. + + Args: + name: The name of the table whose comment we will change. + schema: The schema of the table whose comment we will change. + engine: SQLAlchemy engine object for connecting. + comment: The new comment. Any quotes or special characters must + be escaped. + """ + return execute_msar_func_with_engine( + engine, 'comment_on_table', schema, name, comment + ).fetchone()[0] def alter_table(table_name, table_oid, schema, engine, update_data): @@ -40,23 +50,20 @@ def alter_table(table_name, table_oid, schema, engine, update_data): def update_pk_sequence_to_latest(engine, table, connection=None): - _preparer = engine.dialect.identifier_preparer - quoted_table_name = _preparer.quote(table.schema) + "." + _preparer.quote(table.name) - update_pk_sequence_stmt = func.setval( - # `pg_get_serial_sequence needs a string of the Table name - func.pg_get_serial_sequence( - quoted_table_name, - table.c[constants.ID].name - ), - # If the table can be empty, start from 1 instead of using Null - func.coalesce( - func.max(table.c[constants.ID]) + 1, - 1 - ), - # Set the sequence to use the last value of the sequence - # Setting is_called field to false, meaning that the next nextval will not advance the sequence before returning a value. - # We need to do it as our default coalesce value is 1 instead of 0 - # Refer the postgres docs https://www.postgresql.org/docs/current/functions-sequence.html - False - ) - execute_statement(engine, select(update_pk_sequence_stmt), connection_to_use=connection) + """ + Update the primary key sequence to the current maximum. + + This way, the next value inserted will use the next value in the + sequence, avoiding collisions. + + Args: + table_id: The OID of the table whose primary key sequence we'll + update. + col_attnum: The attnum of the primary key column. + """ + schema = table.schema or 'public' + name = table.name + column = table.c[constants.ID].name + return execute_msar_func_with_engine( + engine, 'update_pk_sequence_to_latest', schema, name, column + ).fetchone()[0] diff --git a/db/tables/operations/drop.py b/db/tables/operations/drop.py index d655a0db59..f0f40b3c88 100644 --- a/db/tables/operations/drop.py +++ b/db/tables/operations/drop.py @@ -1,41 +1,5 @@ -from sqlalchemy.schema import DropTable -from sqlalchemy.ext import compiler -from sqlalchemy.exc import NoSuchTableError, InternalError -from psycopg2.errors import DependentObjectsStillExist - -from db.tables.operations.select import reflect_table -from db.metadata import get_empty_metadata - - -class DropTableCascade(DropTable): - def __init__(self, table, cascade=False, if_exists=False, **kwargs): - super().__init__(table, if_exists=if_exists, **kwargs) - self.cascade = cascade - - -@compiler.compiles(DropTableCascade, "postgresql") -def compile_drop_table(element, compiler, **_): - expression = compiler.visit_drop_table(element) - if element.cascade: - return expression + " CASCADE" - else: - return expression +from db.connection import execute_msar_func_with_engine def drop_table(name, schema, engine, cascade=False, if_exists=False): - try: - # TODO reuse metadata - table = reflect_table(name, schema, engine, metadata=get_empty_metadata()) - except NoSuchTableError: - if if_exists: - return - else: - raise - with engine.begin() as conn: - try: - conn.execute(DropTableCascade(table, cascade=cascade)) - except InternalError as e: - if isinstance(e.orig, DependentObjectsStillExist): - raise e.orig - else: - raise e + execute_msar_func_with_engine(engine, 'drop_table', schema, name, cascade, if_exists) From 4b62c4b33121b6501a4022b9a4f6281ffbf0c8d3 Mon Sep 17 00:00:00 2001 From: Brent Moran Date: Tue, 21 Mar 2023 17:55:35 +0800 Subject: [PATCH 114/553] fix dropping tests --- db/tests/tables/operations/test_drop.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/db/tests/tables/operations/test_drop.py b/db/tests/tables/operations/test_drop.py index 8b6858593f..bd56a6bb01 100644 --- a/db/tests/tables/operations/test_drop.py +++ b/db/tests/tables/operations/test_drop.py @@ -1,4 +1,5 @@ -from psycopg2.errors import DependentObjectsStillExist +from psycopg.errors import DependentObjectsStillExist +from psycopg.errors import UndefinedTable import pytest from sqlalchemy.exc import NoSuchTableError @@ -27,7 +28,7 @@ def test_drop_table_no_table_if_exists_true(engine_with_schema): def test_drop_table_no_table_if_exists_false(engine_with_schema): engine, schema = engine_with_schema - with pytest.raises(NoSuchTableError): + with pytest.raises(UndefinedTable): drop_table("test_drop_table", schema, engine, if_exists=False) From fe364ee68aa60f8067f899e4293a460e7700832f Mon Sep 17 00:00:00 2001 From: smruthi49 Date: Tue, 21 Mar 2023 18:23:39 +0530 Subject: [PATCH 115/553] removed docker-compose --- docs/docs/contributing/local-dev.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/docs/docs/contributing/local-dev.md b/docs/docs/contributing/local-dev.md index 2b1edddae5..25cf638181 100644 --- a/docs/docs/contributing/local-dev.md +++ b/docs/docs/contributing/local-dev.md @@ -11,10 +11,6 @@ cp .env.example .env From the repository's root directory, run: ``` -docker-compose --profile dev up -``` -or use -``` docker compose --profile dev up ``` From b7d42ee013b82363355839d288fe6662f8d070b1 Mon Sep 17 00:00:00 2001 From: Brent Moran Date: Tue, 21 Mar 2023 21:35:26 +0800 Subject: [PATCH 116/553] Fix bugs to get tests passing --- db/connection.py | 21 ++++++++++++++++++++- db/constants.py | 3 +++ db/schemas/operations/select.py | 12 +++++++++++- db/tables/operations/alter.py | 18 ++++++++++++------ 4 files changed, 46 insertions(+), 8 deletions(-) diff --git a/db/connection.py b/db/connection.py index c34bc25d14..f7e2ebffbf 100644 --- a/db/connection.py +++ b/db/connection.py @@ -1,3 +1,4 @@ +from sqlalchemy import text import psycopg @@ -8,7 +9,7 @@ def execute_msar_func_with_engine(engine, func_name, *args): This is temporary scaffolding. Args: - engine: and SQLAlchemy engine for connecting to a DB + engine: an SQLAlchemy engine for connecting to a DB func_name: The unqualified msar function name (danger; not sanitized) *args: The list of parameters to pass """ @@ -19,3 +20,21 @@ def execute_msar_func_with_engine(engine, func_name, *args): f"SELECT msar.{func_name}({','.join(['%s']*len(args))})", args ) + + +def execute_msar_func_with_psycopg2_conn(conn, func_name, *args): + """ + Execute an msar function using an SQLAlchemy engine. + + This is *extremely* temporary scaffolding. + + Args: + conn: a psycopg2 connection (from an SQLAlchemy engine) + func_name: The unqualified msar function name (danger; not sanitized) + *args: The list of parameters to pass + """ + args_str = "', '".join(args) + args_str = f"'{args_str}'" + stmt = text(f"SELECT msar.{func_name}({args_str})") + # Returns a cursor + return conn.execute(stmt) diff --git a/db/constants.py b/db/constants.py index 2edcdae86b..efc7a2504d 100644 --- a/db/constants.py +++ b/db/constants.py @@ -3,3 +3,6 @@ ID_ORIGINAL = "id_original" INFERENCE_SCHEMA = f"{MATHESAR_PREFIX}inference_schema" COLUMN_NAME_TEMPLATE = 'Column ' # auto generated column name 'Column 1' (no undescore) +MSAR_PUBLIC = 'msar' +MSAR_PRIVAT = f"__{MSAR_PUBLIC}" +MSAR_VIEWS = f"{MSAR_PUBLIC}_views" diff --git a/db/schemas/operations/select.py b/db/schemas/operations/select.py index b9c242902e..2a40e8666c 100644 --- a/db/schemas/operations/select.py +++ b/db/schemas/operations/select.py @@ -7,7 +7,17 @@ TYPES_SCHEMA = types.base.SCHEMA TEMP_INFER_SCHEMA = constants.INFERENCE_SCHEMA -EXCLUDED_SCHEMATA = [TYPES_SCHEMA, TEMP_INFER_SCHEMA, "information_schema"] +MSAR_PUBLIC = constants.MSAR_PUBLIC +MSAR_PRIVAT = constants.MSAR_PRIVAT +MSAR_VIEWS = constants.MSAR_VIEWS +EXCLUDED_SCHEMATA = [ + "information_schema", + MSAR_PRIVAT, + MSAR_PUBLIC, + MSAR_VIEWS, + TEMP_INFER_SCHEMA, + TYPES_SCHEMA, +] def reflect_schema(engine, name=None, oid=None, metadata=None): diff --git a/db/tables/operations/alter.py b/db/tables/operations/alter.py index 4149b03be7..55678f57cc 100644 --- a/db/tables/operations/alter.py +++ b/db/tables/operations/alter.py @@ -1,5 +1,6 @@ +"""The functions in this module wrap SQL functions that use `ALTER TABLE`.""" from db import constants -from db.connection import execute_msar_func_with_engine +from db import connection as db_conn from db.columns.operations.alter import batch_update_columns SUPPORTED_TABLE_ALTER_ARGS = {'name', 'columns', 'description'} @@ -18,7 +19,7 @@ def rename_table(name, schema, engine, rename_to): if name == rename_to: result = None else: - result = execute_msar_func_with_engine( + result = db_conn.execute_msar_func_with_engine( engine, 'rename_table', schema, name, rename_to ).fetchone()[0] return result @@ -35,7 +36,7 @@ def comment_on_table(name, schema, engine, comment): comment: The new comment. Any quotes or special characters must be escaped. """ - return execute_msar_func_with_engine( + return db_conn.execute_msar_func_with_engine( engine, 'comment_on_table', schema, name, comment ).fetchone()[0] @@ -64,6 +65,11 @@ def update_pk_sequence_to_latest(engine, table, connection=None): schema = table.schema or 'public' name = table.name column = table.c[constants.ID].name - return execute_msar_func_with_engine( - engine, 'update_pk_sequence_to_latest', schema, name, column - ).fetchone()[0] + if connection is not None: + db_conn.execute_msar_func_with_psycopg2_conn( + connection, 'update_pk_sequence_to_latest', schema, name, column + ).fetchone()[0] + else: + db_conn.execute_msar_func_with_engine( + engine, 'update_pk_sequence_to_latest', schema, name, column + ).fetchone()[0] From 71cd30ec72b66d9c654435177568a20b62a067c6 Mon Sep 17 00:00:00 2001 From: smruthi49 Date: Tue, 21 Mar 2023 20:10:40 +0530 Subject: [PATCH 117/553] removing #init comment(dummy commit) --- demo/__init__.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/demo/__init__.py b/demo/__init__.py index f3959553ca..dd34c736fd 100644 --- a/demo/__init__.py +++ b/demo/__init__.py @@ -1,2 +1 @@ -default_app_config = 'demo.apps.DemoConfig' -#init \ No newline at end of file +default_app_config = 'demo.apps.DemoConfig' \ No newline at end of file From 87eb7c41232a9e517b5b17a1ff560e645ffa3999 Mon Sep 17 00:00:00 2001 From: Rajat Vijay Date: Wed, 22 Mar 2023 03:49:27 +0530 Subject: [PATCH 118/553] doc for getting started with fe codebase --- .../getting-started-with-frontend-codebase.md | 174 ++++++++++++++++++ docs/docs/index.md | 3 +- 2 files changed, 176 insertions(+), 1 deletion(-) create mode 100644 docs/docs/contributing/getting-started-with-frontend-codebase.md diff --git a/docs/docs/contributing/getting-started-with-frontend-codebase.md b/docs/docs/contributing/getting-started-with-frontend-codebase.md new file mode 100644 index 0000000000..9af4dcb371 --- /dev/null +++ b/docs/docs/contributing/getting-started-with-frontend-codebase.md @@ -0,0 +1,174 @@ +--- +title: Getting Started with Frontend Codebase +description: +published: true +date: 2023-03-23T17:00:00.166Z +tags: +editor: markdown +dateCreated: 2023-03-23T17:00:00.166Z +--- + +## Introduction + +This article aims to document the major patterns that are being used in the frontend codebase. Learning about these patterns will help speed up the process of onboarding on the codebase for a completely new person. + +There are a lot of varying patterns that you will find in the codebase which we do not recommend anymore and hence are not even documented here. + +## Rendering Architecture & Common Data + +When you hit the base route in your browser's address bar, the initial request is served by the Django server. Depending on the authentication state of the user an appropriate HTML file is being served. + +If the user is authenticated, the server embeds some data in the JSON format inside the HTML. The data is embedded inside an HTML tag with the id `common-data`. Internally we also refer to this data using the terminology `commonData`. + +This JSON is used by the frontend code to render the UI on the first load without having to make additional round trips to the server. + +Code related to this can be find inside: `src/utils/preload.ts`. + +## Store patterns + +We use [Svelte stores](https://svelte.dev/tutorial/writable-stores) as our main state management tool. With stores alone being quite simple, we have evolved different patterns for using stores to manage more complex state. + +### The immutable class pattern - Coarse Reactivity + +A writable Svelte store holds an instance of a custom immutable class. + +- **Updating the store**: + + ```typescript + pizza.update((p) => p.withTopping("mushrooms")); + ``` + +- **Benefits**: + + - The class is kept simple. + - Unit tests for the class can be written declaratively with no need to sequentially build up state. + - Avoiding invalid state is straightforward because the constructor can serve as a single point of control for complex validation and recovery logic. + +- **Examples**: [Filtering](https://github.com/centerofci/mathesar/blob/60d50dbcabb519f4260500724aef2ba6fbc96059/mathesar_ui/src/stores/table-data/filtering.ts#L42) + +### The mutable class pattern - Granular Reactivity + +A custom class has a property which holds an instance of a writable Svelte store. The class provides methods to update that store. The class may even have more than one such store. + +- **Updating the store**: + + ```typescript + pizza.addTopping("mushrooms"); + ``` + +- **Benefits**: + + - The consuming code is kept clean and simple. + - Reactivity is granular, which might be crucial for performance or UX concerns + +- Sub-patterns with varying member visibility + + - **Public**: In many cases the underlying store is public, grating consumers the privilege to modify the store directly without calling the store methods. We would like to avoid this pattern going forward to reduce the opportunity for bugs. + + Example: [RecordsData](https://github.com/centerofci/mathesar/blob/60d50dbcabb519f4260500724aef2ba6fbc96059/mathesar_ui/src/stores/table-data/records.ts#L269) + + - **Publicly readable, privately writable**: We use the `MakeWritablePropertiesReadable` utility to enforce read-only checks at compile time. We would like to employ this pattern more widely moving forward. + + Example: [WritableUserStore](https://github.com/centerofci/mathesar/blob/60d50dbcabb519f4260500724aef2ba6fbc96059/mathesar_ui/src/stores/users.ts#L167) + + - **Private**: In some cases the underlying store is made entirely private, and other derived stores publicly expose read-only versions of slightly modified data. + + Example: [RecordSummaryStore](https://github.com/centerofci/mathesar/blob/60d50dbcabb519f4260500724aef2ba6fbc96059/mathesar_ui/src/stores/table-data/record-summaries/RecordSummaryStore.ts#L23) (two private stores combined into one publicly readable store) + +### Nested store patterns - Granular Reactivity + +A writable Svelte store can hold one or more writable Svelte stores, with some other stuff in between. + +This is more complex, more bespoke, and thus harder to categorize, but here are some examples in our codebase: + +- [TabularData](https://github.com/centerofci/mathesar/blob/60d50dbcabb519f4260500724aef2ba6fbc96059/mathesar_ui/src/stores/table-data/tabularData.ts#L49) contains a bunch of stores, and is also nested inside a writable Svelte store itself via `setTabularDataStoreInContext`. The indirection is handled at the component layer via reactive destructuring. + + ```ts + const tabularData = getTabularDataStoreFromContext(); + $: ({ isLoading } = $tabularData); + $: yadaYada = $isLoading; + ``` + +- The [Form](https://github.com/centerofci/mathesar/blob/60d50dbcabb519f4260500724aef2ba6fbc96059/mathesar_ui/src/components/form/form.ts#L34) system is an outer store with one store per field. It handles some of the this indirection _outside_ the component system by using the [unite](https://github.com/centerofci/mathesar/blob/60d50dbcabb519f4260500724aef2ba6fbc96059/mathesar_ui/src/component-library/common/utils/storeUtils.ts#L43) utility to combine many inner stores into one outer store. + +## Passing stores to components + +### via props + +A component can only receive a store instance from its immediate ancestor. + +- This is common enough to be rather trivial, but it's worth mentioning for the sake of contrast. + +### via context + +A component can use Svelte's [Context API](https://svelte.dev/tutorial/context-api) to receive a store instance from _any_ of its ancestors. + +- This pattern is appropriate when props would need to be drilled down through many levels of the component hierarchy. How many is _too_ many? We don't have any rules around this. If you're unsure whether or not to use context, it may be best to start with props and grow to context as needed. +- As a convention, we wrap Svelte's `getContext` and and `setContext` functions in our own utility functions. This makes consuming code a bit simpler, especially with regard to types. See [UserProfileStore](https://github.com/centerofci/mathesar/blob/60d50dbcabb519f4260500724aef2ba6fbc96059/mathesar_ui/src/stores/userProfile.ts#L11) as an example. + +### via ESM imports + +The store instance is a global singleton, shared by any components that import it. + +- This pattern is appropriate for cases where we expect every single page within the application to always have one and only instance of the store. The toast system is a good example. +- We used this pattern more in early code and we would like to use it less going forward to avoid problems like [this](https://github.com/centerofci/mathesar/pull/2213#discussion_r1081799469). There are some examples of this pattern that we may eventually convert to use other patterns. + +## Notable stores + +### TabularData + +[TabularData](https://github.com/centerofci/mathesar/blob/60d50dbcabb519f4260500724aef2ba6fbc96059/mathesar_ui/src/stores/table-data/tabularData.ts#L49) provides a bit of a nexus where many things come together for when rendering a table. It's a good place to start learning about our store system. + +## Dealing with APIs + +In the majority of the codebase, the API calls are being tightly coupled with the stores. Look at the schemas store here: `mathesar_ui/src/stores/schemas.ts`. + +But with the recent [proposal](https://github.com/centerofci/mathesar-wiki/blob/fe-rfc-users-permissions/engineering/specs/usersandpermissions.md#proposal) the API calls are being separate out in `src/api`. + +1. There is a directory `src/api/` that contains `src/api/types` and `src/api/utils`. The new files will be placed within `src/api/`. +2. Each utility file will export its related types. + A good example will be to look at: `src/api/users.ts`. + +## Component library + +Mathesar is built on top of its custom UI library. The library lives inside the `src/component-library`. The code inside the library has the following structure: + +``` +src + component-library + + __meta__ + This contains the storybook stories for this component + + ComponentName.svelte + ComponentName.scss +``` + +1. Run the storybook: https://github.com/centerofci/mathesar/tree/develop/mathesar_ui#storybook +2. See the [Components README](https://github.com/centerofci/mathesar/blob/develop/mathesar_ui/src/component-library/README.md) for more details. + +## Form library + +Mathesar uses its own custom form creation and validation library. It lives in `src/components/form`. +You can read more about this library here: https://github.com/centerofci/mathesar/pull/1932 under the following headings in the PR description + +1. An example form +2. How it works + +## Icons + +Mathesar uses svg icons throughout the application. There is an `Icon` (can be found here: `mathesar_ui/src/component-library/icon/Icon.svelte`) component inside the `component-library` that is responsible for rendering the correct icon given the svg data. + +### Storage of icons from font-awesome + +All icons are named after a concept that they denote instead of their appearance. These icons are also stored at two central locations: + +1. Icons that belong to the component library - `src/component-library/common/icons.ts` +2. Icons that belong to the application codebase - `src/icons/index.ts` + +More on icon naming here: https://github.com/centerofci/mathesar/issues/1187 + +### Custom Icons + +There are a few cases where custom icons or non-font-awesome icons are being the user. The svg data of these icons are stored here: `src/icons/customIcons.ts`. +Custom icon data is stored so that it can again be rendered using the `Icons` component. diff --git a/docs/docs/index.md b/docs/docs/index.md index 384b8590f0..29ab30d6bb 100644 --- a/docs/docs/index.md +++ b/docs/docs/index.md @@ -19,4 +19,5 @@ Mathesar should be pretty intuitive to use. More documentation is coming soon, b ## Contributing We welcome contributions! Please read through our [contribution guide on our wiki](https://wiki.mathesar.org/en/community/contributing) to get started. -- [Local Development Setup](contributing/local-dev.md) \ No newline at end of file +- [Local Development Setup](contributing/local-dev.md) +- [Getting started with the frontend codebase](contributing/getting-started-with-frontend-codebase.md) \ No newline at end of file From d0b385963dfdb161b56ad45cf411c91cf377e0f5 Mon Sep 17 00:00:00 2001 From: Brent Moran Date: Wed, 22 Mar 2023 09:36:41 +0800 Subject: [PATCH 119/553] reorganize SQL, improve documentation and comments --- conftest.py | 4 +- db/connection.py | 7 + db/install.py | 15 +- db/sql/{prototype.sql => 0_msar.sql} | 237 +++------------------------ db/sql/1_msar_joinable_tables.sql | 114 +++++++++++++ db/sql/2_msar_views.sql | 114 +++++++++++++ db/sql/install.py | 11 ++ 7 files changed, 279 insertions(+), 223 deletions(-) rename db/sql/{prototype.sql => 0_msar.sql} (63%) create mode 100644 db/sql/1_msar_joinable_tables.sql create mode 100644 db/sql/2_msar_views.sql create mode 100644 db/sql/install.py diff --git a/conftest.py b/conftest.py index 6ea1120f59..90592d4972 100644 --- a/conftest.py +++ b/conftest.py @@ -18,7 +18,7 @@ from fixtures.utils import create_scoped_fixtures -PROTOTYPE_FILE = os.path.join('db', 'sql', 'prototype.sql') +MSAR_FILE = os.path.join('db', 'sql', '0_msar.sql') def engine_cache(request): @@ -76,7 +76,7 @@ def __create_db(db_name): created_dbs.add(db_name) # Our default testing database has our types and functions preinstalled. install.install_mathesar_on_database(engine) - with open(PROTOTYPE_FILE) as f, engine.begin() as conn: + with open(MSAR_FILE) as f, engine.begin() as conn: conn.execute(text(f.read())) engine.dispose() return db_name diff --git a/db/connection.py b/db/connection.py index f7e2ebffbf..9bd8604a75 100644 --- a/db/connection.py +++ b/db/connection.py @@ -38,3 +38,10 @@ def execute_msar_func_with_psycopg2_conn(conn, func_name, *args): stmt = text(f"SELECT msar.{func_name}({args_str})") # Returns a cursor return conn.execute(stmt) + + +def load_file_with_engine(engine, file_handle): + """Run an SQL script from a file, using psycopg.""" + conn_str = str(engine.url) + with psycopg.connect(conn_str) as conn: + conn.execute(file_handle.read()) diff --git a/db/install.py b/db/install.py index 07ebe814e8..9a65997726 100644 --- a/db/install.py +++ b/db/install.py @@ -3,9 +3,8 @@ from sqlalchemy.exc import OperationalError from db import engine -from db.types import install - -PROTOTYPE_FILE = os.path.join('sql', 'prototype.sql') +from db.sql import install as sql_install +from db.types import install as types_install def install_mathesar( @@ -19,9 +18,8 @@ def install_mathesar( try: user_db_engine.connect() print(f"Installing Mathesar on preexisting PostgreSQL database {database_name} at host {hostname}...") - install.install_mathesar_on_database(user_db_engine) - with open(PROTOTYPE_FILE) as f, engine.begin() as conn: - conn.execute(text(f.read())) + types_install.install_mathesar_on_database(user_db_engine) + sql_install.install(user_db_engine) user_db_engine.dispose() except OperationalError: database_created = _create_database( @@ -34,9 +32,8 @@ def install_mathesar( ) if database_created: print(f"Installing Mathesar on PostgreSQL database {database_name} at host {hostname}...") - install.install_mathesar_on_database(user_db_engine) - with open(PROTOTYPE_FILE) as f, engine.begin() as conn: - conn.execute(text(f.read())) + types_install.install_mathesar_on_database(user_db_engine) + sql_install.install(user_db_engine) user_db_engine.dispose() else: print(f"Skipping installing on DB with key {database_name}.") diff --git a/db/sql/prototype.sql b/db/sql/0_msar.sql similarity index 63% rename from db/sql/prototype.sql rename to db/sql/0_msar.sql index 200681133c..1a2f593645 100644 --- a/db/sql/prototype.sql +++ b/db/sql/0_msar.sql @@ -1,21 +1,37 @@ /* -Functions for testing feasibility of moving different Mathesar pieces to the database. These are -part of the 'remove SQLAlchemy' project. +This script defines a number of functions to be used for manipulating database objects (tables, +columns, schemas) using Data Definition Language style queries. + +These are the schemas where the new functions will generally live: -There are three involved schemas: __msar: These functions aren't designed to be used except by other Mathesar functions. Generally need preformatted strings as input, won't do quoting, etc. msar: These functions are designed to be used more easily. They'll format strings, quote identifiers, and so on. - msar_views: This schema is where internal mathesar views will be stored. The reason they're so abbreviated is to avoid namespace clashes, and also because making them longer would make using them quite tedious, since they're everywhere. + +The functions should each be overloaded to accept at a minimum the 'fixed' ID of a given object, as +well as its name identifer(s). + +- Schemas should be identified by one of the following: + - OID, or + - Name +- Tables should be identified by one of the following: + - OID, or + - Schema, Name pair (unquoted) +- Columns should be identified by one of the following: + - OID, ATTNUM pair, or + - Schema, Table Name, Column Name triple (unquoted), or + - Table OID, Column Name pair (optional). + +Note that these identification schemes apply to the public-facing functions in the `msar` namespace, +not necessarily the internal `__msar` functions. */ CREATE SCHEMA IF NOT EXISTS __msar; CREATE SCHEMA IF NOT EXISTS msar; -CREATE SCHEMA IF NOT EXISTS msar_views; ---------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------- @@ -128,19 +144,6 @@ END; $$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; -CREATE OR REPLACE FUNCTION -msar.get_mathesar_view_name(table_id oid) RETURNS text AS $$/* -Given a table OID, return the name of the special Mathesar view tracking it. - -Args: - table_id: The OID of the table whose associated view we want to name. -*/ -BEGIN - RETURN msar.get_fq_table_name('msar_views', format('mv%s', table_id)); -END; -$$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; - - ---------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------- -- ALTER TABLE FUNCTIONS @@ -309,7 +312,7 @@ $$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; ---------------------------------------------------------------------------------------------------- -- MATHESAR DROP FUNCTION -- --- Drop a table and its dependent view +-- Drop a table. ---------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------- @@ -317,7 +320,7 @@ $$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; CREATE OR REPLACE FUNCTION __msar.drop_table(name_ text, cascade_ boolean, if_exists boolean) RETURNS text AS $$/* -Drop a table. +Drop a table, returning the command executed. Args: name_: The qualified, quoted name of the table we will drop. @@ -344,7 +347,7 @@ $$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; CREATE OR REPLACE FUNCTION msar.drop_table(table_id oid, cascade_ boolean, if_exists boolean) RETURNS text AS $$/* -Drop a table, first dropping its dependent mathesar view. +Drop a table, returning the command executed. Args: table_id: The OID of the table to drop @@ -352,7 +355,6 @@ Args: if_exists_: Whether to ignore an error if the table doesn't exist */ BEGIN --- PERFORM msar.drop_mathesar_view(table_id); RETURN __msar.drop_table(__msar.get_table_name(table_id), cascade_, if_exists); END; $$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; @@ -360,7 +362,7 @@ $$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; CREATE OR REPLACE FUNCTION msar.drop_table(schema_ text, name_ text, cascade_ boolean, if_exists boolean) RETURNS text AS $$/* -Change the description of a table, returning command executed. +Drop a table, returning the command executed. Args: schema_: The schema of the table to drop. @@ -370,196 +372,7 @@ Args: */ DECLARE qualified_name text; BEGIN --- PERFORM msar.drop_mathesar_view(schema_, name_); qualified_name := msar.get_fq_table_name(schema_, name_); RETURN __msar.drop_table(qualified_name, cascade_, if_exists); END; $$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; - - ----------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------- --- MATHESAR VIEW FUNCTIONS --- --- Functions and triggers in this section are used to create a view that tracks any created or --- modified table, and also provide a convenient way to set up such a view for an already-existing --- table or drop such a view. ----------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------- --- --- CREATE OR REPLACE FUNCTION --- msar.create_mathesar_view(table_id oid) RETURNS text AS $$/* --- Create a view of named mv tracking the table with OID . --- --- Args: --- table_id: This is the OID of the table we want to track. --- --- */ --- DECLARE viewname text; --- DECLARE viewcols text; --- BEGIN --- viewname := msar.get_mathesar_view_name(table_id); --- SELECT string_agg(format('%s AS c%s', quote_ident(attname), attnum), ', ') --- FROM pg_attribute --- WHERE attrelid=table_id AND attnum>0 AND NOT attisdropped --- INTO viewcols; --- RETURN __msar.exec_ddl( --- 'CREATE OR REPLACE VIEW %s AS SELECT %s FROM %s', --- viewname, viewcols, __msar.get_table_name(table_id) --- ); --- END; --- $$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; --- --- CREATE OR REPLACE FUNCTION --- __msar.create_mathesar_view() RETURNS event_trigger AS $$/* --- This function should not be called directly. --- */ --- DECLARE ddl_command record; --- BEGIN --- FOR ddl_command IN SELECT * FROM pg_event_trigger_ddl_commands() --- LOOP --- IF ddl_command.object_type='table' AND upper(ddl_command.command_tag)<>'DROP TABLE' --- THEN --- PERFORM msar.create_mathesar_view(ddl_command.objid); --- END IF; --- END LOOP; --- END; --- $$ LANGUAGE plpgsql; --- --- DROP EVENT TRIGGER IF EXISTS create_mathesar_view; --- --- CREATE EVENT TRIGGER create_mathesar_view ON ddl_command_end --- EXECUTE FUNCTION __msar.create_mathesar_view(); --- --- --- CREATE OR REPLACE FUNCTION --- msar.drop_mathesar_view(table_id oid) RETURNS text AS $$/* --- Drop the Mathesar view tracking the given table. --- --- Args: --- table_id: This is the OID of the table being tracked by the view we'll drop. --- */ --- DECLARE viewname text; --- BEGIN --- viewname := msar.get_mathesar_view_name(table_id); --- RETURN __msar.exec_ddl('DROP VIEW IF EXISTS %s', viewname); --- END; --- $$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; --- --- --- CREATE OR REPLACE FUNCTION --- msar.drop_mathesar_view(schema_ text, table_name text) RETURNS text AS $$/* --- Drop the Mathesar view tracking the given table. --- --- Args: --- schema_: This is the schema of the table being tracked by the view we'll drop. --- table_name: This is the name of the table being tracked by the view we'll drop. --- */ --- DECLARE table_id oid; --- BEGIN --- table_id := msar.get_table_oid(schema_, table_name); --- RETURN msar.drop_mathesar_view(table_id); --- EXCEPTION WHEN undefined_table THEN --- RETURN 'NO SUCH TABLE'; --- END; --- $$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; - - -CREATE TYPE mathesar_types.joinable_tables AS ( - base integer, - target integer, - join_path jsonb, - fkey_path jsonb, - depth integer -); - - -CREATE OR REPLACE FUNCTION -msar.get_joinable_tables(max_depth integer) RETURNS SETOF mathesar_types.joinable_tables AS $$/* -This function returns a table of the form - - base | target | path --------+--------+--------------------------------- - | | json array of arrays of arrays - -The base and target are OIDs of a base table, and a target table that can be -joined by some combination of joins along single-column foreign key column -restrictions in either way. -*/ -WITH RECURSIVE symmetric_fkeys AS ( - SELECT - c.oid fkey_oid, - c.conrelid::INTEGER left_rel, - c.confrelid::INTEGER right_rel, - c.conkey[1]::INTEGER left_col, - c.confkey[1]::INTEGER right_col, - false reversed - FROM pg_constraint c - WHERE c.contype='f' and array_length(c.conkey, 1)=1 -UNION ALL - SELECT - c.oid fkey_oid, - c.confrelid::INTEGER left_rel, - c.conrelid::INTEGER right_rel, - c.confkey[1]::INTEGER left_col, - c.conkey[1]::INTEGER right_col, - true reversed - FROM pg_constraint c - WHERE c.contype='f' and array_length(c.conkey, 1)=1 -), - -search_fkey_graph(left_rel, right_rel, left_col, right_col, depth, join_path, fkey_path) AS ( - SELECT - sfk.left_rel, - sfk.right_rel, - sfk.left_col, - sfk.right_col, - 1, - jsonb_build_array( - jsonb_build_array( - jsonb_build_array(sfk.left_rel, sfk.left_col), - jsonb_build_array(sfk.right_rel, sfk.right_col) - ) - ), - jsonb_build_array(jsonb_build_array(sfk.fkey_oid, sfk.reversed)) - FROM symmetric_fkeys sfk -UNION ALL - SELECT - sfk.left_rel, - sfk.right_rel, - sfk.left_col, - sfk.right_col, - sg.depth + 1, - join_path || jsonb_build_array( - jsonb_build_array( - jsonb_build_array(sfk.left_rel, sfk.left_col), - jsonb_build_array(sfk.right_rel, sfk.right_col) - ) - ), - fkey_path || jsonb_build_array(jsonb_build_array(sfk.fkey_oid, sfk.reversed)) - FROM symmetric_fkeys sfk, search_fkey_graph sg - WHERE - sfk.left_rel=sg.right_rel - AND depth -1) != jsonb_build_array( - jsonb_build_array(sfk.right_rel, sfk.right_col), - jsonb_build_array(sfk.left_rel, sfk.left_col) - ) -), output_cte AS ( - SELECT - (join_path#>'{0, 0, 0}')::INTEGER base, - (join_path#>'{-1, -1, 0}')::INTEGER target, - join_path, - fkey_path, - depth - FROM search_fkey_graph -) -SELECT * FROM output_cte; -$$ LANGUAGE sql; - - -CREATE OR REPLACE FUNCTION -msar.get_joinable_tables(max_depth integer, table_id oid) RETURNS - SETOF mathesar_types.joinable_tables AS $$ - SELECT * FROM msar.get_joinable_tables(max_depth) WHERE base=table_id -$$ LANGUAGE sql; diff --git a/db/sql/1_msar_joinable_tables.sql b/db/sql/1_msar_joinable_tables.sql new file mode 100644 index 0000000000..959319810e --- /dev/null +++ b/db/sql/1_msar_joinable_tables.sql @@ -0,0 +1,114 @@ +/* +This script sets up a framework for determining which tables are joinable to a given table +automatically. + +A table is 'joinable' to another in this context if it can be reached by following a sequence of +foreign key links from the original table. +*/ + + +CREATE TYPE mathesar_types.joinable_tables AS ( + base integer, + target integer, + join_path jsonb, + fkey_path jsonb, + depth integer +); + + +CREATE OR REPLACE FUNCTION +msar.get_joinable_tables(max_depth integer) RETURNS SETOF mathesar_types.joinable_tables AS $$/* +This function returns a table of the form + + base | target | path +-------+--------+--------------------------------- + | | json array of arrays of arrays + +The base and target are OIDs of a base table, and a target table that can be +joined by some combination of joins along single-column foreign key column +restrictions in either way. +*/ +WITH RECURSIVE symmetric_fkeys AS ( + SELECT + c.oid fkey_oid, + c.conrelid::INTEGER left_rel, + c.confrelid::INTEGER right_rel, + c.conkey[1]::INTEGER left_col, + c.confkey[1]::INTEGER right_col, + false multiple_results, + false reversed + FROM pg_constraint c + WHERE c.contype='f' and array_length(c.conkey, 1)=1 +UNION ALL + SELECT + c.oid fkey_oid, + c.confrelid::INTEGER left_rel, + c.conrelid::INTEGER right_rel, + c.confkey[1]::INTEGER left_col, + c.conkey[1]::INTEGER right_col, + true multiple_results, + true reversed + FROM pg_constraint c + WHERE c.contype='f' and array_length(c.conkey, 1)=1 +), + +search_fkey_graph( + left_rel, right_rel, left_col, right_col, depth, join_path, fkey_path, multiple_results +) AS ( + SELECT + sfk.left_rel, + sfk.right_rel, + sfk.left_col, + sfk.right_col, + 1, + jsonb_build_array( + jsonb_build_array( + jsonb_build_array(sfk.left_rel, sfk.left_col), + jsonb_build_array(sfk.right_rel, sfk.right_col) + ) + ), + jsonb_build_array(jsonb_build_array(sfk.fkey_oid, sfk.reversed)), + sfk.multiple_results + FROM symmetric_fkeys sfk +UNION ALL + SELECT + sfk.left_rel, + sfk.right_rel, + sfk.left_col, + sfk.right_col, + sg.depth + 1, + join_path || jsonb_build_array( + jsonb_build_array( + jsonb_build_array(sfk.left_rel, sfk.left_col), + jsonb_build_array(sfk.right_rel, sfk.right_col) + ) + ), + fkey_path || jsonb_build_array(jsonb_build_array(sfk.fkey_oid, sfk.reversed)), + sg.multiple_results OR sfk.multiple_results + FROM symmetric_fkeys sfk, search_fkey_graph sg + WHERE + sfk.left_rel=sg.right_rel + AND depth -1) != jsonb_build_array( + jsonb_build_array(sfk.right_rel, sfk.right_col), + jsonb_build_array(sfk.left_rel, sfk.left_col) + ) +), output_cte AS ( + SELECT + (join_path#>'{0, 0, 0}')::INTEGER base, + (join_path#>'{-1, -1, 0}')::INTEGER target, + join_path, + fkey_path, + depth, + multiple_results + FROM search_fkey_graph +) +SELECT * FROM output_cte; +$$ LANGUAGE sql; + + +CREATE OR REPLACE FUNCTION +msar.get_joinable_tables(max_depth integer, table_id oid) RETURNS + SETOF mathesar_types.joinable_tables AS $$ + SELECT * FROM msar.get_joinable_tables(max_depth) WHERE base=table_id +$$ LANGUAGE sql; diff --git a/db/sql/2_msar_views.sql b/db/sql/2_msar_views.sql new file mode 100644 index 0000000000..ebff35ebfe --- /dev/null +++ b/db/sql/2_msar_views.sql @@ -0,0 +1,114 @@ +---------------------------------------------------------------------------------------------------- +---------------------------------------------------------------------------------------------------- +-- MATHESAR VIEW FUNCTIONS +-- +-- This file depends on `msar.sql` ! +-- +-- A Mathesar view is essentially a reflection of a user table, but with names changed for easy look +-- ups. +-- * The view name is derived algorithmically from the user table's OID using +-- `msar.get_mathesar_view_name`, giving the name `mv12345`, where 12345 is the table OID. +-- * The view's columns' names are derived algorithmically from the attnums of the columns in the +-- view, with a column having attnum 3 getting the name `c3`. +-- +-- Functions and triggers in this file are used to create a Mathesar view whenever a table is +-- created or in any way altered in the database (where the triggers are installed). They also +-- provide a convenient way to set up such a view for an already-existing table or drop +-- such a view. +-- +-- This file creates a schema `msar_views` where internal mathesar views will be stored. +---------------------------------------------------------------------------------------------------- +---------------------------------------------------------------------------------------------------- +CREATE SCHEMA IF NOT EXISTS msar_views; + + +CREATE OR REPLACE FUNCTION +msar.get_mathesar_view_name(table_id oid) RETURNS text AS $$/* +Given a table OID, return the name of the special Mathesar view tracking it. + +Args: + table_id: The OID of the table whose associated view we want to name. +*/ +BEGIN + RETURN msar.get_fq_table_name('msar_views', format('mv%s', table_id)); +END; +$$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; + + + +CREATE OR REPLACE FUNCTION +msar.create_mathesar_view(table_id oid) RETURNS text AS $$/* +Create a view of named mv tracking the table with OID . + +Args: + table_id: This is the OID of the table we want to track. + +*/ +DECLARE viewname text; +DECLARE viewcols text; +BEGIN + viewname := msar.get_mathesar_view_name(table_id); + SELECT string_agg(format('%s AS c%s', quote_ident(attname), attnum), ', ') + FROM pg_attribute + WHERE attrelid=table_id AND attnum>0 AND NOT attisdropped + INTO viewcols; + RETURN __msar.exec_ddl( + 'CREATE OR REPLACE VIEW %s AS SELECT %s FROM %s', + viewname, viewcols, __msar.get_table_name(table_id) + ); +END; +$$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; + +CREATE OR REPLACE FUNCTION +__msar.create_mathesar_view() RETURNS event_trigger AS $$/* +This function should not be called directly. +*/ +DECLARE ddl_command record; +BEGIN + FOR ddl_command IN SELECT * FROM pg_event_trigger_ddl_commands() + LOOP + IF ddl_command.object_type='table' AND upper(ddl_command.command_tag)<>'DROP TABLE' + THEN + PERFORM msar.create_mathesar_view(ddl_command.objid); + END IF; + END LOOP; +END; +$$ LANGUAGE plpgsql; + +DROP EVENT TRIGGER IF EXISTS create_mathesar_view; + +CREATE EVENT TRIGGER create_mathesar_view ON ddl_command_end + EXECUTE FUNCTION __msar.create_mathesar_view(); + + +CREATE OR REPLACE FUNCTION +msar.drop_mathesar_view(table_id oid) RETURNS text AS $$/* +Drop the Mathesar view tracking the given table. + +Args: + table_id: This is the OID of the table being tracked by the view we'll drop. +*/ +DECLARE viewname text; +BEGIN + viewname := msar.get_mathesar_view_name(table_id); + RETURN __msar.exec_ddl('DROP VIEW IF EXISTS %s', viewname); +END; +$$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; + + +CREATE OR REPLACE FUNCTION +msar.drop_mathesar_view(schema_ text, table_name text) RETURNS text AS $$/* +Drop the Mathesar view tracking the given table. + +Args: + schema_: This is the schema of the table being tracked by the view we'll drop. + table_name: This is the name of the table being tracked by the view we'll drop. +*/ +DECLARE table_id oid; +BEGIN + table_id := msar.get_table_oid(schema_, table_name); + RETURN msar.drop_mathesar_view(table_id); +EXCEPTION WHEN undefined_table THEN + RETURN 'NO SUCH TABLE'; +END; +$$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; diff --git a/db/sql/install.py b/db/sql/install.py new file mode 100644 index 0000000000..70ccd73916 --- /dev/null +++ b/db/sql/install.py @@ -0,0 +1,11 @@ +import os +import psycopg +from db.connection import load_file_with_engine + +MSAR_SQL = os.path.abspath('0_msar.sql') + + +def install(engine): + """Install SQL pieces using the given engine.""" + with open(MSAR_SQL) as file_handle: + load_file_with_engine(engine, file_handle) From bfb1429797155c264edb819183df6515d717920c Mon Sep 17 00:00:00 2001 From: smruthi49 Date: Wed, 22 Mar 2023 07:09:02 +0530 Subject: [PATCH 120/553] add newline at end of file --- demo/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/demo/__init__.py b/demo/__init__.py index dd34c736fd..50e072800f 100644 --- a/demo/__init__.py +++ b/demo/__init__.py @@ -1 +1 @@ -default_app_config = 'demo.apps.DemoConfig' \ No newline at end of file +default_app_config = 'demo.apps.DemoConfig' From 1afef6c533b1fb84a0cd9db75b816852c903002e Mon Sep 17 00:00:00 2001 From: Brent Moran Date: Wed, 22 Mar 2023 10:18:55 +0800 Subject: [PATCH 121/553] tidy up linting issues --- db/install.py | 1 - db/sql/install.py | 1 - 2 files changed, 2 deletions(-) diff --git a/db/install.py b/db/install.py index 9a65997726..64c7a50a9a 100644 --- a/db/install.py +++ b/db/install.py @@ -1,4 +1,3 @@ -import os from sqlalchemy import text from sqlalchemy.exc import OperationalError diff --git a/db/sql/install.py b/db/sql/install.py index 70ccd73916..2ec3ebb26f 100644 --- a/db/sql/install.py +++ b/db/sql/install.py @@ -1,5 +1,4 @@ import os -import psycopg from db.connection import load_file_with_engine MSAR_SQL = os.path.abspath('0_msar.sql') From 2bb1bf75067da810e39e7e1ed7f827acd4dc0690 Mon Sep 17 00:00:00 2001 From: Brent Moran Date: Wed, 22 Mar 2023 10:33:03 +0800 Subject: [PATCH 122/553] use extracted sql installer in tests --- conftest.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/conftest.py b/conftest.py index 90592d4972..c33c8167f6 100644 --- a/conftest.py +++ b/conftest.py @@ -12,14 +12,13 @@ from db.engine import add_custom_types_to_ischema_names, create_engine as sa_create_engine from db.types import install +from db.sql import install as sql_install from db.schemas.operations.drop import drop_schema as drop_sa_schema from db.schemas.operations.create import create_schema as create_sa_schema from db.schemas.utils import get_schema_oid_from_name, get_schema_name_from_oid from fixtures.utils import create_scoped_fixtures -MSAR_FILE = os.path.join('db', 'sql', '0_msar.sql') - def engine_cache(request): import logging @@ -76,8 +75,7 @@ def __create_db(db_name): created_dbs.add(db_name) # Our default testing database has our types and functions preinstalled. install.install_mathesar_on_database(engine) - with open(MSAR_FILE) as f, engine.begin() as conn: - conn.execute(text(f.read())) + sql_install.install(engine) engine.dispose() return db_name yield __create_db From 1e9395b81506afea0470c0f38eff190fa60c83c7 Mon Sep 17 00:00:00 2001 From: Brent Moran Date: Wed, 22 Mar 2023 10:54:48 +0800 Subject: [PATCH 123/553] reorganize and add documentation for joinable tables --- db/sql/1_msar_joinable_tables.sql | 39 ++++++++++++++++++++++++------- 1 file changed, 31 insertions(+), 8 deletions(-) diff --git a/db/sql/1_msar_joinable_tables.sql b/db/sql/1_msar_joinable_tables.sql index 959319810e..96e255a4fd 100644 --- a/db/sql/1_msar_joinable_tables.sql +++ b/db/sql/1_msar_joinable_tables.sql @@ -4,25 +4,48 @@ automatically. A table is 'joinable' to another in this context if it can be reached by following a sequence of foreign key links from the original table. + +This is NOT YET USED in the python layer. + +A Join Path is an array of arrays of arrays: + +[ + [[L_oid0, L_attnum0], [R_oid0, R_attnum0]], + [[L_oid1, L_attnum1], [R_oid1, R_attnum1]], + [[L_oid2, L_attnum2], [R_oid2, R_attnum2]], + ... +] + +Here, [L_oidN, L_attnumN] represents the left column of a join, and [R_oidN, R_attnumN] the right. + +A Foreign Key path gives the same information in a different form: +[ + [constraint_id0, reversed], + [constraint_id1, reversed], +] + +In this form, `constraint_idN` is a foreign key constraint, and `reversed` is a boolean giving +whether to travel from referrer to referant (when False) or from referant to referrer (when True). */ CREATE TYPE mathesar_types.joinable_tables AS ( - base integer, - target integer, - join_path jsonb, + base integer, -- The OID of the table from which the paths start + target integer, -- The OID of the table where the paths end + join_path jsonb, -- A JSONB array of arrays of arrays fkey_path jsonb, - depth integer + depth integer, + multiple_results boolean ); CREATE OR REPLACE FUNCTION msar.get_joinable_tables(max_depth integer) RETURNS SETOF mathesar_types.joinable_tables AS $$/* -This function returns a table of the form +This function returns a table of mathesar_types.joinable_tables objects, giving paths to various +joinable tables. - base | target | path --------+--------+--------------------------------- - | | json array of arrays of arrays +Args: + max_depth: This controls how far to search for joinable tables. The base and target are OIDs of a base table, and a target table that can be joined by some combination of joins along single-column foreign key column From f34e479c336302b35b3f244ea564074a806cdd0a Mon Sep 17 00:00:00 2001 From: Brent Moran Date: Wed, 22 Mar 2023 11:01:10 +0800 Subject: [PATCH 124/553] fix path to SQL install script --- db/sql/install.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/db/sql/install.py b/db/sql/install.py index 2ec3ebb26f..2a7d60d519 100644 --- a/db/sql/install.py +++ b/db/sql/install.py @@ -1,7 +1,8 @@ import os from db.connection import load_file_with_engine -MSAR_SQL = os.path.abspath('0_msar.sql') +FILE_DIR = os.path.abspath(os.path.dirname(__file__)) +MSAR_SQL = os.path.join(FILE_DIR, '0_msar.sql') def install(engine): From 6970f8169c0c9bbb8686bfcde0fb7d7c8797c74d Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Wed, 22 Mar 2023 14:08:41 +0200 Subject: [PATCH 125/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index fc1fe1cc2f..97c1fd64f6 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -424,3 +424,5 @@ Once this is installed we will install from requirements.txt ```sh pip install -r requirements.txt ``` + + From f0c6e9fb111be218e5e52e45835706ffe22e1af3 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Wed, 22 Mar 2023 14:10:32 +0200 Subject: [PATCH 126/553] Update centos.md --- docs/docs/installation/centos.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/installation/centos.md b/docs/docs/installation/centos.md index e30e3e81b2..63f0c67d40 100644 --- a/docs/docs/installation/centos.md +++ b/docs/docs/installation/centos.md @@ -23,7 +23,7 @@ yum update && yum upgrade ### Step two Clean the system of any potential pre-installed Docker packages. ```sh -sudo yum remove docker docker-engien docker.io +sudo yum remove docker docker-engine docker.io ``` ### Step three: Installing Docker We wil now install Docker on this system. From 9e0928f947b348dfa19a169e7950b88163f63b0f Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Wed, 22 Mar 2023 14:10:47 +0200 Subject: [PATCH 127/553] Update ubuntu.md --- docs/docs/installation/ubuntu.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/installation/ubuntu.md b/docs/docs/installation/ubuntu.md index e86be17c43..6563993b83 100644 --- a/docs/docs/installation/ubuntu.md +++ b/docs/docs/installation/ubuntu.md @@ -23,7 +23,7 @@ apt update && apt upgrade ### Step two Clean the system of any potential pre-installed Docker packages. ```sh -apt-get remove docker docker-engien docker.io +apt-get remove docker docker-engine docker.io ``` ### Step three: Installing Docker We wil now install Docker on this system. From 75b1318e3351d669662c67e165f1ed1205e5ef26 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Wed, 22 Mar 2023 14:32:44 +0200 Subject: [PATCH 128/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index 97c1fd64f6..746475530c 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -17,7 +17,7 @@ Installation should only take a few minutes. - You need to be a user with root access to the machine you're trying to install Mathesar on. ## Preparing our server. - Prerequisites - - Ubntu 22 with at least `60 GB` disk space and `4GB` of RAM. + - Ubuntu 22 with at least `60 GB` disk space and `4GB` of RAM. - Root privileges - Domain name, or subdomain, for your installation. We will use `mathesar.example.com` as the domain for our website - Python 3.9 From 0188de99995e2740e58f30d304480d02be537eee Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Thu, 23 Mar 2023 11:03:07 +0200 Subject: [PATCH 129/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index 746475530c..4b7e5c44f4 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -8,6 +8,7 @@ Installation should only take a few minutes. - ###### Database - Install PostgreSQL - Create Database, Database user + - Create .env file for Django - ###### Web Server - Install Nginx webserver - Install Letsencrypt and Gurnicorn3 @@ -127,6 +128,18 @@ CREATE DATABASE yourdbname; CREATE USER youruser WITH ENCRYPTED PASSWORD 'yourpass'; GRANT ALL PRIVILEGES ON DATABASE yourdbname TO youruser; ``` +#### Create .env file for Django + +` +ALLOWED_HOSTS: "*" + DEBUG: "True" + MODE: "PRODUCTION" + SECRET_KEY: "{{ SECRET_KEY }}" + DJANGO_DATABASE_KEY: "default" + DJANGO_DATABASE_URL: "postgres://{{ DATABASE_USER }}:{{ DATABASE_PASSWORD }}@127.0.0.1:5432/{{ DJANGO_DATABASE_NAME }}" + MATHESAR_DATABASES: "({{ user_database_key }}|postgresql://{{ DATABASE_USER }}:{{ DATABASE_PASSWORD }}@127.0.0.1:5432/{{ MATHESAR_DATABASE_NAME }})" + DJANGO_SUPERUSER_PASSWORD: "{{ DJANGO_SUPERUSER_PASSWORD }}" + ` ### Step Three: Install Nginx with Letsencrypt and Gurnicorn3 From 6e4c8101b40b7eab2d2a74a71291dd6a04247881 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Thu, 23 Mar 2023 11:03:50 +0200 Subject: [PATCH 130/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index 4b7e5c44f4..d85effb09d 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -130,7 +130,7 @@ GRANT ALL PRIVILEGES ON DATABASE yourdbname TO youruser; ``` #### Create .env file for Django -` +```sh ALLOWED_HOSTS: "*" DEBUG: "True" MODE: "PRODUCTION" @@ -139,7 +139,7 @@ ALLOWED_HOSTS: "*" DJANGO_DATABASE_URL: "postgres://{{ DATABASE_USER }}:{{ DATABASE_PASSWORD }}@127.0.0.1:5432/{{ DJANGO_DATABASE_NAME }}" MATHESAR_DATABASES: "({{ user_database_key }}|postgresql://{{ DATABASE_USER }}:{{ DATABASE_PASSWORD }}@127.0.0.1:5432/{{ MATHESAR_DATABASE_NAME }})" DJANGO_SUPERUSER_PASSWORD: "{{ DJANGO_SUPERUSER_PASSWORD }}" - ` +``` ### Step Three: Install Nginx with Letsencrypt and Gurnicorn3 From d4f281d5564302752fa1a2593321524ab081577d Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Thu, 23 Mar 2023 12:49:32 +0200 Subject: [PATCH 131/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 27 ++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index d85effb09d..57687664bd 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -130,15 +130,28 @@ GRANT ALL PRIVILEGES ON DATABASE yourdbname TO youruser; ``` #### Create .env file for Django +From the previous step, you will need your to fill in the following variables for Django: +` +DATABASE_USER +DATABASE_PASSWORD +DJANGO_DATABASE_NAME +DJANGO_SUPERUSER_PASSWORD +` +As well as these for Mathesar +` +DATABASE_USER +DATABASE_PASSWORD +MATHESAR_DATABASE_NAME + ```sh ALLOWED_HOSTS: "*" - DEBUG: "True" - MODE: "PRODUCTION" - SECRET_KEY: "{{ SECRET_KEY }}" - DJANGO_DATABASE_KEY: "default" - DJANGO_DATABASE_URL: "postgres://{{ DATABASE_USER }}:{{ DATABASE_PASSWORD }}@127.0.0.1:5432/{{ DJANGO_DATABASE_NAME }}" - MATHESAR_DATABASES: "({{ user_database_key }}|postgresql://{{ DATABASE_USER }}:{{ DATABASE_PASSWORD }}@127.0.0.1:5432/{{ MATHESAR_DATABASE_NAME }})" - DJANGO_SUPERUSER_PASSWORD: "{{ DJANGO_SUPERUSER_PASSWORD }}" +DEBUG: "True" +MODE: "PRODUCTION" +SECRET_KEY: "{{ SECRET_KEY }}" +DJANGO_DATABASE_KEY: "default" +DJANGO_DATABASE_URL: "postgres://{{ DATABASE_USER }}:{{ DATABASE_PASSWORD }}@127.0.0.1:5432/{{ DJANGO_DATABASE_NAME }}" +MATHESAR_DATABASES: "({{ user_database_key }}|postgresql://{{ DATABASE_USER }}:{{ DATABASE_PASSWORD }}@127.0.0.1:5432/{{ MATHESAR_DATABASE_NAME }})" +DJANGO_SUPERUSER_PASSWORD: "{{ DJANGO_SUPERUSER_PASSWORD }}" ``` From b2b5ae59be9e1d2d33746535408c56d6ec3cd79d Mon Sep 17 00:00:00 2001 From: Brent Moran Date: Thu, 23 Mar 2023 23:07:02 +0800 Subject: [PATCH 132/553] add column dropping functions --- db/sql/0_msar.sql | 62 +++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 55 insertions(+), 7 deletions(-) diff --git a/db/sql/0_msar.sql b/db/sql/0_msar.sql index 1a2f593645..4d2e1c61b1 100644 --- a/db/sql/0_msar.sql +++ b/db/sql/0_msar.sql @@ -130,20 +130,29 @@ $$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; CREATE OR REPLACE FUNCTION msar.get_column_name(table_id oid, col_attnum integer) RETURNS text AS $$/* -Return the name for a given table, qualified or quoted as appropriate. - -In cases where the table is already included in the search path, the returned name will not be -fully-qualified. +Return the name for a given column in a given table. Args: - table_id: The OID of the table. + table_id: The OID of the table. + column_attnum: The attnum of the column in the table. +*/ +BEGIN + RETURN quote_ident(attname::text) FROM pg_attribute WHERE attrelid=table_id AND attnum=col_attnum; +END; +$$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; + + +CREATE OR REPLACE FUNCTION +msar.is_pkey_col(table_id oid, col_attnum integer) RETURNS boolean AS $$/* +Return whether the given column is in the primary key of the given table. */ BEGIN - RETURN attname::text FROM pg_attribute WHERE attrelid=table_id AND attnum=col_attnum; + RETURN ARRAY[col_attnum::smallint] <@ conkey FROM pg_constraint WHERE conrelid=table_id; END; $$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; + ---------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------- -- ALTER TABLE FUNCTIONS @@ -308,9 +317,48 @@ END; $$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; +-- Drop columns from table ------------------------------------------------------------------------- + +CREATE OR REPLACE FUNCTION +__msar.drop_columns(table_name text, columns variadic text[]) RETURNS text AS $$/* +Drop the given columns from the given table. + +Args: + table_name: fully-qualified, quoted table name. + columns: The column names to be dropped, quoted. +*/ +DECLARE column_drops text; +BEGIN + SELECT string_agg(format('DROP COLUMN %s', col), ', ') + FROM unnest(columns) as col + INTO column_drops; + RETURN __msar.exec_ddl('ALTER TABLE %s %s', table_name, column_drops); +END; +$$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; + + +CREATE OR REPLACE FUNCTION +msar.drop_columns(table_id oid, attnums variadic integer[]) RETURNS text AS $$/* +Drop the given columns from the given table. + +Args: + table_id: OID of the table whose columns we'll drop. + attnums: The attnums of the columns to drop. +*/ +DECLARE columns text[]; +BEGIN + SELECT array_agg(quote_ident(attname)) + FROM pg_attribute + WHERE attrelid=table_id AND ARRAY[attnum::integer] <@ attnums + INTO columns; + RETURN __msar.drop_columns(__msar.get_table_name(table_id), variadic columns); +END; +$$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; + + ---------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------- --- MATHESAR DROP FUNCTION +-- MATHESAR DROP TABLE FUNCTIONS -- -- Drop a table. ---------------------------------------------------------------------------------------------------- From 79e4651e19f4c11247fbec382d34937516948d68 Mon Sep 17 00:00:00 2001 From: Brent Moran Date: Fri, 24 Mar 2023 12:41:59 +0800 Subject: [PATCH 133/553] add public drop_column SQL functions --- db/sql/0_msar.sql | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/db/sql/0_msar.sql b/db/sql/0_msar.sql index 4d2e1c61b1..feb1ffd8ee 100644 --- a/db/sql/0_msar.sql +++ b/db/sql/0_msar.sql @@ -330,7 +330,7 @@ Args: DECLARE column_drops text; BEGIN SELECT string_agg(format('DROP COLUMN %s', col), ', ') - FROM unnest(columns) as col + FROM unnest(columns) AS col INTO column_drops; RETURN __msar.exec_ddl('ALTER TABLE %s %s', table_name, column_drops); END; @@ -356,6 +356,41 @@ END; $$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; +CREATE OR REPLACE FUNCTION +msar.drop_columns(table_id oid, attnums variadic integer[]) RETURNS text AS $$/* +Drop the given columns from the given table. + +Args: + table_id: OID of the table whose columns we'll drop. + attnums: The attnums of the columns to drop. +*/ +DECLARE columns text[]; +BEGIN + SELECT array_agg(quote_ident(attname)) + FROM pg_attribute + WHERE attrelid=table_id AND ARRAY[attnum::integer] <@ attnums + INTO columns; + RETURN __msar.drop_columns(__msar.get_table_name(table_id), variadic columns); +END; +$$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; + + +CREATE OR REPLACE FUNCTION +msar.drop_columns(schema_ text, table_ text, columns variadic text[]) RETURNS text AS $$/* +Drop the given columns from the given table. + +Args: + table_id: OID of the table whose columns we'll drop. + attnums: The attnums of the columns to drop. +*/ +DECLARE prepared_columns text[]; +BEGIN + SELECT array_agg(quote_ident(col)) FROM unnest(columns) AS col INTO prepared_columns; + RETURN __msar.drop_columns(msar.get_fq_table_name(schema_, table_), variadic prepared_columns); +END; +$$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; + + ---------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------- -- MATHESAR DROP TABLE FUNCTIONS From 37038b8affda46442d9ba51575f2df571f61c212 Mon Sep 17 00:00:00 2001 From: Brent Moran Date: Fri, 24 Mar 2023 12:50:54 +0800 Subject: [PATCH 134/553] add python single drop wrapper --- db/columns/operations/drop.py | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/db/columns/operations/drop.py b/db/columns/operations/drop.py index 1bb41875c6..6ff39a5181 100644 --- a/db/columns/operations/drop.py +++ b/db/columns/operations/drop.py @@ -1,18 +1,18 @@ -from alembic.migration import MigrationContext -from alembic.operations import Operations - -from db.columns.operations.select import get_column_name_from_attnum -from db.tables.operations.select import reflect_table_from_oid -from db.metadata import get_empty_metadata +from db import connection as db_conn def drop_column(table_oid, column_attnum, engine): - # TODO reuse metadata - metadata = get_empty_metadata() - table = reflect_table_from_oid(table_oid, engine, metadata=metadata) - column_name = get_column_name_from_attnum(table_oid, column_attnum, engine, metadata=metadata) - column = table.columns[column_name] - with engine.begin() as conn: - ctx = MigrationContext.configure(conn) - op = Operations(ctx) - op.drop_column(table.name, column.name, schema=table.schema) + """ + Drop the given columns from the given table. + + Args: + table_oid: OID of the table whose columns we'll drop. + column_attnum: The attnums of the columns to drop. + engine: SQLAlchemy engine object for connecting. + + Returns: + Returns a string giving the command that was run. + """ + return db_conn.execute_msar_func_with_engine( + engine, 'drop_columns', table_oid, column_attnum + ).fetchone()[0] From ec843591167d8dd37f32a9d297ce9780daf9c436 Mon Sep 17 00:00:00 2001 From: Brent Moran Date: Fri, 24 Mar 2023 12:51:21 +0800 Subject: [PATCH 135/553] add batch column drop, fix bugs --- db/columns/operations/alter.py | 41 +++++++++++++++++++++------------- db/connection.py | 4 ++-- db/tables/operations/alter.py | 8 ++++++- 3 files changed, 35 insertions(+), 18 deletions(-) diff --git a/db/columns/operations/alter.py b/db/columns/operations/alter.py index a35f381cb0..3cfed061a7 100644 --- a/db/columns/operations/alter.py +++ b/db/columns/operations/alter.py @@ -4,6 +4,7 @@ from sqlalchemy.exc import DataError, InternalError, ProgrammingError from psycopg2.errors import InvalidTextRepresentation, InvalidParameterValue, StringDataRightTruncation, RaiseException, SyntaxError +from db import connection as db_conn from db.columns.defaults import NAME, NULLABLE from db.columns.exceptions import InvalidDefaultError, InvalidTypeError, InvalidTypeOptionError from db.columns.operations.select import ( @@ -283,21 +284,29 @@ def _batch_alter_table_rename_columns(table_oid, column_data_list, connection, e def batch_alter_table_drop_columns(table_oid, column_data_list, connection, engine): - table = reflect_table_from_oid( - table_oid, - engine, - connection_to_use=connection, - # TODO reuse metadata - metadata=get_empty_metadata(), - ) - ctx = MigrationContext.configure(connection) - op = Operations(ctx) - with op.batch_alter_table(table.name, schema=table.schema) as batch_op: - for column_data in column_data_list: - column_attnum = column_data.get('attnum') - if column_attnum is not None and column_data.get('delete') is not None: - name = get_column_name_from_attnum(table_oid, column_attnum, engine=engine, metadata=get_empty_metadata(), connection_to_use=connection) - batch_op.drop_column(name) + """ + Drop the given columns from the given table. + + Args: + table_oid: OID of the table whose columns we'll drop. + column_data_list: The attnums of the columns to drop. + + Returns: + A string of the command that was executed. + """ + columns_to_drop = [ + int(col['attnum']) for col in column_data_list + if col.get('attnum') is not None and col.get('delete') is not None + ] + + if connection is not None and columns_to_drop: + return db_conn.execute_msar_func_with_psycopg2_conn( + connection, 'drop_columns', int(table_oid), *columns_to_drop + ) + elif columns_to_drop: + return db_conn.execute_msar_func_with_engine( + engine, 'drop_columns', int(table_oid), *columns_to_drop + ) def batch_update_columns(table_oid, engine, column_data_list): @@ -308,6 +317,8 @@ def batch_update_columns(table_oid, engine, column_data_list): metadata=get_empty_metadata(), ) _validate_columns_for_batch_update(table, column_data_list) + print(type(table_oid)) + print(column_data_list) with engine.begin() as conn: _batch_update_column_types(table_oid, column_data_list, conn, engine) _batch_alter_table_rename_columns(table_oid, column_data_list, conn, engine) diff --git a/db/connection.py b/db/connection.py index 9bd8604a75..2b546256d3 100644 --- a/db/connection.py +++ b/db/connection.py @@ -33,8 +33,8 @@ def execute_msar_func_with_psycopg2_conn(conn, func_name, *args): func_name: The unqualified msar function name (danger; not sanitized) *args: The list of parameters to pass """ - args_str = "', '".join(args) - args_str = f"'{args_str}'" + args_str = ", ".join([str(arg) for arg in args]) + args_str = f"{args_str}" stmt = text(f"SELECT msar.{func_name}({args_str})") # Returns a cursor return conn.execute(stmt) diff --git a/db/tables/operations/alter.py b/db/tables/operations/alter.py index 55678f57cc..7ecb160163 100644 --- a/db/tables/operations/alter.py +++ b/db/tables/operations/alter.py @@ -66,8 +66,14 @@ def update_pk_sequence_to_latest(engine, table, connection=None): name = table.name column = table.c[constants.ID].name if connection is not None: + # The quote wrangling here is temporary; due to SQLAlchemy's query + # builder. db_conn.execute_msar_func_with_psycopg2_conn( - connection, 'update_pk_sequence_to_latest', schema, name, column + connection, + 'update_pk_sequence_to_latest', + f"'{schema}'", + f"'{name}'", + f"'{column}'", ).fetchone()[0] else: db_conn.execute_msar_func_with_engine( From 2ba8da342cfec86f1739b2ff03187f3e64ab680d Mon Sep 17 00:00:00 2001 From: Brent Moran Date: Fri, 24 Mar 2023 12:53:05 +0800 Subject: [PATCH 136/553] tidy up column dropping module with docstring --- db/columns/operations/drop.py | 1 + 1 file changed, 1 insertion(+) diff --git a/db/columns/operations/drop.py b/db/columns/operations/drop.py index 6ff39a5181..8e2910bb45 100644 --- a/db/columns/operations/drop.py +++ b/db/columns/operations/drop.py @@ -1,3 +1,4 @@ +"""The function in this module wraps SQL functions that drop columns.""" from db import connection as db_conn From 2a6f36b517132f8be71bbea9c30f30be2250379d Mon Sep 17 00:00:00 2001 From: Brent Moran Date: Fri, 24 Mar 2023 15:12:14 +0800 Subject: [PATCH 137/553] remove duplicate function, add cast function name getter --- db/sql/0_msar.sql | 50 +++++++++++++++++++++++-------------- db/types/operations/cast.py | 1 + 2 files changed, 32 insertions(+), 19 deletions(-) diff --git a/db/sql/0_msar.sql b/db/sql/0_msar.sql index feb1ffd8ee..8cc99b34c0 100644 --- a/db/sql/0_msar.sql +++ b/db/sql/0_msar.sql @@ -152,6 +152,29 @@ END; $$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; +CREATE OR REPLACE FUNCTION +msar.get_cast_function_name(target_type regtype) RETURNS text AS $$/* +Return a string giving the appropriate name of the casting function for the target_type. + +Args: + target_type: This should be a type that exists. +*/ +DECLARE target_type_prepped text; +BEGIN + WITH unqualifier AS ( + SELECT x[array_upper(x, 1)] unqualified_type + FROM regexp_split_to_array(target_type::text, '\.') x + ), unspacer AS( + SELECT replace(unqualified_type, ' ', '_') unspaced_type + FROM unqualifier + ) + SELECT replace(unspaced_type, '"', '_double_quote_') + FROM unspacer + INTO target_type_prepped; + RETURN format('mathesar_types.cast_to_%s', target_type_prepped); +END; +$$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; + ---------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------- @@ -260,6 +283,14 @@ $$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; -- Alter Table: LEFT IN PYTHON (for now) ----------------------------------------------------------- +---------------------------------------------------------------------------------------------------- +---------------------------------------------------------------------------------------------------- +-- ALTER TABLE FUNCTIONS: Column operations +-- +-- Functions in this section should always involve 'ALTER TABLE', and one or more columns +---------------------------------------------------------------------------------------------------- +---------------------------------------------------------------------------------------------------- + -- Update table primary key sequence to latest ----------------------------------------------------- CREATE OR REPLACE FUNCTION @@ -356,25 +387,6 @@ END; $$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; -CREATE OR REPLACE FUNCTION -msar.drop_columns(table_id oid, attnums variadic integer[]) RETURNS text AS $$/* -Drop the given columns from the given table. - -Args: - table_id: OID of the table whose columns we'll drop. - attnums: The attnums of the columns to drop. -*/ -DECLARE columns text[]; -BEGIN - SELECT array_agg(quote_ident(attname)) - FROM pg_attribute - WHERE attrelid=table_id AND ARRAY[attnum::integer] <@ attnums - INTO columns; - RETURN __msar.drop_columns(__msar.get_table_name(table_id), variadic columns); -END; -$$ LANGUAGE plpgsql RETURNS NULL ON NULL INPUT; - - CREATE OR REPLACE FUNCTION msar.drop_columns(schema_ text, table_ text, columns variadic text[]) RETURNS text AS $$/* Drop the given columns from the given table. diff --git a/db/types/operations/cast.py b/db/types/operations/cast.py index 17a5dced27..039dcc6171 100644 --- a/db/types/operations/cast.py +++ b/db/types/operations/cast.py @@ -240,6 +240,7 @@ def assemble_function_creation_sql(argument_type, target_type, function_body): """ +# TODO Replace with SQL version (msar.get_cast_function_name) when refactoring. def get_cast_function_name(target_type): """ Some casting functions change postgres config parameters for the From acc8489e10179953e9608b2e3b41533aece5d89d Mon Sep 17 00:00:00 2001 From: Brent Moran Date: Fri, 24 Mar 2023 15:26:20 +0800 Subject: [PATCH 138/553] remove extraneous print statements --- db/columns/operations/alter.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/db/columns/operations/alter.py b/db/columns/operations/alter.py index 3cfed061a7..fade595b37 100644 --- a/db/columns/operations/alter.py +++ b/db/columns/operations/alter.py @@ -317,8 +317,6 @@ def batch_update_columns(table_oid, engine, column_data_list): metadata=get_empty_metadata(), ) _validate_columns_for_batch_update(table, column_data_list) - print(type(table_oid)) - print(column_data_list) with engine.begin() as conn: _batch_update_column_types(table_oid, column_data_list, conn, engine) _batch_alter_table_rename_columns(table_oid, column_data_list, conn, engine) From 7b42b8b51bdd39c0f7435cfde23b46e632fde83b Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Fri, 24 Mar 2023 11:22:40 +0200 Subject: [PATCH 139/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index 57687664bd..2a69f10f5e 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -115,7 +115,7 @@ Now we can install PostGreSQL 13 on the system. ```sh apt install postgresql-13 postgresql-client-13 ``` -#### Create Database, Database user +#### Mathesar: Create Database, Database user Before we start, we first need to secure our database as the root user's password is not set. ```sh sudo su - postgres @@ -128,6 +128,14 @@ CREATE DATABASE yourdbname; CREATE USER youruser WITH ENCRYPTED PASSWORD 'yourpass'; GRANT ALL PRIVILEGES ON DATABASE yourdbname TO youruser; ``` +### Django: Create Database + +Next we have to create a database for our Django app. This database will use the same database user & password as the Mathesar database. So once we create the database, we can simply add the same user to it. +```sh +sudo -u postgres psql #if you are not already in psql prompt +CREATE DATABASE djangodb; +GRANT ALL PRIVILEGES ON DATABASE djangodb TO youruser; +``` #### Create .env file for Django From the previous step, you will need your to fill in the following variables for Django: From fd8413f06e6ff4f8ec4ae250dc314a647420e63a Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Fri, 24 Mar 2023 11:30:46 +0200 Subject: [PATCH 140/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index 2a69f10f5e..7885e8af74 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -161,7 +161,7 @@ DJANGO_DATABASE_URL: "postgres://{{ DATABASE_USER }}:{{ DATABASE_PASSWORD }}@127 MATHESAR_DATABASES: "({{ user_database_key }}|postgresql://{{ DATABASE_USER }}:{{ DATABASE_PASSWORD }}@127.0.0.1:5432/{{ MATHESAR_DATABASE_NAME }})" DJANGO_SUPERUSER_PASSWORD: "{{ DJANGO_SUPERUSER_PASSWORD }}" ``` - +This file can be placed in /var/www/ ### Step Three: Install Nginx with Letsencrypt and Gurnicorn3 We will start off by installing Nginx on the system. This will already be in the Debian repository so simply run the install command. From b15daa728f54f32af32b50ad92688b0cb0456988 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Fri, 24 Mar 2023 11:58:21 +0200 Subject: [PATCH 141/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index 7885e8af74..16afb24cff 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -458,5 +458,13 @@ Once this is installed we will install from requirements.txt ```sh pip install -r requirements.txt ``` +We will call the Django Settings, and then apply the migration: +```sh + +``` +Next we will activate our virtual environment with the following command: +```sh +. /opt/virtualenvs/mathesar/bin/activate +``` From f8a30d18fb1c7207d63a7ed86e6ade453a53c8e1 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Fri, 24 Mar 2023 13:54:18 +0200 Subject: [PATCH 142/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 37 ++++++++++--------------- 1 file changed, 14 insertions(+), 23 deletions(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index 16afb24cff..d3204c65ff 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -140,28 +140,16 @@ GRANT ALL PRIVILEGES ON DATABASE djangodb TO youruser; From the previous step, you will need your to fill in the following variables for Django: ` -DATABASE_USER -DATABASE_PASSWORD -DJANGO_DATABASE_NAME -DJANGO_SUPERUSER_PASSWORD -` -As well as these for Mathesar -` -DATABASE_USER -DATABASE_PASSWORD -MATHESAR_DATABASE_NAME +You can generate the secret key here: https://djecrety.ir/cat /v ```sh ALLOWED_HOSTS: "*" -DEBUG: "True" -MODE: "PRODUCTION" -SECRET_KEY: "{{ SECRET_KEY }}" -DJANGO_DATABASE_KEY: "default" -DJANGO_DATABASE_URL: "postgres://{{ DATABASE_USER }}:{{ DATABASE_PASSWORD }}@127.0.0.1:5432/{{ DJANGO_DATABASE_NAME }}" -MATHESAR_DATABASES: "({{ user_database_key }}|postgresql://{{ DATABASE_USER }}:{{ DATABASE_PASSWORD }}@127.0.0.1:5432/{{ MATHESAR_DATABASE_NAME }})" -DJANGO_SUPERUSER_PASSWORD: "{{ DJANGO_SUPERUSER_PASSWORD }}" +SECRET_KEY= +DJANGO_DATABASE_KEY=default +DJANGO_DATABASE_URL=postgres://{{ DATABASE_USER }}:{{ DATABASE_PASSWORD }}@127.0.0.1:5432/{{ DJANGO_DATABASE_NAME }}" +MATHESAR_DATABASES=(mathesar_tables|postgresql://{{ DATABASE_USER }}:{{ DATABASE_PASSWORD }}@127.0.0.1:5432/{{ MATHESAR_DATABASE_NAME }}) ``` -This file can be placed in /var/www/ +This file can be placed in /var/www/mathesar.examplecom/mathesar ### Step Three: Install Nginx with Letsencrypt and Gurnicorn3 We will start off by installing Nginx on the system. This will already be in the Debian repository so simply run the install command. @@ -457,14 +445,17 @@ git clone https://github.com/centerofci/mathesar.git Once this is installed we will install from requirements.txt ```sh pip install -r requirements.txt -``` -We will call the Django Settings, and then apply the migration: -```sh - - ``` Next we will activate our virtual environment with the following command: ```sh . /opt/virtualenvs/mathesar/bin/activate ``` +We will call the Django Settings, and then apply the migration: +```sh +$(sudo cat /var/www/mathesar.examplecom/mathesar/.env) +python3.9 /var/www/mathesar.example.com/manage.py migrate + +``` + + From 8cca912b43353b7ea8ac84af6f0392209ea1bfbe Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Sun, 26 Mar 2023 12:54:38 +0200 Subject: [PATCH 143/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index d3204c65ff..f9ec7d9ba7 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -14,7 +14,7 @@ Installation should only take a few minutes. - Install Letsencrypt and Gurnicorn3 - ##### Install Mathesar - Set up NodeJS - - Set up Gunicorn + - Set up Gunicorn - You need to be a user with root access to the machine you're trying to install Mathesar on. ## Preparing our server. - Prerequisites From 0bbcc627c00ebd7bee111a715f6d497dff81e413 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Sun, 26 Mar 2023 13:04:07 +0200 Subject: [PATCH 144/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index f9ec7d9ba7..fd967af14c 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -457,5 +457,10 @@ $(sudo cat /var/www/mathesar.examplecom/mathesar/.env) python3.9 /var/www/mathesar.example.com/manage.py migrate ``` +Once the migration is done, we need to build the static files. +Firstly, go to the mathesar_ui folder and run `npm i`: +```sh +cd /var/www/mathesar.example.com/mathesar_ui && npm i +``` From 2c883e59b7bd8136a751a7f14a060fef4fe1f2b7 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Sun, 26 Mar 2023 13:13:40 +0200 Subject: [PATCH 145/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index fd967af14c..41ab39460b 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -462,5 +462,9 @@ Firstly, go to the mathesar_ui folder and run `npm i`: ```sh cd /var/www/mathesar.example.com/mathesar_ui && npm i ``` +You may be required to update / install additional packages and you can go ahead and to that. Once this is done we can build our static files: +```sh +npm run build --max_old_space_size=4096 +``` From 6975fd41330fb4a4ee62a8d9562d83d80eb0072c Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Sun, 26 Mar 2023 13:31:06 +0200 Subject: [PATCH 146/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index 41ab39460b..cfc664632b 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -453,7 +453,7 @@ Next we will activate our virtual environment with the following command: We will call the Django Settings, and then apply the migration: ```sh -$(sudo cat /var/www/mathesar.examplecom/mathesar/.env) +$(sudo cat /var/www/mathesar.example.com/mathesar/.env) python3.9 /var/www/mathesar.example.com/manage.py migrate ``` From c7cb0f8cb22ecdb938bb63497a8c38e829f0083b Mon Sep 17 00:00:00 2001 From: hemant-hc Date: Sun, 26 Mar 2023 18:51:57 +0530 Subject: [PATCH 147/553] Fix for suggest_col_mappings --- mathesar/api/db/viewsets/tables.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/mathesar/api/db/viewsets/tables.py b/mathesar/api/db/viewsets/tables.py index 4fcec95cbf..a91e5be1e6 100644 --- a/mathesar/api/db/viewsets/tables.py +++ b/mathesar/api/db/viewsets/tables.py @@ -1,4 +1,5 @@ import json +from django.http import JsonResponse from django_filters import rest_framework as filters from psycopg2.errors import CheckViolation, InvalidTextRepresentation from rest_access_policy import AccessViewSetMixin @@ -247,9 +248,13 @@ def existing_import(self, request, pk=None): @action(methods=['post'], detail=True) def map_imported_columns(self, request, pk=None): temp_table = self.get_object() - target_table = request.get('import_target', None) + target_table_id = request.data.get('import_target', None) + target_table = get_table_or_404(target_table_id) try: - temp_table.suggest_col_mappings_for_import(target_table) + # safe=False is required to serialise arrays, + # which is the expected return type of suggest_col_mappings_for_import + mappings = temp_table.suggest_col_mappings_for_import(target_table) + return JsonResponse(mappings, safe=False) except ColumnMappingsNotFound as e: raise database_api_exceptions.ColumnMappingsNotFound( e, From 50400c4917d498b1cb07e81575890353156c10e8 Mon Sep 17 00:00:00 2001 From: hemant-hc Date: Sun, 26 Mar 2023 19:24:52 +0530 Subject: [PATCH 148/553] Fix for suggest_col_mapping From 4ad8b96a80057b566691c80958fa1534413f06fb Mon Sep 17 00:00:00 2001 From: "hemant.hc" Date: Wed, 8 Mar 2023 19:05:38 +0530 Subject: [PATCH 149/553] Fix for icon type in FilterEntry In FilterEntry.svelte: Add a new prop getColumnConstraintType to get the column constraint type, which when passed to the ColumnName component sets the correct icon. In FilterEntries.svelte we can pass the constraint type using $processedColumns. In FilterTransformation.svelte we get $processedColumns from $tabularData first. --- .../components/filter-entry/FilterEntry.svelte | 15 +++++++++++++++ .../FilterTransformation.svelte | 8 ++++++++ .../record-operations/filter/FilterEntries.svelte | 4 ++++ 3 files changed, 27 insertions(+) diff --git a/mathesar_ui/src/components/filter-entry/FilterEntry.svelte b/mathesar_ui/src/components/filter-entry/FilterEntry.svelte index b5f09b773e..2aa67a28e6 100644 --- a/mathesar_ui/src/components/filter-entry/FilterEntry.svelte +++ b/mathesar_ui/src/components/filter-entry/FilterEntry.svelte @@ -22,6 +22,7 @@ import type { ReadableMapLike } from '@mathesar/typeUtils'; import type { FilterEntryColumnLike } from './types'; import { validateFilterEntry } from './utils'; + import type { ConstraintType } from '@mathesar/api/types/tables/constraints'; type T = $$Generic; type ColumnLikeType = FilterEntryColumnLike & T; @@ -30,6 +31,9 @@ export let columns: ReadableMapLike; export let getColumnLabel: (column: ColumnLikeType) => string; + export let getColumnConstraintType: ( + column: ColumnLikeType, + ) => [ConstraintType] | undefined; export let columnIdentifier: ColumnLikeType['id'] | undefined; export let conditionIdentifier: string | undefined; @@ -89,6 +93,16 @@ return ''; } + function getColumnConstraintTypeByColumnId(_columnId?: ColumnLikeType['id']) { + if (_columnId) { + const column = columns.get(_columnId); + if (column) { + return getColumnConstraintType(column); + } + } + return undefined; + } + function getConditionName(_conditionId?: string) { if (_conditionId) { return selectedColumnFiltersMap.get(_conditionId)?.name ?? ''; @@ -203,6 +217,7 @@ type: columnInfo?.column.type ?? 'unknown', type_options: columnInfo?.column.type_options ?? null, display_options: columnInfo?.column.display_options ?? null, + constraintsType: getColumnConstraintTypeByColumnId(option), }} /> diff --git a/mathesar_ui/src/systems/data-explorer/input-sidebar/transformations-pane/FilterTransformation.svelte b/mathesar_ui/src/systems/data-explorer/input-sidebar/transformations-pane/FilterTransformation.svelte index 83d1e59520..da168353fa 100644 --- a/mathesar_ui/src/systems/data-explorer/input-sidebar/transformations-pane/FilterTransformation.svelte +++ b/mathesar_ui/src/systems/data-explorer/input-sidebar/transformations-pane/FilterTransformation.svelte @@ -3,6 +3,7 @@ import { FilterEntry as FilterEntryComponent } from '@mathesar/components/filter-entry'; import type QueryFilterTransformationModel from '../../QueryFilterTransformationModel'; import type { ProcessedQueryResultColumnMap } from '../../utils'; + import { getTabularDataStoreFromContext } from '@mathesar/stores/table-data'; const dispatch = createEventDispatcher(); @@ -12,6 +13,9 @@ export let limitEditing = false; + const tabularData = getTabularDataStoreFromContext(); + $: ({ processedColumns } = $tabularData); + function updateFilter() { dispatch('update'); } @@ -21,6 +25,10 @@ allowDelete={false} {columns} getColumnLabel={(column) => columns.get(column.id)?.column.display_name ?? ''} + getColumnConstraintType={(column) => { + const linkFkType = $processedColumns.get(parseInt(column.id))?.linkFk?.type; + return linkFkType ? [linkFkType] : undefined; + }} disableColumnChange={limitEditing} layout="vertical" bind:columnIdentifier={model.columnIdentifier} diff --git a/mathesar_ui/src/systems/table-view/actions-pane/record-operations/filter/FilterEntries.svelte b/mathesar_ui/src/systems/table-view/actions-pane/record-operations/filter/FilterEntries.svelte index 08868c6327..750b0c393d 100644 --- a/mathesar_ui/src/systems/table-view/actions-pane/record-operations/filter/FilterEntries.svelte +++ b/mathesar_ui/src/systems/table-view/actions-pane/record-operations/filter/FilterEntries.svelte @@ -28,6 +28,10 @@ columns={$processedColumns} getColumnLabel={(column) => $processedColumns.get(column.id)?.column.name ?? ''} + getColumnConstraintType={(column) => { + const linkFkType = $processedColumns.get(column.id)?.linkFk?.type; + return linkFkType ? [linkFkType] : undefined; + }} bind:columnIdentifier={entry.columnId} bind:conditionIdentifier={entry.conditionId} bind:value={entry.value} From 4cc28b8bf9abbb1c0bd0f30a721b55b84f23bad5 Mon Sep 17 00:00:00 2001 From: "hemant.hc" Date: Wed, 8 Mar 2023 19:27:05 +0530 Subject: [PATCH 150/553] Fir for radix parameter --- .../transformations-pane/FilterTransformation.svelte | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mathesar_ui/src/systems/data-explorer/input-sidebar/transformations-pane/FilterTransformation.svelte b/mathesar_ui/src/systems/data-explorer/input-sidebar/transformations-pane/FilterTransformation.svelte index da168353fa..9b7b44ed1a 100644 --- a/mathesar_ui/src/systems/data-explorer/input-sidebar/transformations-pane/FilterTransformation.svelte +++ b/mathesar_ui/src/systems/data-explorer/input-sidebar/transformations-pane/FilterTransformation.svelte @@ -26,7 +26,8 @@ {columns} getColumnLabel={(column) => columns.get(column.id)?.column.display_name ?? ''} getColumnConstraintType={(column) => { - const linkFkType = $processedColumns.get(parseInt(column.id))?.linkFk?.type; + const linkFkType = $processedColumns.get(parseInt(column.id, 10))?.linkFk + ?.type; return linkFkType ? [linkFkType] : undefined; }} disableColumnChange={limitEditing} From 53520eb9c1ebee3127e01912c492314c80aa59e0 Mon Sep 17 00:00:00 2001 From: "hemant.hc" Date: Wed, 8 Mar 2023 19:32:18 +0530 Subject: [PATCH 151/553] Fix for linting issues --- mathesar_ui/src/components/filter-entry/FilterEntry.svelte | 2 +- .../transformations-pane/FilterTransformation.svelte | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mathesar_ui/src/components/filter-entry/FilterEntry.svelte b/mathesar_ui/src/components/filter-entry/FilterEntry.svelte index 2aa67a28e6..a1e75c960c 100644 --- a/mathesar_ui/src/components/filter-entry/FilterEntry.svelte +++ b/mathesar_ui/src/components/filter-entry/FilterEntry.svelte @@ -20,9 +20,9 @@ import type RecordSummaryStore from '@mathesar/stores/table-data/record-summaries/RecordSummaryStore'; import type { RecordSummariesForColumn } from '@mathesar/stores/table-data/record-summaries/recordSummaryUtils'; import type { ReadableMapLike } from '@mathesar/typeUtils'; + import type { ConstraintType } from '@mathesar/api/types/tables/constraints'; import type { FilterEntryColumnLike } from './types'; import { validateFilterEntry } from './utils'; - import type { ConstraintType } from '@mathesar/api/types/tables/constraints'; type T = $$Generic; type ColumnLikeType = FilterEntryColumnLike & T; diff --git a/mathesar_ui/src/systems/data-explorer/input-sidebar/transformations-pane/FilterTransformation.svelte b/mathesar_ui/src/systems/data-explorer/input-sidebar/transformations-pane/FilterTransformation.svelte index 9b7b44ed1a..31d553a8c7 100644 --- a/mathesar_ui/src/systems/data-explorer/input-sidebar/transformations-pane/FilterTransformation.svelte +++ b/mathesar_ui/src/systems/data-explorer/input-sidebar/transformations-pane/FilterTransformation.svelte @@ -1,9 +1,9 @@ (column && columns.get(column.id)?.column.display_name) ?? ''} + getColumnConstraintType={(column) => { + const linkFkType = $processedColumns.get(parseInt(column.id, 10))?.linkFk + ?.type; + return linkFkType ? [linkFkType] : undefined; + }} disableColumnChange={limitEditing} bind:columnIdentifier={model.columnIdentifier} bind:sortDirection={model.sortDirection} diff --git a/mathesar_ui/src/systems/table-view/actions-pane/record-operations/group/Group.svelte b/mathesar_ui/src/systems/table-view/actions-pane/record-operations/group/Group.svelte index e9aa3a70ce..da75fd7b9b 100644 --- a/mathesar_ui/src/systems/table-view/actions-pane/record-operations/group/Group.svelte +++ b/mathesar_ui/src/systems/table-view/actions-pane/record-operations/group/Group.svelte @@ -51,6 +51,10 @@ columns={$processedColumns} columnsAllowedForSelection={availableColumns.map((entry) => entry.id)} getColumnLabel={(processedColumn) => processedColumn?.column.name ?? ''} + getColumnConstraintType={(column) => { + const linkFkType = $processedColumns.get(column.id)?.linkFk?.type; + return linkFkType ? [linkFkType] : undefined; + }} columnIdentifier={groupEntry.columnId} preprocFunctionIdentifier={groupEntry.preprocFnId} on:update={(e) => updateGrouping(index, e.detail)} diff --git a/mathesar_ui/src/systems/table-view/actions-pane/record-operations/sort/Sort.svelte b/mathesar_ui/src/systems/table-view/actions-pane/record-operations/sort/Sort.svelte index ebe2aa07d0..3aa663db0d 100644 --- a/mathesar_ui/src/systems/table-view/actions-pane/record-operations/sort/Sort.svelte +++ b/mathesar_ui/src/systems/table-view/actions-pane/record-operations/sort/Sort.svelte @@ -56,6 +56,10 @@ columns={$processedColumns} columnsAllowedForSelection={availableColumnIds} getColumnLabel={(processedColumn) => processedColumn?.column.name ?? ''} + getColumnConstraintType={(column) => { + const linkFkType = $processedColumns.get(column.id)?.linkFk?.type; + return linkFkType ? [linkFkType] : undefined; + }} columnIdentifier={columnId} {sortDirection} on:remove={() => removeSortColumn(columnId)} From ec35fa11431c86c64e52107ca9de9274110bd0e9 Mon Sep 17 00:00:00 2001 From: hemant-hc Date: Mon, 27 Mar 2023 11:58:44 +0530 Subject: [PATCH 153/553] fix-for-summarisationTransformation --- .../summarization/SummarizationTransformation.svelte | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/mathesar_ui/src/systems/data-explorer/input-sidebar/transformations-pane/summarization/SummarizationTransformation.svelte b/mathesar_ui/src/systems/data-explorer/input-sidebar/transformations-pane/summarization/SummarizationTransformation.svelte index 1ed992df9d..e3e4d50e01 100644 --- a/mathesar_ui/src/systems/data-explorer/input-sidebar/transformations-pane/summarization/SummarizationTransformation.svelte +++ b/mathesar_ui/src/systems/data-explorer/input-sidebar/transformations-pane/summarization/SummarizationTransformation.svelte @@ -5,6 +5,7 @@ MultiSelect, LabeledInput, } from '@mathesar-component-library'; + import { getTabularDataStoreFromContext } from '@mathesar/stores/table-data'; import GroupEntryComponent from '@mathesar/components/group-entry/GroupEntry.svelte'; import ColumnName from '@mathesar/components/column/ColumnName.svelte'; import type QuerySummarizationTransformationModel from '../../../QuerySummarizationTransformationModel'; @@ -13,6 +14,8 @@ import type { QuerySummarizationAggregationEntry } from '../../../QuerySummarizationTransformationModel'; const dispatch = createEventDispatcher(); + const tabularData = getTabularDataStoreFromContext(); + $: ({ processedColumns } = $tabularData); export let columns: ProcessedQueryResultColumnMap; export let model: QuerySummarizationTransformationModel; @@ -84,6 +87,11 @@ {columns} getColumnLabel={(column) => (column && columns.get(column.id)?.column.display_name) ?? ''} + getColumnConstraintType={(column) => { + const linkFkType = $processedColumns.get(parseInt(column.id, 10))?.linkFk + ?.type; + return linkFkType ? [linkFkType] : undefined; + }} disableColumnChange={limitEditing} columnIdentifier={model.columnIdentifier} preprocFunctionIdentifier={model.preprocFunctionIdentifier} From eee95265161439f03b0e1c1a613fd197e5ce5012 Mon Sep 17 00:00:00 2001 From: Anish Umale Date: Mon, 27 Mar 2023 15:26:42 +0530 Subject: [PATCH 154/553] Add conversion logic for converting python list indicies to django ids for column mappings --- mathesar/api/db/viewsets/tables.py | 5 +---- mathesar/models/base.py | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/mathesar/api/db/viewsets/tables.py b/mathesar/api/db/viewsets/tables.py index a91e5be1e6..75671d631c 100644 --- a/mathesar/api/db/viewsets/tables.py +++ b/mathesar/api/db/viewsets/tables.py @@ -1,5 +1,4 @@ import json -from django.http import JsonResponse from django_filters import rest_framework as filters from psycopg2.errors import CheckViolation, InvalidTextRepresentation from rest_access_policy import AccessViewSetMixin @@ -251,10 +250,8 @@ def map_imported_columns(self, request, pk=None): target_table_id = request.data.get('import_target', None) target_table = get_table_or_404(target_table_id) try: - # safe=False is required to serialise arrays, - # which is the expected return type of suggest_col_mappings_for_import mappings = temp_table.suggest_col_mappings_for_import(target_table) - return JsonResponse(mappings, safe=False) + return Response({"mappings": mappings}) except ColumnMappingsNotFound as e: raise database_api_exceptions.ColumnMappingsNotFound( e, diff --git a/mathesar/models/base.py b/mathesar/models/base.py index 5bad2c4301..9c9ca77ccd 100644 --- a/mathesar/models/base.py +++ b/mathesar/models/base.py @@ -696,7 +696,22 @@ def insert_records_to_existing_table(self, existing_table, data_files, mappings= def suggest_col_mappings_for_import(self, existing_table): temp_table_col_list = self.get_column_name_type_map() target_table_col_list = existing_table.get_column_name_type_map() - return column_utils.find_match(temp_table_col_list, target_table_col_list, self._sa_engine) + temp_table_name_id_map = self.get_column_name_id_bidirectional_map() + target_table_name_id_map = existing_table.get_column_name_id_bidirectional_map() + column_mappings = column_utils.find_match(temp_table_col_list, target_table_col_list, self._sa_engine) + + # Convert python list indices to django ids. + mappings = [ + ( + temp_table_name_id_map[ + temp_table_col_list[from_col][0] # from_column name + ], + target_table_name_id_map[ + target_table_col_list[target_col][0] # target_column name + ] + ) for from_col, target_col in column_mappings + ] + return mappings class Column(ReflectionManagerMixin, BaseModel): From 81974c5571620af25ef254afe2edf11a7899bfdd Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Mon, 27 Mar 2023 12:51:02 +0200 Subject: [PATCH 155/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index cfc664632b..7d27a32019 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -140,7 +140,7 @@ GRANT ALL PRIVILEGES ON DATABASE djangodb TO youruser; From the previous step, you will need your to fill in the following variables for Django: ` -You can generate the secret key here: https://djecrety.ir/cat /v +You can generate the secret key here: https://djecrety.ir/cat ```sh ALLOWED_HOSTS: "*" From 5e771ea48290d0ee0a2820da32a9ddda2bb39d0c Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Mon, 27 Mar 2023 12:52:43 +0200 Subject: [PATCH 156/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index 7d27a32019..1960045a52 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -140,7 +140,7 @@ GRANT ALL PRIVILEGES ON DATABASE djangodb TO youruser; From the previous step, you will need your to fill in the following variables for Django: ` -You can generate the secret key here: https://djecrety.ir/cat +You can generate the secret key here: https://djecrety.ir/ ```sh ALLOWED_HOSTS: "*" From d6635956d1e4b9515db444a8c9ab11028ca4f04b Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Mon, 27 Mar 2023 12:57:26 +0200 Subject: [PATCH 157/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index 1960045a52..7251aa6f0a 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -149,7 +149,7 @@ DJANGO_DATABASE_KEY=default DJANGO_DATABASE_URL=postgres://{{ DATABASE_USER }}:{{ DATABASE_PASSWORD }}@127.0.0.1:5432/{{ DJANGO_DATABASE_NAME }}" MATHESAR_DATABASES=(mathesar_tables|postgresql://{{ DATABASE_USER }}:{{ DATABASE_PASSWORD }}@127.0.0.1:5432/{{ MATHESAR_DATABASE_NAME }}) ``` -This file can be placed in /var/www/mathesar.examplecom/mathesar +This file can be placed in /var/www/mathesar.example.com/mathesar ### Step Three: Install Nginx with Letsencrypt and Gurnicorn3 We will start off by installing Nginx on the system. This will already be in the Debian repository so simply run the install command. From 020d85383212ff34a6adf5660c9af365ba7cb999 Mon Sep 17 00:00:00 2001 From: Aritra8438 Date: Mon, 27 Mar 2023 22:15:38 +0530 Subject: [PATCH 158/553] Added support for semicolon-separated value files --- mathesar/imports/csv.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mathesar/imports/csv.py b/mathesar/imports/csv.py index 19c8d8f950..2329b7891b 100644 --- a/mathesar/imports/csv.py +++ b/mathesar/imports/csv.py @@ -16,7 +16,7 @@ from mathesar.state import reset_reflection -ALLOWED_DELIMITERS = ",\t:|" +ALLOWED_DELIMITERS = ",\t:|;" SAMPLE_SIZE = 20000 CHECK_ROWS = 10 From e01658afdfb454ba20712679e28fa8c33453aa21 Mon Sep 17 00:00:00 2001 From: thesujai Date: Mon, 27 Mar 2023 23:34:30 +0530 Subject: [PATCH 159/553] imported edit icon --- mathesar_ui/src/routes/DataExplorerRoute.svelte | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mathesar_ui/src/routes/DataExplorerRoute.svelte b/mathesar_ui/src/routes/DataExplorerRoute.svelte index 87a129a7f0..040e70aba6 100644 --- a/mathesar_ui/src/routes/DataExplorerRoute.svelte +++ b/mathesar_ui/src/routes/DataExplorerRoute.svelte @@ -18,7 +18,7 @@ getExplorationEditorPageUrl, } from '@mathesar/routes/urls'; import AppendBreadcrumb from '@mathesar/components/breadcrumb/AppendBreadcrumb.svelte'; - import { iconExploration } from '@mathesar/icons'; + import { iconEdit, iconExploration } from '@mathesar/icons'; import { readable, type Readable } from 'svelte/store'; export let database: Database; @@ -134,7 +134,7 @@ type: 'simple', href: getExplorationEditorPageUrl(database.name, schema.id, $query.id), label: 'Edit', - icon: iconExploration, + icon: iconEdit, }} /> {:else} From 77b1d04e297226daeaa5ba3e81be8a9178830f58 Mon Sep 17 00:00:00 2001 From: pavish Date: Tue, 28 Mar 2023 03:19:07 +0530 Subject: [PATCH 160/553] Update regex for username check, make validators common --- mathesar_ui/src/components/form/validators.ts | 31 +++++++++---------- .../UserDetailsForm.svelte | 18 +++++++---- 2 files changed, 27 insertions(+), 22 deletions(-) diff --git a/mathesar_ui/src/components/form/validators.ts b/mathesar_ui/src/components/form/validators.ts index 2bb9c1a26b..ff52ba8583 100644 --- a/mathesar_ui/src/components/form/validators.ts +++ b/mathesar_ui/src/components/form/validators.ts @@ -84,25 +84,24 @@ export function max( : invalid(msg ?? `Value must be at most ${upperBound}.`); } -function isUsernameInvalid(v: string): boolean { - // Usernames may contain alphanumeric, @, _, ., + and - characters. - return !v.match(/^[@_.+-0-9a-z]+$/); -} - -export function validateUsernameCharacters( - msg = 'Username should not contain non-alphanumeric characters.', +export function matchRegexAllowNullUndefined( + regex: RegExp, + msg = 'The specified value is invalid.', ): ValidationFn { return (v) => - v === null || v === undefined || !isUsernameInvalid(v) - ? valid() - : invalid(msg); + v === null || v === undefined || v.match(regex) ? valid() : invalid(msg); } -export function validateUsernameLength( - msg = 'Username should be less than or equal to 150 characters.', +export function validateLength( + maxInclusive: number, + msg: string | undefined = undefined, ): ValidationFn { return (v) => - v === null || v === undefined || v.length <= 150 ? valid() : invalid(msg); + v === null || v === undefined || v.length <= maxInclusive + ? valid() + : invalid( + msg ?? `Length must be equal to or lesser than ${maxInclusive}.`, + ); } function isEmailInvalid(v: string): boolean { @@ -113,11 +112,11 @@ function isEmailInvalid(v: string): boolean { ); } -export function validateEmail( - msg = 'Invalid email format.', +export function validateEmailAllowEmpty( + msg = 'The email address is invalid.', ): ValidationFn { return (v) => - v === null || v === undefined || !isEmailInvalid(v) + v === null || v === undefined || v === '' || !isEmailInvalid(v) ? valid() : invalid(msg); } diff --git a/mathesar_ui/src/systems/users-and-permissions/UserDetailsForm.svelte b/mathesar_ui/src/systems/users-and-permissions/UserDetailsForm.svelte index 073e06b5c8..6b123a9854 100644 --- a/mathesar_ui/src/systems/users-and-permissions/UserDetailsForm.svelte +++ b/mathesar_ui/src/systems/users-and-permissions/UserDetailsForm.svelte @@ -12,9 +12,9 @@ requiredField, makeForm, FormSubmitWithCatch, - validateUsernameLength, - validateUsernameCharacters, - validateEmail, + validateLength, + matchRegexAllowNullUndefined, + validateEmailAllowEmpty, type FieldStore, } from '@mathesar/components/form'; import userApi, { type User } from '@mathesar/api/users'; @@ -34,10 +34,16 @@ $: isNewUser = user === undefined; $: fullName = optionalField(user?.full_name ?? ''); $: username = requiredField(user?.username ?? '', [ - validateUsernameLength(), - validateUsernameCharacters(), + validateLength( + 150, + 'Username should be lesser than or equal to 150 characters.', + ), + matchRegexAllowNullUndefined( + /^[A-Za-z0-9_@.+-]*$/, + 'Username can only contain alphanumeric characters, _, @, +, ., and -.', + ), ]); - $: email = optionalField(user?.email ?? '', [validateEmail()]); + $: email = optionalField(user?.email ?? '', [validateEmailAllowEmpty()]); $: userType = requiredField<'user' | 'admin' | undefined>( user?.is_superuser ? 'admin' : 'user', ); From 900631483da00d08b8e1fa9ddc1f390ef9fee0e7 Mon Sep 17 00:00:00 2001 From: Sean Colsen Date: Tue, 28 Mar 2023 08:44:54 -0400 Subject: [PATCH 161/553] Improve typing of DropdownMenu --- .../dropdown-menu/DropdownMenu.svelte | 10 +++++++--- .../src/component-library/dropdown/Dropdown.svelte | 2 ++ mathesar_ui/src/pages/schema/TableCard.svelte | 1 - .../src/systems/data-explorer/ActionsPane.svelte | 2 +- 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/mathesar_ui/src/component-library/dropdown-menu/DropdownMenu.svelte b/mathesar_ui/src/component-library/dropdown-menu/DropdownMenu.svelte index 82623e7130..3785e01ee2 100644 --- a/mathesar_ui/src/component-library/dropdown-menu/DropdownMenu.svelte +++ b/mathesar_ui/src/component-library/dropdown-menu/DropdownMenu.svelte @@ -1,12 +1,16 @@ - + {#each columns as column (column.id)} + import type { ComponentProps } from 'svelte'; + + import { FormattedInput } from '@mathesar-component-library'; import type { Column } from '@mathesar/api/types/tables/columns'; - import { FormattedInput } from '@mathesar/component-library'; import TemplateInputFormatter from './TemplateInputFormatter'; import AppendColumn from './AppendColumn.svelte'; - export let value: string | undefined = undefined; + interface $$Props + extends Omit>, 'formatter'> { + columns: Column[]; + } + + export let value: string | null | undefined = undefined; export let columns: Column[]; + export let disabled = false; $: formatter = new TemplateInputFormatter(columns); @@ -14,9 +22,9 @@ } - + - + diff --git a/mathesar_ui/src/components/form/FormSubmitWithCatch.svelte b/mathesar_ui/src/components/form/FormSubmitWithCatch.svelte deleted file mode 100644 index 59cd76af65..0000000000 --- a/mathesar_ui/src/components/form/FormSubmitWithCatch.svelte +++ /dev/null @@ -1,54 +0,0 @@ - - -
- { - form.reset(); - onCancel(); - }} - {...$$restProps} - /> -
- -
-
- - diff --git a/mathesar_ui/src/components/form/index.ts b/mathesar_ui/src/components/form/index.ts index c09e7ee121..16fd0f0a3f 100644 --- a/mathesar_ui/src/components/form/index.ts +++ b/mathesar_ui/src/components/form/index.ts @@ -1,6 +1,6 @@ export * from './validators'; export { default as Field } from './Field.svelte'; export { default as FormSubmit } from './FormSubmit.svelte'; -export { default as FormSubmitWithCatch } from './FormSubmitWithCatch.svelte'; +export { default as FieldLayout } from './FieldLayout.svelte'; export { field, requiredField, optionalField, type FieldStore } from './field'; export * from './form'; diff --git a/mathesar_ui/src/pages/record/RecordPageContent.svelte b/mathesar_ui/src/pages/record/RecordPageContent.svelte index 00a46563c1..87b8307cf6 100644 --- a/mathesar_ui/src/pages/record/RecordPageContent.svelte +++ b/mathesar_ui/src/pages/record/RecordPageContent.svelte @@ -4,7 +4,7 @@ import { getDetailedRecordsErrors } from '@mathesar/api/utils/recordUtils'; import { getAPI } from '@mathesar/api/utils/requestUtils'; import { - FormSubmitWithCatch, + FormSubmit, makeForm, optionalField, } from '@mathesar/components/form'; @@ -63,8 +63,9 @@ {/each}
- record.patch($form.values)} diff --git a/mathesar_ui/src/systems/table-view/link-table/LinkTableForm.svelte b/mathesar_ui/src/systems/table-view/link-table/LinkTableForm.svelte index b518fe6812..c6d24de024 100644 --- a/mathesar_ui/src/systems/table-view/link-table/LinkTableForm.svelte +++ b/mathesar_ui/src/systems/table-view/link-table/LinkTableForm.svelte @@ -11,9 +11,9 @@ Field, makeForm, requiredField, + FieldLayout, + FormSubmit, } from '@mathesar/components/form'; - import FieldLayout from '@mathesar/components/form/FieldLayout.svelte'; - import FormSubmitWithCatch from '@mathesar/components/form/FormSubmitWithCatch.svelte'; import InfoBox from '@mathesar/components/message-boxes/InfoBox.svelte'; import OutcomeBox from '@mathesar/components/message-boxes/OutcomeBox.svelte'; import SelectTable from '@mathesar/components/SelectTable.svelte'; @@ -298,8 +298,9 @@
- {#if $customized} diff --git a/mathesar_ui/src/systems/users-and-permissions/PasswordChangeForm.svelte b/mathesar_ui/src/systems/users-and-permissions/PasswordChangeForm.svelte index d52420e55d..3ed8d0e98f 100644 --- a/mathesar_ui/src/systems/users-and-permissions/PasswordChangeForm.svelte +++ b/mathesar_ui/src/systems/users-and-permissions/PasswordChangeForm.svelte @@ -7,7 +7,7 @@ import { requiredField, makeForm, - FormSubmitWithCatch, + FormSubmit, optionalField, comboMustBeEqual, } from '@mathesar/components/form'; @@ -149,8 +149,9 @@ {#if showChangePasswordForm}
- { showChangePasswordForm = false; diff --git a/mathesar_ui/src/systems/users-and-permissions/UserDetailsForm.svelte b/mathesar_ui/src/systems/users-and-permissions/UserDetailsForm.svelte index 6b123a9854..24c0fcbe7f 100644 --- a/mathesar_ui/src/systems/users-and-permissions/UserDetailsForm.svelte +++ b/mathesar_ui/src/systems/users-and-permissions/UserDetailsForm.svelte @@ -11,7 +11,7 @@ optionalField, requiredField, makeForm, - FormSubmitWithCatch, + FormSubmit, validateLength, matchRegexAllowNullUndefined, validateEmailAllowEmpty, @@ -154,8 +154,9 @@
- Date: Tue, 28 Mar 2023 10:09:36 -0400 Subject: [PATCH 167/553] Simplify NewColumnCell using new form features --- .../new-column-cell/NewColumnCell.svelte | 40 +++++-------------- 1 file changed, 9 insertions(+), 31 deletions(-) diff --git a/mathesar_ui/src/systems/table-view/header/new-column-cell/NewColumnCell.svelte b/mathesar_ui/src/systems/table-view/header/new-column-cell/NewColumnCell.svelte index 30acc4efd6..32603b54b2 100644 --- a/mathesar_ui/src/systems/table-view/header/new-column-cell/NewColumnCell.svelte +++ b/mathesar_ui/src/systems/table-view/header/new-column-cell/NewColumnCell.svelte @@ -1,10 +1,5 @@ @@ -56,25 +38,20 @@ showArrow={false} ariaLabel="New Column" on:close={form.reset} - disabled={isLoading} + disabled={$isSubmitting} > - {#if isLoading} + {#if $isSubmitting} {:else} {/if}
- + @@ -84,6 +61,7 @@ proceedButton={{ label: 'Add' }} onProceed={() => addColumn(close)} onCancel={close} + catchErrors />
From d302f6cc601b71e7b07672f38f37ee763a0a2490 Mon Sep 17 00:00:00 2001 From: Dominykas Mostauskis Date: Tue, 28 Mar 2023 18:10:21 +0300 Subject: [PATCH 168/553] Remove malfunctioning test --- mathesar/tests/imports/test_csv.py | 76 ------------------------------ 1 file changed, 76 deletions(-) diff --git a/mathesar/tests/imports/test_csv.py b/mathesar/tests/imports/test_csv.py index c039417320..d8d6329e4a 100644 --- a/mathesar/tests/imports/test_csv.py +++ b/mathesar/tests/imports/test_csv.py @@ -21,14 +21,6 @@ def data_file(patents_csv_filepath): return data_file -@pytest.fixture -def long_column_data_file(): - data_filepath = 'mathesar/tests/data/long_column_names.csv' - with open(data_filepath, "rb") as csv_file: - data_file = DataFile.objects.create(file=File(csv_file)) - return data_file - - @pytest.fixture def headerless_data_file(headerless_patents_csv_filepath): with open(headerless_patents_csv_filepath, "rb") as csv_file: @@ -98,74 +90,6 @@ def test_csv_upload(data_file, schema): ) -def test_csv_upload_long_columns(long_column_data_file, schema): - table_name = "long_cols" - table = create_table_from_csv(long_column_data_file, table_name, schema) - - num_records = 54 - expected_row = ( - 1, 'NATION', '8.6', '4.5', '8.5', '4.3', '8.3', '4.6', '78.6', '2.22', - '0.88', '0.66', '1.53', '3.75', '3.26', '0.45', '0.07', '53.9', '52.3', - '0.8', '0.38487', '3.15796', '2.3', '33247', '14.842144', '6.172333', - '47.158545', '1.698662', '2.345577', '7.882694', '0.145406', '3.395302', - '92.085375', '14.447634', '78.873848', '1.738571', '16.161024', - '19.436701', '8.145643', '94.937079', '74.115131', '75.601680', - '22.073834', '11.791045', '1.585233', '1.016932', '2023-02-01', - ) - expected_cols = [ - 'id', - 'State or Nation', - 'Cycle 1 Total Number of Health Deficiencies', - 'Cycle 1 Total Number of Fire Safety Deficiencies', - 'Cycle 2 Total Number of Health Deficiencies', - 'Cycle 2 Total Number of Fire Safety Deficiencies', - 'Cycle 3 Total Number of Health Deficiencies', - 'Cycle 3 Total Number of Fire Safety Deficiencies', - 'Average Number of Residents per Day', - 'Reported Nurse Aide Staffing Hours per Resident per Day', - 'Reported LPN Staffing Hours per Resident per Day', - 'Reported RN Staffing Hours per Resident per Day', - 'Reported Licensed Staffing Hours per Resident per Day', - 'Reported Total Nurse Staffing Hours per Resident per Day', - 'Total number of nurse staff hours per resident per day-8cd5ab5e', - 'Registered Nurse hours per resident per day on the weekend', - 'Reported Physical Therapist Staffing Hours per Resident Per Day', - 'Total nursing staff turnover', - 'Registered Nurse turnover', - 'Number of administrators who have left the nursing home', - 'Case-Mix RN Staffing Hours per Resident per Day', - 'Case-Mix Total Nurse Staffing Hours per Resident per Day', - 'Number of Fines', - 'Fine Amount in Dollars', - 'Percentage of long stay residents whose need for help-5c97c88f', - 'Percentage of long stay residents who lose too much weight', - 'Percentage of low risk long stay residents who lose co-fc6bc241', - 'Percentage of long stay residents with a catheter inse-ce71f22a', - 'Percentage of long stay residents with a urinary tract-f16fbec8', - 'Percentage of long stay residents who have depressive symptoms', - 'Percentage of long stay residents who were physically-f30de0aa', - 'Percentage of long stay residents experiencing one or-9f9e8f36', - 'Percentage of long stay residents assessed and appropr-84744861', - 'Percentage of long stay residents who received an anti-20fe5d12', - 'Percentage of short stay residents assessed and approp-3568770f', - 'Percentage of short stay residents who newly received-e98612b4', - 'Percentage of long stay residents whose ability to mov-66839cb4', - 'Percentage of long stay residents who received an anti-868593e4', - 'Percentage of high risk long stay residents with press-b624bbba', - 'Percentage of long stay residents assessed and appropr-999c26ef', - 'Percentage of short stay residents who made improvemen-ebe5c21e', - 'Percentage of short stay residents who were assessed a-26e64965', - 'Percentage of short stay residents who were rehospital-682a4dae', - 'Percentage of short stay residents who had an outpatie-9403ec21', - 'Number of hospitalizations per 1000 long-stay resident days', - 'Number of outpatient emergency department visits per 1-f0fed7b5', - 'Processing Date' - ] - check_csv_upload( - table, table_name, schema, num_records, expected_row, expected_cols - ) - - def test_headerless_csv_upload(headerless_data_file, schema): table_name = "NASA no headers" table = create_table_from_csv(headerless_data_file, table_name, schema) From 3e2b46c7eefe8310da1ebe8f63b19b6f47ae32e0 Mon Sep 17 00:00:00 2001 From: Dominykas Mostauskis Date: Tue, 28 Mar 2023 18:11:00 +0300 Subject: [PATCH 169/553] Improve test coverage --- mathesar/tests/api/test_table_api.py | 42 ++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/mathesar/tests/api/test_table_api.py b/mathesar/tests/api/test_table_api.py index 53146255b7..2525023299 100644 --- a/mathesar/tests/api/test_table_api.py +++ b/mathesar/tests/api/test_table_api.py @@ -1785,6 +1785,39 @@ def test_table_ui_dependency(client, create_patents_table, get_uid): assert response_data == expected_response +@pytest.mark.parametrize( + 'before_truncation, after_truncation', + [ + [ + "bbbbbbbbbbbbbb", + "bbbbbbbbbbbbbb", + ], + [ + "cccccccccccccccccccccc", + "cccccccccccccccccccccc", + ], + [ + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + ], + [ + "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "ffffffffffffffffffffffffffffffffffffffffffffffff-7e43d30e", + ], + [ + "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", + "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-d0ccef3c", + ], + [ + "ggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg", + "gggggggggggggggggggggggggggggggggggggggggggggggg-2910cecf", + ], + ] +) +def test_truncate_if_necessary(before_truncation, after_truncation): + assert truncate_if_necessary(before_truncation) == after_truncation + + def test_create_table_long_name_data_file(client, long_column_data_file, schema): table_name = 'My Long column name datafile' # response, response_table, table = _create_table( @@ -1848,6 +1881,15 @@ def test_create_table_long_name_data_file(client, long_column_data_file, schema) "Number of outpatient emergency department visits per 1000 long-stay resident days", "Processing Date" ] + # Make sure at least some column names require truncation; + # 63 is the hard Postgres limit; we're also experiencing problems with ids + # as short as 58 characters, but I'll leave this at 63 so that it doesn't + # have to be updated once that's fixed. + assert any( + len(column_name) >= 63 + for column_name + in column_names + ) processed_column_names = [truncate_if_necessary(col) for col in column_names] table = check_create_table_response( client, table_name, expt_name, long_column_data_file, schema, first_row, From 45d99595d99a36d54901dc5213108cb8024af82a Mon Sep 17 00:00:00 2001 From: Dominykas Mostauskis Date: Tue, 28 Mar 2023 18:11:35 +0300 Subject: [PATCH 170/553] Increase id limit to highest effectively supported --- db/identifiers.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/db/identifiers.py b/db/identifiers.py index 901b6db0de..970f824e91 100644 --- a/db/identifiers.py +++ b/db/identifiers.py @@ -1,6 +1,9 @@ import hashlib +POSTGRES_IDENTIFIER_SIZE_LIMIT = 63 + + def truncate_if_necessary(identifier): """ Takes an identifier and returns it, truncating it, if it is too long. The truncated version @@ -30,9 +33,12 @@ def truncate_if_necessary(identifier): def is_identifier_too_long(identifier): - postgres_identifier_size_limit = 48 + # TODO we should support POSTGRES_IDENTIFIER_SIZE_LIMIT here; + # This is our current limit due to an unknown bug that manifests at least + # when importing CSVs. + our_temporary_identifier_size_limit = 57 size = _get_size_of_identifier_in_bytes(identifier) - return size > postgres_identifier_size_limit + return size > our_temporary_identifier_size_limit def _get_truncation_hash(identifier): From 43a4c685787861cfba862fa831ac72ebdfbf2315 Mon Sep 17 00:00:00 2001 From: Sean Colsen Date: Tue, 28 Mar 2023 11:36:08 -0400 Subject: [PATCH 171/553] Add default values for getColumnConstraintType --- mathesar_ui/src/components/filter-entry/FilterEntry.svelte | 2 +- mathesar_ui/src/components/group-entry/GroupEntry.svelte | 2 +- mathesar_ui/src/components/sort-entry/SortEntry.svelte | 2 +- .../transformations-pane/FilterTransformation.svelte | 2 -- .../transformations-pane/SortTransformation.svelte | 2 -- .../summarization/SummarizationTransformation.svelte | 2 -- 6 files changed, 3 insertions(+), 9 deletions(-) diff --git a/mathesar_ui/src/components/filter-entry/FilterEntry.svelte b/mathesar_ui/src/components/filter-entry/FilterEntry.svelte index 540039fde4..2dd7a27a9a 100644 --- a/mathesar_ui/src/components/filter-entry/FilterEntry.svelte +++ b/mathesar_ui/src/components/filter-entry/FilterEntry.svelte @@ -33,7 +33,7 @@ export let getColumnLabel: (column: ColumnLikeType) => string; export let getColumnConstraintType: ( column: ColumnLikeType, - ) => ConstraintType[] | undefined; + ) => ConstraintType[] | undefined = () => undefined; export let columnIdentifier: ColumnLikeType['id'] | undefined; export let conditionIdentifier: string | undefined; diff --git a/mathesar_ui/src/components/group-entry/GroupEntry.svelte b/mathesar_ui/src/components/group-entry/GroupEntry.svelte index 79af2dc694..34f8cfda64 100644 --- a/mathesar_ui/src/components/group-entry/GroupEntry.svelte +++ b/mathesar_ui/src/components/group-entry/GroupEntry.svelte @@ -27,7 +27,7 @@ export let getColumnLabel: (column?: ColumnLikeType) => string; export let getColumnConstraintType: ( column: ColumnLikeType, - ) => ConstraintType[] | undefined; + ) => ConstraintType[] | undefined = () => undefined; export let columnsAllowedForSelection: ColumnLikeType['id'][] | undefined = undefined; export let columnIdentifier: ColumnLikeType['id']; diff --git a/mathesar_ui/src/components/sort-entry/SortEntry.svelte b/mathesar_ui/src/components/sort-entry/SortEntry.svelte index 12950d7df4..e59737c879 100644 --- a/mathesar_ui/src/components/sort-entry/SortEntry.svelte +++ b/mathesar_ui/src/components/sort-entry/SortEntry.svelte @@ -32,7 +32,7 @@ export let getColumnLabel: (column?: ColumnLikeType) => string; export let getColumnConstraintType: ( column: ColumnLikeType, - ) => ConstraintType[] | undefined; + ) => ConstraintType[] | undefined = () => undefined; export let columnsAllowedForSelection: ColumnLikeType['id'][] | undefined = undefined; export let columnIdentifier: ColumnLikeType['id']; diff --git a/mathesar_ui/src/systems/data-explorer/input-sidebar/transformations-pane/FilterTransformation.svelte b/mathesar_ui/src/systems/data-explorer/input-sidebar/transformations-pane/FilterTransformation.svelte index 3119b42c0b..83d1e59520 100644 --- a/mathesar_ui/src/systems/data-explorer/input-sidebar/transformations-pane/FilterTransformation.svelte +++ b/mathesar_ui/src/systems/data-explorer/input-sidebar/transformations-pane/FilterTransformation.svelte @@ -17,12 +17,10 @@ } - columns.get(column.id)?.column.display_name ?? ''} - getColumnConstraintType={() => undefined} disableColumnChange={limitEditing} layout="vertical" bind:columnIdentifier={model.columnIdentifier} diff --git a/mathesar_ui/src/systems/data-explorer/input-sidebar/transformations-pane/SortTransformation.svelte b/mathesar_ui/src/systems/data-explorer/input-sidebar/transformations-pane/SortTransformation.svelte index 8eb7107e03..d2bf47e487 100644 --- a/mathesar_ui/src/systems/data-explorer/input-sidebar/transformations-pane/SortTransformation.svelte +++ b/mathesar_ui/src/systems/data-explorer/input-sidebar/transformations-pane/SortTransformation.svelte @@ -10,14 +10,12 @@ export let limitEditing = false; - (column && columns.get(column.id)?.column.display_name) ?? ''} - getColumnConstraintType={() => undefined} disableColumnChange={limitEditing} bind:columnIdentifier={model.columnIdentifier} bind:sortDirection={model.sortDirection} diff --git a/mathesar_ui/src/systems/data-explorer/input-sidebar/transformations-pane/summarization/SummarizationTransformation.svelte b/mathesar_ui/src/systems/data-explorer/input-sidebar/transformations-pane/summarization/SummarizationTransformation.svelte index 3d6d8f411c..1ed992df9d 100644 --- a/mathesar_ui/src/systems/data-explorer/input-sidebar/transformations-pane/summarization/SummarizationTransformation.svelte +++ b/mathesar_ui/src/systems/data-explorer/input-sidebar/transformations-pane/summarization/SummarizationTransformation.svelte @@ -79,13 +79,11 @@
- (column && columns.get(column.id)?.column.display_name) ?? ''} - getColumnConstraintType={() => undefined} disableColumnChange={limitEditing} columnIdentifier={model.columnIdentifier} preprocFunctionIdentifier={model.preprocFunctionIdentifier} From 3a650ed79458e89f64aef9d29010239b1187413c Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Wed, 29 Mar 2023 12:39:04 +0200 Subject: [PATCH 172/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index 7251aa6f0a..ddffe56bcd 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -35,8 +35,8 @@ apt install locales build-essential acl ntp git python3-pip ipython3 zlib1g-dev ``` Now we need to add a new usergroup and allow passwordless login: ```sh -sudo groupadd deployers \ -useradd deployer \ +sudo groupadd deployers +useradd deployer usermod -a -G deployers deployer ``` Now you need to edit the `/etc/sudoers` file with the 'visudo' command, and add this line: `deployer ALL=(ALL) NOPASSWD: ALL` under the `# User privilege specification` section. If it fails to save, then edit again and move that to the last line of the file. Remember to use TAB between the username and the first `ALL` section From 5c2c28bddb8820cceff019dc64401def3ac597a9 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Wed, 29 Mar 2023 13:03:53 +0200 Subject: [PATCH 173/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index ddffe56bcd..3d8ac341e6 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -86,7 +86,7 @@ sudo update-alternatives --config python ### Step Two: Install PostGreSQL SSH to your server and run the following commands to update all the packages installed. ```sh -apt update && apt update +apt update && apt upgrade ``` Now we will install the dependencies for PostGreSQL. Note some of these may already be installed from a previous step. ```sh From 05bc55e33e59ab3497dfd3077447a412ff472a64 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Wed, 29 Mar 2023 13:36:14 +0200 Subject: [PATCH 174/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 33 +++++++++++++------------ 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index 3d8ac341e6..03cf55e421 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -121,7 +121,7 @@ Before we start, we first need to secure our database as the root user's passwor sudo su - postgres psql -c "alter user postgres with password 'StrongAdminP@ssw0rd'" ``` -Now we can create our database, and user. Replace `yourdbname`, `youruser` and `yourpass` with your own, secure variables. Remember the `;` after each command. +Now we can create our database, and user. Replace `yourdbname`, `youruser` and `yourpass` with your own, secure variables. Remember the `;` after each command. WRITE DOWN THESE SETTINGS. You will need them again later. ```sh sudo -u postgres psql #if you are not already in psql prompt CREATE DATABASE yourdbname; @@ -136,21 +136,6 @@ sudo -u postgres psql #if you are not already in psql prompt CREATE DATABASE djangodb; GRANT ALL PRIVILEGES ON DATABASE djangodb TO youruser; ``` -#### Create .env file for Django - -From the previous step, you will need your to fill in the following variables for Django: -` -You can generate the secret key here: https://djecrety.ir/ - -```sh -ALLOWED_HOSTS: "*" -SECRET_KEY= -DJANGO_DATABASE_KEY=default -DJANGO_DATABASE_URL=postgres://{{ DATABASE_USER }}:{{ DATABASE_PASSWORD }}@127.0.0.1:5432/{{ DJANGO_DATABASE_NAME }}" -MATHESAR_DATABASES=(mathesar_tables|postgresql://{{ DATABASE_USER }}:{{ DATABASE_PASSWORD }}@127.0.0.1:5432/{{ MATHESAR_DATABASE_NAME }}) -``` -This file can be placed in /var/www/mathesar.example.com/mathesar - ### Step Three: Install Nginx with Letsencrypt and Gurnicorn3 We will start off by installing Nginx on the system. This will already be in the Debian repository so simply run the install command. @@ -236,6 +221,22 @@ chgrp www-data /var/www/mathesar.example.com/ chown -R www-data:www-data /var/www/mathesar.example.com chmod 0755 /var/www/mathesar.example.com/ ``` +#### Create .env file for Django + +From the previous step, you will need your to fill in the following variables for Django: +` +You can generate the secret key here: https://djecrety.ir/ + +```sh +ALLOWED_HOSTS: "*" +SECRET_KEY= +DJANGO_DATABASE_KEY=default +DJANGO_DATABASE_URL=postgres://{{ DATABASE_USER }}:{{ DATABASE_PASSWORD }}@127.0.0.1:5432/{{ DJANGO_DATABASE_NAME }}" +MATHESAR_DATABASES=(mathesar_tables|postgresql://{{ DATABASE_USER }}:{{ DATABASE_PASSWORD }}@127.0.0.1:5432/{{ MATHESAR_DATABASE_NAME }}) +``` +This file can be placed in /var/www/mathesar.example.com/mathesar + + Next, we will install the Nginx site for mathesar.example.com. ```sh From 18167bf0513e2939151fcc230b16378021199a21 Mon Sep 17 00:00:00 2001 From: hemant-hc Date: Wed, 29 Mar 2023 17:48:42 +0530 Subject: [PATCH 175/553] Fix icon type for Unique Constraint, Foreign Key Constraint and Record Summary --- mathesar_ui/src/components/SelectColumn.svelte | 16 +++++++++++++++- .../constraints/NewUniqueConstraint.svelte | 14 +++++++++++++- .../record-summary/AppendColumn.svelte | 17 ++++++++++++++++- 3 files changed, 44 insertions(+), 3 deletions(-) diff --git a/mathesar_ui/src/components/SelectColumn.svelte b/mathesar_ui/src/components/SelectColumn.svelte index 6ca4e823c4..70127215c3 100644 --- a/mathesar_ui/src/components/SelectColumn.svelte +++ b/mathesar_ui/src/components/SelectColumn.svelte @@ -1,5 +1,6 @@ diff --git a/mathesar_ui/src/systems/table-view/constraints/NewUniqueConstraint.svelte b/mathesar_ui/src/systems/table-view/constraints/NewUniqueConstraint.svelte index e569cf442f..214e87a30d 100644 --- a/mathesar_ui/src/systems/table-view/constraints/NewUniqueConstraint.svelte +++ b/mathesar_ui/src/systems/table-view/constraints/NewUniqueConstraint.svelte @@ -56,6 +56,11 @@ return []; } + function getColumnConstraintTypeByColumnId(columnId: number) { + const linkFkType = $processedColumns.get(columnId)?.linkFk?.type; + return linkFkType ? [linkFkType] : undefined; + } + let constraintColumns: ProcessedColumn[] = []; let namingStrategy: NamingStrategy = 'auto'; let constraintName: string | undefined; @@ -128,7 +133,14 @@ autoClearInvalidValues={false} let:option > - + diff --git a/mathesar_ui/src/systems/table-view/table-inspector/record-summary/AppendColumn.svelte b/mathesar_ui/src/systems/table-view/table-inspector/record-summary/AppendColumn.svelte index b16a7f7072..f2cf1a29ca 100644 --- a/mathesar_ui/src/systems/table-view/table-inspector/record-summary/AppendColumn.svelte +++ b/mathesar_ui/src/systems/table-view/table-inspector/record-summary/AppendColumn.svelte @@ -1,13 +1,28 @@ diff --git a/mathesar_ui/src/components/group-entry/GroupEntry.svelte b/mathesar_ui/src/components/group-entry/GroupEntry.svelte index 34f8cfda64..4f43a84e0d 100644 --- a/mathesar_ui/src/components/group-entry/GroupEntry.svelte +++ b/mathesar_ui/src/components/group-entry/GroupEntry.svelte @@ -47,7 +47,9 @@ return allowedColumns; } - function getColumnConstraintTypeByColumnId(_columnId?: ColumnLikeType['id']) { + function getColumnConstraintTypeFromColumnId( + _columnId?: ColumnLikeType['id'], + ) { if (_columnId) { const column = columns.get(_columnId); if (column) { @@ -118,7 +120,7 @@ type: columnInfo?.column.type ?? 'unknown', type_options: columnInfo?.column.type_options ?? null, display_options: columnInfo?.column.display_options ?? null, - constraintsType: getColumnConstraintTypeByColumnId(option), + constraintsType: getColumnConstraintTypeFromColumnId(option), }} /> diff --git a/mathesar_ui/src/systems/table-view/actions-pane/record-operations/filter/FilterEntries.svelte b/mathesar_ui/src/systems/table-view/actions-pane/record-operations/filter/FilterEntries.svelte index 750b0c393d..24f8a8c300 100644 --- a/mathesar_ui/src/systems/table-view/actions-pane/record-operations/filter/FilterEntries.svelte +++ b/mathesar_ui/src/systems/table-view/actions-pane/record-operations/filter/FilterEntries.svelte @@ -9,6 +9,7 @@ } from '@mathesar/stores/table-data'; import type { FilterCombination } from '@mathesar/api/types/tables/records'; import { FilterEntry as FilterEntryComponent } from '@mathesar/components/filter-entry'; + import { getColumnConstraintTypeByColumnId } from '@mathesar/utils/columnUtils'; const dispatch = createEventDispatcher<{ remove: number; @@ -28,10 +29,8 @@ columns={$processedColumns} getColumnLabel={(column) => $processedColumns.get(column.id)?.column.name ?? ''} - getColumnConstraintType={(column) => { - const linkFkType = $processedColumns.get(column.id)?.linkFk?.type; - return linkFkType ? [linkFkType] : undefined; - }} + getColumnConstraintType={(column) => + getColumnConstraintTypeByColumnId(column.id, $processedColumns)} bind:columnIdentifier={entry.columnId} bind:conditionIdentifier={entry.conditionId} bind:value={entry.value} diff --git a/mathesar_ui/src/systems/table-view/actions-pane/record-operations/group/Group.svelte b/mathesar_ui/src/systems/table-view/actions-pane/record-operations/group/Group.svelte index aa4a460cad..e55022bf6e 100644 --- a/mathesar_ui/src/systems/table-view/actions-pane/record-operations/group/Group.svelte +++ b/mathesar_ui/src/systems/table-view/actions-pane/record-operations/group/Group.svelte @@ -8,6 +8,7 @@ } from '@mathesar/stores/table-data'; import GroupEntryComponent from '@mathesar/components/group-entry/GroupEntry.svelte'; import ColumnName from '@mathesar/components/column/ColumnName.svelte'; + import { getColumnConstraintTypeByColumnId } from '@mathesar/utils/columnUtils'; const tabularData = getTabularDataStoreFromContext(); @@ -42,11 +43,6 @@ }), ); } - - function getColumnConstraintTypeByColumnId(columnId: number) { - const linkFkType = $processedColumns.get(columnId)?.linkFk?.type; - return linkFkType ? [linkFkType] : undefined; - }
0}> @@ -58,7 +54,7 @@ columnsAllowedForSelection={availableColumns.map((entry) => entry.id)} getColumnLabel={(processedColumn) => processedColumn?.column.name ?? ''} getColumnConstraintType={(column) => - getColumnConstraintTypeByColumnId(column.id)} + getColumnConstraintTypeByColumnId(column.id, $processedColumns)} columnIdentifier={groupEntry.columnId} preprocFunctionIdentifier={groupEntry.preprocFnId} on:update={(e) => updateGrouping(index, e.detail)} @@ -87,7 +83,10 @@ display_options: $processedColumns.get(column.id)?.column.display_options ?? null, - constraintsType: getColumnConstraintTypeByColumnId(column.id), + constraintsType: getColumnConstraintTypeByColumnId( + column.id, + $processedColumns, + ), }} /> diff --git a/mathesar_ui/src/systems/table-view/actions-pane/record-operations/sort/Sort.svelte b/mathesar_ui/src/systems/table-view/actions-pane/record-operations/sort/Sort.svelte index 3aa663db0d..4085e8e107 100644 --- a/mathesar_ui/src/systems/table-view/actions-pane/record-operations/sort/Sort.svelte +++ b/mathesar_ui/src/systems/table-view/actions-pane/record-operations/sort/Sort.svelte @@ -8,6 +8,7 @@ import { iconAddNew } from '@mathesar/icons'; import SortEntry from '@mathesar/components/sort-entry/SortEntry.svelte'; import type { SortDirection } from '@mathesar/components/sort-entry/utils'; + import { getColumnConstraintTypeByColumnId } from '@mathesar/utils/columnUtils'; const tabularData = getTabularDataStoreFromContext(); @@ -56,10 +57,8 @@ columns={$processedColumns} columnsAllowedForSelection={availableColumnIds} getColumnLabel={(processedColumn) => processedColumn?.column.name ?? ''} - getColumnConstraintType={(column) => { - const linkFkType = $processedColumns.get(column.id)?.linkFk?.type; - return linkFkType ? [linkFkType] : undefined; - }} + getColumnConstraintType={(column) => + getColumnConstraintTypeByColumnId(column.id, $processedColumns)} columnIdentifier={columnId} {sortDirection} on:remove={() => removeSortColumn(columnId)} diff --git a/mathesar_ui/src/systems/table-view/constraints/NewUniqueConstraint.svelte b/mathesar_ui/src/systems/table-view/constraints/NewUniqueConstraint.svelte index 214e87a30d..cdb68bc107 100644 --- a/mathesar_ui/src/systems/table-view/constraints/NewUniqueConstraint.svelte +++ b/mathesar_ui/src/systems/table-view/constraints/NewUniqueConstraint.svelte @@ -17,6 +17,7 @@ import { getAvailableName } from '@mathesar/utils/db'; import ColumnName from '@mathesar/components/column/ColumnName.svelte'; import ConstraintNameHelp from './__help__/ConstraintNameHelp.svelte'; + import { getColumnConstraintTypeByColumnId } from '@mathesar/utils/columnUtils'; export let onClose: (() => void) | undefined = undefined; @@ -56,11 +57,6 @@ return []; } - function getColumnConstraintTypeByColumnId(columnId: number) { - const linkFkType = $processedColumns.get(columnId)?.linkFk?.type; - return linkFkType ? [linkFkType] : undefined; - } - let constraintColumns: ProcessedColumn[] = []; let namingStrategy: NamingStrategy = 'auto'; let constraintName: string | undefined; @@ -138,6 +134,7 @@ ...option.column, constraintsType: getColumnConstraintTypeByColumnId( option.column.id, + $processedColumns, ), }} /> diff --git a/mathesar_ui/src/systems/table-view/table-inspector/record-summary/AppendColumn.svelte b/mathesar_ui/src/systems/table-view/table-inspector/record-summary/AppendColumn.svelte index f2cf1a29ca..8dfbcdd180 100644 --- a/mathesar_ui/src/systems/table-view/table-inspector/record-summary/AppendColumn.svelte +++ b/mathesar_ui/src/systems/table-view/table-inspector/record-summary/AppendColumn.svelte @@ -16,6 +16,7 @@ if (linkFkType) { return true; } + return false; } function getIcon(column: Column) { diff --git a/mathesar_ui/src/utils/columnUtils.ts b/mathesar_ui/src/utils/columnUtils.ts index 26835dc438..ee37b24df9 100644 --- a/mathesar_ui/src/utils/columnUtils.ts +++ b/mathesar_ui/src/utils/columnUtils.ts @@ -10,6 +10,7 @@ import { getAbstractTypeForDbType, } from '@mathesar/stores/abstract-types'; import { getAvailableName } from '@mathesar/utils/db'; +import type { ProcessedColumn } from '@mathesar/stores/table-data'; import { makeSingular } from './languageUtils'; export function getColumnIconProps( @@ -51,3 +52,8 @@ export function columnNameIsAvailable( msg, ); } + +export function getColumnConstraintTypeByColumnId(columnId: number, processedColumns: Map) { + const linkFkType = processedColumns.get(columnId)?.linkFk?.type; + return linkFkType ? [linkFkType] : undefined; +} From 40a8f8353e3263d57d24aa78a05d51b69ec6e9d5 Mon Sep 17 00:00:00 2001 From: hemant-hc Date: Wed, 29 Mar 2023 20:42:44 +0530 Subject: [PATCH 177/553] Fix for linting issues --- mathesar_ui/src/components/SelectColumn.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mathesar_ui/src/components/SelectColumn.svelte b/mathesar_ui/src/components/SelectColumn.svelte index 0217d41c4b..fce179fdb7 100644 --- a/mathesar_ui/src/components/SelectColumn.svelte +++ b/mathesar_ui/src/components/SelectColumn.svelte @@ -2,8 +2,8 @@ import { Select } from '@mathesar-component-library'; import { getTabularDataStoreFromContext } from '@mathesar/stores/table-data'; import type { Column } from '@mathesar/api/types/tables/columns'; - import ColumnName from './column/ColumnName.svelte'; import { getColumnConstraintTypeByColumnId } from '@mathesar/utils/columnUtils'; + import ColumnName from './column/ColumnName.svelte'; // Additional classes let classes = ''; From 7cdc94398af6cadd9787431e8337c3c475c3a1a8 Mon Sep 17 00:00:00 2001 From: hemant-hc Date: Wed, 29 Mar 2023 21:08:17 +0530 Subject: [PATCH 178/553] fix for format and lint issues --- .../table-view/constraints/NewUniqueConstraint.svelte | 2 +- mathesar_ui/src/utils/columnUtils.ts | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/mathesar_ui/src/systems/table-view/constraints/NewUniqueConstraint.svelte b/mathesar_ui/src/systems/table-view/constraints/NewUniqueConstraint.svelte index cdb68bc107..88f6e56430 100644 --- a/mathesar_ui/src/systems/table-view/constraints/NewUniqueConstraint.svelte +++ b/mathesar_ui/src/systems/table-view/constraints/NewUniqueConstraint.svelte @@ -16,8 +16,8 @@ import Form from '@mathesar/components/Form.svelte'; import { getAvailableName } from '@mathesar/utils/db'; import ColumnName from '@mathesar/components/column/ColumnName.svelte'; - import ConstraintNameHelp from './__help__/ConstraintNameHelp.svelte'; import { getColumnConstraintTypeByColumnId } from '@mathesar/utils/columnUtils'; + import ConstraintNameHelp from './__help__/ConstraintNameHelp.svelte'; export let onClose: (() => void) | undefined = undefined; diff --git a/mathesar_ui/src/utils/columnUtils.ts b/mathesar_ui/src/utils/columnUtils.ts index ee37b24df9..c95ee8bccb 100644 --- a/mathesar_ui/src/utils/columnUtils.ts +++ b/mathesar_ui/src/utils/columnUtils.ts @@ -53,7 +53,10 @@ export function columnNameIsAvailable( ); } -export function getColumnConstraintTypeByColumnId(columnId: number, processedColumns: Map) { +export function getColumnConstraintTypeByColumnId( + columnId: number, + processedColumns: Map, +) { const linkFkType = processedColumns.get(columnId)?.linkFk?.type; return linkFkType ? [linkFkType] : undefined; } From 68979ddb0bf82c7987ec2a56522ba13d826557fa Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Thu, 30 Mar 2023 10:08:27 +0200 Subject: [PATCH 179/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index 03cf55e421..a66a4e4330 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -20,8 +20,8 @@ Installation should only take a few minutes. - Prerequisites - Ubuntu 22 with at least `60 GB` disk space and `4GB` of RAM. - Root privileges - - Domain name, or subdomain, for your installation. We will use `mathesar.example.com` as the domain for our website - - Python 3.9 + - Domain name, or subdomain, for your installation. We will use `mathesar.example.com` as the domain for our website. `IMPORTANT! Pay close attention to all commands / blocks of code as your FQDN/URL will be used in quite a few places. It is important you change it everywhere.` + - Python 3.9 (We will install this. ### Step one: Prepare the server First, we need to update the software repository and upgrade all packages using the apt command below. SSH to your server and elevate to the `root` user. From 1664fd8f310442cff484b3495f86f33957feef73 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Thu, 30 Mar 2023 10:08:56 +0200 Subject: [PATCH 180/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index a66a4e4330..b19d0668b6 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -20,8 +20,9 @@ Installation should only take a few minutes. - Prerequisites - Ubuntu 22 with at least `60 GB` disk space and `4GB` of RAM. - Root privileges - - Domain name, or subdomain, for your installation. We will use `mathesar.example.com` as the domain for our website. `IMPORTANT! Pay close attention to all commands / blocks of code as your FQDN/URL will be used in quite a few places. It is important you change it everywhere.` - - Python 3.9 (We will install this. + - Domain name, or subdomain, for your installation. We will use `mathesar.example.com` as the domain for our website. +`IMPORTANT! Pay close attention to all commands / blocks of code as your FQDN/URL will be used in quite a few places. It is important you change it everywhere.` + - Python 3.9 (We will install this.) ### Step one: Prepare the server First, we need to update the software repository and upgrade all packages using the apt command below. SSH to your server and elevate to the `root` user. From d184255e89b7bb105b4f02b17d549d9f7654cb61 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Thu, 30 Mar 2023 10:44:04 +0200 Subject: [PATCH 181/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index b19d0668b6..c44656ff80 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -400,7 +400,7 @@ WantedBy=multi-user.target ``` The permissions for the file must be 0644 so run this when you are done: `chmod 0644 /lib/systemd/system/gunicorn.service` -Next we will create the Gunicorn systemd socker. You must create the file here: `/lib/systemd/system/gunicorn.socket` and copy the following code into it. Pay attention as you have to edit the code according to your FQDN / URL. +Next we will create the Gunicorn systemd socker. You must create the file here: `/lib/systemd/system/gunicorn.socket` and copy the following code into it. ```sh [Unit] @@ -418,7 +418,7 @@ WantedBy=sockets.target ``` The permissions for the file must be 0644 so run this when you are done: `chmod 0644 /lib/systemd/system/gunicorn.socket` -Next we will create the Gunicorn environment file for the service. You must create the file here: `/etc/gunicorn-env` and copy the following code into it. Pay attention as you have to edit the code according to your FQDN / URL. +Next we will create the Gunicorn environment file for the service. You must create the file here: `/etc/gunicorn-env` and copy the following code into it. ```sh {% for k,v in django_settings.items() %} {{ k }}={{ v }} From 72fa5e933e973df196bcd4cc1b022b58b038802a Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Thu, 30 Mar 2023 12:10:59 +0200 Subject: [PATCH 182/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index c44656ff80..f527838e73 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -444,15 +444,17 @@ We can now clone the Mathesar repo into our working folder. cd /var/www/mathesar.example.com/ git clone https://github.com/centerofci/mathesar.git ``` -Once this is installed we will install from requirements.txt -```sh -pip install -r requirements.txt -``` Next we will activate our virtual environment with the following command: ```sh . /opt/virtualenvs/mathesar/bin/activate ``` +Once this is installed we will install from requirements.txt +```sh +pip install -r requirements.txt +``` + + We will call the Django Settings, and then apply the migration: ```sh $(sudo cat /var/www/mathesar.example.com/mathesar/.env) From 4faf130e47237e64dd46cfd2f0a31f06fce94ea5 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Thu, 30 Mar 2023 12:15:38 +0200 Subject: [PATCH 183/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index f527838e73..a5dcf39dc1 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -436,7 +436,10 @@ We need to create a virtual environment for the Mathesar application. We will d ```sh python3.9 -m venv /opt/virtualenvs/mathesar ``` - +Next we will activate our virtual environment with the following command: +```sh +. /opt/virtualenvs/mathesar/bin/activate +``` #### Clone the Mathesar repo We can now clone the Mathesar repo into our working folder. @@ -444,17 +447,12 @@ We can now clone the Mathesar repo into our working folder. cd /var/www/mathesar.example.com/ git clone https://github.com/centerofci/mathesar.git ``` -Next we will activate our virtual environment with the following command: -```sh -. /opt/virtualenvs/mathesar/bin/activate -``` Once this is installed we will install from requirements.txt ```sh -pip install -r requirements.txt +pip3 install -r requirements.txt ``` - We will call the Django Settings, and then apply the migration: ```sh $(sudo cat /var/www/mathesar.example.com/mathesar/.env) From e2726ae0a0fc8e7bf6475a6210c29df79d74f9dc Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Thu, 30 Mar 2023 12:30:28 +0200 Subject: [PATCH 184/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index a5dcf39dc1..3df45ddeea 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -456,7 +456,7 @@ pip3 install -r requirements.txt We will call the Django Settings, and then apply the migration: ```sh $(sudo cat /var/www/mathesar.example.com/mathesar/.env) -python3.9 /var/www/mathesar.example.com/manage.py migrate +python /var/www/mathesar.example.com/manage.py migrate ``` Once the migration is done, we need to build the static files. From 976701d6ccb027141a90df4afc1bd37389f9eb90 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Thu, 30 Mar 2023 12:31:20 +0200 Subject: [PATCH 185/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index 3df45ddeea..e736f8f233 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -456,13 +456,13 @@ pip3 install -r requirements.txt We will call the Django Settings, and then apply the migration: ```sh $(sudo cat /var/www/mathesar.example.com/mathesar/.env) -python /var/www/mathesar.example.com/manage.py migrate +python /var/www/mathesar.example.com/mathesar/manage.py migrate ``` Once the migration is done, we need to build the static files. Firstly, go to the mathesar_ui folder and run `npm i`: ```sh -cd /var/www/mathesar.example.com/mathesar_ui && npm i +cd /var/www/mathesar.example.com/mathesar/mathesar_ui && npm i ``` You may be required to update / install additional packages and you can go ahead and to that. Once this is done we can build our static files: ```sh From bf65786b4393d2195d0f752363a5f4f658e7357e Mon Sep 17 00:00:00 2001 From: Aritra8438 Date: Thu, 30 Mar 2023 16:26:51 +0530 Subject: [PATCH 186/553] Changed the Delimiter of The Test Csv --- .../data/csv_parsing/patents_invalid.csv | 2790 ++++++++--------- 1 file changed, 1395 insertions(+), 1395 deletions(-) diff --git a/mathesar/tests/data/csv_parsing/patents_invalid.csv b/mathesar/tests/data/csv_parsing/patents_invalid.csv index f71ddfccec..96478af390 100644 --- a/mathesar/tests/data/csv_parsing/patents_invalid.csv +++ b/mathesar/tests/data/csv_parsing/patents_invalid.csv @@ -1,1395 +1,1395 @@ -"Center";"Status";"Case Number";"Patent Number";"Application SN";"Title";"Patent Expiration Date" -"NASA Kennedy Space Center";"Application";"KSC-12871";0;"13/033,085";"Polyimide Wire Insulation Repair System"; -"NASA Ames Research Center";"Issued";"ARC-14048-1";5694939;"08/543,093";"Autogenic-Feedback Training Exercise Method & System";"10/03/2015" -"NASA Ames Research Center";"Issued";"ARC-14231-1";6109270;"09/017,519";"Multimodality Instrument For Tissue Characterization";"02/04/2017" -"NASA Ames Research Center";"Issued";"ARC-14231-2DIV";6976013;"10/874,003";"Metrics For Body Sensing System";"06/16/2024" -"NASA Ames Research Center";"Issued";"ARC-14231-3";6718196;"09/652,299";"Multimodality Instrument For Tissue Characterization";"02/04/2017" -"NASA Ames Research Center";"Issued";"ARC-14275-1";6445390;"09/226,673";"Automated Triangle Geometry Processing For Surface Modeling And Cartesian Grid Generation (CART3D)";"12/24/2018" -"NASA Ames Research Center";"Issued";"ARC-14281-1";6606612;"09/374,491";"Aerodynamic Design Using Neural Networks";"08/13/2019" -"NASA Ames Research Center";"Issued";"ARC-14281-3";7191161;"10/637,087";"Method For Constructing Composite Response Surfaces By Combining Neural Networks With Polynomial Interpolation Or Estimation Techniques";"11/18/2020" -"NASA Ames Research Center";"Issued";"ARC-14359-1";6314362;"09/498,123";"A Direct-To Controller Tool (A Component Of The CTAS Software Suite)";"02/02/2020" -"NASA Ames Research Center";"Issued";"ARC-14494-1";6720984;"09/606,107";"Bio-Electric Keyboard/Mouse/Joystick Interface Software/Algorithm";"06/13/2020" -"NASA Ames Research Center";"Issued";"ARC-14512-1";6823333;"09/800,309";"Keyword-in-context Search Method And Software For Information Retrieval From Collections Of Text Documents (Quorum/Perilog)";"03/02/2021" -"NASA Ames Research Center";"Issued";"ARC-14513-1";6741981;"09/800,311";"Model-based Phrase Search Method And Software For Information Retrieval From Collections Of Text Documents (Quorum/Perilog)";"09/14/2021" -"NASA Ames Research Center";"Issued";"ARC-14514-1";6697793;"09/800,313";"Method And Software For Using Implicit Phrase Models To Generate Prominent Phrases Contained In Collections Of Text Documents (Quorum/Perilog)";"03/02/2021" -"NASA Ames Research Center";"Issued";"ARC-14515-1";6721728;"09/800,310";"Method And Software For Extracting And Distilling Topically And Situationally Relevant Phrases From Collections Of Text Documents (Quorum/Perilog)";"07/26/2021" -"NASA Ames Research Center";"Issued";"ARC-14556-1";7346172;"09/822470";"Spatially-modulated Auditory Alert Having Enhanced Detection";"08/24/2022" -"NASA Ames Research Center";"Issued";"ARC-14569-1";7783130;"11/045,041";"Spatial Standard Observer";"03/26/2028" -"NASA Ames Research Center";"Issued";"ARC-14569-2";8139892;"12/807,375";"Spatial Standard Observer";"01/24/2025" -"NASA Ames Research Center";"Issued";"ARC-14586-1DIV";7293001;"11/274,744";"A Hybrid Neural Network And Support Vector Machine Method For Optimization";"01/07/2022" -"NASA Ames Research Center";"Issued";"ARC-14613-1";6858197;"10/099,247";"A Novel Technique That Allows For The Deposition And Patterning Of A Catalyst Onto A Surface For The Growth Of Single-Walled Carbon Nanotubes";"11/30/2019" -"NASA Ames Research Center";"Issued";"ARC-14652-1";7375826;"10/956,517";"3D Laser Scanner";"03/25/2026" -"NASA Ames Research Center";"Issued";"ARC-14653-1";7702427;"10/914,783";"Future ATM (Air Traffic Management) Concepts Evaluation Tool (FACET)";"07/30/2024" -"NASA Ames Research Center";"Issued";"ARC-14653-2";8290696;"12/694,966";"Future ATM (Air Traffic Management) Concepts Evaluation Tool (FACET)";"07/30/2024" -"NASA Ames Research Center";"Issued";"ARC-14661-1";7276266;"10/320,698";"A Plasma Apparatus And Process For Functionalization Of Carbon Nanotubes";"12/13/2022" -"NASA Ames Research Center";"Issued";"ARC-14661-2";7473436;"10/828,524";"Improved Functionalization Of Carbon Nanotubes";"12/13/2022" -"NASA Ames Research Center";"Issued";"ARC-14661-3";7767270;"11/387,503";"Selective Functionalization Of Carbon Nanotubes Based Upon Distance Traveled";"11/05/2025" -"NASA Ames Research Center";"Issued";"ARC-14662-1";6968338;"10/232,975";"Advanced XML Database Integration Technique For Managing Unstructured Documents (NETMARK) (Part of NTTS Suite)";"07/18/2023" -"NASA Ames Research Center";"Issued";"ARC-14682-2";7333735;"10/885,533";"Communication Using VCSEL Laser Array";"11/03/2023" -"NASA Ames Research Center";"Issued";"ARC-14710-1";7231329;"10/706,478";"Elimination Of Parameter Input Requirement For Elliptic Grid Generation Methods In Engineering";"03/11/2025" -"NASA Ames Research Center";"Issued";"ARC-14733-1";6972056;"10/135,013";"An Environmentally Compatible Method To Purify Carbon Nanotubes";"01/03/2023" -"NASA Ames Research Center";"Issued";"ARC-14743-1";7767305;"10/758611";"High-Efficiency Tantalum-Based Ceramics (HETC)";"01/14/2024" -"NASA Armstrong Flight Research Center";"Issued";"DRC-008-014";8047472;"12/45,970";"IMPROVED RAM BOOSTER";"03/11/2028" -"NASA Ames Research Center";"Issued";"ARC-14744-1US";7816491;"10/494,853";"Ordered Biological Nanostructures Formed From Chaperonin Polypeptides";"05/06/2024" -"NASA Ames Research Center";"Issued";"ARC-14744-2";7795388;"11/194,991";"A Versatile Platform For Nanotechnology Based On Circular Permutations Of Chaperonin Protein";"05/06/2024" -"NASA Ames Research Center";"Issued";"ARC-14940-1";7135172;"10/238,515";"Bucky Paper As An Artificial Support Membrane In Retinal Cell Transplantation";"06/12/2024" -"NASA Ames Research Center";"Issued";"ARC-14941-1";6755530;"10/198,672";"Carbon Nanotubes As A Prototype Interface For Retinal Cell Recording And Stimulation (Vision Chip)";"10/18/2022" -"NASA Ames Research Center";"Issued";"ARC-14950-1";7596416;"10/928,874";"Program Management Tool (PMT) Also Known As Business Intelligence (BI)";"07/22/2027" -"NASA Ames Research Center";"Issued";"ARC-14950-2";8224472;"12/211,439";"Enhanced Project Management Tool";"10/20/2026" -"NASA Ames Research Center";"Issued";"ARC-14970-1";7129857;"10/789,049";"Intelligent Weather Agent";"07/20/2024" -"NASA Ames Research Center";"Issued";"ARC-15040-1";8200486;"10/457,696";"Sub Auditory Speech Recognition Based On Electromyographic Signals";"09/14/2025" -"NASA Ames Research Center";"Issued";"ARC-15041-2";7206674;"10/923,156";"Information Display System For Atypical Flight Phase";"05/21/2024" -"NASA Ames Research Center";"Issued";"ARC-15042-2";7217650;"10/816,576";"Metallic Nanowire Interconnections For Integrated Circuit Fabrication";"03/11/2023" -"NASA Ames Research Center";"Issued";"ARC-15058-1";7383238;"10/789,029";"Inductive Monitoring System - System Health Monitoring Software That Learns System Behavior From Data (IMS)";"03/12/2025" -"NASA Ames Research Center";"Issued";"ARC-15073-1";7590606;"10/703,039";"InvestigationOrganizer: Information Storage, Modeling And Visualization Support For Accident/Mishap Investigations (Part Of A Suite Of Software That Includes ARC-15069, ARC-15070 And ARC-15073) ";"04/30/2026" -"NASA Ames Research Center";"Issued";"ARC-15088-1";7070923;"10/608,884";"Carbon Nanotube Bucky Paper Cages For Immune Shielding Of Cells And Tissue For Transplantation";"09/20/2023" -"NASA Ames Research Center";"Issued";"ARC-15101-1";7113265;"10/808,704";"Sample Handling Device For X-ray Diffraction Instruments";"03/17/2024" -"NASA Ames Research Center";"Issued";"ARC-15157-1";7286573;"10/923,160";"A Method Of Converting Quantum Wells From Type-II To Type-I And Of Enhancing Interband Optical Gain ";"03/11/2025" -"NASA Ames Research Center";"Issued";"ARC-15171-1";7650232;"11/239,456";"Trajectory Specification For High-Capacity Air Traffic Control";"05/25/2027" -"NASA Ames Research Center";"Issued";"ARC-15173-1";7273095;"10/825,795";"Embedded Carbon Nanotube Array As High Performance Thermal Conductors";"03/11/2023" -"NASA Ames Research Center";"Issued";"ARC-15173-2";7784531;"11/900,131";"Nanoengineered Thermal Materials Based On Carbon Nanotube Array Composites";"02/16/2024" -"NASA Ames Research Center";"Issued";"ARC-15201-1";7381459;"10/779,504";"Toughened Uni-piece Fibrous Reduced Oxidation Ceramic (TUFROC) Light-Weight Thermal Protection System For Use On Space Vehicles During Atmospheric Entry At Hypersonic Speed";"02/12/2024" -"NASA Ames Research Center";"Issued";"ARC-15201-2";7314648;"10/911,747";"Toughened Uni-piece Fibrous Reinforced Oxidation-Resistant Composite (TUFROC)";"02/12/2024" -"NASA Ames Research Center";"Issued";"ARC-15204-1";7949472;"10/885,537";"Nanopore Pipetts For Structural Characterization Of Single Polymeric Biomelecules";"01/14/2026" -"NASA Ames Research Center";"Issued";"ARC-15204-1DIV";8494782;"13/092,048";"Nanopore Pipetts For Structural Characterization Of Single Polymeric Biomelecules";"06/24/2024" -"NASA Ames Research Center";"Issued";"ARC-15205-1";7939734;"10/873,996";"The Electrochemical Biosensors Using Carbon Nanotube Nanoelectrode Arrays";"06/14/2024" -"NASA Ames Research Center";"Issued";"ARC-15312-1";7672969;"11/513,429";"Context Based Configuration Management Concept";"08/25/2026" -"NASA Ames Research Center";"Issued";"ARC-15314-1";7718223;"11/007,913";"Provision Of Carbon Nanotube Arrays Of Variable Density For IC Hot Spot Control";"02/12/2027" -"NASA Ames Research Center";"Issued";"ARC-15314-2";7704547;"11/472,516";"Carbon Nanotube Growth Density Control";"12/07/2024" -"NASA Ames Research Center";"Issued";"ARC-15315-1";7378963;"11/239,449";"Reconfigurable Auditory-visual Display For Multi-channel Control Center And Rescue Communications";"01/06/2026" -"NASA Ames Research Center";"Issued";"ARC-15356-2";7161501;"11/66,650";"Display Of Aircraft Energy State For Flight Operations Quality Assurance (FOQA) Programs";"09/22/2024" -"NASA Ames Research Center";"Issued";"ARC-15356-3";7212135;"11/066649";"Real-Time Analysis And Display Of Aircraft Approach Maneuvers ";"09/22/2024" -"NASA Ames Research Center";"Issued";"ARC-15370-1";7698274;"10/956,524";"Selective Access And Editing In A Database (Part of NTTS Suite)";"03/18/2027" -"NASA Ames Research Center";"Issued";"ARC-15392-1";7313475;"11/053,713";"Delay Banking: Collaborative Decision Making For Airspace-user Priority In Tactical Flow Restrictions";"04/04/2025" -"NASA Ames Research Center";"Issued";"ARC-15404-1";7288490;"11/009,854";"Use Of A Single Electrode To Orient Carbon Nanotube Growth";"12/07/2024" -"NASA Ames Research Center";"Issued";"ARC-15437-1";7438422;"11/340,816";"Low Cost Portable Planetarium Imaging System";"05/14/2027" -"NASA Ames Research Center";"Issued";"ARC-15443-1";7531775;"11/251,006";"A Tracking Sunphotometer Without Moving Parts ";"01/31/2026" -"NASA Ames Research Center";"Issued";"ARC-15460-1";7426848;"11/203,576";"Discharge Based Gas Sensor Array Using Self-Oriented Regular Vertical Array Of Carbon Nanotubes";"08/05/2025" -"NASA Ames Research Center";"Issued";"ARC-15462-1";7574338;"11/340002";"Finite-Difference Simulation And Visualization Of Elastodynamics In Time-Evolving Generalized Curvilinear Coordinates ";"07/29/2026" -"NASA Ames Research Center";"Issued";"ARC-15487-1";7796026;"11/111,620";"Electronic Firefighter Escape Trail";"06/04/2028" -"NASA Ames Research Center";"Issued";"ARC-15506-1";7529633;"11/203,589";"Applications Of Carbon Nanotube Hold-Off Voltages";"10/22/2026" -"NASA Ames Research Center";"Issued";"ARC-15519-1";7574357;"11/169,265";"Security Applications For Subvocal Speech";"11/09/2026" -"NASA Ames Research Center";"Issued";"ARC-15566-1";7801687;"11/178,079";"Gas Sensors Based on Coated and Doped Carbon Nanotubes";"05/26/2029" -"NASA Ames Research Center";"Issued";"ARC-15566-2";8000903;"11/416,505";"Coated Or Doped Carbon Nanotube Network Sensors As Affected By Environmental Parameters And Elapsed Time";"09/15/2029" -"NASA Ames Research Center";"Issued";"ARC-15566-3";7875455;"11/489,803";"Nanotechnology Sensors For Determination Of Chemical Substances In An Oil Reservoir";"12/17/2028" -"NASA Ames Research Center";"Issued";"ARC-15566-5";7623972;"11/591,630";"Detection Of Presence Of Chemical Precursors";"07/08/2025" -"NASA Ames Research Center";"Issued";"ARC-15575-1";7473930;"11/173,053";"Use Of Carbon Nanotube Arrays For Display Purposes";"10/24/2026" -"NASA Ames Research Center";"Issued";"ARC-15578-2";7873181;"11/525,600";"Visual Signal Sensor Organ Replacement: Implementation";"05/19/2028" -"NASA Ames Research Center";"Issued";"ARC-15606-1";7431242;"11/265,324";"Aero Assist Capsule Vehicle Geometry For Atmospheric Entry";"04/01/2026" -"NASA Ames Research Center";"Issued";"ARC-15684-1";7516890;"11/444,807";"InterIssued Inventory Monitoring";"05/25/2026" -"NASA Ames Research Center";"Issued";"ARC-15714-1";7869029;"11/398,733";"Light Collimator And Monitor";"11/11/2029" -"NASA Ames Research Center";"Issued";"ARC-15782-1";7549338;"11/973998";"Nanotechnology Sensor Of Presence And Concentration Of A Target Molecule";"09/28/2027" -"NASA Ames Research Center";"Issued";"ARC-15796-1";8675922;"13/444,777";"Motion Blur Evaluation Techniques";"08/31/1932" -"NASA Ames Research Center";"Issued";"ARC-15870-1";7655497;"11/513,431";"Growth Method For Phase Change Nanostructures";"08/16/2027" -"NASA Ames Research Center";"Issued";"ARC-15890-1";7655145;"11/543,275";"Water Treatment Systems For Long Space Flight Use";"11/05/2027" -"NASA Ames Research Center";"Issued";"ARC-15900-1";7490367;"11/526,175";"Wet Waste Drying Bag";"09/20/2026" -"NASA Ames Research Center";"Issued";"ARC-15903-1DIV";8409491;"13/215,206";"In-situ Formation Of Reinforcement Phases In Ceramic Composites And Ultra High Temperature Ceramic Composites For Advanced TPS Applications";"09/28/2027" -"NASA Ames Research Center";"Issued";"ARC-15967-1";7635420;"11/645,267";"Dielectrophoresis-Based Particle Sensor Using Nanoelectrode Arrays";"06/06/2028" -"NASA Ames Research Center";"Application";"ARC-15977-1";0;"12/100,378";"Artificial Immune System Based Approach For Air Combat Maneuvering"; -"NASA Ames Research Center";"Application";"ARC-15981-4";;"13/463,780";"Chaperonin-based Templates for Pseudo-cellulosomes with Multiple Enzymes Present";"07/19/2027" -"NASA Ames Research Center";"Issued";"ARC-15983-1";7923709;"12/273,502";"Radiation Shielding System Using A Composite Of Hydrogen-Rich Polymers Loaded With Carbon Nanotubes";"09/30/2029" -"NASA Ames Research Center";"Application";"ARC-16478-1";;"14/191,246";"Real Time PIREPs Using Audio Twitter";"02/26/1934" -"NASA Ames Research Center";"Issued";"ARC-15995-1";8290246;"11/958,296";"A Method To Measure The Recession Of Ablative Materials In Arc-jet Testing Using Digital Stereo-photogrammetry And Image Cross-correlation";"07/01/1931" -"NASA Ames Research Center";"Issued";"ARC-16013-1";7968054;"11/715,785";"Wireless Chemical Sensor Data Transmission System Based On Nanotechnology";"10/03/2029" -"NASA Ames Research Center";"Issued";"ARC-16018-1";7662459;"12/175,379";"Atmospheric Entry Heat Shield Employing Cured Thermal Protection Material Blocks Bonded In A Large-Cell Honeycomb Matrix";"07/17/2028" -"NASA Ames Research Center";"Application";"ARC-16132-1";0;"14/091,250";"Surface Densification Of Phenolic Impregnated Carbon Ablator (PICA)";"11/26/1933" -"NASA Ames Research Center";"Issued";"ARC-16133-1";8069001;"12/319,918";"Hollow AErothermal Ablation And Temperature (HEAT) Isotherm Sensor For Tracking Isotherm Through The TPS Material";"10/09/2029" -"NASA Ames Research Center";"Application";"ARC-16211-1";0;"13/896,284";"Low Cost Optical Fiber Solar Cell Configurations";"05/16/1933" -"NASA Ames Research Center";"Issued";"ARC-16235-1";8285659;"12/543,411";"Modeling-Error-Driven Performance-Seeking Direct Adaptive Control";"11/18/1930" -"NASA Ames Research Center";"Application";"ARC-16273-1";0;"12/454,024";"Decomposition Technique for Remaining Useful Life Prediction";"11/18/1930" -"NASA Ames Research Center";"Issued";"ARC-16280-1";8409845;"12/316,557";"Offshore membrane enclosures for dewatering Algae (OMEDA)";"10/15/1931" -"NASA Ames Research Center";"Issued";"ARC-16298-1";8333810;"12/398,854";"Nanotechnology-Based Supercapacitor";"06/29/1930" -"NASA Ames Research Center";"Issued";"ARC-16320-1";8332342;"12/622,407";"Battery Prognostics using Particle Filtering Techniques";"02/05/1931" -"NASA Ames Research Center";"Issued";"ARC-16331-1";8408707;"12/428,441";"System to estimate visual acuity from wavefront aberrations";"05/29/2029" -"NASA Ames Research Center";"Issued";"ARC-16334-1";8244477;"12/478,667";"Estimation of Growth Stage and Growth Rate for Algae";"06/04/2029" -"NASA Ames Research Center";"Application";"ARC-16337-1";0;"13/793,998";"Method and Device for Biometric Subject Verification and Identification Based Upon electrocardiographic signals";"03/11/1933" -"NASA Ames Research Center";"Application";"ARC-16340-1";0;"13/645,284";"Method for formation and manufacture of carbon nanotube mesh bucky paper capsules for transplantation of cells and tissue and implantation of medical devices";"10/04/1932" -"NASA Ames Research Center";"Issued";"ARC-16342-1";8412469;"12/698,996";"Advanced Sensor Technology for Algal Biotechnology (ASTAB) ";"12/16/1930" -"NASA Ames Research Center";"Application";"ARC-16348-1";;"13/109,954";"Co-Optimized Blunt-Body ReEntry Vehicle Aerothermodynamic Parametric Shape and Multi-Discipline Optimization Design Process"; -"NASA Ames Research Center";"Issued";"ARC-16351-1";8498756;"13/213,022";"Hovercraft Landing System";"12/07/1931" -"NASA Ames Research Center";"Issued";"ARC-16370-1";8375675;"12/574,493";"Self Aligning Lug for adapting carbon fiber rods to a bolted metallic connection";"05/07/1931" -"NASA Ames Research Center";"Application";"ARC-16372-1";0;"13/794,061";"Inexpensive Cooling Systems for Devices";"03/11/1933" -"NASA Ames Research Center";"Issued";"ARC-16373-1";8489181;"12/319,220";"Heart Electrical Actions as Biometric Indicia";"04/29/1932" -"NASA Ames Research Center";"Application";"ARC-16405-1";0;"14/091,236";"Nanowire based piezoelectric power generation";"11/26/1933" -"NASA Ames Research Center";"Issued";"ARC-16407-1";8337208;"12/622,374";"Content Analysis to Detect High Stress in Oral Interviews and Text Documents";"05/26/1931" -"NASA Ames Research Center";"Application";"ARC-16419-1";0;"13/317,034";"Strobing to Mitigate Vibration for Display Legibility";"10/05/1932" -"NASA Ames Research Center";"Application";"ARC-16450-1CIP";0;"13/720,898";"Distributed Prognostics and Health Management with a Wireless Network Architecture ";"05/05/2029" -"NASA Ames Research Center";"Application";"ARC-16456-1";;"13/480,917";"FABRICATION OF NANOPIPETTE ARRAY FOR BIOSENSING"; -"NASA Ames Research Center";"Application";"ARC-16461-1";;"13/956,218";"Solar Powered CO2 Conversions with Thin Film Devices";"07/31/1933" -"NASA Ames Research Center";"Application";"ARC-16466-1";;"14/010,322";"Combined HETC/ROCCI TPS Material for Temperatures Up To T=3200 F ";"08/26/1933" -"NASA Ames Research Center";"Application";"ARC-16467-1";;"13/615,202";"ODVEC: Outlier Detection Via Estimating Clusters"; -"NASA Ames Research Center";"Application";"ARC-16607-1";;"13/658,749";"An Approach to Make Flexible Ablators that are Flexible Char Formers";"10/23/1932" -"NASA Ames Research Center";"Application";"ARC-16621-1";;"13/472,283";"Transformable Hypersonic Aerodynamic Decelerator";"12/04/1932" -"NASA Ames Research Center";"Application";"ARC-16644-1";;"13/648,197";"Variable Camber Continuous Aerodynamic Control Surfaces and Methods for Active Wing Shaping Control ";"10/09/1932" -"NASA Ames Research Center";"Application";"ARC-16646-1";;"13/485,721";"A method to produce copper nanowires for interconnect applications"; -"NASA Ames Research Center";"Application";"ARC-16661-1";;"13/444,789";"Video acuity measurement system"; -"NASA Ames Research Center";"Application";"ARC-16697-1";;"13/956,929";"NTTS Search and Reporting (Part of NTTS Suite)";"08/01/1933" -"NASA Ames Research Center";"Application";"ARC-16707-1";;"13/438,793";"Ectomycorrhizal mediated remediaiton of phenolic-based contamination through use of specifically adapted ectomycorrhizal fungi and enzyme enhancement through partial defoliation of the host."; -"NASA Ames Research Center";"Application";"ARC-16707-1CIP";;"13/854,620";"Ectomycorrhizal mediated remediaiton of phenolic-based contamination through use of specifically adapted ectomycorrhizal fungi and enzyme enhancement through partial defoliation of the host.";"04/03/1932" -"NASA Ames Research Center";"Application";"ARC-16732-1";;"13/573,924";"NanoSat Launch Adapter System (NLAS)";"03/14/1933" -"NASA Ames Research Center";"Application";"ARC-16733-1";;"13/535,884";"Habitat Water Wall for Water, Solids, and Atmosphere Recycle and Reuse "; -"NASA Ames Research Center";"Application";"ARC-16752-1";;"14/179,401";"Fuel-Efficient, Airport-Friendly, Multi-Speed Transport Aircraft Configuration with Novel Structural Approach";"02/12/1934" -"NASA Ames Research Center";"Application";"ARC-16811-1";;"13/544,752";"Compliant electrode and composite materials for piezoelectric wind and mechanical energy conversions"; -"NASA Ames Research Center";"Application";"ARC-16812-1";;"13/783,112";"Graphene composite materials for supercapacitor electrodes ";"03/01/1933" -"NASA Ames Research Center";"Application";"ARC-16833-1";;"13/747,875";"Flight Deck Predictive Weather Display and Decision Support Interface ";"01/23/1933" -"NASA Ames Research Center";"Application";"ARC-16844-1";;"13/662,346";"Adaptive control and disturbance rejection of non-minimum phase plants using residual mode filters";"10/26/1932" -"NASA Ames Research Center";"Application";"ARC-16846-1";;"13/707,546";"Dynamic Weather Routes Tool";"12/06/1932" -"NASA Ames Research Center";"Application";"ARC-16892-1A";;"13/929,646";"The Surface-Adhering Bioreactor (SABR): A novel microbial cell cultivation platform";"06/27/1933" -"NASA Ames Research Center";"Application";"ARC-16902-1";;"13/725,475";"Nanosensors for medical diagnosis";"12/21/1932" -"NASA Ames Research Center";"Application";"ARC-16916-1";;"13/956,736";"A Method for Improving Control Systems with Normalized Adaptation by Optimal Control Modification";"08/01/1933" -"NASA Ames Research Center";"Application";"ARC-16924-1";;"14/010,355";"Aluminoborosilicate Supplement for Thermal Protection of a Re-entrant Vehicle";"08/26/1933" -"NASA Ames Research Center";"Application";"ARC-16942-2";;"13/659,739";"A new family of low density flexible ablators";"10/24/1932" -"NASA Armstrong Flight Research Center";"Issued";"DRC-001-049";7180943;"10/113,637";"Adaptive Lossless Data Compression";"03/26/2022" -"NASA Armstrong Flight Research Center";"Issued";"DRC-005-031";7407131;"11/288,052";"Sound Shield";"10/31/2025" -"NASA Armstrong Flight Research Center";"Issued";"DRC-006-001";7431243;"11/227,325";"Algorithms For Autonomous Soaring";"02/27/2026" -"NASA Armstrong Flight Research Center";"Application";"DRC-006-002";0;"11/422,554";"Air Breathing,Reusable, Vertical Launch, Vertical Landing, First Stage Launch System with Off-the-Shelf Second Stage - Ram Booster"; -"NASA Armstrong Flight Research Center";"Issued";"DRC-006-005";7711455;"11/463,485";"Propulsion Controlled Aircraft Computer (PCAC)";"08/09/2026" -"NASA Armstrong Flight Research Center";"Issued";"DRC-006-024";7520176;"11/567,118";"Method for Real-Time Structure Shape Sensing";"12/05/2026" -"NASA Armstrong Flight Research Center";"Application";"DRC-006-045";0;"11/682,969";"METHOD FOR REDUCING THE REFRESH RATE OF FIBER BRAGG GRATING SENSORS"; -"NASA Armstrong Flight Research Center";"Issued";"DRC-008-001";8145366;"12/138,747";"Real-time Interactive Sonic Boom Display";"04/28/2030" -"NASA Armstrong Flight Research Center";"Issued";"DRC-008-023";7715994;"12/191,734";"IMPROVED PROCESS FOR USING SURFACE STRAIN MEASUREMENTS TO OBTAIN OPERATIONAL LOADS FOR COMPLEX STRUCTURES";"08/14/2028" -"NASA Armstrong Flight Research Center";"Application";"DRC-009-008";0;"12/718034";"Continental Digital Elevation Map Compression and Decompression Software"; -"NASA Armstrong Flight Research Center";"Issued";"DRC-009-026";8447443;"13/367990";"A New Peak-Seeking Control Method";"02/07/2032" -"NASA Armstrong Flight Research Center";"Application";"DRC-010-042";;"13/463246";"An apparatus and a method to eliminate polarization-induced fading from multiple fiber-optics strain sensors via signal-processing under polarization diversity detection scheme"; -"NASA Armstrong Flight Research Center";"Application";"DRC-011-002";;"13/759,847";"OPTICAL WAVEGUIDE BRAGG GRATING WAVELENGTH SHIFT BY LIGHT INTERACTION WITH ACTIVE MATERIAL";"02/05/2033" -"NASA Armstrong Flight Research Center";"Application";"DRC-011-015";;"14/106947";"In-situ three-dimensional shape rendering from strain values obtained through optical fiber sensors";"05/31/2032" -"NASA Armstrong Flight Research Center";"Application";"DRC-012-005";;"13/759210";"Method and apparatus of multiplexing and acquiring data from multiple optical fibers using a single data channel of an optical frequency-domain reflectrometry (OFDR) system (Revised)";"02/05/2033" -"NASA Armstrong Flight Research Center";"Application";"DRC-012-006";;"13/733364";"A Novel Approach to Liquid Level Sensing Using Fiber Bragg Grating Technology";"01/03/2033" -"NASA Armstrong Flight Research Center";"Application";"DRC-012-011";;"13/573920";"Air Launch From A Towed Aircraft";"07/05/2032" -"NASA Armstrong Flight Research Center";"Issued";"DRC-096-055";6126111;"09/112,067";"Emergency Flight Control System Using One Engine And Fuel Transfer";"07/08/2018" -"NASA Armstrong Flight Research Center";"Issued";"DRC-097-021";6102330;"08/905,777";"Emergency Aircraft Lateral Controller Using Existing (non-modified) Digital Engine Computers During A System Failure For The Purpose Of Safe Landing";"07/29/2017" -"NASA Armstrong Flight Research Center";"Issued";"DRC-098-001";6216063;"09/74,024";"A Flutterometer Flight Test Tool";"05/06/2018" -"NASA Goddard Space Flight Center";"Application";"GSC-13378-1";0;"07/710,633";"SPLINE-LOCKING PAYLOAD FASTENER"; -"NASA Goddard Space Flight Center";"Issued";"GSC-13802-1";6584874;"08/673,859";"USING A 3-D SPRAG IN RACHETING TOOLS BASED ON PAT. NO. 5,482-144";"07/02/2016" -"NASA Goddard Space Flight Center";"Issued";"GSC-13817-1";5983162;"08/872,586";"Empirical Mode Decomposition Method And Hilbert Spectral Analysis Algorithms";"06/10/2017" -"NASA Goddard Space Flight Center";"Issued";"GSC-13817-2";6631325;"09/82,523";"COMPUTER IMPLEMENTED EMPIRICAL MODE DECOMPOSITION METHOD APPARATUS AND ARTICLE OF MANUFACTURE UTILIZING CURVATURE EXTREMA";"06/10/2017" -"NASA Goddard Space Flight Center";"Issued";"GSC-13817-3";6381559;"09/282,424";"Empirical Mode Decomposition Apparatus, Method, And Article Of Manufacture For Analyzing Biological Signals And Performing Curve Fitting";"03/31/2019" -"NASA Goddard Space Flight Center";"Issued";"GSC-13817-4";6862558;"10/73,957";"Empirical Mode Decomposition For Analyzing Acoustical Signals";"02/13/2022" -"NASA Goddard Space Flight Center";"Issued";"GSC-13817-5";6738734;"10/11,206";"Empirical Mode Decomposition Apparatus, Method And Article Of Manufacture For Analyzing Biological Signals And Performing Curve Fitting";"06/10/2017" -"NASA Goddard Space Flight Center";"Issued";"GSC-13905-1";6640949;"10/95,343";"1-Way Bearing";"03/01/2022" -"NASA Goddard Space Flight Center";"Issued";"GSC-13909-1";6311130;"09/150,671";"Computer Implemented Empirical Mode Decomposition Method, Apparatus, And Article Of Manufacture For Two-Dimensional Signals";"09/10/2018" -"NASA Goddard Space Flight Center";"Issued";"GSC-13985-1";6566854;"09/646,161";"Active Antenna Combined With Non-Ferrous Current Probe.";"09/12/2020" -"NASA Goddard Space Flight Center";"Issued";"GSC-14064-1";6648522;"09/804,646";"Universal Fiber Optic Connector Polishing Fixture With Precision Alignment Capability";"03/13/2021" -"NASA Goddard Space Flight Center";"Issued";"GSC-14207-1";6626792;"09/799,872";"Gear Bearings";"03/03/2021" -"NASA Goddard Space Flight Center";"Issued";"GSC-14209-1";6293803;"09/501,412";"Stress Relieved Zee Electrical Interconnect";"02/09/2020" -"NASA Goddard Space Flight Center";"Issued";"GSC-14213-1";6760487;"09/550,254";"Estimated Spectrum Adaptive Postfilter (ESAP) And The Iterative Prepost Filtering (IPF) Algorithms";"04/14/2020" -"NASA Goddard Space Flight Center";"Issued";"GSC-14236-1";6538796;"09/541,680";"MEMS Devices For Spacecraft Thermal Control Applications";"03/31/2020" -"NASA Goddard Space Flight Center";"Issued";"GSC-14302-1";6782124;"09/729,138";"Extension Of The Empirical Mode Decomposition Method To A Time Series Of 2-Dimensional Grid Maps";"11/29/2020" -"NASA Goddard Space Flight Center";"Issued";"GSC-14305-1";6895115;"09/839,147";"Method For Recursive Implementation Of Hierarchical Segmentation";"04/23/2021" -"NASA Goddard Space Flight Center";"Issued";"GSC-14389-1";7543274;"10/789,028";"Deriving Formal Specifications And Code From Scenarios";"02/25/2024" -"NASA Goddard Space Flight Center";"Issued";"GSC-14393-1";7145739;"10/385,166";"Light Weight Optical Mirrors Formed In Single Crystal Silicon";"03/06/2023" -"NASA Goddard Space Flight Center";"Issued";"GSC-14413-1";7255483;"10/93,621";"Thrust Rollers";"03/01/2022" -"NASA Goddard Space Flight Center";"Issued";"GSC-14435-1";6740224;"10/173,533";"Innovative Manufacturing Procedure For Low Cost And High Quality Carbon Nanotubes";"06/11/2022" -"NASA Goddard Space Flight Center";"Issued";"GSC-14480-2";7762155;"11/444,808";"Gear Bearings";"05/25/2026" -"NASA Goddard Space Flight Center";"Issued";"GSC-14561-1";7207245;"11/174,454";"Screw-Locking Wrench";"06/30/2025" -"NASA Goddard Space Flight Center";"Issued";"GSC-14562-1";7504921;"11/543,278";"Stepping Flextures";"09/29/2026" -"NASA Goddard Space Flight Center";"Issued";"GSC-14601-1";7008605;"10/292,952";"Method For Manufacturing High Quality Carbon Nanotubes";"11/08/2022" -"NASA Goddard Space Flight Center";"Issued";"GSC-14603-1";7544146;"11/122,201";"Anti-Backlash Gear-Bearings";"05/02/2025" -"NASA Goddard Space Flight Center";"Issued";"GSC-14608-1";6990436;"10/729,579";"Time Frequency Analysis Based On Extrema Sifting";"11/28/2023" -"NASA Goddard Space Flight Center";"Issued";"GSC-14616-1";7248342;"10/730,195";"Conceptual Design Of A 3D Imaging Lidar For High-Resolution Mapping Of The Surface Topography Of Moons Or Planets From Space";"12/05/2023" -"NASA Goddard Space Flight Center";"Issued";"GSC-14657-1";7512568;"11/109,400";"Evolvable Neural Software System";"04/08/2025" -"NASA Goddard Space Flight Center";"Issued";"GSC-14666-1";6775600;"10/267,092";"Systems And Methods For Determining Spacecraft Orientation";"10/07/2022" -"NASA Goddard Space Flight Center";"Issued";"GSC-14673-1";6901353;"10/615,365";"Normalized Amplitude Hilbert Transform (NAHT): A New Algorithm For Computing Instantaneous Frequency";"07/08/2023" -"NASA Goddard Space Flight Center";"Issued";"GSC-14683-1";8480826;"11/736,874";"Specular Coatings For Composite Structures";"04/18/2027" -"NASA Goddard Space Flight Center";"Issued";"GSC-14762-1";7769488;"11/108,627";"SMART Solar Sail";"04/08/2025" -"NASA Goddard Space Flight Center";"Issued";"GSC-14777-1";7341932;"11/251,531";"Large Area Vacuum Ultra-Violet Sensors";"09/30/2025" -"NASA Goddard Space Flight Center";"Issued";"GSC-14793-1";7548199;"11/239,458";"Pivot 2.0: Radiation Hardened, Fast Acquisition/Weak Signal Tracking GPS Receiver";"09/20/2025" -"NASA Goddard Space Flight Center";"Issued";"GSC-14807-1";7464006;"10/963,470";"Application Of HHT To Financial Data Analysis For Define Volatility And Trend";"10/07/2024" -"NASA Goddard Space Flight Center";"Issued";"GSC-14833-1";7346461;"11/251,004";"Stability Spectrum Through Hilbert-Huang Transform";"09/30/2025" -"NASA Goddard Space Flight Center";"Issued";"GSC-14845-1";7290737;"11/251,537";"Demiseable Reaction Wheel Assembly";"09/29/2025" -"NASA Goddard Space Flight Center";"Issued";"GSC-14871-1";7935297;"11/370,396";"Template For Deposition Of Micron And Sub-micron Pointed Structures";"03/06/2026" -"NASA Goddard Space Flight Center";"Issued";"GSC-14873-1";8357211;"12/872,445 ";"ADR Salt Pill Design And Crystal Growth Process For Hydrated Magnetic Salts";"08/31/2030" -"NASA Goddard Space Flight Center";"Issued";"GSC-14879-1";7635832;"11/469,105";"Iterative-Transform Phase-Retrieval Utilizing Adaptive Diversity";"08/31/2026" -"NASA Goddard Space Flight Center";"Issued";"GSC-14941-1";7739671;"11/203,590";"A Method And System For Direct Implementation Of Formal Specifications Derived Mechanically From Informal Requirements";"08/12/2025" -"NASA Goddard Space Flight Center";"Issued";"GSC-14942-1";7752608;"11/203,586";"A Method And System For Formal Analysis, Simulation, And Verification Of Knowledge-Based Systems, Rule-Based Systems, And Expert Systems";"08/12/2025" -"NASA Goddard Space Flight Center";"Issued";"GSC-14952-1";7513546;"11/689,161";"Conformal Gripper";"03/21/2027" -"NASA Goddard Space Flight Center";"Issued";"GSC-14960-1";7992760;"11/357,458";"Hardware And Technique For Dead End Welding Of All Types Of Tubing";"02/08/2026" -"NASA Goddard Space Flight Center";"Application";"GSC-16700-1";;"14/041407";"SpaceCube v2.0 Flight Processor Card";"09/30/2033" -"NASA Goddard Space Flight Center";"Issued";"GSC-14968-1";7627538;"11/251,538";"Apoptosis And Self-destruct: Mechanisms For Management Of Autonomic Systems";"09/29/2025" -"NASA Goddard Space Flight Center";"Issued";"GSC-14968-2";7925600;"12/603,140";"SWARM AUTONOMIC AGENTS WITH SELF-DESTRUCT CAPABILITY";"10/21/2029" -"NASA Goddard Space Flight Center";"Issued";"GSC-14979-1";7601091;"11/426,134";"Modular Gear Bearing";"06/23/2026" -"NASA Goddard Space Flight Center";"Issued";"GSC-14994-1";7697759;"11/251,530";"A Split-Remerge Method For Eliminating Processing Window Artifacts In Recursive Hierarchical Segmentation";"09/30/2025" -"NASA Goddard Space Flight Center";"Issued";"GSC-15001-1";7924415;"12/389,097";"Light Direction Sensor";"02/19/2029" -"NASA Goddard Space Flight Center";"Issued";"GSC-15002-1";7240879;"11/124,592";"Space Robotic System For In Space Servicing Of Unmanned Spacecraft Applications";"05/06/2025" -"NASA Goddard Space Flight Center";"Issued";"GSC-15002-2";7513459;"11/670,653";"Method And Associated Apparatus For Capturing, Servicing, And De-Orbiting Earth Satellites Using Robotics";"05/06/2025" -"NASA Goddard Space Flight Center";"Issued";"GSC-15002-3";7293743;"11/670,270";"Method And Associated Apparatus For Capturing, Servicing, And De-Orbiting Earth Satellites Using Robotics";"11/13/2025" -"NASA Goddard Space Flight Center";"Issued";"GSC-15002-4";7438264;"11/670,781";"Method And Associated Apparatus For Capturing, Servicing And De-Orbiting Earth Satellites Using Robotics";"05/06/2025" -"NASA Goddard Space Flight Center";"Issued";"GSC-15002-5";7513460;"11/671,062";"Method And Associated Apparatus For Capturing, Servicing, And De-Orbiting Earth Satellites Using Robotics";"05/06/2025" -"NASA Goddard Space Flight Center";"Issued";"GSC-15027-1";7412175;"11/425,352";"Millimeter Wave Polarization Transformer";"06/20/2026" -"NASA Goddard Space Flight Center";"Issued";"GSC-15027-2";7609978;"12/056,964";"INTERFEROMETRIC POLARIZATION CONTROL";"03/27/2028" -"NASA Goddard Space Flight Center";"Issued";"GSC-15027-3";7616903;"12/057,060";"INTERFEROMETRIC POLARIZATION CONTROL";"03/27/2028" -"NASA Goddard Space Flight Center";"Issued";"GSC-15030-1";7907333;"11/460,482";"A Pulsed, 1 Micron, Single Frequency, Diode-Seeded Ytterbium-doped Fiber Amplifier With Variable Output Parameters, P";"07/27/2026" -"NASA Goddard Space Flight Center";"Issued";"GSC-15038-1";7765171;"11/426,853";"SPAACE: Self Properties For An Autonomous & Autonomic Computing Environment";"06/27/2026" -"NASA Goddard Space Flight Center";"Issued";"GSC-15039-1";7762523;"11/861,038";"Miniaturized Double Latching Solenoid Valve";"09/25/2027" -"NASA Goddard Space Flight Center";"Issued";"GSC-15042-1";7622907;"11/535,872";"Driven Ground";"09/27/2026" -"NASA Goddard Space Flight Center";"Issued";"GSC-15055-1";7746190;"11/748,969";"Broadband High Spurious-suppression Microwave Waveguide Filter For Polarization-preserving And Transformer";"05/15/2027" -"NASA Goddard Space Flight Center";"Issued";"GSC-15077-1";8068556;"12/147,100";"Low Cost TDRSS Tranceiver (LCT2)";"06/26/2028" -"NASA Goddard Space Flight Center";"Issued";"GSC-15079-1";7886273;"11/532,800";"Generation And Verification Of Policies For Autonomic Systems";"09/18/2026" -"NASA Goddard Space Flight Center";"Issued";"GSC-15080-1";7979848;"11/533,837";"A Method Of Deriving Process Based Specifications From Scenarios Via Pattern Matching";"09/21/2026" -"NASA Goddard Space Flight Center";"Issued";"GSC-15115-1";7465926;"11/537,280";"Miniaturized Radiation Spectrometer Development";"09/29/2026" -"NASA Goddard Space Flight Center";"Issued";"GSC-15136-1";8093094;"12/137,844";"Blocking Contacts For N-Type Cadmium Zinc Cadmium Zinc Telluride (CdZnTe)";"06/12/2028" -"NASA Goddard Space Flight Center";"Issued";"GSC-15148-1";7668796;"11/536,132";"Enhancing R2D2C Requirements Based Programming With Automata Learning";"09/28/2026" -"NASA Goddard Space Flight Center";"Issued";"GSC-15162-1";7796726;"11/706,693";"Instrument And Method For X-Ray Diffraction, Fluorescence, And Crystal Texture Analysis Without Sample Preparation";"02/14/2027" -"NASA Goddard Space Flight Center";"Application";"GSC-15163-2";0;"13/092198";"AIGaN Ultraviolet Detectors For Dual Band UV Detection"; -"NASA Goddard Space Flight Center";"Issued";"GSC-15176-1";7899760;"11/533,855";"Autonomic Quiescence";"09/21/2026" -"NASA Goddard Space Flight Center";"Issued";"GSC-15177-1";8082538;"11/536378";"A Method For Developing And Maintaining Evolving Systems With Software Product Lines";"09/28/2026" -"NASA Goddard Space Flight Center";"Application";"GSC-15177-2";0;"13/305932";"A Method For Developing And Maintaining Evolving Systems With Software Product Lines"; -"NASA Goddard Space Flight Center";"Issued";"GSC-15178-1";7992134;"11/536,969";"Modeling, Specifying And Deploying Policies In Autonomous And Autonomic Systems Using An AOSE Methodology";"09/29/2026" -"NASA Goddard Space Flight Center";"Issued";"GSC-15179-1";7904396;"11/533,895";"An Autonomic Smoke Detector";"09/21/2026" -"NASA Goddard Space Flight Center";"Issued";"GSC-15184-1";7978312;"11/933,492";"An Active, Solid-state, 3-Dimensional Range Imaging System";"11/01/2027" -"NASA Goddard Space Flight Center";"Issued";"GSC-15206-1";8041655;"11/836,352";"Otoacoustic Protection In Biologically-Inspired Systems";"08/09/2027" -"NASA Goddard Space Flight Center";"Issued";"GSC-15206-2";8140452;"13/230915";"Otoacoustic Protection In Biologically-Inspired Systems";"09/13/2031" -"NASA Goddard Space Flight Center";"Issued";"GSC-15206-3";8140453;"13/230922";"Otoacoustic Protection In Biologically-Inspired Systems";"09/13/2031" -"NASA Goddard Space Flight Center";"Issued";"GSC-15206-4";8275725;"13/230920";"Otoacoustic Protection In Biologically-Inspired Systems";"09/13/2031" -"NASA Goddard Space Flight Center";"Issued";"GSC-15206-5";8165976;"13/230922";"Otoacoustic Protection In Biologically-Inspired Systems";"09/13/2031" -"NASA Goddard Space Flight Center";"Issued";"GSC-15206-6";8165977;"13/230923";"Otoacoustic Protection In Biologically-Inspired Systems";"09/13/2031" -"NASA Goddard Space Flight Center";"Issued";"GSC-15217-1";8139674;"12/173,243";"Spaceflight Ka-Band High Rate Rad Hard Modulator";"07/15/2028" -"NASA Goddard Space Flight Center";"Issued";"GSC-15301-1";7673089;"11/935,572";"An Extendibe USB Drive That Accepts External Media";"11/06/2027" -"NASA Goddard Space Flight Center";"Issued";"GSC-15302-1";7673089;"11/935,572";"An Double-Headed USB Drive";"11/06/2027" -"NASA Goddard Space Flight Center";"Issued";"GSC-15328-1";8499779;"12/014,889";"Non-Pyrotechnic Zero-Leak Normally-Closed Valve";"01/16/2028" -"NASA Goddard Space Flight Center";"Application";"GSC-15333-1";0;"11/860,830";"Improved, Flexure-Base Linear Bearing"; -"NASA Goddard Space Flight Center";"Issued";"GSC-15341-1";7922920;"11/862,550";"Low Conductance Silicon Micro-leak for Mass Spectrometer Inlet";"09/27/2027" -"NASA Goddard Space Flight Center";"Issued";"GSC-15341-3";8455926;"12/889,014 ";"Low Conductance Silicon Micro-leak for Mass Spectrometer Inlet";"09/23/2030" -"NASA Goddard Space Flight Center";"Issued";"GSC-15349-1";7830527;"12/102,240";"Method And Apparatus For Second Harmonic Generation And Other Frequency Convertion With Multiple Frequency Channels";"04/14/2028" -"NASA Goddard Space Flight Center";"Issued";"GSC-15353-1";7830224;"11/877,102";"Compact Low-loss Planar Magic-T With Broadband Phase And Amplitude Responses";"10/23/2027" -"NASA Goddard Space Flight Center";"Issued";"GSC-15357-1";8041661;"11/861,687";"Stability Algorithm For Neural Entities (SANE)";"09/26/2027" -"NASA Goddard Space Flight Center";"Issued";"GSC-15364-1";8155939;"12/170,683";"Hughes Particle – Surface Interaction Model";"07/10/2028" -"NASA Goddard Space Flight Center";"Issued";"GSC-15377-1";7811406;"12/249,265";"Advanced Adhesive Bond Shape Tailoring for Large Composite Primary Structures Subjected to Cryogenic and Ambient Loading Environments";"10/10/2028" -"NASA Goddard Space Flight Center";"Issued";"GSC-15416-1";7999427;"12/188,039";"Directed Flux Motor Utilizing Concentric Magnets and Interwoven Flux Channels";"08/07/2028" -"NASA Goddard Space Flight Center";"Issued";"GSC-15417-1";7735385;"12/187,562";"Actuated Ball and Socket Joint";"08/07/2028" -"NASA Goddard Space Flight Center";"Issued";"GSC-15419-1";8030873;"12/187,926";"Improvements to the Walk and Roll Robot";"08/07/2028" -"NASA Goddard Space Flight Center";"Issued";"GSC-15421-1";7968812;"12/353,009";"Spring Joint Package with Overstrain Sensor ( OS Sensor Joint )";"01/13/2029" -"NASA Goddard Space Flight Center";"Issued";"GSC-15431-1";7921731;"12/327,514";"A two-axis direct fluid shear stress sensor suited for aerodynamic applications";"12/03/2028" -"NASA Goddard Space Flight Center";"Issued";"GSC-15445-1";7982861;"12/183,820";"Pseudo-Noise Code Modulation using Return to Zero pulses for Ranging, Altimetry and Communications";"07/31/2028" -"NASA Goddard Space Flight Center";"Issued";"GSC-15458-1";8094731;"12/357,081";"Space Link Extension Return Channel Frames (SLE-RCF) Service (User side) Software Library";"01/21/2029" -"NASA Goddard Space Flight Center";"Issued";"GSC-15483-1";7817087;"12/116,518";"Relative Spacecraft Navigation using Reflected GPS Signals";"05/07/2028" -"NASA Goddard Space Flight Center";"Issued";"GSC-15520-1";8547531;"12/873373";"Non-scanning laser 3D imager";"09/01/2030" -"NASA Goddard Space Flight Center";"Issued";"GSC-15527-1";8160728;"12/558,672";"Sensor Complete Requirements Algorithm For Autonomous Mobility";"09/14/2029" -"NASA Goddard Space Flight Center";"Issued";"GSC-15538-1";8198956;"12/535,954";"Compact planar microwave blocking filter";"08/05/2029" -"NASA Goddard Space Flight Center";"Issued";"GSC-15550-1";8275724;"12/569,422";"A biologically-inspired method of improving system performance and survivability through self-sacrifice";"09/29/2029" -"NASA Goddard Space Flight Center";"Issued";"GSC-15552-1";7924126;"12/555,634";"Small, High Field Superconducting Magnets";"09/08/2029" -"NASA Goddard Space Flight Center";"Issued";"GSC-15557-1";8095485;"12/353,637";"Formulation for Emotion Embedding in Logic Systems (FEELS)";"01/14/2029" -"NASA Goddard Space Flight Center";"Issued";"GSC-15583-1";7970025;"12/496,954";"Tunable Frequency-stabilized Laser via Offset Sideband Locking";"07/02/2029" -"NASA Goddard Space Flight Center";"Issued";"GSC-15584-1";8144331;"12/487,454";"Hilbert-Transform-Based Phase Referencing Algorithm for Wide-Field Imaging Interferometry.";"06/18/2029" -"NASA Goddard Space Flight Center";"Issued";"GSC-15655-1";8138961;"12/561,644";"Low Frequency Wideband Step Frequency Inverse Synthetic Aperture Radar For 3-D Imaging of Interior of Near Earth Objects/Planetary Bodies";"09/17/2029" -"NASA Goddard Space Flight Center";"Application";"GSC-15660-1";0;"13/247416";"Extreme Environment Low Temperature Transistor Models"; -"NASA Goddard Space Flight Center";"Issued";"GSC-15662-1";8092031;"12/569,090";"Flight Mirror Mount and Flight Mounting Procedure for an Ultra-Lightweight High-Precision Glass Mirror";"09/29/2029" -"NASA Goddard Space Flight Center";"Application";"GSC-15672-1";0;"13/211413";"Multicolor detectors for ultrasensitive long-wave imaging cameras"; -"NASA Goddard Space Flight Center";"Issued";"GSC-15678-1";8484274;"12/549,159";"Optimal Padding for the Two-Dimensional Fast Fourier Transform";"08/27/2029" -"NASA Goddard Space Flight Center";"Issued";"GSC-15684-1";8285401;"12/549,898";"Discrete Fourier Transform (DFT) Analysis in a Complex Vector Space";"08/28/2029" -"NASA Goddard Space Flight Center";"Issued";"GSC-15685-1";8331733;"12/550,141";"Sampling Theorem in Terms of the Bandwidth and Sampling Interval";"08/28/2029" -"NASA Goddard Space Flight Center";"Issued";"GSC-15692-1";8330644;"12/835,958 ";"Expandable Reconfigurable Instrument Node - Web Sensor Strand Demonstration";"07/19/2030" -"NASA Goddard Space Flight Center";"Application";"GSC-15693-1";0;"12/570,224";"Variable Sampling Mapping: A novel supplement to iterative-transform phase retrieval algorithms for undersampled images, broadband illumination, and noisy detection environments"; -"NASA Goddard Space Flight Center";"Issued";"GSC-15699-1";8480296;"12/560,535";"A Low Cost, Low Temperature Radiometer for Thermal Measurements.";"09/16/2029" -"NASA Goddard Space Flight Center";"Issued";"GSC-15724-1";8275015;"12/551,212";"Passively Q-switched side pumped Monolithic Ring Laser";"08/31/2029" -"NASA Goddard Space Flight Center";"Application";"GSC-15727-1";0;"13/222575";"An All-metal, Solderless Circularly Polarized Microwave Antenna Element with Very Low Off-Axis Cross-Polarization"; -"NASA Goddard Space Flight Center";"Issued";"GSC-15729-1";8674302;"12/789,937";"Novel Superconducting Transition Edge Sensor Design";"05/28/2030" -"NASA Goddard Space Flight Center";"Issued";"GSC-15729-2";8393786;"12/789,954 ";"Novel Superconducting Transition Edge Sensor Design";"05/28/2030" -"NASA Goddard Space Flight Center";"Issued";"GSC-15730-1";8355579;"12/783054";"Automatic Extraction of Planetary Image Features";"05/19/2030" -"NASA Goddard Space Flight Center";"Issued";"GSC-15732-1";8093565;"12/695478";"Crossed Small Deflection Energy Analyzer (SDEA) for Wind/Temperature Spectrometer (WTS)";"01/28/2030" -"NASA Goddard Space Flight Center";"Issued";"GSC-15758-1";8044332;"12/553,613";"Hybrid Architecture Active Wavefront Sensing and Control";"09/03/2029" -"NASA Goddard Space Flight Center";"Issued";"GSC-15771-1";8035081;"12/570,166";"High Precision Electric Gate (HPEG) for Time of Flight Mass Spectrometers";"09/30/2029" -"NASA Goddard Space Flight Center";"Application";"GSC-15774-1";0;"13/154599";"Ensemble Detector"; -"NASA Goddard Space Flight Center";"Application";"GSC-15782-1";0;"13/216479";"Ultra-low Power (< 100mW), 64-Channel Pulse Data Collection System"; -"NASA Goddard Space Flight Center";"Issued";"GSC-15792-1";8406469;"12/838600";"Progressive Band Selection for Hyperspectral Images";"07/19/2030" -"NASA Goddard Space Flight Center";"Application";"GSC-15815-1";0;"12/887988";"LIDAR Luminance Quantizer"; -"NASA Goddard Space Flight Center";"Issued";"GSC-15826-1";8134130;"12/839207";"The Corner Cathode: Making Collimated Electron Beams with a Small Number of Electrodes";"07/19/2030" -"NASA Goddard Space Flight Center";"Application";"GSC-15829-1";0;"13/601293";"Resolution enhanced pseudo random code technique";"08/31/2032" -"NASA Goddard Space Flight Center";"Application";"GSC-15839-1";0;"12/840787";"Low threshold, narrow linewidth optical parametric generator"; -"NASA Goddard Space Flight Center";"Issued";"GSC-15856-1";8196853;"12/779494";"Aerodynamically Stabilized Instrument Platform for Kites and Tethered Blimps ( AeroPod )";"05/13/2030" -"NASA Goddard Space Flight Center";"Application";"GSC-15886-1";0;"12/838963";"Automated Beam Balance Scale Logger"; -"NASA Goddard Space Flight Center";"Application";"GSC-15911-1";0;"13/217965";"Graphite Composite Panel Polishing Fixture"; -"NASA Goddard Space Flight Center";"Application";"GSC-15934-1";0;"12/839125";"Determining Phase Retrieval Sampling from the Modulation Transfer Function"; -"NASA Goddard Space Flight Center";"Application";"GSC-15935-1";0;"13/043257";"New Variables for Iterative Transform Phase Retrieval"; -"NASA Goddard Space Flight Center";"Application";"GSC-15936-1";0;"12/854490";"SpaceCube Version 1.5"; -"NASA Goddard Space Flight Center";"Issued";"GSC-15947-1";8274726;"12/839171";"Sampling and Reconstruction of the Sinc(x) Function";"07/19/2030" -"NASA Goddard Space Flight Center";"Application";"GSC-15948-1";0;"13/204767";"Lateral Kevlar Suspension Device (LKSD)"; -"NASA Goddard Space Flight Center";"Application";"GSC-15949-1";0;"13/600992";"Vectorized Rebinning Algorithm for Fast Data Down-Sampling";"08/31/2032" -"NASA Goddard Space Flight Center";"Application";"GSC-15951-1";0;"13/222839";"An Improved Method of Fabricating Single Crystal Silicon Light Weight Mirrors"; -"NASA Goddard Space Flight Center";"Issued";"GSC-15953-1";8484509;"12/854546";"SpaceCube Demonstration Platform";"08/11/2030" -"NASA Goddard Space Flight Center";"Application";"GSC-15953-2";0;"13/903357";"SpaceCube Demonstration Platform";"09/30/2029" -"NASA Goddard Space Flight Center";"Application";"GSC-15957-1";0;"13/211526";"Imaging System Aperture Masks for Image Plane Exit Pupil Characterization"; -"NASA Goddard Space Flight Center";"Issued";"GSC-15964-1";8525110;"13/247,168 ";"An Instrument Suite for the Vertical Characterization of the Ionosphere-Thermosphere System from 100 km to 700km Altitude";"09/28/2031" -"NASA Goddard Space Flight Center";"Application";"GSC-15970-1";0;"13/034125";"Electrospray Ionization for Chemical Analysis of Organic Molecules for Mass Spectrometry"; -"NASA Goddard Space Flight Center";"Application";"GSC-15976-1";0;"12/872366";"Phase Retrieval System for Assessing Diamond-Turning and other Optical Surface Artifacts"; -"NASA Goddard Space Flight Center";"Issued";"GSC-15977-1";8354952;"12/839060";"Phase Retrieval for Radio Telescope and Antenna Control";"07/19/2030" -"NASA Goddard Space Flight Center";"Application";"GSC-15979-1";0;"12/839187";"Multi-Scale Image Reconstruction using Wavelets"; -"NASA Goddard Space Flight Center";"Application";"GSC-15994-1";;"13/104538";"Photonic Choke-Joints for Dual-Polarization Waveguides"; -"NASA Goddard Space Flight Center";"Application";"GSC-16006-1";;"13/216671";"Programmable High-Rate Multi-Mission Receiver for Space Communication"; -"NASA Goddard Space Flight Center";"Application";"GSC-16008-1";;"13/600826";"Phase controlled magnetic mirror for wavefront correction";"08/31/2032" -"NASA Goddard Space Flight Center";"Application";"GSC-16016-1";;"13/193272";"Carbon Nanotubes on titanium substrates for stray light suppression"; -"NASA Goddard Space Flight Center";"Issued";"GSC-16024-1";8526733;"13/150,316";"Refinement of the HSEG Algorithm for Improved Computational Processing Efficiency";"06/01/2031" -"NASA Goddard Space Flight Center";"Application";"GSC-16789-1";;"14/ 033725";"LEARNS (Logic Expansion for Autonomously Reconfigurable Neural Systems)"; -"NASA Goddard Space Flight Center";"Application";"GSC-16029-1";;"13/193249";"Nanostructure secondary mirror apodization mask for transmitter signal suppression in a duplex telescope."; -"NASA Goddard Space Flight Center";"Application";"GSC-16096-1";;"13/211432";"Prototype Genomics Based keyed-Hash Message Authentication Code Protocol"; -"NASA Goddard Space Flight Center";"Application";"GSC-16100-1";;"12/881587";"Lunar Reconnaissance Orbiter (LRO) Command and Data Handling Flight Electronics Subsystem"; -"NASA Goddard Space Flight Center";"Application";"GSC-16105-1";;"13/197214";"Molecular Adsorber Coating"; -"NASA Goddard Space Flight Center";"Application";"GSC-16109-1";;"13/240180";"HEXPANDO expanding head for fastener retention hexagonal wrench"; -"NASA Goddard Space Flight Center";"Application";"GSC-16122-1";;"13/474053";"Apparatuses and Methods to Enable Sub-MHz Precision in Fast Laser Frequency Tuning"; -"NASA Goddard Space Flight Center";"Application";"GSC-16135-1";;"13/534427";"A cryptographic approach to microRNA target binding analysis"; -"NASA Goddard Space Flight Center";"Application";"GSC-16146-1";;"13/601194";"Wafer Level Microchannel Fabrication Process for Lap-on-a-Chip Devices";"08/31/2032" -"NASA Goddard Space Flight Center";"Application";"GSC-16182-1";;"13/595604";"A High Event Rate, Zero Dead Time, Multi-Stop Time-to-digital Converter Application Specific Integrated Circuit";"08/27/2032" -"NASA Goddard Space Flight Center";"Application";"GSC-16193-1";;"13/720175";"Fine Control and Maintenance Algorithm for Visible Nulling Coronagraphy";"12/19/2032" -"NASA Goddard Space Flight Center";"Application";"GSC-16223-1";;"13/551649";"SpaceCube Mini"; -"NASA Goddard Space Flight Center";"Application";"GSC-16247-1";;"13/570100";"Enhanced adhesion multiwalled carbon nanotubes on titanium substrates for stray light control"; -"NASA Goddard Space Flight Center";"Application";"GSC-16250-1";;"13/150316";"Further Refinement of the Computationally Efficient HSEG Algorithm"; -"NASA Goddard Space Flight Center";"Application";"GSC-16259-1";;"13/050617";"Spaceflight Refuiling Tools"; -"NASA Goddard Space Flight Center";"Application";"GSC-16299-1";;"13/622465";"V-Assembly Dual Head Efficiency Resonator (VADER) Laser Transmitter";"09/19/2032" -"NASA Goddard Space Flight Center";"Application";"GSC-16301-1";;"13/771815";"Impedance matched to vacuum, invisible-edge diffraction suppressed mirror";"02/20/2033" -"NASA Goddard Space Flight Center";"Application";"GSC-16327-1";;"13/545173";"Miniaturized laser heterodyne radiometer for carbon dioxide (CO2), methane (CH4), and carbon monoxide (CO) measurements in the atmospheric column."; -"NASA Goddard Space Flight Center";"Application";"GSC-16328-1";;"13/474367";"Development of the Hilbert-Huang Transform Real-Time Data Processing System with 2-D Capabilities"; -"NASA Goddard Space Flight Center";"Application";"GSC-16438-1";;"13/606174";"Power provision based on self-sacrificing spacecraft"; -"NASA Goddard Space Flight Center";"Application";"GSC-16460-1";;"13/592409";"Autonomic Autopoiesis";"08/23/2032" -"NASA Goddard Space Flight Center";"Application";"GSC-16461-1";;"13/592412";"Autonomic and Apoptotic Cloud, Autonomic and Apoptotic Grid, Autonomic and Apoptotic Highly Distributed System"; -"NASA Goddard Space Flight Center";"Application";"GSC-16485-1";;"14/038381";"Broadband planar impedance transformer";"09/26/2033" -"NASA Goddard Space Flight Center";"Application";"GSC-16516-1";;"14/021812";"Muti-function microposters inside of microfluidic channel for Lab-On-A-Chip device";"09/09/2033" -"NASA Kennedy Space Center";"Application";"KSC-12866";0;"12/843,353";"In-Situ Wire Damage Detection System"; -"NASA Goddard Space Flight Center";"Application";"GSC-16545-1";;"13/534442";"INTEGRATED GENOMIC AND PROTEOMIC INFORMATION SECURITY PROTOCOL"; -"NASA Goddard Space Flight Center";"Application";"GSC-16555-1";;"14/023847";"Green Precision Cleaning System";"09/11/2033" -"NASA Goddard Space Flight Center";"Application";"GSC-16569-1";;"14/041,720";"Mirrorlet array for Integral Field Spectrometers (IFS)"; -"NASA Goddard Space Flight Center";"Application";"GSC-16674-1";;"14/041224";"MISSE-7 Control Center";"09/30/2033" -"NASA Goddard Space Flight Center";"Application";"GSC-16795-1";;"13/781,121 ";"Wallops Flight Facility 6U Advanced CubeSat Ejector (ACE)";"01/04/2033" -"NASA Goddard Space Flight Center";"Application";"GSC-16805-1";;"14/040924";"SpaceCube v2.0 Micro";"09/30/2033" -"NASA Goddard Space Flight Center";"Application";"GSC-16808-1";;"14/040848";"SpaceCube v. 2.0 Flight Power Card";"09/30/2033" -"NASA Goddard Space Flight Center";"Application";"GSC-16859-1";;"14/037484";"Chemical sensors based on 2-dimensional materials";"09/26/2033" -"NASA Goddard Space Flight Center";"Application";"GSC-16887-1";;"14/037458";"Propellant Transfer Assembly Design and Development";"09/26/2033" -"NASA Headquarters";"Issued";"HQN-11248-1";6223143;"09/143,969";"Quantitative Risk Assessment Software (QRAS) System";"08/31/2018" -"NASA Kennedy Space Center";"Issued";"KSC-11641";5730806;"08/437,859";"Gas-Liquid Supersonic Cleaning And Cleaning Verification Spray System"; -"NASA Kennedy Space Center";"Issued";"KSC-11751";5710377;"08/540,616";"Improved Portable Ultrasonic Leak Detector (Combined With KSC-11751-2)"; -"NASA Kennedy Space Center";"Issued";"KSC-11804";5693871;"08/695,071";"Low-Differential Pressure Generator For Evaluating Low Differential Pressure Transducers"; -"NASA Kennedy Space Center";"Issued";"KSC-11866-1";5977773;"08/912,035";"Non-Intrusive Impedance-Based Cable Tester - Standing Wave Reflectometer"; -"NASA Kennedy Space Center";"Issued";"KSC-11884";6039783;"08/772,057";"A New Process And Equipment For Conversion Of NOx Scrubber Liquor To Fertilizer (related To KSC-11994)"; -"NASA Kennedy Space Center";"Issued";"KSC-11884-2";6641638;"09/511,634";"Process And Equipment For Nitrogen Oxide Waste Conversion To Fertilizer - Continuation-In-Part Filed 2/17/00"; -"NASA Kennedy Space Center";"Issued";"KSC-11937-2";7209567;"10/390,259";"Communication System With Adaptive Noise Suppression"; -"NASA Kennedy Space Center";"Issued";"KSC-12035-1";6552521;"09/906,014";"Improved Single-Station Accurate Location Of Lightning Strikes (Combined With KSC-12276 & KSC-12173)"; -"NASA Kennedy Space Center";"Issued";"KSC-12049";6627065;"09/977,531";"Liquid Galvanic Coatings For Protection Of Imbedded Metals"; -"NASA Kennedy Space Center";"Issued";"KSC-12056";6676912;"09/698,607";"New Air Pollution Control Technology For Removal Of Nitrogen Oxides From Stationary Combustion Sources"; -"NASA Kennedy Space Center";"Issued";"KSC-12092-2";6967051;"09/939,286";"Thermal Insulation System And Method (Continuing Patent Application) (Combined With KSC-12092)"; -"NASA Kennedy Space Center";"Issued";"KSC-12107";6742926;"09/906,018";"Thermal Insulation Test Apparatus With Sleeve (Related To KSC-12108)"; -"NASA Kennedy Space Center";"Issued";"KSC-12108";6487866;"09/906,011";"Multipurpose Thermal Insulation Test Apparatus (Related To 12107)"; -"NASA Kennedy Space Center";"Issued";"KSC-12168";6452510;"09/802,535";"Personal Cabin Pressure Monitor And Altitude Warning System"; -"NASA Kennedy Space Center";"Issued";"KSC-12190";6764617;"09/994,996";"A Novel Ferromagnetic Conducting Lignosulfonic Acid-Doped Polyaniline (Related To KSC-11940, KSC-11940-1, KSC-11940-2, KSC-12154, KSC-12191)"; -"NASA Kennedy Space Center";"Issued";"KSC-12191-2";7179404;"11/215,205";"Corrosion Prevention Of Cold Rolled Steel Using Water Dispersible Lignosulfonic Acid Doped Polyaniline"; -"NASA Kennedy Space Center";"Issued";"KSC-12205";6715914;"10/185,378";"Apparatus And Method For Thermal Performance Testing Of Pipelines And Piping Systems"; -"NASA Kennedy Space Center";"Issued";"KSC-12220";6917203;"10/235,020";"Current Signature Sensor (Combined With KSC-12152)"; -"NASA Kennedy Space Center";"Issued";"KSC-12221";6757641;"10/185,830";"Multisensor Transducer And Weight Factor (Combined With KSC-12359 and KSC-13139)"; -"NASA Kennedy Space Center";"Issued";"KSC-12235";6793903;"10/014,140";"High-Temperature Decomposition Of Hydrogen Peroxide"; -"NASA Kennedy Space Center";"Issued";"KSC-12235-2";6955799;"10/923,152";"Temperature Decomposition Of Hydrogen Peroxide"; -"NASA Kennedy Space Center";"Issued";"KSC-12235-3";8029736;"10/923,163";"High Temperature Decomposition Of Hydrogen Peroxide"; -"NASA Kennedy Space Center";"Issued";"KSC-12236";8511396;"10/476,175";"Non-Toxic Environmentally Safe Halon Replacement (HABx)"; -"NASA Kennedy Space Center";"Application";"KSC-12236-2-PCT";0;"/0";"Flame Suppression Agent, System And Users"; -"NASA Kennedy Space Center";"Application";"KSC-12236-CIP";;"13/428,736";"Non-Toxic Environmentally Safe Halon Replacement (HABx)"; -"NASA Kennedy Space Center";"Issued";"KSC-12246";6664298;"09/972,296";"Zero-Valent Metal Emulsion For Reductive Dehalogenation Of DNAPLs"; -"NASA Kennedy Space Center";"Issued";"KSC-12246-2";7037946;"10/701,412";"Zero-Valent Metal Emulsion For Reductive Dehalogenation Of DNAPLs"; -"NASA Kennedy Space Center";"Issued";"KSC-12278";7400766;"10/783,295";"Image Edge Extraction Via Fuzzy Reasoning (FRED) (combined With KSC-12272)"; -"NASA Kennedy Space Center";"Issued";"KSC-12386";7274907;"10/748,915";"Modular Wireless Data Acquisition System (combined With KSC-12479, KSC-12486)"; -"NASA Kennedy Space Center";"Issued";"KSC-12390";6824306;"10/318,665";"Thermal Insulation Test Apparatus For Flat Specimens"; -"NASA Kennedy Space Center";"Issued";"KSC-12394";7239751;"10/750,629";"Hypothesis Support Mechanism For Mid-Level Visual Pattern Recognition (PIPR)"; -"NASA Kennedy Space Center";"Issued";"KSC-12458";7156957;"10/440,543";"UV Induced Oxidation Of Nitric Oxide"; -"NASA Kennedy Space Center";"Issued";"KSC-12490";7298897;"10/779,551";"Noniterative Optimal Binarization Of Gray-Scaled Digital Images Via Fuzzy Reasoning (FRAT) (combined With KSC-12272)"; -"NASA Kennedy Space Center";"Issued";"KSC-12518";7790128;"10/641,581";"Hydrogen Peroxide Catalytic Decomposition"; -"NASA Kennedy Space Center";"Issued";"KSC-12539";7285306;"10/684,064";"Self-Healing Wire Insulation"; -"NASA Kennedy Space Center";"Issued";"KSC-12539-2";8119238;"11/856,218";"Self-Healing Wire Insulation"; -"NASA Kennedy Space Center";"Application";"KSC-12539-3";0;"13/348,861";"Self-Healing Wire Insulation"; -"NASA Kennedy Space Center";"Issued";"KSC-12540";6958085;"10/666,821";"High Performance Immobilized Liquid Membranes For Carbon Dioxide Separations"; -"NASA Kennedy Space Center";"Issued";"KSC-12630";7496237;"11/010,698";"Image Processing For Binarization Enhancement Via Fuzzy Reasoning"; -"NASA Kennedy Space Center";"Issued";"KSC-12631";7582147;"11/208,122";"Metallic Pigment Powder Particle For Use In A Liquid Coating System To Protect Reinforcing Steel In Concrete Structures"; -"NASA Kennedy Space Center";"Issued";"KSC-12637";7271199;"10/977,622";"Micro-scale Particle Emulsion And Their Application For Removal Of PCBs And Metals Found In Ex Situ Structures"; -"NASA Kennedy Space Center";"Issued";"KSC-12664";7404938;"10/845,418";"Emission Control System"; -"NASA Kennedy Space Center";"Issued";"KSC-12664-3-CIP";7582271;"11/40,294";"Emission Control System"; -"NASA Kennedy Space Center";"Issued";"KSC-12666";7122166;"10/845,607";"Hydrogen Peroxide Concentrator"; -"NASA Kennedy Space Center";"Issued";"KSC-12669";7302364;"11/83,420";"Integrated Spaceport Automated Data Management Architecture (Combine With KSC-12581, KSC-12583, KSC-12671and KSC-12582)"; -"NASA Kennedy Space Center";"Issued";"KSC-12697";7309738;"10/962,827";"A New Approach For Achieving Fire Retardancy While Retaining Physical Properties In A Compatible Polymer Matrix"; -"NASA Kennedy Space Center";"Issued";"KSC-12697-3";7968648;"11/935,093";"A New Approach For Achieving Flame Retardancy While Retaining Physical Properties In A Compatible Polymer Matrix"; -"NASA Kennedy Space Center";"Issued";"KSC-12703";8031449;"12/485,979";"Integral Battery Power Limiting Circuit For Intrinsically Safe Applications"; -"NASA Kennedy Space Center";"Issued";"KSC-12723";7790225;"11/239,445";"Coating For Corrosion Detection And Prevention"; -"NASA Kennedy Space Center";"Application";"KSC-12723-DIV";;"12/792,238";"Coating For Corrosion Detection And Prevention"; -"NASA Kennedy Space Center";"Issued";"KSC-12848";7781492;"11/759,672";"New Organic/inorganic Polymeric Thermal Insulators"; -"NASA Kennedy Space Center";"Issued";"KSC-12848-DIV";7977411;"12/835,233";"New Organic/inorganic Polymeric Thermal Insulators"; -"NASA Kennedy Space Center";"Application";"KSC-12871-CIP";0;"13/915,407";"Polyimide Wire Insulation Repair System"; -"NASA Kennedy Space Center";"Application";"KSC-12871-DIV1";0;"14/093,701";"Polyimide Wire Insulation Repair System"; -"NASA Kennedy Space Center";"Application";"KSC-12871-DIV2";0;"14/093,680";"Polyimide Wire Insulation Repair System"; -"NASA Kennedy Space Center";"Issued";"KSC-12875";7841771;"11/777,711";"Self Validating Thermocouple (Combined With KSC-12865)"; -"NASA Kennedy Space Center";"Issued";"KSC-12878-2-CIP";8163972;"12/465,457";"Bimetallic Treatment System and it's application for Removal of PCBs Found in Ex Situ Structures without the Use of a Catalized Agent"; -"NASA Kennedy Space Center";"Issued";"KSC-12890";7790787;"11/740,357";"New Organic/Inorganic Polymeric Materials"; -"NASA Kennedy Space Center";"Application";"KSC-12890-2-DIV";0;"12/834,416";"New Organic/Inorganic Polymeric Materials"; -"NASA Kennedy Space Center";"Issued";"KSC-12899";8425866;"11/466,624";"Gas Phase Oxidation Of NO To NO2"; -"NASA Kennedy Space Center";"Issued";"KSC-12978";7842639;"11/749,767";"Preparation of a Bimetal Using Mechanical Alloying for the Dehalogenation of Compounds"; -"NASA Kennedy Space Center";"Issued";"KSC-12978-DIV";8288307;"12/909,219";"Preparation of a Bimetal Using Mechanical Alloying for the Dehalogenation of Compounds"; -"NASA Kennedy Space Center";"Issued";"KSC-12983";8409534;"11/692,557";"Mercury Emission Control System"; -"NASA Kennedy Space Center";"Application";"KSC-13047";0;"12/813,864";"Insulation Test Cryostat with Lift Mechanism (Combined with KSC-13048)"; -"NASA Kennedy Space Center";"Application";"KSC-13047-DIV";0;"14/090,193";"Insulation Test Cryostat with Lift Mechanism (Combined with KSC-13048)"; -"NASA Kennedy Space Center";"Issued";"KSC-13088";8293178;"11/935,545";"Improved Thermal Reactivity Of Hydrogen Sensing Pigments In Manufactured Polymer Composites"; -"NASA Kennedy Space Center";"Application";"KSC-13088-CON";0;"13/611,856";"Improved Thermal Reactivity Of Hydrogen Sensing Pigments In Manufactured Polymer Composites"; -"NASA Kennedy Space Center";"Application";"KSC-13088-DIV";0;"13/615,850";"Improved Thermal Reactivity Of Hydrogen Sensing Pigments In Manufactured Polymer Composites"; -"NASA Kennedy Space Center";"Application";"KSC-13161";0;"12/855,791";"PH Sensitive Microcapsule With Corrosion Indicator"; -"NASA Kennedy Space Center";"Application";"KSC-13167";0;"12/856,849";"Watercore PH Sensitive Microcapsule"; -"NASA Kennedy Space Center";"Application";"KSC-13265-CIP2";0;"14/150,502";"An Inductive Non-Contact Position Sensor"; -"NASA Kennedy Space Center";"Application";"KSC-13278";0;"13/354,576";"A Method for Making Elongated Microcapsules Under Simple Shear Conditions"; -"NASA Kennedy Space Center";"Issued";"KSC-13285";8593153;"12/843,382";"An improved Online Diagnostic Device (ODD) for Wiring Evaluation"; -"NASA Kennedy Space Center";"Issued";"KSC-13331";8577639;"13/031,182";"A Method for Accurately Calibrating a Spectrometer Using Broadband Light"; -"NASA Kennedy Space Center";"Application";"KSC-13336";0;"12/843,487";"Sputter Coated wire for in-situ wire damage detection"; -"NASA Kennedy Space Center";"Application";"KSC-13343";0;"13/278,710";"Conductive Carbon Nanotube for use with Desktop Inkjet Printing"; -"NASA Kennedy Space Center";"Application";"KSC-13366";0;"13/523,806";"High Performance Self Healing Film"; -"NASA Kennedy Space Center";"Application";"KSC-13579";;"13/895,717";"Green PCB Removal From Sediment Systems (GPRSS)"; -"NASA Kennedy Space Center";"Application";"KSC-13588";;"13/495,862";"Multi-Dimensional Damage Detection For Flat Surfaces"; -"NASA Kennedy Space Center";"Application";"KSC-13592";;"13/542,155";"pH sensitive microparticles"; -"NASA Kennedy Space Center";"Application";"KSC-13595";;"14/192,784";"Aerogel insulation and composites integrated into unique lay-ups (Incorporates Embodiments from KSC-13702)"; -"NASA Kennedy Space Center";"Application";"KSC-13636";;"13/546,880";"Incorporation of Chemochromic Indicator for the Presence of Hypergolic Fuels into a Variety of Manufactured Parts"; -"NASA Kennedy Space Center";"Application";"KSC-13638";;"14/176,824";"A Two Dimensional Inductive Position Sensor"; -"NASA Kennedy Space Center";"Application";"KSC-13664";;"13/896,896";"Regolith Advanced Surface Systems Operations Robot (RASSOR) Excavator"; -"NASA Kennedy Space Center";"Application";"KSC-13689";;"13/961,521";"Coherence Multiplexing of Wireless Surface Acoustic Wave Sensors"; -"NASA Langley Research Center";"Issued";"LAR-14673-1";5736642;"08/778,066";"Nonlinear Ultrasonic Scanning To Detect Material Defects";"01/08/2017" -"NASA Langley Research Center";"Issued";"LAR-14840-1";5841032;"08/792,909";"Variable And Fixed Frequency Pulsed Phase-Locked Loop";"01/24/2017" -"NASA Langley Research Center";"Issued";"LAR-15205-1";5741883;"08/359,752";"Tough, Soluble, Aromatic, Thermoplastic Copolyimides";"04/21/2015" -"NASA Langley Research Center";"Issued";"LAR-15282-1";5755571;"08/712,984";"Ultrasonic Periodontal Structures Mapping Device";"09/09/2016" -"NASA Langley Research Center";"Issued";"LAR-15318-1";5798521;"08/806,732";"Distributed Fiber-optic Strain Sensor";"02/27/2017" -"NASA Langley Research Center";"Issued";"LAR-15348-1";5632841;"08/416,598";"Thin Layer Composite Unimorph Ferroelectric Driver And Sensor, THUNDER";"04/04/2015" -"NASA Langley Research Center";"Issued";"LAR-15348-2";6734603;"08/797,553";"Thin Layer Composite Unimorph Ferroelectric Driver And Sensor";"04/04/2015" -"NASA Langley Research Center";"Issued";"LAR-15351-1-CU";5585083;"08/414,661";"Catalyst For Formaldehyde Oxidation";"03/30/2015" -"NASA Langley Research Center";"Issued";"LAR-15370-1-SB";5640408;"08/593,438";"Quasi Four-Level TM:LuAG Laser (Tm:LuAG Laser)";"01/27/2016" -"NASA Langley Research Center";"Issued";"LAR-15376-1";5771204;"08/754,642";"Relative Phase Measurement Instrument For Multiple-Echo Systems";"11/21/2016" -"NASA Langley Research Center";"Issued";"LAR-15406-1";5617873;"08/449,473";"Noninvasive Meth/Apparatus For Monitoring Intracranial Pressure & Pressure Vols Index In Humans";"05/23/2015" -"NASA Langley Research Center";"Issued";"LAR-15412-1";5606014;"08/511,422";"Imide Oligomers And Co-Oligomers Containing Pendent Phenylethynyl Groups And Polymers Therefrom";"08/04/2015" -"NASA Langley Research Center";"Issued";"LAR-15412-2";5689004;"08/747,472";"Imide Oligomers And Co-Oligomers Containing Pendent Phenylethynyl Groups And Polymers Therefrom";"08/04/2015" -"NASA Langley Research Center";"Issued";"LAR-15449-1";6133401;"09/342,462";"A Method To Prepare Processable Polyimides With Reactive Endgroups Using 1,3 Bis (3-Aminophenoxyl) Benzene";"06/29/2019" -"NASA Langley Research Center";"Issued";"LAR-15449-2";6288209;"09/667,426";"Method To Prepare Processable Polyimides With Reactive Endgroups Using 1,3-Bix(3-Aminophenoxyl)Benzene";"06/29/2019" -"NASA Langley Research Center";"Issued";"LAR-15507-1";6475147;"09/493,044";"Ultrasonic Technique To Measure Intracranial Pressure";"01/27/2020" -"NASA Langley Research Center";"Issued";"LAR-15508-1";6545760;"09/535,659";"Distributed Rayleigh Scatter Fiber Optic Strain Sensor";"03/24/2020" -"NASA Langley Research Center";"Issued";"LAR-15514-1-SB";5991456;"08/654,840";"Method Of Improving A Digital Image";"05/29/2016" -"NASA Langley Research Center";"Issued";"LAR-15524-1";6000844;"08/810,058";"A Method And Apparatus For The Portable Identification Of Material Thickness Of Layers Using A Scanning Linear Heat Source And Infrared Detectorcramer";"03/04/2017" -"NASA Langley Research Center";"Issued";"LAR-15525-1-CU";5948965;"08/845,899";"Solid State Carbon Monoxide Sensor";"04/28/2017" -"NASA Langley Research Center";"Issued";"LAR-15637-1";6015272;"08/673,627";"Magnetically Suspended Miniature Fluid Pump And Method Of Making Same";"06/26/2016" -"NASA Langley Research Center";"Issued";"LAR-15637-2";6447265;"09/398,878";"Magnetically Suspended Miniature Fluid Pump And Method Of Designing The Same";"06/26/2019" -"NASA Langley Research Center";"Issued";"LAR-15652-1-CU";6132694;"08/991,075";"Catalyst For Oxidation Of Hydro-Carbons And Volatile Organic Compounds";"12/16/2017" -"NASA Langley Research Center";"Application";"LAR-15665-1-CU";0;"08/838,596";"Catalyst For Carbon Monoxide Oxidation"; -"NASA Langley Research Center";"Issued";"LAR-15745-1";6222007;"09/093,826";"Prepreg And Composites Made From Polyimide Salt-Like Solution";"05/29/2018" -"NASA Langley Research Center";"Issued";"LAR-15747-1-CU";6200539;"09/357,403";"One-Atmosphere Uniform Glow Discharge Plasma Gas Flow Acceleration";"07/20/2019" -"NASA Langley Research Center";"Issued";"LAR-15767-1";6180746;"09/316,428";"Polyimide Foam From Ether-Containing Monomeric Solutions";"05/21/2019" -"NASA Langley Research Center";"Issued";"LAR-15816-1";6629341;"09/430,677";"Macro-Fiber Composite Actuator With Interdigitated Electrodes";"10/29/2019" -"NASA Langley Research Center";"Issued";"LAR-15816-2";7197798;"10/653,824";"A Method For Fabricating A Piezoelectric Composite Apparatus";"06/30/2020" -"NASA Langley Research Center";"Issued";"LAR-15817-1";6450820;"09/612,412";"A Method Of Encouraging Physiological Self-Regulation Through Modulation Of An Operator's Control Input To A Video Game Or Training Simulator";"07/12/2020" -"NASA Langley Research Center";"Issued";"LAR-15818-3";6922242;"10/465,386";"Optical Path Switching Based Differential Absorption Radiometry For Substance Detection";"06/21/2019" -"NASA Langley Research Center";"Issued";"LAR-15831-1";5994418;"09/316,865";"Hollow Polyimide Microspheres";"05/21/2019" -"NASA Langley Research Center";"Issued";"LAR-15831-2";6235803;"09/408,652";"Hollow Polyimide Microspheres";"05/21/2019" -"NASA Langley Research Center";"Issued";"LAR-15831-3";6084000;"09/394,534";"Hollow Polyimide Microsphere";"05/21/2019" -"NASA Langley Research Center";"Issued";"LAR-15834-1";6359107;"09/575,826";"High Performance / High Temperature Resins For Infusion And Transfer Molding Processes";"05/18/2020" -"NASA Langley Research Center";"Issued";"LAR-15851-1-CU";6753293;"09/607,211";"Process For Coating Substrates With Catalyst Materials";"05/11/2021" -"NASA Langley Research Center";"Issued";"LAR-15854-1";6761695;"10/94,023";"Technique For Non-Invasive Absolute Measurement Of Intra-Cranial Pressure In Humans";"07/28/2022" -"NASA Langley Research Center";"Issued";"LAR-15927-1";6584848;"10/263,292";"Dielectric Electrostatic Ultrasonic Transducer (DEUT)";"09/30/2022" -"NASA Langley Research Center";"Issued";"LAR-15934-1";6566648;"09/535,661";"Edge Triggered Apparatus And Method For Measuring Strain In Bragg Gratings";"03/24/2020" -"NASA Langley Research Center";"Issued";"LAR-15943-1";6746410;"10/121,932";"Transducer Assembly To Measure Changes In Circumferential Expansion Of The Human Skull Due To Changes In Intracranial Pressure";"11/16/2022" -"NASA Langley Research Center";"Issued";"LAR-15954-1";6376830;"09/606,120";"Single Laser Sweep Full S-Parameter Characterization Of Fiber Bragg Gratings";"06/15/2020" -"NASA Langley Research Center";"Issued";"LAR-15959-1";7019621;"09/753,370";"Structural Tailored High Displacement Ferro-Electric Sensors And Actuators";"01/02/2021" -"NASA Langley Research Center";"Issued";"LAR-15977-1";6133330;"09/337,475";"Polyimide Foam From Monomeric Solutions";"05/21/2019" -"NASA Langley Research Center";"Issued";"LAR-15990-1";6551251;"09/784,413";"Dual Transmission Interface For Passive Fetal Heart Monitoring";"02/13/2021" -"NASA Langley Research Center";"Issued";"LAR-16001-1";7371358;"10/975,117";"Catalyst For Treatment And Control Of Post-Combustion Emissions";"10/25/2024" -"NASA Langley Research Center";"Issued";"LAR-16005-1";6426496;"09/648,529";"High Precision Solid State Wavelength Monitor";"11/26/2020" -"NASA Langley Research Center";"Issued";"LAR-16012-1-CU";6834125;"09/888,701";"Improvement To The Multiscale Retinex With Color Restoration";"06/25/2021" -"NASA Langley Research Center";"Issued";"LAR-16020-1";6629446;"09/758,115";"Single Vector Force Balance Calibration System";"01/26/2022" -"NASA Langley Research Center";"Issued";"LAR-16079-1";6939940;"09/757,398";"Liquid Crystalline Thermosets From Oligo-Esters, Ester-Imides And Ester-Amides";"01/05/2021" -"NASA Langley Research Center";"Issued";"LAR-16083-1";8062129;"11/536,811";"A Method And System For Multi-Player Game Playing Where Physiological Characteristics Of The Players Modulate Their Relative Advantage Over Opponents Or Competitors";"05/22/2030" -"NASA Langley Research Center";"Issued";"LAR-16116-1";6888346;"10/21,683";"Giant Magnetoresistive Based Self-Nulling Probe For Deep Flaw Detection";"11/28/2021" -"NASA Langley Research Center";"Issued";"LAR-16176-2";7109287;"10/988,407";"Space Environmentally Durable Polyimides And Copolyimides";"03/03/2025" -"NASA Langley Research Center";"Issued";"LAR-16220-1";6867533;"09/696,527";"Shaping, Tuning, And Positioning Membrane Structures Using Electroactive Polymer Actuators";"10/23/2020" -"NASA Langley Research Center";"Issued";"LAR-16231-1-CU";7092539;"09/997,113";"MEMS Based Acoustic Array";"11/28/2021" -"NASA Langley Research Center";"Issued";"LAR-16256-1";8628333;"11/129,756";"Method And System For Training Psychophysiological Skills Conducive To Optimal Performance Through Perturbation Of Training Tasks, Environments And Devices";"08/27/2029" -"NASA Langley Research Center";"Application";"LAR-16256-1-CON";0;"14/153,434";"Method And System For Training Psychophysiological Skills Conducive To Optimal Performance Through Perturbation Of Training Tasks, Environments And Devices";"05/13/2025" -"NASA Langley Research Center";"Issued";"LAR-16299-1";7871682;"10/956,520";"Composite Roll Press And Processes";"12/07/2025" -"NASA Langley Research Center";"Issued";"LAR-16307-1-SB";7390768;"10/056,845";"Methodology For The Effective Stabilization Of Tin-Oxide-Based Oxidation/Reduction Catalysts";"01/22/2022" -"NASA Langley Research Center";"Issued";"LAR-16307-2";7985709;"10/956,515";"Methodology For The Effective Stabilization Of Tin-Oxide-Based Oxidation/Reduction Catalysts";"04/16/2027" -"NASA Langley Research Center";"Application";"LAR-16308-2";0;"12/726,403";"Catalyst For Decomposition Of Nitrogen Oxides (Divisional of LAR 16308-1-CU)"; -"NASA Langley Research Center";"Issued";"LAR-16311-1";6777525;"10/115,812";"Heat, Moisture, Chemical Resistant Polyimide Compositions And Methods For Making And Using The Same";"04/01/2022" -"NASA Langley Research Center";"Issued";"LAR-16323-1";7253903;"11/27,930";"Method To Linearize Non-Linear Physical Measurements";"06/24/2025" -"NASA Langley Research Center";"Issued";"LAR-16324-1";6714132;"10/011,229";"Proximity Sensor";"11/27/2021" -"NASA Langley Research Center";"Issued";"LAR-16324-2";7106203;"10/783,486";"Self-Activating System And Method For Alerting When An Object Or Person Is Left Unattended";"11/27/2021" -"NASA Langley Research Center";"Issued";"LAR-16326-1";7060991;"10/410,605";"Method For Measuring Thickness Of Small Radius Of Curvature Structures Using A Thermal Line Scanner";"04/10/2023" -"NASA Langley Research Center";"Issued";"LAR-16332-1-CU";6842543;"09/888,816";"Method Of Improving A Digital Image Having White Zones";"06/25/2021" -"NASA Langley Research Center";"Issued";"LAR-16363-1";6856073;"10/390,675";"Radial Electric Field Piezo-Diaphragm Fluidic Control Systems";"03/13/2023" -"NASA Langley Research Center";"Issued";"LAR-16383-1-NP";7588699;"10/288,797";"Electrically Conductive, Optically Transparent Polymer/Carbon Nanotube Composites And Process For Preparation Thereof";"07/02/2023" -"NASA Langley Research Center";"Issued";"LAR-16383-2";7972536;"12/546,724";"Electrically Conductive, Optically Transparent Polymer/Carbon Nanotube Composites And Process For Preparation Thereof";"10/12/2029" -"NASA Langley Research Center";"Issued";"LAR-16390-1-SB";7318915;"10/342,660";"Ruthenium Stabilization Mechanism For Next Generation Oxidation And Reduction Catalyst Systems";"01/13/2023" -"NASA Langley Research Center";"Issued";"LAR-16393-1";6919669;"10/392,491";"Sonic Transducers And Sensors Using Radial Field Diaphragms";"05/31/2023" -"NASA Langley Research Center";"Issued";"LAR-16406-1-CU";7491169;"10/805,816";"Ultrasonic Method And Means To Assess Compartment Syndrome (Hyper Pressure States In Arm, Leg Muscle/Tendon Compartments)";"09/20/2025" -"NASA Langley Research Center";"Issued";"LAR-16409-1";8015819;"11/536,790";"Wet Active Chevron Nozzle For Controllable Jet Noise Reduction";"09/17/2028" -"NASA Langley Research Center";"Issued";"LAR-16432-1";7692116;"10/188,525";"Synthesis Of Carbon Nanotubes Using High Average Power Ultrafast Laser Ablation";"07/03/2022" -"NASA Langley Research Center";"Issued";"LAR-16437-1-NP";7169374;"11/129,751";"Templated Growth Of Carbon Nanotubes";"05/11/2025" -"NASA Langley Research Center";"Issued";"LAR-16440-1";6740048;"10/263,285";"Method Of Determining Intracranial Pressure From Skull Expansion Measurements";"09/25/2022" -"NASA Langley Research Center";"Issued";"LAR-16475-1";7194912;"10/890,843";"Carbon Nanotube-Based Structural Health Monitoring Sensor";"08/07/2024" -"NASA Langley Research Center";"Issued";"LAR-16496-1";7104498;"10/867,114";"Blown Channel-Wing System For Thrust Deflection And Force/Moment Generation";"10/03/2024" -"NASA Langley Research Center";"Issued";"LAR-16499-1";7491428;"10/730,188";"Method for the controlled deposition and alignment of single walled carbon nanotubes";"11/15/2025" -"NASA Langley Research Center";"Issued";"LAR-16510-1";6773407;"10/263,286";"Non-Invasive Method Of Determining Absolute Intracranial Pressure";"12/25/2022" -"NASA Langley Research Center";"Issued";"LAR-16516-1";6879893;"10/675,502";"Autonomous Health Monitoring Architecture Hardware";"09/30/2023" -"NASA Langley Research Center";"Issued";"LAR-16517-1";7048228;"10/678,474";"Partial-Span Slotted Wing For Transonic Aircraft";"10/03/2023" -"NASA Langley Research Center";"Issued";"LAR-16532-1";7334998;"11/5,624";"Low-Noise Fan Exit Guide Vanes";"12/06/2024" -"NASA Langley Research Center";"Issued";"LAR-16538-1";7675619;"12/129,967";"Micro-LiDAR For In-Flight Flow Velocimetry And Boundary Layer Control";"11/11/2028" -"NASA Langley Research Center";"Issued";"LAR-16549-1";7262543;"10/943,655";"Inductor (L)-Capacitor ( C ) (aka, LC) Sensor Circuit For Piezo Material Monitoring";"04/17/2025" -"NASA Langley Research Center";"Application";"LAR-16565-1";0;"13/020,025";"e-Sensor: Quantitative Imaging of Electric Fields and Electric Potentials"; -"NASA Langley Research Center";"Issued";"LAR-16566-1";7285932;"10/975,119";"Method And Apparatus For Loss Of Control Inhibitor Systems";"10/27/2024" -"NASA Langley Research Center";"Issued";"LAR-16571-1";7075295;"10/839,448";"LC Sensing Element For Closed Cavities Having Low Radio Frequency Transmissivity";"04/30/2024" -"NASA Langley Research Center";"Issued";"LAR-16571-2";7589525;"11/421,886";"Magnetic Field Response Sensor For Conductive Media";"09/26/2024" -"NASA Langley Research Center";"Issued";"LAR-16571-3";7759932;"12/533,520";"Magnetic Field Response Sensor For Conductive Media";"07/31/2029" -"NASA Langley Research Center";"Issued";"LAR-16573-1";7129467;"10/943,831";"Carbon Nanotube Based Light Sensor";"09/29/2024" -"NASA Langley Research Center";"Issued";"LAR-16575-1";7181942;"10/943,649";"Instrumented Crimping Tool For Critical Wiring Applications";"11/24/2024" -"NASA Langley Research Center";"Issued";"LAR-16605-1";7623993;"10/731,742";"Energy-extraction-based active noise control system";"11/27/2026" -"NASA Langley Research Center";"Issued";"LAR-16615-1";6956066;"10/779,552";"Polyimide Foams";"02/11/2024" -"NASA Langley Research Center";"Issued";"LAR-16615-2";7541388;"11/124,640";"Polyimide Foams";"05/05/2025" -"NASA Langley Research Center";"Issued";"LAR-16616-1";7758927;"10/956,704";"Laser-Induced Fabrication Of Metallic Interlayers And Patterns In Polyimide Films";"09/30/2024" -"NASA Langley Research Center";"Issued";"LAR-16640-1";8089677;"12/135,180";"Programmable Smart Grating Device With Quantum Aperture Array";"08/05/2029" -"NASA Langley Research Center";"Issued";"LAR-16696-1";7048235;"10/678,397";"Slotted Aircraft Wing (a.k.a. Full Span Slotted Wing)";"10/03/2023" -"NASA Langley Research Center";"Issued";"LAR-16698-1";7394181;"11/76,824";"High Performance High Efficiency Hybrid Actuator Systems (HYBAS)";"03/04/2025" -"NASA Langley Research Center";"Issued";"LAR-16736-1";7962252;"11/422,984";"Semi Autonomous Flight System With Avionics Sensor Board, Processing Board, And Flight Control Board";"04/07/2027" -"NASA Langley Research Center";"Issued";"LAR-16845-1";8083986;"12/315,520";"Advanced Thermo-Electric Materials with Nano-Voids";"12/04/2028" -"NASA Langley Research Center";"Issued";"LAR-16854-1";7381186;"10/911,755";"Ultrasonic Method And Means To Assess Compartment Syndrome Part B";"08/02/2024" -"NASA Langley Research Center";"Issued";"LAR-16858-1";7667847;"11/533,921";"Thin, High-Contrast Targets for Ultralightweight Structures";"12/15/2026" -"NASA Langley Research Center";"Issued";"LAR-16867-1";7402264;"11/076,460";"Electroactive polymer-carbon nanotube-ceramic nanocomposites";"02/27/2026" -"NASA Langley Research Center";"Issued";"LAR-17548-1";8236413;"12/166,852";"Fail Safe High-Temperature Composite Structure";"07/07/2030" -"NASA Langley Research Center";"Issued";"LAR-16867-2";7527751;"12/109,490";"Sensing/Actuating Materials Made From Carbon Nanotube Polymer Composites And Methods For Making Same";"04/25/2028" -"NASA Langley Research Center";"Issued";"LAR-16868-1";7341883;"11/242,415";"Lattice Matched SiGe Layer On Single Crystalline Sapphire Substrate";"09/27/2025" -"NASA Langley Research Center";"Issued";"LAR-16871-1";6413227;"09/459,384";"Optimization Of Ultrasonic Method For Assessment Of Changes In Intracranial Pressure Through Measurement Of Skull Expansion";"12/02/2019" -"NASA Langley Research Center";"Issued";"LAR-16872-1";7514726;"11/387,086";"Graded Indexed SiGe Layers on Lattice Matched SiGe Layers on Sapphire";"06/10/2027" -"NASA Langley Research Center";"Issued";"LAR-16874-1";7723464;"11/674,321";"Novel Aromatic/Aliphatic Diamine Derivatives For Advanced Compositions And Polymers";"02/13/2027" -"NASA Langley Research Center";"Issued";"LAR-16877-1";7186367;"11/110,996";"Double-Vacuum Bag (DVB) Process For Volatile Management In Resin Matrix Composite Manufacturing";"07/08/2025" -"NASA Langley Research Center";"Issued";"LAR-16885-1";7890311;"11/177,664";"Method Of Simulating Flow-Through Area Of A Pressure Regulator";"12/15/2029" -"NASA Langley Research Center";"Issued";"LAR-16886-1";7375808;"11/536,120";"Dual Sensing Capable Germ Or Toxic Chemical (GTC) Sensor Using Quantum Aperture Array With Surface Plasmon Polariton (SPP)";"09/28/2026" -"NASA Langley Research Center";"Issued";"LAR-16900-1";7278324;"11/155,923";"CNT based crack growth detector and strain field monitor";"08/07/2024" -"NASA Langley Research Center";"Issued";"LAR-16906-1";8529825;"12/928,128";"Fabrication of Nanovoid-imbedded Bismuth Telluride with Low Dimensional System";"02/01/2028" -"NASA Langley Research Center";"Issued";"LAR-16907-1";7783060;"11/126,518";"A Deconvolution Approach For The Mapping Of Acoustic Sources (DAMAS) Determined From Phased Microphone Arrays";"03/27/2029" -"NASA Langley Research Center";"Issued";"LAR-16908-1";7086593;"10/839,445";"Magnetic Field Response Measurement Acquisition System (Includes LAR-16138-1, LAR-16554-1, LAR-16591-1, LAR-16614-1, LAR-16617-1, & LAR-16908-1)";"05/04/2024" -"NASA Langley Research Center";"Issued";"LAR-16946-1";7484930;"11/169,256";"Blowing Flap Side Edge";"07/01/2025" -"NASA Langley Research Center";"Issued";"LAR-16950-1";7379231;"11/470,771";"Ferroelectric Light Control Device";"09/07/2026" -"NASA Langley Research Center";"Issued";"LAR-16958-1";7510802;"11/371,575";"Fabrication of Multilayer Ferritin Array for Bionanobattery";"08/24/2027" -"NASA Langley Research Center";"Issued";"LAR-16970-1";7231832;"11/229,439";"Method For Determining Cracks On And Within Composite Panels";"12/02/2025" -"NASA Langley Research Center";"Issued";"LAR-16974-1";7047807;"11/203,583";"Methods Of Mounting Erectable, Flexible And Fixed Magnetic Field Response Sensors";"08/08/2025" -"NASA Langley Research Center";"Issued";"LAR-17003-1";7467921;"11/239,436";"Rotor Blade Vortex Management Via Boundary Layer Separation Control";"09/22/2025" -"NASA Langley Research Center";"Issued";"LAR-17013-1";7647771;"11/374,480";"Thermally Driven Miniature Piston Actuator";"11/12/2026" -"NASA Langley Research Center";"Issued";"LAR-17017-1";7537182;"11/250,700";"Enhanced Separation Control Via Simultaneous Multiple-Location Forcing";"06/18/2027" -"NASA Langley Research Center";"Issued";"LAR-17032-1";7321185;"11/370,377";"A New Concept For Active Bistable Twisting Structures";"03/06/2026" -"NASA Langley Research Center";"Issued";"LAR-17044-1";7558371;"12/254,150";"Applications Of Twin-Detection XRD Methods On SiGe (111) Layers On Sapphire (0001) Substrate";"10/20/2028" -"NASA Langley Research Center";"Issued";"LAR-17073-1";7580323;"11/419,818";"Interdigitated Electrode Actuators For Straining Optical Fibers (IDEAS)";"05/27/2026" -"NASA Langley Research Center";"Application";"LAR-17088-1";0;"13/032,045";"Nanotubular Toughening Inclusions For Improved Mechanical Reinforcement"; -"NASA Langley Research Center";"Issued";"LAR-17112-1";7507472;"11/81,888";"Multi-Layer Electroactive Devices";"09/08/2025" -"NASA Langley Research Center";"Issued";"LAR-17116-1";7506541;"11/328,468";"Wireless Fuel Volume Measurement Techniques";"10/18/2026" -"NASA Langley Research Center";"Issued";"LAR-17126-1";7666939;"11/432,201";"A Method For Producing Stable Dispersions Of Single Walled Carbon Nanotubes In Polymer Matrices Using Noncovalent Interactions";"05/11/2026" -"NASA Langley Research Center";"Issued";"LAR-17128-1";7285933;"11/188,227";"Method And Apparatus For Loss Of Control Inhibitor Systems";"07/20/2025" -"NASA Langley Research Center";"Issued";"LAR-17135-1";8217143;"11/827,567";"Fabrication of Metal Nanoshells Derived by a Biotemplate";"11/17/2030" -"NASA Langley Research Center";"Issued";"LAR-17149-2";8608993;"13/053,633";"A Method For Producing Multifunctional Structural Thermally Stable Nanocomposites With Aligned Carbon Nanotubes";"05/20/2026" -"NASA Langley Research Center";"Issued";"LAR-17154-1";7655595;"11/421,924";"Sprayable Low Temperature Oxidation Catalyst Coating Based on Sol-Gel Technology";"08/11/2027" -"NASA Langley Research Center";"Issued";"LAR-17154-2";7781366;"12/369,932";"Sol-Gel Based Oxidation Catalyst And Coating System Using Same (Divisional of -1)";"02/12/2029" -"NASA Langley Research Center";"Issued";"LAR-17155-1";7255004;"11/229,438";"Wireless Fluid-Lead Measuring Dipstick Assembly (Broken Out Of LAR-16974-1)";"03/22/2026" -"NASA Langley Research Center";"Issued";"LAR-17157-1";7507784;"11/124,508";"Liquid Crystalline Thermosets From Ester, Ester-Imide, And Ester-Amide Oligomers";"01/05/2021" -"NASA Langley Research Center";"Issued";"LAR-17163-1";7467536;"11/428,017";"Multi-axis Accelerometer Calibration System Using a Cuboidal Attitude Positioning Device";"08/18/2027" -"NASA Langley Research Center";"Issued";"LAR-17165-1";7595112;"11/461,150";"Method To Prepare Hybrid Metal/Composite Laminates By Resin Infusion";"02/01/2028" -"NASA Langley Research Center";"Issued";"LAR-17168-1";7732998;"11/462,114";"Cylindrical Shaped Micro Fiber Composite (CMFC) Actuators";"09/24/2027" -"NASA Langley Research Center";"Issued";"LAR-17169-1";7446459;"11/486,200";"Hybrid Force/Stress Amplified Piezoelectric Energy Harvesting Transducer System";"07/13/2026" -"NASA Langley Research Center";"Application";"LAR-17211-1";0;"13/557,250";"Floating Ultrasonic Transducer Inspection System For Nondestructive Evaluation"; -"NASA Langley Research Center";"Issued";"LAR-17213-1";8020805;"11/831,233";"New Configuration and Power Technology for Application-Specific Scenarios of High Altitude Airships";"03/25/2030" -"NASA Langley Research Center";"Issued";"LAR-17224-1";7998368;"12/272,826";"Effective Dispersion of Carbon Nanotubes in an Aqueous Solution and Their Application on Bionanotechnology";"06/04/2029" -"NASA Langley Research Center";"Issued";"LAR-17229-1";7760778;"11/670,044";"Thin-film evaporative cooling concept for a solid-state laser diode crystal";"02/01/2027" -"NASA Langley Research Center";"Issued";"LAR-17235-1";7414708;"11/461,569";"Multi-Point, Multi-Component Interferometric Rayleigh/Mie Doppler Velocimeter";"08/01/2026" -"NASA Langley Research Center";"Issued";"LAR-17237-1";8294989;"12/512,344";"Photonic DART (Densely Accumulated Ray-point by micro-zone-plaTe)";"04/25/2031" -"NASA Langley Research Center";"Issued";"LAR-17240-1";8111943;"12/423,907";"Computational Visual Servo:Automatic Measurement and Control for Smart Image Enhancement";"09/14/2030" -"NASA Langley Research Center";"Issued";"LAR-17241-1";8018815;"12/490,747";"Optical Data Storage System with Micro Zone Plate";"12/05/2029" -"NASA Langley Research Center";"Issued";"LAR-17242-1";8174695;"12/508,018";"MICRO-RING THIN-FILM SPECTROMETER ARRAY";"09/03/2030" -"NASA Langley Research Center";"Issued";"LAR-17243-1";8411214;"12/144,937";"Variable Visibility Glasses for Flight Training";"02/01/2032" -"NASA Langley Research Center";"Issued";"LAR-17245-1";8344281;"12/751,075";"Use of Beam Deflection to Control Electron Beam Wire Deposition Processes";"04/26/2031" -"NASA Langley Research Center";"Issued";"LAR-17257-1";7590904;"11/531,703";"Detecting the loss of configuration access of reprogrammable Field Programmable Gate Array (FPGA) without external circuitry";"10/07/2027" -"NASA Langley Research Center";"Issued";"LAR-17267-1";7704553;"11/710,386";"Method of Depositing Metals onto Carbon Allotropes and Compositions Therefrom";"06/26/2028" -"NASA Langley Research Center";"Issued";"LAR-17268-1";7647543;"11/535,574";"Integrated mitigation for single event upset (SEU) of reprogrammable field programmable gate arrays (FPGA) operating in radiation environments";"09/27/2026" -"NASA Langley Research Center";"Issued";"LAR-17280-1";7159774;"11/305,854";"Magnetic Field Response Measurement Acquisition System";"04/30/2024" -"NASA Langley Research Center";"Issued";"LAR-17286-1";8081734;"12/628,446";"Miniature, Low-Power X-Ray Tube Using A Microchannel Electron Generator Electron Source";"02/26/2030" -"NASA Langley Research Center";"Issued";"LAR-17290-1";7737867;"11/696,333";"Advance Display Media for Improved Airport Surface Operations";"06/11/2028" -"NASA Langley Research Center";"Issued";"LAR-17293-1";7991491;"11/559,420";"Control Device And Method For Generating Control Signals For Technical Devices";"03/04/2030" -"NASA Langley Research Center";"Issued";"LAR-17294-1";8430327;"11/671,089";"Low Profile Sensors Using Self-Resonating Inductors";"08/22/2028" -"NASA Langley Research Center";"Issued";"LAR-17295-1";7683797;"11/671,131";"System For Providing Damage Detection And Thermal Protection";"02/15/2028" -"NASA Langley Research Center";"Issued";"LAR-17300-1";7538860;"11/840,363";"A Method and Apparatus for Determination of the Reflection Wavelength of Multiple Low-Reflectivity Bragg Gratings in a Single Fiber";"12/31/2027" -"NASA Langley Research Center";"Application";"LAR-17307-1";0;"11/466,569";"Low Mass Free Piston Space Radiator"; -"NASA Langley Research Center";"Issued";"LAR-17317-1";8401217;"11/780,500";"Extreme Low Frequency Acoustic Measurement Portable System";"11/29/2030" -"NASA Langley Research Center";"Application";"LAR-17317-2";;"13/771,735";"Extreme Low Frequency Acoustic Measurement System";"07/20/2027" -"NASA Langley Research Center";"Application";"LAR-17318-1";0;"13/082,734";"Preparation of Metal Nanowire Decorated Carbon Allotropes";"08/29/2027" -"NASA Langley Research Center";"Issued";"LAR-17321-1";8545986;"12/043,276";"Ultra High-Temperature, Lightweight Insulation Material Compositions And Methods For Making And Using Them";"06/27/2030" -"NASA Langley Research Center";"Application";"LAR-17323-1";0;"11/757,780";"Concept And Design Of Oxygen Band Radar For Surface Air Pressure Remote Sensing"; -"NASA Langley Research Center";"Issued";"LAR-17325-1";8060350;"12/56,686";"Unsteady aerodynamic reduced-order models (ROMs) for efficient aeroelastic analysis";"03/04/2030" -"NASA Langley Research Center";"Issued";"LAR-17327-1";8117013;"12/002,857";"Standardized Radiation Shield Design Method: 2005 HZETRN";"07/05/2030" -"NASA Langley Research Center";"Application";"LAR-17330-1";0;"11/946,207";"Multi Functional Composite And Honeycomb Panels"; -"NASA Langley Research Center";"Issued";"LAR-17332-1";7958733;"11/762,827";"Active Flow Effectors by Embedded Shape Memory Alloy Actuation";"11/04/2029" -"NASA Langley Research Center";"Application";"LAR-17332-2";;"13/096,305";"Jet Engine Exhaust Nozzle Flow Effector";"07/05/2027" -"NASA Langley Research Center";"Issued";"LAR-17335-1";8170234;"12/108,562";"Extension Of DAMAS Phased Array Processing For Spatial Coherence Determination (DAMAS-C)";"03/02/2031" -"NASA Langley Research Center";"Issued";"LAR-17346-1";7649439;"11/465,503";"Thermoelectric Devices From Thin Metal System To Include Flexible Substrate And Method Of Making Same";"04/28/2027" -"NASA Langley Research Center";"Issued";"LAR-17355-1";8164485;"11/863,964";"A Method of Providing a Synthetic Vision System Flight Management Visualization Display for Aiding Pilot Preview, Rehearsal and/or Review and Real-Time Visual Acquisition of Flight Mission Progress";"06/24/2029" -"NASA Langley Research Center";"Application";"LAR-17361-1";0;"12/138,709";"Airfoil/ Wing Flow Control Using Flexible Extended Trailing Edge"; -"NASA Langley Research Center";"Issued";"LAR-17365-1";7784732;"11/958,673";"Boundary-Layer-Ingesting S-Duct Diffusing Inlet Flow Control Using Hybrid Vane/Jet Approach at Transonic Flow Conditions";"04/26/2029" -"NASA Langley Research Center";"Issued";"LAR-17381-1";8044294;"12/254,016";"Thermoelectric material made with highly oriented twinned alloy of Si, Ge, C, and Sn on the basal plane of trigonal substrate and thermoelectric device made with the same material";"10/11/2029" -"NASA Langley Research Center";"Issued";"LAR-17382-1";8052069;"12/393,238";"Advanced High Performance Vertical Hybrid Electroactive Synthetic Jet Actuator (ASJA-V)";"10/18/2029" -"NASA Langley Research Center";"Issued";"LAR-17384-1";8662412;"12/354,808";"Advanced Modified High Performance Synthetic Jet Actuator With Optimized Curvature Shape Chamber (ASJA-M)";"10/27/2031" -"NASA Langley Research Center";"Issued";"LAR-17385-1";7671306;"11/589,011";"Apparatus For Free Electron Laser Ablative Synthesis Of Carbon Nanotubes";"03/10/2028" -"NASA Langley Research Center";"Application";"LAR-17386-1";0;"12/851,584";"Fine-Grained Targets For Free Electron Laser Synthesis Of Carbon Nanotubes"; -"NASA Langley Research Center";"Issued";"LAR-17387-1";7663077;"11/589,010";"Process For Optimizing The Yield And Production Rate Of Single-Walled Carbon Nanotubes Using Free Electron Laser Synthesis";"01/23/2028" -"NASA Langley Research Center";"Issued";"LAR-17390-1";8235309;"12/355,782";"Advanced High Performance Horizontal Piezoelectric Hybrid Synthetic Jet Actuator (ASJA-H)";"04/02/2031" -"NASA Langley Research Center";"Issued";"LAR-17391-1";7792015;"12/187,458";"A Byzantine-Fault Tolerant Self-Stabilizing Protocol for Distributed Clock Synchronization Systems";"08/14/2028" -"NASA Langley Research Center";"Issued";"LAR-17402-1";7964698;"11/935,036";"Wholly Aromatic Liquid Crystalline Polyetherimide (LC-PEI) Resin for manufacturing high modulus fibers, films, injection molded articles and foams";"09/27/2029" -"NASA Langley Research Center";"Issued";"LAR-17405-1";8226767;"12/254,134";"Hybrid Bandgap Engineering for Rhombohedral Super-Hetero-Epitaxy";"05/11/2031" -"NASA Langley Research Center";"Application";"LAR-17413-2";0;"12/641,603";"Nanoparticle-Containing Thermoplastic Composites and Methods of Preparing Same"; -"NASA Langley Research Center";"Issued";"LAR-17425-1";8059273;"12/496,788";"Micro Spectrometer for Parallel Light";"08/19/2029" -"NASA Langley Research Center";"Application";"LAR-17427-1";0;"12/174,360";"Tailorable Dielectric Materials with Complex Permittivity Characteristics providing High Dielectric Constants and Low Loss Factors"; -"NASA Langley Research Center";"Issued";"LAR-17432-1";8112243;"12/118,172";"Forward Voltage Short Pulse (FVSP) Technique for Measuring High Power Laser Diode Array (LDA) Junction Temperature";"11/27/2030" -"NASA Langley Research Center";"Issued";"LAR-17433-1";7902815;"11/856,807";"A Multi-Measurement Wheel Sensor";"06/19/2029" -"NASA Langley Research Center";"Issued";"LAR-17440-1";7845215;"11/844,571";"Resonant Difference-Frequency Atomic Force Ultrasonic Microscope";"02/03/2029" -"NASA Langley Research Center";"Issued";"LAR-17444-1";8042739;"11/864,012";"Wireless Tamper Detection Sensor Requiring No Electrical Connection";"11/08/2029" -"NASA Langley Research Center";"Issued";"LAR-17447-1";8002219;"11/941,119";"Multifunctional Boost Protective Cover (MBPC) For A Launch Abort System (LAS)";"01/16/2030" -"NASA Langley Research Center";"Application";"LAR-17455-3";;"13/938,622";"A Nanotube Film Electrode and an Electroactive Device Fabricated with the Nanotube Film Electrode and Methods for Making Same";"10/28/2031" -"NASA Langley Research Center";"Issued";"LAR-17469-1";8094306;"12/487,735";"Micro Ring Grating Spectrometer with Moveable Aperture Slit";"08/27/2030" -"NASA Langley Research Center";"Issued";"LAR-17477-1";7993567;"12/131,420";"Auxiliary Electrode For Electrospinning Process";"10/02/2029" -"NASA Langley Research Center";"Issued";"LAR-17478-1";7883052;"11/954,452";"Integration Of A Turbo-Fan Engine Above An Aircraft's Wing Which Reduces Drag And Community Noise";"09/24/2029" -"NASA Langley Research Center";"Issued";"LAR-17480-1";7711509;"11/930,222";"A Method To Calibrate Magnetic Response Fluid-Level Sensors Using Complete Sensor Immersion In Fluid";"03/18/2028" -"NASA Langley Research Center";"Issued";"LAR-17485-1";7851062;"12/124,273";"Composition of and Method to Prepare Hybrid Laminates from Metal Plasma Coated Fibers and Polymer Matrix Resins";"09/09/2028" -"NASA Langley Research Center";"Issued";"LAR-17485-2";8017190;"12/906,633";"Metal/Fiber Laminate and Fabrication Using A Porous Metal/Fiber Preform";"05/21/2028" -"NASA Langley Research Center";"Issued";"LAR-17487-1";8157207;"11/836,517";"Jet Engine Nozzle Exit Configurations And Associated Systems And Methods";"04/15/2029" -"NASA Langley Research Center";"Issued";"LAR-17488-1";7814786;"12/015,626";"Thin-Film Sensor For Measuring Liquid-Level And Temperature Having No Electrical Connections";"08/26/2028" -"NASA Langley Research Center";"Issued";"LAR-17493-1";8424200;"12/098,000";"Conducting Nanotubes Or Nanostructures Based Composites, Method Of Making Them And Applications";"05/16/2031" -"NASA Langley Research Center";"Issued";"LAR-17502-1";8529249;"11/860,703";"Quick Change Ceramic Flame Holder for High Output Torch";"03/14/2030" -"NASA Langley Research Center";"Application";"LAR-17502-1-CON";;"14/021,325";"Flame Holder System";"09/25/2027" -"NASA Langley Research Center";"Issued";"LAR-17514-1";8196858;"12/721,833";"Mars Airplane";"02/15/2031" -"NASA Langley Research Center";"Issued";"LAR-17526-1";7991595;"12/138,768";"Adaptive Refinement Tools (ARTs) for Tetrahedral Unstructured Grids";"06/07/2029" -"NASA Langley Research Center";"Issued";"LAR-17528-1";7878348;"12/248,339";"Lightweight Lunar Surface Remote Manipulator System (LSRMS)";"10/09/2028" -"NASA Langley Research Center";"Issued";"LAR-17535-1";8206674;"12/152,414";"High Pressure Boron Vaporization Synthesis Of Few-Walled Boron Nitride Nanotube Fibers";"04/13/2030" -"NASA Langley Research Center";"Issued";"LAR-17539-1";8164328;"12/493,573";"Development Of Eddy Current Techniques For The Detection Of Stress Corrosion Cracking In Space Shuttle Primary Reaction Control Thrusters";"01/08/2030" -"NASA Langley Research Center";"Issued";"LAR-17547-1";7848381;"12/366,722";"Line Tunable Visible and Ultraviolet Laser";"07/05/2029" -"NASA Langley Research Center";"Issued";"LAR-17553-1";8257491;"12/288,379";"NEW RHOMBOHEDRAL ALIGNMENT OF CUBIC SEMICONDUCTOR ON TRIGONAL SUBSTRATE AT A HIGH TEMPERATURE";"07/06/2031" -"NASA Langley Research Center";"Issued";"LAR-17554-1";7769135;"12/288,380";"X-ray Diffraction Wafer Mapping Method for Rhombohedral Super-Hetero-Epitaxy";"10/20/2028" -"NASA Langley Research Center";"Application";"LAR-17555-1";0;"13/020,194";"Front-Flight-Path Turbulence & Vortex Detection System"; -"NASA Langley Research Center";"Issued";"LAR-17573-1";7855368;"12/178,173";"Air Coupled Acoustic Thermography Nondestructive Evaluation System And Method";"10/09/2028" -"NASA Langley Research Center";"Issued";"LAR-17576-1";7742663;"12/261,376";"Innovative Structural Design And Materials For Transmission To And Protection Of Ultraviolet And Infrared Radiation Sensors";"10/30/2028" -"NASA Langley Research Center";"Issued";"LAR-17579-1";8673649;"12/463,475";"Wireless Chemical Sensing Using Changes To An Electrically Conductive Reactant Within Sensor's Magnetic Field";"01/04/2031" -"NASA Langley Research Center";"Issued";"LAR-17593-1";8167204;"12/253,422";"Open Circuit Damage Location Sensor Having No Electrical Connections";"10/30/2030" -"NASA Langley Research Center";"Issued";"LAR-17608-1";7901611;"12/274,652";"Methodology for calculating fiber distribution during electrospinning";"01/12/2029" -"NASA Langley Research Center";"Issued";"LAR-17609-1";8255732;"12/429,603";"A Self-Stabilizing Byzantine-Fault-Tolerant Clock Synchronization Protocol";"12/30/2030" -"NASA Langley Research Center";"Issued";"LAR-17629-1";7813599;"12/390,606";"A Method for Shape Determination of Multi-Core Optical Fiber";"02/23/2029" -"NASA Langley Research Center";"Issued";"LAR-17634-1";7893602;"12/328,162";"Distributed transducer capable of generating or sensing a transverse point load";"03/14/2029" -"NASA Langley Research Center";"Application";"LAR-17636-1";0;"13/752,495";"PICA on Edge: Edgewise strips of PICA ablator to eliminate gaps in capsule heat shield";"01/29/2033" -"NASA Langley Research Center";"Issued";"LAR-17638-1";8508413;"13/082,839";"Fractal Dielectric Microstrip Antenna using Patterned Substrate Material Geometries";"03/02/2032" -"NASA Langley Research Center";"Issued";"LAR-17651-1";8259104;"12/493,666";"Domain Decomposition By the Advancing-Partition Method for Parallel Unstructured Grid Generation";"03/09/2031" -"NASA Langley Research Center";"Issued";"LAR-17655-1";8111832;"12/424,793";"Local Intelligence Based Impedance Optimization Scheme for Adaptive Noise Reduction";"06/25/2030" -"NASA Langley Research Center";"Issued";"LAR-17656-1";8108178;"12/467,475";"DIRECTED DESIGN OF EXPERIMENTS FOR VALIDATING PROBABILITY OF DETECTION CAPABILITY OF NDE SYSTEMS (DOEPOD)";"05/05/2030" -"NASA Langley Research Center";"Application";"LAR-17668-1";0;"12/322,591";"Device for the Large-Scale synthesis of High-Quality Boron Nitride Nanotubes";"02/04/2029" -"NASA Langley Research Center";"Issued";"LAR-17681-1";8347479;"12/849,906";"Thermally-Activated Crack Healing Mechanism for Metallic Materials";"04/30/2031" -"NASA Langley Research Center";"Application";"LAR-17681-2";;"13/719,740";"System for Repairing Cracks in Structures";"08/04/2030" -"NASA Langley Research Center";"Issued";"LAR-17681-3";8679642;"14/037,850";"System for Repairing Cracks in Structures";"08/04/2030" -"NASA Langley Research Center";"Application";"LAR-17689-1";0;"12/393,289";"Negative Dielectric Constant Material Based on Ion Conducting Materials";"08/20/2031" -"NASA Langley Research Center";"Application";"LAR-17694-1";0;"12/974,359";"A Synthetic Quadrature Phase Detector/Demodulator for Fourier Transform Spectrometers";"03/09/2032" -"NASA Langley Research Center";"Issued";"LAR-17695-1";8658004;"12/470,689";"Vapor-Barrier Vacuum Isolation System";"08/01/2032" -"NASA Langley Research Center";"Application";"LAR-17696-1";0;"12/543,686";"Asymmetric Dielectric Elastomer Composite Material";"03/16/2031" -"NASA Langley Research Center";"Issued";"LAR-17705-1";8672107;"13/042,655";"Tunable damper capable of tailoring the structural damping for individual modes of vibration using minimal space and minimal impact on the system frequencies and mode shapes.";"11/28/2031" -"NASA Langley Research Center";"Issued";"LAR-17709-1";7912101;"12/628,423";"Increased Efficiency Nonlinear Optical Interactions";"12/01/2029" -"NASA Langley Research Center";"Issued";"LAR-17711-1";8179203;"12/569,984";"Wireless Electrical Applications/Devices Using floating Electrodes Electromagnetically Coupled to Open-Circuit Devices";"07/09/2030" -"NASA Langley Research Center";"Application";"LAR-17723-1";0;"12/699,334";"Novel material for wound healing applications."; -"NASA Langley Research Center";"Issued";"LAR-17724-1";8378659;"12/703,221";"Electroactive polymer fibers for structural health monitoring.";"01/22/2031" -"NASA Langley Research Center";"Issued";"LAR-17735-1";8490463;"12/881,431";"Assessment and Calibration of Crimp Tool Equipped with Ultrasonic Analysis, including Phantom Construction";"10/22/2031" -"NASA Langley Research Center";"Issued";"LAR-17736-1";8147920;"12/370,755";"Controlled Deposition And Alignment Of Carbon Nanotubes (Continuation of LAR 16499-1)";"02/13/2029" -"NASA Langley Research Center";"Application";"LAR-17738-1";0;"12/685,280";"Sensory Metallic Materials"; -"NASA Langley Research Center";"Issued";"LAR-17743-1";8473663;"13/011,198";"Reconfigurable Peripheral Component Interconnect local bus controller and target design.";"10/07/2031" -"NASA Langley Research Center";"Issued";"LAR-17745-1";7906043;"12/550,431";"Electrically Conductive, Optically Transparent Polymer/Carbon Nanotube Composites And Process For Preparation Thereof";"11/01/2022" -"NASA Langley Research Center";"Application";"LAR-17877-1";;"13/277,859";"Autonomous Leading-Edge Slat Device for Reduction of Aeroacoustic Noise Associated with Aircraft Wings"; -"NASA Langley Research Center";"Application";"LAR-17747-1";0;"13/029,471";"Temperature Sensing Using Temperature Sensitive Dielectric Material in Proximity to Open-Circuit Sensors Having No Electrical Connections"; -"NASA Langley Research Center";"Application";"LAR-18090-1";;"13/786,608";"No Moving Part - Variable Frequency Fluidic Oscillator";"03/06/2033" -"NASA Langley Research Center";"Application";"LAR-17747-1-CON";;"14/193,861";"Wireless Temperature Sensor Having No Electrical Connections and Sensing Method for Use Therewith";"02/17/2031" -"NASA Langley Research Center";"Issued";"LAR-17748-1";8303922;"12/546,185";"Exfoliation of Hexagonal Boron Nitride";"11/19/2030" -"NASA Langley Research Center";"Issued";"LAR-17759-1";7935414;"12/406,315";"Multilayer Electroactive Polymer Composite Material (Continuation of LAR 17112-1)";"03/18/2029" -"NASA Langley Research Center";"Issued";"LAR-17766-1";8452073;"12/750,991";"Method for Closed Loop Process Control for Electron Beam Freeform Fabrication and Deposition Processes";"10/02/2031" -"NASA Langley Research Center";"Application";"LAR-17769-1";0;"12/894,279";"Modifying Surface Energy via Laser Ablative Surface Patterning"; -"NASA Langley Research Center";"Application";"LAR-17777-1";;"13/443,940";"Process to Fabricate Specific Sized Monodisperse Polystryene Microparticles"; -"NASA Langley Research Center";"Application";"LAR-17780-1";0;"12/387,703";"Boron Nitride Nanotube Fibrils and Yarns (Filed by JLabs, their ref: ID 1248/Docket 2025(JSA)"; -"NASA Langley Research Center";"Application";"LAR-17786-1";0;"12/964,381";"Smart Optics Material Characterization System"; -"NASA Langley Research Center";"Application";"LAR-17789-1";0;"12/969,076";"Electroactive scaffold"; -"NASA Langley Research Center";"Application";"LAR-17791-1";0;"13/070,552";"Apparatus and Method for Selective Enhancement of Surface Plasmon Polaritons to Initiate and Sustain Low Energy Nuclear Reactions in Metal Hydride Systems"; -"NASA Langley Research Center";"Issued";"LAR-17799-1";8655513;"13/046,030";"Realtime 3-D Image Processing and Enhancement";"05/25/2031" -"NASA Langley Research Center";"Application";"LAR-17800-1";0;"13/527,638";"Method for generating laser linear frequency modulation waveform"; -"NASA Langley Research Center";"Application";"LAR-17801-1";0;"13/566,077";"Coherent Doppler lidar for measuring altitude, ground velocity, and air velocity of aircraft and spaceborne vehicles";"08/03/2032" -"NASA Langley Research Center";"Application";"LAR-17813-1";0;"13/198,817";"Durable Joining Technology for Uniformly-Curved Composite Sandwich Structures";"08/17/2032" -"NASA Langley Research Center";"Application";"LAR-17813-1-CON";;"14/200,708";"Systems, Apparatuses, and Methods for Using Durable Adhesively Bonded Joints for Sandwich Structures";"08/05/2031" -"NASA Langley Research Center";"Application";"LAR-17830-1";0;"12/925,047";"Actuators and Sensors Fabricated with Boron Nitride Nanotubes (BNNTs) and BNNT Polymer Composites"; -"NASA Langley Research Center";"Issued";"LAR-17831-1";8651429;"13/214,453";"Blended Cutout Flap Design for the Reduction of Jet-Flap Interaction Noise";"08/22/2031" -"NASA Langley Research Center";"Application";"LAR-17832-1";0;"13/214,469";"Aircraft Engine Nozzle Systems for Jet Noise Reduction by Acoustic Shielding"; -"NASA Langley Research Center";"Application";"LAR-17833-1";0;"13/214,481";"Active Aircraft Pylon Noise Control System"; -"NASA Langley Research Center";"Issued";"LAR-17836-1";8671763;"12/850,708";"Sub-Surface Windscreen for Outdoor Measurement of Infrasound";"02/18/2031" -"NASA Langley Research Center";"Application";"LAR-17841-1";0;" 14/202,699";"High Mobility Transport Layer Structures for Rhombohedral Si/Ge/SiGe Devices";"03/10/2034" -"NASA Langley Research Center";"Application";"LAR-17848-1";0;"13/796,626";"Spectroscopy using Electric Permittivity, Magnetic Permeability and Electrical Conductivity Spatial Profiles";"03/12/2033" -"NASA Langley Research Center";"Issued";"LAR-17856-1";8198976;"12/688,309";"Flexible Thin Metal Film Thermal Sensing System (CIP of LAR 17346-1)";"09/20/2030" -"NASA Langley Research Center";"Application";"LAR-17857-1";0;"12/967,690";"A GPS-Based Pitot-Static Calibration Method Using Global Output-Error Optimization"; -"NASA Langley Research Center";"Application";"LAR-17869-1";;"13/166,226";"Team Electronic Gameplay Combining Different Means of Control"; -"NASA Langley Research Center";"Application";"LAR-17886-1";;"13/324,527";"Method and Apparatus to Detect Wire Pathologies Near Crimped Connector"; -"NASA Langley Research Center";"Application";"LAR-17887-1";;"13/743,750";"Interrogations Leading to Recertification of Wire Crimps and Other Joining Technologies.";"01/17/2033" -"NASA Langley Research Center";"Issued";"LAR-17888-1";8605262;"13/167,093";"Time Shifted PN Codes for CW LIDAR, RADAR, and SONAR";"12/28/2031" -"NASA Langley Research Center";"Issued";"LAR-17894-1";8494687;"13/166,121";"3-D Super Resolution Algorithm for Flash LIDAR Image Enhancement";"12/11/2031" -"NASA Langley Research Center";"Application";"LAR-17895-1";;"13/166,166";"Method and System for Physiologically Modulating Videogames or Simulations Which Use Motion-Sensing Input Devices"; -"NASA Langley Research Center";"Application";"LAR-17902-1";;"13/068,329";"Neutron and Ultraviolet Radiation Shielding Films Fabricated Using Boron Nitride Nanotubes and Boron Nitride Nanotube Composites"; -"NASA Langley Research Center";"Application";"LAR-17906-1";;"13/272,027";"Abnormal Grain Growth Suppression in Aluminum Alloys"; -"NASA Langley Research Center";"Issued";"LAR-17908-1";8655094;"13/105,004";"New Photogrammetry System to Measure Relative 6-Degree-of-Freedom Motion Between Two Bodies Using Heterogeneous Cameras Having Arbitrary Wide-Angle Lenses with Non-Overlapping Fields of View";"04/23/2032" -"NASA Langley Research Center";"Application";"LAR-17918-1";;"13/136,216";"High Kinetic Energy Penetrator Shielding and High Wear Resistance Materials Fabricated with Boron Nitride Nanotubes (BNNTs) and BNNT Polymer Composites"; -"NASA Langley Research Center";"Issued";"LAR-17919-1";8661653;"13/191,882";"Z-Shields from Fiber Metal Laminate";"07/27/2031" -"NASA Langley Research Center";"Application";"LAR-17919-2";;"13/963,484";"Z-Shields from Fiber Metal Laminate";"07/27/2031" -"NASA Langley Research Center";"Application";"LAR-18097-1";;"13/591,320";"Arbitrary Shape Initialization of Fiber Optic Shape Sensing Systems";"08/22/2032" -"NASA Langley Research Center";"Application";"LAR-17923-1";;"13/411,793";"A Method of Creating Micro-scale Silver Telluride Grains Covered with Bismuth Nanospheres as Nano-bridges for Thermoelectric Application";"11/14/2032" -"NASA Langley Research Center";"Application";"LAR-17947-1";;"13/775,809";"Linear Fresnel Spectrometer Chip with Gradient Line Grating";"02/25/2033" -"NASA Langley Research Center";"Application";"LAR-17952-1";;"13/411,891";"Multi-Point Interferometric Phase Change Detection Algorithm"; -"NASA Langley Research Center";"Application";"LAR-17958-1";;"13/195,251";"Wireless Open-Circuit In-Plane Strain and Displacement Sensors Having No Electrical Connections";"07/16/2032" -"NASA Langley Research Center";"Issued";"LAR-17959-1";8087494;"12/894,326";"Method of Making a Composite Panel Having Subsonic Transverse Wave Speed Characteristics (Continuation of LAR 16535-1)";"09/30/2030" -"NASA Langley Research Center";"Application";"LAR-17966-1";;"13/457,687";"Wide Bandwidth Magneto-Resistive Sensor Based Eddy Current Probe"; -"NASA Langley Research Center";"Application";"LAR-17967-1";;"13/293,846";"Relaxor Piezoelectric Single Crystal Multilayer Stacks for Energy Harvesting Transducers (RPSEHT)"; -"NASA Langley Research Center";"Application";"LAR-17972-1";;"13/200,314";"BxCyNz Nanotube Formation via the Pressurized Vapor/Condenser"; -"NASA Langley Research Center";"Application";"LAR-17973-1";;"13/200,316";"Efficient Boron Nitride Nanotube (BNNT) and BxCyNz Nanotube Formation via Combined Laser-Gas Flow Levitation (JLab's ref: 2010-09-13-RRW)"; -"NASA Langley Research Center";"Application";"LAR-17977-1";;"13/447,513";"Variable Stiffness Shape Adaptive Multi-Layered Polymer Composite"; -"NASA Langley Research Center";"Application";"LAR-17980-1";;"13/457,540";"Space Utilization Optimization Tools"; -"NASA Langley Research Center";"Application";"LAR-17984-1";;"13/326,779";"FLEXible Side Edge Link (FLEXSEL) for Trailing-Edge Flap Aeroacoustic Noise Reduction";"12/15/2031" -"NASA Langley Research Center";"Application";"LAR-17985-1";;"13/231,386";"An Acoustic Beamforming Array Using Feedback-Controlled Microphones for Tuning and Self-Matching of Frequency Response (Michigan State University's ref: TEC2011-0045)"; -"NASA Langley Research Center";"Application";"LAR-17987-1";;"13/364,814";"A Self-Stabilizing Distributed Clock Synchronization Protocol For Arbitrary Digraphs"; -"NASA Langley Research Center";"Application";"LAR-17991-1";;"13/200,315";"Production Rig for the Synthesis of BNNTs via the PVC Method"; -"NASA Langley Research Center";"Issued";"LAR-17993-1";8662213;"13/342,264";"Locomotion of Amorphous Surface Robots";"05/06/2032" -"NASA Langley Research Center";"Application";"LAR-17993-2";;"14/189,019";"Locomotion of Amorphous Surface Robots";"01/03/2033" -"NASA Langley Research Center";"Application";"LAR-17994-1";;"13/273,516";"Manufacturing of Low Mass, Large-Scale Hierarchical Thin Film Structural Systems"; -"NASA Langley Research Center";"Application";"LAR-17996-1";;"14/202,289";"Nanostructure Neutron Converter Layer Development";"03/10/2034" -"NASA Langley Research Center";"Issued";"LAR-18006-1";8671551;"13/363,413";"Crimp Quality Assessment from Jaw Position-Ultrasonic Transmission Analysis";"02/01/2032" -"NASA Langley Research Center";"Application";"LAR-18006-2";;"14/193,086";"Crimp Quality Assessment from Jaw Position-Ultrasonic Transmission Analysis";"02/01/2032" -"NASA Langley Research Center";"Issued";"LAR-18016-1";8636407;"13/029,426";"Wireless Temperature Sensor Having No Electrical Connections and Sensing Method For Use Therewith";"11/23/2031" -"NASA Langley Research Center";"Application";"LAR-18021-1";;"13/417,347";"Flap Side Edge Liners for Airframe Noise Reduction";"07/31/2032" -"NASA Langley Research Center";"Application";"LAR-18023-1";;"13/417,349";"Landing Gear Door Liners for Airframe Noise Reduction";"03/12/2032" -"NASA Langley Research Center";"Application";"LAR-18024-1";;"13/417,351";"External Acoustic Liners for Multi-Functional Aircraft Noise Reduction"; -"NASA Langley Research Center";"Application";"LAR-18026-1";;"13/286,715";"Synthesis of Novel Copoly(imide oxetane)s with Unique Surface Properties"; -"NASA Langley Research Center";"Application";"LAR-18257-1";;"14/105,757";"A Structural Joint With Multi-Axis Load Carrying Capacity";"12/13/2033" -"NASA Langley Research Center";"Issued";"LAR-18032-1";8229716;"12/981,432";"Fast Tracking Methods and Systems for Air Traffic Modeling Using a Monotonic Lagrangian Grid (US Naval Research Laboratory ref: 100148-US2)";"12/29/2030" -"NASA Langley Research Center";"Application";"LAR-18034-1";;"13/291,372";"Compact Active Vibration Control System"; -"NASA Langley Research Center";"Application";"LAR-18037-1";;"13/453,717";"A Multifunctional Lightning Protection and Detection System for Aerospace Vehicles"; -"NASA Langley Research Center";"Application";"LAR-18040-1";;"13/986,089";"Multi-Functional BN-BN Composite";"03/29/2033" -"NASA Langley Research Center";"Application";"LAR-18065-1";;"13/860,697";"Variable Acceleration Force Calibration System";"04/11/2033" -"NASA Langley Research Center";"Application";"LAR-18070-1";;"13/923,307";"Transparent and Ubiquitous Sensing Technology";"06/20/2033" -"NASA Langley Research Center";"Application";"LAR-18071-1";;"13/923,312";"Using Ubiquitous Conductor to Power and Interrogate Wireless Passive Sensors and Construct Sensor Network"; -"NASA Langley Research Center";"Application";"LAR-18073-1";;"13/941,441";"Doped Chiral Polymer Negative Index Materials (DCPNIM)";"07/12/2033" -"NASA Langley Research Center";"Application";"LAR-18077-1";;"13/630,459";"Flight Deck Technology and Procedure for Pilots to Generate Flight-Optimizing Trajectory Requests that Avoid Nearby Traffic";"09/28/2032" -"NASA Langley Research Center";"Application";"LAR-18089-1";;"13/786,713";"Synchronized Sweeping Jet Actuators";"03/06/2033" -"NASA Langley Research Center";"Application";"LAR-18127-1";;"13/913,782";"Synergistic Chemical and Topographical Surface Modifications and Articles of Manufacture for Dynamic Insect Adhesion Mitigation";"06/10/2033" -"NASA Langley Research Center";"Application";"LAR-18131-1";;"13/774,422";"Puncture- healing Thermoplastic Resin Carbon Fiber Reinforced Composites towards More Damage/Impact Tolerant Systems"; -"NASA Langley Research Center";"Application";"LAR-18132-1";;"13/673,360";"Modeling of Laser Ablation and Plume Chemistry in a Boron Nitride Nanotube Production Rig";"11/09/2032" -"NASA Langley Research Center";"Application";"LAR-18143-1";;"13/694,286";"In-situ Mechanical Property Measurements of Amorphous Carbon-boron Nitride Nanotube";"11/15/2032" -"NASA Langley Research Center";"Application";"LAR-18144-1";;"13/836,609";"Method and System for Physiologically Modulating Videogames and Simulations Which Use Gesture and Body Image Sensing Control Input Devices";"03/15/2033" -"NASA Langley Research Center";"Application";"LAR-18160-1";;"13/864,396";"Tension Stiffened and Tendon Actuated Space Manipulators";"04/17/2033" -"NASA Langley Research Center";"Application";"LAR-18166-1";;"13/764,062";"Reactive Orthotropic Lattice Diffuser (ROLD) for Reducing Aerodynamic Noise from Aircraft Flap Tips";"03/12/2032" -"NASA Langley Research Center";"Application";"LAR-18179-1";;"13/792,489";"Extreme Reduced Instruction Set Computing (xRISC) for High Speed Execution of Computing Algorithms";"03/11/2033" -"NASA Langley Research Center";"Application";"LAR-18183-1";;"13/834,294";"Height Control and Deposition Measurement for the Electron Beam Free Form Fabrication (EBF3) Process";"03/15/2033" -"NASA Langley Research Center";"Application";"LAR-18184-1";;"13/987,706";"Conductive Polymer/Carbon Nanotube Structural Materials and Methods for Making Same";"08/23/2033" -"NASA Langley Research Center";"Application";"LAR-18186-1";;"12/482,503";"Flexible Volumetric Structure"; -"NASA Langley Research Center";"Application";"LAR-18202-1";;"13/713,033";"Ground-to-Space Laser Calibration System";"12/13/2032" -"NASA Langley Research Center";"Application";"LAR-18204-1";;"13/800,379";"Quasi-Static Electric Field Generator";"03/13/2033" -"NASA Langley Research Center";"Application";"LAR-18211-1";;"13/781,918";"A Statistically Based Approach to Broadband Liner Design and Assessment";"03/01/2033" -"NASA Langley Research Center";"Application";"LAR-18217-1";;"13/771,116";"A Graphical Acoustic Liner Design and Analysis Tool";"02/20/2033" -"NASA Langley Research Center";"Application";"LAR-18246-1";;"13/765,714";"Tethered Vehicle Control and Tracking System";"02/13/2033" -"NASA Langley Research Center";"Application";"LAR-18266-1";;"14/079,914";"Airborne Wind Profiling Algorithm for Doppler Wind Lidar (APOLO)";"11/14/2033" -"NASA Langley Research Center";"Application";"LAR-18267-1";;"13/838,260";"Method and System for Physiologically Modulating Action Role-playing Open World Video Games and Simulations Which Use Gesture and Body Image Sensing Control Input Devices"; -"NASA Langley Research Center";"Application";"LAR-18270-1";;"14/079,965";"Airborne Doppler Wind Lidar Post Data Processing Software DAPS-LV";"11/14/2033" -"NASA Langley Research Center";"Application";"LAR-18301-1";;"13/838,163";"Flap Edge Noise Reduction Fins (FENoRFins)";"03/15/2033" -"NASA Langley Research Center";"Application";"LAR-18318-1";;"14/191,898";"In-Situ Load System (ILS) for Calibrating and Validating Aerodynamic Properties of Scaled Aircraft in Ground-based Aerospace Testing Applications";"02/27/2034" -"NASA Langley Research Center";"Application";"LAR-18374-1";;"14/072,019";"Modulated Sine Waves for Differential Absorption Measurements Using a CW Laser System";"06/23/2031" -"NASA Glenn Research Center";"Issued";"LEW-16183-1";5866518;"08/786,360";"PS300 - Self Lubricating Readily Polished High Temperature Composite";"01/16/2017" -"NASA Glenn Research Center";"Issued";"LEW-16519-2";6291838;"09/448,406";"Gas Sensing Diode";"11/15/2019" -"NASA Glenn Research Center";"Issued";"LEW-16901-1";7190741;"10/274,756";"A Real-Time Signal-To-Noise Ratio Estimation Technique For BPSK And QPSK Modulation Using The Active Communications Channel";"10/21/2022" -"NASA Glenn Research Center";"Issued";"LEW-17153-1";6550696;"09/794,794";"Lean Direct Injection Combustor/Multi Point Integrate Module Fuel-Air Mixer";"02/27/2021" -"NASA Glenn Research Center";"Issued";"LEW-17157-1";6869480;"10/198,668";"Method For Production Of Atomic Scale Step Height Reference Specimens With Atomically Flat Surfaces";"07/17/2022" -"NASA Glenn Research Center";"Issued";"LEW-17166-1";7497443;"11/121,850";"Resilient, Flexible, Pressure-Activated Seal";"05/03/2025" -"NASA Glenn Research Center";"Issued";"LEW-17167-1";6667725;"10/196,391";"Radio Frequency (RF) Telemetry System For Sensors And Actuators";"07/11/2022" -"NASA Glenn Research Center";"Issued";"LEW-17170-1";6706549;"10/124,689";"Common-Layered Architecture For Semiconductor Silicon Carbide (CLASSiC) Bulk Fabrication";"04/12/2022" -"NASA Glenn Research Center";"Issued";"LEW-17182-1";7086648;"10/652,088";"Acoustic Seal";"08/22/2023" -"NASA Glenn Research Center";"Issued";"LEW-17240-1";7427428;"10/601,657";"Mechanically Improved Interphase Coating For Silicon-Carbide Fiber-Reinforced Silicon-Carbide Matrix Composites";"06/24/2023" -"NASA Glenn Research Center";"Issued";"LEW-17256-1";6845664;"10/263,980";"MEMS Direct Chip Attach (MEMS-DCA) Packaging Methodologies For Harsh Environments";"10/03/2022" -"NASA Glenn Research Center";"Issued";"LEW-17256-2";7518234;"10/926,206";"MEMS Direct Chip Attach Packaging Methodologies And Apparatus For Harsh Environments";"08/25/2024" -"NASA Glenn Research Center";"Issued";"LEW-17269-2";8212138;"11/696,441";"Reverse-Bias Protected Solar Array With Integrated ByPass Battery";"04/04/2027" -"NASA Glenn Research Center";"Application";"LEW-17269-3";0;"13/482,493";"Reverse-Bias Protected Solar Array With Integrated ByPass Battery"; -"NASA Glenn Research Center";"Issued";"LEW-17291-1";6784276;"10/202,643";"Improved Processing For Polyimdes Via Concentrated Solid Monomer Reactants Approach";"07/25/2022" -"NASA Glenn Research Center";"Issued";"LEW-17293-1";7023118;"10/390,256";"A Comprehensive C++ Controller For A Magnetically Supported Vertical Rotor: Version 1.0";"03/12/2023" -"NASA Glenn Research Center";"Issued";"LEW-17293-2";6809450;"10/729,580";"Software For System For Controlling A Magnetically Levitated Rotor";"12/04/2023" -"NASA Glenn Research Center";"Issued";"LEW-17299-1";6881820;"10/147,477";"Polyimide Rod-Coil Block Copolymers As Membrane Materials For Ion Conduction";"05/13/2022" -"NASA Glenn Research Center";"Issued";"LEW-17317-1";7687016;"10/777,630";"Process For Improving Properties Of Silicon Carbide (SiC) Fibers And SiC Fiber-Reinforced Ceramic Matrix Composites";"02/13/2024" -"NASA Glenn Research Center";"Application";"LEW-17317-2";0;"12/709,086";"Process For Improving Properties Of Silicon Carbide (SiC) Fibers And SiC Fiber-Reinforced Ceramic Matrix Composites"; -"NASA Glenn Research Center";"Issued";"LEW-17345-2";7813406;"11/402,997";"Temporal Laser Pulse Manipulation Using Multiple Optical Ring Cavities";"04/13/2026" -"NASA Glenn Research Center";"Issued";"LEW-17383-1";6967462;"10/455,139";"Wireless Consumer Power";"06/05/2023" -"NASA Glenn Research Center";"Application";"LEW-17458-2";0;"13/113,458";"Compact Solid-state Entangled Photon Source"; -"NASA Glenn Research Center";"Issued";"LEW-17483-1";7191013;"10/983,230";"Hand Held Device For Wireless Powering And Interrogation Of BioMEMS Sensors And Actuators";"11/08/2024" -"NASA Glenn Research Center";"Issued";"LEW-17484-5";7268939;"11/363,300";"Tracking Of Cells With A Compact Microscope Imaging System Using Intelligent Controls";"02/24/2026" -"NASA Glenn Research Center";"Issued";"LEW-17494-1";7458221;"10/693,850";"Self-Sealing, Smart, Variable Area Nozzle (S3VAN) For Dynamic Flow Control In Gas Turbine Engines";"10/23/2023" -"NASA Glenn Research Center";"Issued";"LEW-17498-1";7187835;"11/44,063";"Selective Wavelength Filtering";"01/28/2025" -"NASA Glenn Research Center";"Issued";"LEW-17510-1";7416062;"10/693,853";"Torsional Magnetorheological Fluid Resistant Device (TMRFRD)";"10/23/2023" -"NASA Glenn Research Center";"Issued";"LEW-17517-1";7326027;"10/856,361";"Flow-Field Control-Rods To Stabilize Flow In A Centrifugal Compressor";"05/25/2024" -"NASA Glenn Research Center";"Issued";"LEW-17520-1";7259692;"10/931,205";"Hybrid Power Management (HPM) Upgrade";"09/01/2024" -"NASA Glenn Research Center";"Issued";"LEW-17551-1";7410714;"10/891,599";"Unitized Regenerative Fuel Cell System";"07/15/2024" -"NASA Glenn Research Center";"Issued";"LEW-17561-1";7400096;"10/894,225";"Large Area Permanent Magnet ECR Plasma Source";"07/19/2024" -"NASA Glenn Research Center";"Issued";"LEW-17589-1";7305935;"10/925,499";"Slotted Antenna Rectangular Waveguide Plasma Source For Ion Beam And Electron Beam Production";"08/25/2024" -"NASA Glenn Research Center";"Issued";"LEW-17592-1";7704622;"10/926,457";"New Ion Conducting Organic/Inorganic Hybrid Polymers";"08/26/2024" -"NASA Glenn Research Center";"Application";"LEW-17595-1";0;"13/018,611";"A Method Of Improving The Thermo-Mechanical Properties Of Fiber-Reinforced Silicon Carbide Matrix Composites"; -"NASA Glenn Research Center";"Issued";"LEW-17605-1";8394492;"10/974,991";"Skin Modified Aerogel Monoliths For Improved Ruggedness And Lower Hydrophylicity";"10/28/2024" -"NASA Glenn Research Center";"Issued";"LEW-17618-1";7015304;"10/897,279";"High Tg Polyimides For Resin Transfer Molding (RTM)";"07/23/2024" -"NASA Glenn Research Center";"Issued";"LEW-17618-1-REIS";"RE43,880";"11/429,639";"Solvent-Free Low Melt Viscosity Imide Oligomers and Thermosetting Polyimide Composites";"05/08/2026" -"NASA Glenn Research Center";"Application";"LEW-17618-3";;"13/952,872";"High Tg Polyimides For Resin Transfer Molding (RTM)";"07/29/2033" -"NASA Glenn Research Center";"Issued";"LEW-17630-1";7534519;"11/228,185";"Bi-Electrode Supported Cell For High Power Density Solid Oxide Fuel Cells";"09/16/2025" -"NASA Glenn Research Center";"Application";"LEW-17634-1";0;"11/228,184";"Solid Oxide Fuel Cell Stack Design With Bi-Electrode Supported Cells"; -"NASA Glenn Research Center";"Application";"LEW-17634-2";0;"12/860,210";"Solid Oxide Fuel Cell Stack Design With Bi-Electrode Supported Cells"; -"NASA Glenn Research Center";"Issued";"LEW-17642-2";7308164;"11/398,734";"Energetic Atomic And Ionic Oxygen Textured Optical Surfaces For Blood Glucose Monitoring";"03/23/2026" -"NASA Glenn Research Center";"Issued";"LEW-17642-4";7305154;"11/483,887";"Energetic Atomic And Ionic Oxygen Textured Optical Surfaces For Blood Glucose Monitoring";"07/11/2026" -"NASA Glenn Research Center";"Issued";"LEW-17661-1 with LEW-17765-1";7438030;"11/213,604";"Method of Fabricating Silicon Carbide Corrugated Diaphragms and Modular Actuator";"08/26/2025" -"NASA Glenn Research Center";"Issued";"LEW-17664-1";7500350;"11/44,471";"Elimination Of Lifetime Limiting Mechanism Of Hall Thrusters";"01/28/2025" -"NASA Glenn Research Center";"Issued";"LEW-17671-1";7493869;"11/311,183";"Very Large Area/Volume Microwave ECR Plasma And Ion Source";"12/16/2025" -"NASA Glenn Research Center";"Issued";"LEW-17672-1";7261783;"10/946,286";"Low Density High Creep Resistant Single Crystal Superalloy For Turbine Airfoils";"09/22/2024" -"NASA Glenn Research Center";"Issued";"LEW-17678-1";7624566;"11/40,304";"Magnetic Circuit For Hall Effect Plasma Accelerator";"01/18/2025" -"NASA Glenn Research Center";"Issued";"LEW-17694-1";7397978;"11/180,990";"Carrier Structure For Packaging Microphotonic Millimeter-Wave Receiver Based On Lithium Niobate Electro-Optic Resonator Disk Technology";"07/13/2025" -"NASA Glenn Research Center";"Issued";"LEW-17704-1";7250723;"11/16,735";"Cathode Luminescence Light Source For Broad Band Application In The Visible";"12/21/2024" -"NASA Glenn Research Center";"Issued";"LEW-17765-1 with LEW-17661-1";7438030;"11/213,604";"Side Sliding Microactuator";"10/21/2025" -"NASA Glenn Research Center";"Issued";"LEW-17786-1";8197249;"11/412,935";"Fully-Premixed Low-Emissions High-Pressure Multi-fuel Burner";"04/28/2026" -"NASA Glenn Research Center";"Issued";"LEW-17814-1";7574137;"11/418,304";"Multi-wavelength Time-coincident Optical Communications System";"05/05/2026" -"NASA Glenn Research Center";"Issued";"LEW-17820-1";7755292;"11/625,545";"Method For Ultraminiature Fiber Light Source";"01/22/2027" -"NASA Glenn Research Center";"Issued";"LEW-17820-2";8264134;"12/795,356";"Method For Ultraminiature Fiber Light Source";"09/11/2032" -"NASA Glenn Research Center";"Issued";"LEW-17825-1";8163243;"11/517,555";"Zero G Condensing Heat Exchanger With Integral Disinfection";"09/07/2026" -"NASA Glenn Research Center";"Issued";"LEW-17826-1";7385692;"11/412,924";"Method And System For Fiber Optic Determination Of Nitrogen And Oxygen Concentrations In Ullage Of Liquid Fuel Tanks";"04/28/2026" -"NASA Glenn Research Center";"Issued";"LEW-17859-1";7389675;"11/434,578";"Miniaturized Metal (Metal Alloy)/PdOx/SiC Schottky Diode Gas Sensors For Hydrogen And Hydrocarbons Detection At High Temperatures";"05/12/2026" -"NASA Glenn Research Center";"Issued";"LEW-17859-2";8001828;"12/143,139";"Miniaturized Metal (Metal Alloy) PdOx/Sic Hydrogen And Hydrocarbon Gas Sensors";"06/20/2028" -"NASA Glenn Research Center";"Issued";"LEW-17877-1";7876276;"11/499,982";"Antenna Near-Field Probe Station Scanner";"08/02/2026" -"NASA Glenn Research Center";"Application";"LEW-17877-2";;"12/857,004";"Antenna Near-Field Probe Station Scanner"; -"NASA Glenn Research Center";"Issued";"LEW-17904-1";7425650;"11/378,553";"Syntheis Of Asymmetric Dianhydrides";"03/15/2026" -"NASA Glenn Research Center";"Issued";"LEW-17904-2";7381849;"11/890,104";"Synthesis Of Asymmetrical Benzophenone Dianhydride And Asymmetrical 6F-Dianhydride And Polyimides Therefrom (ALSO See LEW 18236-1)";"07/19/2027" -"NASA Glenn Research Center";"Application";"LEW-17915-1";0;"12/536,969";"Secure Optical Communications Using Quantum Two-Photon Transparency Modulation Spectroscopy"; -"NASA Glenn Research Center";"Issued";"LEW-17916-1";8052854;"11/754,255";"Miniature Amperometric Solid Electrolyte Carbon Dioxide Sensor";"05/25/2027" -"NASA Glenn Research Center";"Application";"LEW-17916-2";;"13/267,978";"Miniature Amperometric Solid Electrolyte Carbon Dioxide Sensor"; -"NASA Glenn Research Center";"Application";"LEW-17945-1";0;"11/677,654";"Portable Unit For Metabolic Analysis PUMA"; -"NASA Glenn Research Center";"Issued";"LEW-17951-1";8545786;"10/621,752";"Manufacture Of Porous Net-Shaped Materials Comprising Alpha Or Beta Tricalcium Phosphate Or Mixtures Thereof";"07/16/2023" -"NASA Glenn Research Center";"Issued";"LEW-17954-1";8016543;"11/695,435";"Composite Case Armor";"04/02/2027" -"NASA Glenn Research Center";"Application";"LEW-17963-1";0;"11/860,661";"Passive Gas/Liquid Separation Within a Fuel Cell or Electrolysis Cell Using A Conductive Porous Separator"; -"NASA Glenn Research Center";"Issued";"LEW-17975-1";7382944;"11/489,813";"Aluminization And Hyperthermal Atomic Oxygen Texturing Of Polymethylmethacralate Optical Fibers For Blood Glucose Monitoring";"07/14/2026" -"NASA Glenn Research Center";"Issued";"LEW-17991-1";7390161;"/0";"Toughened Composite Structures";"06/24/2025" -"NASA Glenn Research Center";"Issued";"LEW-18003-1";7583169;"11/689,770";"RF MEMS Switches Utilizing Non-Metallic Thin Film Cantilevers/Bridges With Controlled Stress And Conductivity";"03/22/2027" -"NASA Glenn Research Center";"Issued";"LEW-18042-1";8067478;"11/582,693";"A Method of Crosslinking Aerogels Using a One-pot Reaction Scheme";"10/16/2026" -"NASA Glenn Research Center";"Application";"LEW-18042-2";0;"13/242,425";"A Method of Crosslinking Aerogels Using a One-pot Reaction Scheme"; -"NASA Glenn Research Center";"Application";"LEW-18043-1";7341040;"11/486,460";"Supercharged Two-Cycle Engines Employing Novel Single Element Reciprocating Shuttle Inlet Valve Mechanisms And With A Variable Compression Ratio";"07/14/2026" -"NASA Glenn Research Center";"Application";"LEW-18048-1";0;"12/285,157";"Two And Three Dimensional Near Infrared Subcutaneous Structure Imager Using Adaptive Nonlinear Video Processing"; -"NASA Glenn Research Center";"Issued";"LEW-18049-1";7909897;"11/946,079";"Direct Fuel Impingement Planar-Array-Microreactor";"11/28/2028" -"NASA Glenn Research Center";"Issued";"LEW-18054-1";7501032;"11/364,283";"High Work Output Ni-Ti-Pt High Temperature Shape Memory Alloys And Associated Processing Methods";"02/28/2026" -"NASA Glenn Research Center";"Issued";"LEW-18059-1";8242162;"11/956,848";"Fluorescent On-Off Chemical Sensors";"11/30/2019" -"NASA Glenn Research Center";"Issued";"LEW-18076-1";7999173;"11/689,431";"Dust removal from solar cells";"03/21/2027" -"NASA Glenn Research Center";"Application";"LEW-18076-2";;"13/198,896";"Dust Removal from Solar Cells"; -"NASA Glenn Research Center";"Issued";"LEW-18089-1";8077103;"11/774,574";"Cup Cylindrical Waveguide Antenna";"07/06/2027" -"NASA Glenn Research Center";"Issued";"LEW-18138-1";7904282;"11/689,874";"In-Flight Fault Accommodation Through Automated Control Parameter Changes";"03/22/2027" -"NASA Glenn Research Center";"Application";"LEW-18205-1";0;"12/317,232";"Branched Rod-Coil Polyimide-poly(ethylene Oxide) (PEO) Copolymers That Are Cured In The Solid State At Ambient Temperatures"; -"NASA Glenn Research Center";"Application";"LEW-18207-1";0;"11/759,570";"Circuit For Communication Over DC Power Line Using High Temperature Electronics"; -"NASA Glenn Research Center";"Issued";"LEW-18221-1";7763325;"11/864,607";"A Method For Thermal Spraying Of Coatings Using Resonant Pulsed Combustion";"09/28/2027" -"NASA Glenn Research Center";"Application";"LEW-18221-2";;"12/835,345";"A Method For Thermal Spraying Of Coatings Using Resonant Pulsed Combustion"; -"NASA Glenn Research Center";"Issued";"LEW-18236-1";8093348;"11/894,290";"Synthesis Of Asymmetrical Benzophenone Dianhydride And Asymmetrical 6F-Dianhydride And Polyimides Therefrom";"08/22/2027" -"NASA Glenn Research Center";"Application";"LEW-18236-2";0;"13/325,626";"Synthesis Of Asymmetrical Benzophenone Dianhydride And Asymmetrical 6F-Dianhydride And Polyimides Therefrom"; -"NASA Glenn Research Center";"Issued";"LEW-18248-1";7791552;"11/871,237";"Cellular Reflectarray Antenna";"10/12/2027" -"NASA Glenn Research Center";"Issued";"LEW-18248-2";7990327;"12/874,370";"Cellular Reflectarray Antenna";"09/02/2030" -"NASA Glenn Research Center";"Issued";"LEW-18253-1";8191426;"12/133,743";"Low TCR Nanocomposite Strain Gages";"06/05/2028" -"NASA Glenn Research Center";"Issued";"LEW-18254-1";7876423;"12/163,382";"Simultaneous Non-Contact Precision Measurement Of Microstructual And Thickness Variation In Dielectric Materials Using Terahertz Energy";"06/27/2028" -"NASA Glenn Research Center";"Issued";"LEW-18255-1";7630736;"11/541,102";"Autonomous Wireless Sensor Transceiver";"05/09/2028" -"NASA Glenn Research Center";"Issued";"LEW-18256-1";7688117;"12/081,762";"An N Channel JFET Based Digital Logic Gate Structure Using Resistive Level Shifters And Having Direct Application To High Temperature Silicon Carbide Electronics";"04/21/2028" -"NASA Glenn Research Center";"Issued";"LEW-18261-1";7933027;"12/326,436";"A Software Platform For Post-Processing Waveform-Based NDE";"12/02/2028" -"NASA Glenn Research Center";"Application";"LEW-18291-1";0;"12/214,114";"Adaptive Morphological Feature-Based Object Classifier For A Color Imaging System"; -"NASA Glenn Research Center";"Application";"LEW-18296-1";0;"13/193,160";"Modular Battery Charge Controller"; -"NASA Glenn Research Center";"Issued";"LEW-18313-1";7923715;"12/336,503";"A Novel Nanoionics-based Switch For Radiofrequency (RF) Applications";"12/06/2028" -"NASA Glenn Research Center";"Issued";"LEW-18313-2";8410469;"13/050,229";"A Novel Nanoionics-based Switch For Radiofrequency (RF) Applications";"03/17/2031" -"NASA Glenn Research Center";"Application";"LEW-18324-1";0;"12/195,358";"Semiconductor Metal Oxide Modified Solid Electrolyte Carbon Dioxide Microsensors With Reduced Operation Temperature"; -"NASA Glenn Research Center";"Issued";"LEW-18325-1";8415839;"12/319,617";"External Magnetic Field Reduction Techniquie For Advanced Stirling Radioisotope Generator";"01/09/2029" -"NASA Glenn Research Center";"Application";"LEW-18325-2";;"13/859,179";"External Magnetic Field Reduction Techniquie For Advanced Stirling Radioisotope Generator";"01/09/2029" -"NASA Glenn Research Center";"Issued";"LEW-18338-1";8506787;"12/533/258";"Advancd Lightweight, High-Strength Electrochemical Cell Design and Structures";"07/31/2029" -"NASA Glenn Research Center";"Issued";"LEW-18340-1";8091445;"12/431,456";"Offset Compound Gear Inline Two-Speed Drive";"04/28/2029" -"NASA Glenn Research Center";"Issued";"LEW-18340-2";8668613;"13/346,959";"Offset Compound Gear Inline Two-Speed Drive";"01/10/2032" -"NASA Glenn Research Center";"Issued";"LEW-18356-1";8220989;"12/571,215";"Device for Measuring the Thermal Conductivity of Small, Highly Insulating Materials";"09/30/2029" -"NASA Glenn Research Center";"Issued";"LEW-18356-2";8573835;"13/492,181";"Device for Measuring the Thermal Conductivity of Small, Highly Insulating Materials";"06/08/2032" -"NASA Glenn Research Center";"Issued";"LEW-18362-1";7872750;"12/285,173";"Space Radiation Detector with Spherical Geometry";"09/30/2028" -"NASA Glenn Research Center";"Issued";"LEW-18362-2";8159669;"12/972,624";"Space Radiation Detector with Spherical Geometry";"12/20/2030" -"NASA Glenn Research Center";"Issued";"LEW-18373-1";8353209;"12/570,841";"A Radio Frequency Tank Eigenmode Sensor For Propellant Quantity Gauging";"02/04/2031" -"NASA Glenn Research Center";"Issued";"LEW-18426-1";8484980;"12/894,346";"A Free-Jet Dual-Mode Combustor Concept for Wide Operating Range Ramjet Propulsion";"09/30/2030" -"NASA Glenn Research Center";"Application";"LEW-18426-2";0;"13/941,987";"A Free-Jet Dual-Mode Combustor Concept for Wide Operating Range Ramjet Propulsion";"07/15/2033" -"NASA Glenn Research Center";"Issued";"LEW-18432-1";7935601;"12/584,497";"Addendum of Self-Aligned Ion Implant to Design and Processing of SiC High Temperature Transistors for Durable Operation Above 400 C";"09/04/2029" -"NASA Glenn Research Center";"Application";"LEW-18432-2";0;"13/078,510";"Addendum of Self-Aligned Ion Implant to Design and Processing of SiC High Temperature Transistors for Durable Operation Above 400 C"; -"NASA Glenn Research Center";"Issued";"LEW-18458-1";8386121;"12/791,907";"Optimal Tuner Selection For Kalman Filter-Based Aircraft Engine Performance Estimation";"06/02/2030" -"NASA Glenn Research Center";"Issued";"LEW-18461-1";8159238;"12/570,742";"Method and Circuit for In-Situ Health Monitoring of Solar Cells in Space";"09/30/2029" -"NASA Glenn Research Center";"Application";"LEW-18461-2";;"13/448,801";"Method and Circuit for In-Situ Health Monitoring of Solar Cells in Space"; -"NASA Glenn Research Center";"Application";"LEW-18466-1";0;"12/616,952";"Spring Tire"; -"NASA Glenn Research Center";"Application";"LEW-18473-1";0;"12/879,713";"Ka-Band Waveguide 2-Way Hybrid Combiner for MMIC Amplifiers With Unequal and Arbitrary Power Output Ratio"; -"NASA Glenn Research Center";"Issued";"LEW-18474-1";8609750;"12/792,380";"Selective Clay Placement Within A Silicate Clay-Epoxy Blend Nanocomposite";"06/02/2030" -"NASA Glenn Research Center";"Issued";"LEW-18476-1";8182741;"12/544,742";"Ball Bearings Comprising Nickel-Titanium And Methods Of Manufacture Thereof";"08/20/2029" -"NASA Glenn Research Center";"Application";"LEW-18476-2";0;"12/544,674";"Ball Bearings Comprising Nickel-Titanium And Methods Of Manufacture Thereof"; -"NASA Glenn Research Center";"Application";"LEW-18477-1";0;"13/242,300";"Graphene Based Reversible Nano-Switch/Sensor Schottky Diode (nanoSSSD) Device"; -"NASA Glenn Research Center";"Issued";"LEW-18483-1";8310671;"12/893,627";"Frame-Transfer Gating (FTG) Raman Spectroscopy for Time-Resolved Multiscalar Combustion Diagnostics";"09/29/2030" -"NASA Glenn Research Center";"Application";"LEW-18486-2";0;"14/168,830";"Polyimide Aerogels With Three Dimensional Cross-Linked Structure";"01/30/2034" -"NASA Glenn Research Center";"Issued";"LEW-18491-1";8209976;"12/323,091";"Shape Memory Based Actuators and Release Mechanisms";"11/25/2028" -"NASA Glenn Research Center";"Application";"LEW-18492-1";0;"13/036,887";"Synthesis Methods, Microscopy Characterization and Device Integration of Nanoscale Metal Oxide Semiconductors for Gas Sensing in Aerospace Applications"; -"NASA Glenn Research Center";"Issued";"LEW-18496-1";8283172;"12/711,465";"Process to Produce Iron Nanoparticles - Lunar Dust Simulant Composite";"02/24/2030" -"NASA Glenn Research Center";"Application";"LEW-18500-1";0;"12/848,903";"Precision Time Protocol Base Trilateration for Planetary Navigation"; -"NASA Glenn Research Center";"Application";"LEW-18516-1";0;"13/542,163";"Hybrid Gear"; -"NASA Glenn Research Center";"Issued";"LEW-18538-1";8373175;"12/791,276";"Ohmic Contact to N- and P-type Silicon Carbide";"06/01/2030" -"NASA Glenn Research Center";"Application";"LEW-18542-1";0;"12/870,475";"Functionalization of Single Wall Carbon Nanotubes (SWCNTs) by Photooxidation"; -"NASA Glenn Research Center";"Application";"LEW-18554-1";0;"12/845,998";"Internal Limit Sensor (ILS)"; -"NASA Glenn Research Center";"Application";"LEW-18561-1";0;"12/726,926";"NASA PS400: A New High Temperature Solid Lubricant Coating for High Temperature Wear Applications"; -"NASA Glenn Research Center";"Application";"LEW-18565-1";0;"13/646,100";"Catalytic Microtube Rocket Igniter";"10/05/2032" -"NASA Glenn Research Center";"Application";"LEW-18566-1";0;"12/829,663";"Low Density, High Creep Resistant Single Crystal Superalloy with Lower Manufacturing Cost"; -"NASA Glenn Research Center";"Application";"LEW-18586-1";;"13/030,342";"Shock Sensing Apparatus"; -"NASA Glenn Research Center";"Issued";"LEW-18593-1";8653693;"13/014,849";"Integrated Exciter/Igniter";"01/27/2031" -"NASA Glenn Research Center";"Issued";"LEW-18594-1";8409372;"12/874,523";"Thermomechanical Methodology for Stabilizing Shape Memory Alloy (SMA) Response";"09/02/2030" -"NASA Glenn Research Center";"Application";"LEW-18594-2";;"13/845,526";"Thermomechanical Methodology for Stabilizing Shape Memory Alloy (SMA) Response"; -"NASA Glenn Research Center";"Issued";"LEW-18601-1";8577504;"12/954,009";"Inductive Power Device (IDP)";"11/24/2030" -"NASA Glenn Research Center";"Application";"LEW-18604-1";;"12/894,444";"Shock Resistant, Debris Tolerant, Lightweight, Corrosion Proof Bearings, Mechanical Components and Mechanisms Made From Hard, Highly Elastic Materials"; -"NASA Glenn Research Center";"Issued";"LEW-18605-1";8468794;"12/894,565";"Dual-Mode Hybrid-Engine (DMH-Engine): A Next-Generation Electric Propulsion Thruster";"09/30/2030" -"NASA Glenn Research Center";"Application";"LEW-18605-2";;"13/713,907";"Dual-Mode Hybrid-Engine (DMH-Engine): A Next-Generation Electric Propulsion Thruster"; -"NASA Glenn Research Center";"Application";"LEW-18605-3";;"14/152,125";"Dual-Mode Hybrid-Engine (DMH-Engine): A Next-Generation Electric Propulsion Thruster"; -"NASA Glenn Research Center";"Application";"LEW-18608-1";;"12/892,339";"Liquid Tin Electrodes for Directo Conversion of JP-8 Fuel using the NASA BSC Solid Oxide Fuel Cell"; -"NASA Glenn Research Center";"Application";"LEW-18614-1";;"13/303,292";"High-Temperature Thermometer Using Cr-Doped GdAlO3 Broadband Luminescence"; -"NASA Glenn Research Center";"Application";"LEW-18615-1";;"12/892,278";"Purify Nanomaterials By Dissolving Excess Reactants And Catalysts In Ferric Chloride"; -"NASA Glenn Research Center";"Application";"LEW-18629-1";;"13/731,314";"Electrospray Collection of Lunar Dust"; -"NASA Glenn Research Center";"Application";"LEW-18631-1";;"13/218,847";"Circuit for Communication Over Power Lines"; -"NASA Glenn Research Center";"Application";"LEW-18632-1";;"13/311,987";"Method For Fabricating Diamond-Dispersed Fiber-Reinforced Composite Coating On Low Temperature Sliding Thrust Bearing Interfaces"; -"NASA Glenn Research Center";"Application";"LEW-18634-1";;"13/134,959";"Multi-Parameter Aerosol Scattering Sensor"; -"NASA Glenn Research Center";"Issued";"LEW-18636-1";8416007;"13/098,918";"A Source Coupled N Channel JFET Based Digital Logic Gate Structure Using Resistive Level Shifters and Having Direct Application to High Temperature Silicon Carbide Electronics";"05/02/2031" -"NASA Glenn Research Center";"Application";"LEW-18639-1";;"13/112,293";"Atomic Oxygen Fluence Monitor"; -"NASA Glenn Research Center";"Application";"LEW-18649-1";;"12/870,443";"Ultracapacitor Based Uninterruptible Power Supply (UPS) System"; -"NASA Glenn Research Center";"Application";"LEW-18652-1";;"13/476,470";"Polarization Dependent Whispering Gallery Modes in Microspheres"; -"NASA Glenn Research Center";"Application";"LEW-18658-1";;"13/250,300";"Levitated Ducted Fan (LDF) Aircraft Auxiliary Generator"; -"NASA Glenn Research Center";"Application";"LEW-18674-1";;"13/552,760";"Polymer Electrolyte Based Ambient Temperature Oxygen Microsensors with Extremely Low Power Consumption for Enviromental Monitoring Applications"; -"NASA Johnson Space Center";"Application";"MSC-25349-1";0;"13/922036";"Robonaut Teleoperation System"; -"NASA Glenn Research Center";"Issued";"LEW-18691-1";7588746;"11/431,815";"Process and Apparatus for Hydrogen and Carbon Production via Carbon Aerosol-Catalyzed Dissociation of Hydrocarbons";"05/10/2026" -"NASA Glenn Research Center";"Issued";"LEW-18692-1";7332146;"11/148,778";"Method For Zero Emission Liquid Hydrogen Production From Methane & Landfill Gas";"06/08/2025" -"NASA Glenn Research Center";"Application";"LEW-18693-1";;"/";"Process For Hydrogen Production via Integrated Processing of Landfill Gas and Biomass"; -"NASA Glenn Research Center";"Application";"LEW-18694-1";;"13/075,879";"Discrete Data Qualification System and Method Comprising Noise Series Fault Detection"; -"NASA Glenn Research Center";"Application";"LEW-18704-1";;"13/531,763";"A Hybrid Power Management (HPM) Based Vehicle Architecture"; -"NASA Glenn Research Center";"Application";"LEW-18714-1";;"13/361,220";"High Strength Nanocomposite Glass Fibers"; -"NASA Glenn Research Center";"Issued";"LEW-18717-1";8476979;"13/178,101";"A Novel Wideband GaN MMIC Distributed Amplifier Based Microwave Power Module for Space Communications, Navigation, and Radar";"07/07/2031" -"NASA Glenn Research Center";"Application";"LEW-18717-2";;"13/847,779";"A Novel Wideband GaN MMIC Distributed Amplifier Based Microwave Power Module for Space Communications, Navigation, and Radar"; -"NASA Glenn Research Center";"Application";"LEW-18724-1";;"13/339,521";"VESGEN Software for Mapping and Quantification of Vascular Remodeling in Botanical Plant Leaves"; -"NASA Glenn Research Center";"Application";"LEW-18732-1";;"13/514,582";"Water Purification by High Voltage, Nanosecond, Non-Equilibrium Plasma: Applications to Human Spaceflight and Terrestrial Point-of-Use";"08/16/2032" -"NASA Glenn Research Center";"Application";"LEW-18736-1";;"13/534,745";"Iridium Interfacial Stack (IrIS) Final"; -"NASA Glenn Research Center";"Application";"LEW-18738-1";;"13/474,948";"Atmospheric Turbulence Modeling for Aero Vehicles"; -"NASA Glenn Research Center";"Application";"LEW-18752-1";;"13/686,000";"Large Strain Transparent Magneto-active Polymer Nanocomposites";"11/28/2031" -"NASA Glenn Research Center";"Application";"LEW-18754-1";;"13/534,870";"Method For Making Measurements Of The Post-Combustion Residence Time In A Gas Turbine Engine"; -"NASA Glenn Research Center";"Application";"LEW-18761-1";;"13/247,601";"Temperature Sensitive Coating Sensor Based On Hematite"; -"NASA Glenn Research Center";"Application";"LEW-18762-1";;"13/364691";"Selenium Interlayer for High-efficiency Multijunction Solar Cell"; -"NASA Glenn Research Center";"Application";"LEW-18768-1";;"13/788,041";"Processing of Nanosensors Using a Sacrificial Template Approach";"03/23/2032" -"NASA Glenn Research Center";"Application";"LEW-18769-1";;"13/537,816";"Compact, Lightweight, CMC (Ceramic Matrix Composite)-Based Acoustic Liner for Subsonic Jet Aircraft Engines--Offering High Temperature Capability, Weight Reduction, and Broadband Acoustic Treatment"; -"NASA Glenn Research Center";"Application";"LEW-18771-1";;"13/301,249";"Integrated Temperature and Capacitive Ablation Recession Rate Sensors"; -"NASA Glenn Research Center";"Application";"LEW-18785-1";;"13/246,440";"Method to Pre-Stress Shock Resistant Mechanical Components and Mechanisms made from Hard, Highly Elastic Materials"; -"NASA Glenn Research Center";"Application";"LEW-18789-1";;"13/771,833";"Method to Increase Performance of Foil Bearings Through Passive Thermal Management";"02/27/2032" -"NASA Glenn Research Center";"Application";"LEW-18797-1";;"13/714,906";"High Speed, Compliant, Planetary Flywheel Touchdown Bearing";"12/16/2031" -"NASA Glenn Research Center";"Application";"LEW-18802-1";;"13/534,804";"Alpha-STREAM Convertor - A Stirling Engine with no moving parts, eliminated streaming losses, high efficiency, low cost fabrication, and electronic wave modulation."; -"NASA Glenn Research Center";"Application";"LEW-18809-1";;"13/410,663";"Sampling and Control Circuit Board for an Inertial Measurement Unit";"08/03/2032" -"NASA Glenn Research Center";"Application";"LEW-18816-1";;"13/749,773";"High Speed Edge Detecting Circuit For Use With Linear Image Sensor";"06/01/2032" -"NASA Glenn Research Center";"Application";"LEW-18821-1";;"13/561,359";"Dopant Selective Reactive Ion Etching of Silicon Carbide";"07/30/2032" -"NASA Glenn Research Center";"Application";"LEW-18822-1";;"13/524,327";"Planar Modular Package"; -"NASA Glenn Research Center";"Application";"LEW-18825-1";0;"13/804,546";"Porous Cross-Linked Polyimide-UREA Networks";"03/14/2033" -"NASA Glenn Research Center";"Application";"LEW-18837-1";;"13/527,181";"In-Situ Solid Particle Generator"; -"NASA Glenn Research Center";"Application";"LEW-18844-1";;"13/918,333";"Electrospun Nanofiber Coating Of Fiber Materials: A Composite Toughening Approach";"06/14/2033" -"NASA Glenn Research Center";"Application";"LEW-18849-1";;"13/906,521";"Paired Threaded Film Cooling Holes for Improved Turbine Film Cooling";"05/31/2033" -"NASA Glenn Research Center";"Application";"LEW-18858-1";;"13/904,513";"V-Cess: A Novel Flow Control Method Using A Shaped Recess";"05/29/2033" -"NASA Glenn Research Center";"Application";"LEW-18862-1";;"13/474,972";"Cascading TESLA oscillating flow diode for Stirling Engine Gas Bearings"; -"NASA Glenn Research Center";"Application";"LEW-18864-1";;"13/756,855";"Polyimide Aerogel Thin Films";"02/03/2032" -"NASA Glenn Research Center";"Application";"LEW-18873-1";;"13/968,000";"High Temperature Single Crystal Preloader";"08/15/2033" -"NASA Glenn Research Center";"Application";"LEW-18887-1";;"13/756,604";"Fuzzy Neuron: Method and Hardware Realization";"02/01/2033" -"NASA Glenn Research Center";"Application";"LEW-18889-1";;"13/713,846";"High Speed Idle Engine Control Mode";"12/13/2032" -"NASA Glenn Research Center";"Application";"LEW-18890-1";;"13/871,114";"Suppression Of Unwanted Noise And Howl In A Test Configuration Where A Jet Exhaust Is Discharged Into A Duct"; -"NASA Glenn Research Center";"Application";"LEW-18891-1 with LEW-18611-1 and LEW-18895-1";;"13/723,598";"G6 Flywheel Design";"12/23/2031" -"NASA Glenn Research Center";"Application";"LEW-18893-1";;"13/653,027";"Novel Aerogel-Based Antennas (ABA) for Aerospace Applications"; -"NASA Glenn Research Center";"Application";"LEW-18900-1";;;"High Efficiency, High Temperature Titanium Heat Pipe Radiator for Space Power and Propulsion Systems"; -"NASA Glenn Research Center";"Application";"LEW-18902-1";;"14/094,006";"Analog Correlator Based on One Bit Digital Correlator";"12/02/2033" -"NASA Glenn Research Center";"Application";"LEW-18903-1";;"13/923,441";"Modeling and Simulation of a Solar Electric Propulsion Vehicle in Near-Earth Vicinity Including Solar Array Degradation";"06/21/2033" -"NASA Glenn Research Center";"Application";"LEW-18919-1";;"13/645,799";"Wireless Controlled Chalcogenide Nanoionic Radio Frequency Switch";"04/04/2032" -"NASA Glenn Research Center";"Application";"LEW-18923-1";;"13/963,060";"New Power Source For Deep Space Missions- Utilizing The Doubly Exothermic Reaction Between Deuterium And Palladium To Produce Electrical Power";"08/09/2033" -"NASA Glenn Research Center";"Application";"LEW-18928-1";;;"Pt-Ti-Si Simultaneous Ohmic Contacts to N- and P-Type Silicon Carbide"; -"NASA Glenn Research Center";"Application";"LEW-18934-1";;"13/900,642";"Conditionally Active Min-Max Limit Regulators";"05/23/2033" -"NASA Glenn Research Center";"Application";"LEW-18939-1";;"13/916,797";"Magnetostrictive Alternator - Low cost, No moving part, High Efficiency, Oscillating Acoustic Pressure Wave to Electric Power Transducer";"06/13/2033" -"NASA Glenn Research Center";"Application";"LEW-18942-1";;"13/771,920";"Adaptive Phase Delay Generator";"02/20/2033" -"NASA Glenn Research Center";"Application";"LEW-18949-1";;"13/923,450";"Advanced High Temperature and Fatigue Resistant Environmental Barrier Coating Bond Coat Systems for SiC/SiC Ceramic Matrix Composites";"06/21/2033" -"NASA Glenn Research Center";"Application";"LEW-18952-1";;;"A Novel Real Time Adaptive Filter For The Reduction Of Artifacts In Functional Near Infrared Spectroscopy Signals"; -"NASA Glenn Research Center";"Application";"LEW-18957-1";;"14/048,895";"Dynamic Range Enhancement Of High-Speed Data Acquisition Systems By Reversible Non-Linear Amplitude Compression";"10/08/2033" -"NASA Glenn Research Center";"Application";"LEW-18960-1";;"13/891,461";"Dry Snorkel Cold Immersion Suit for Hypothermia Prevention";"05/11/2032" -"NASA Glenn Research Center";"Application";"LEW-18963-1";;"13/853,308";"Flywheel Pulse & Glide System for Vehicles"; -"NASA Glenn Research Center";"Application";"LEW-18964-1";;"13/905,333";"High Temperature Lightweight Self-Healing Ceramic Composites for Aircraft Engine Applications";"05/30/2033" -"NASA Glenn Research Center";"Application";"LEW-18970-1";;"14/158,080";"Methods for Intercalating and Exfoliating Hexagonal Boron Nitride";"01/17/2034" -"NASA Glenn Research Center";"Application";"LEW-18986-1";;;"Generation Of High Pressure Oxygen Via Electrochemical Pumping In A Multi-Stage Electrolysis Stack"; -"NASA Glenn Research Center";"Application";"LEW-19013-1";;"14/095,442";"Spoked Wheel Assembly With Two Rotational Modes";"12/03/2033" -"NASA Glenn Research Center";"Application";"LEW-19029-1";;"14/191,708";"Superelastic Ternary Ordered Intermetallic Compounds";"02/27/2034" -"NASA Glenn Research Center";"Application";"LEW-19040-1";;"14/193,024";"Fast, Large Area, Wide Band Gap UV Photodetector for Cherenkov Light Detection";"02/28/2034" -"NASA Glenn Research Center";"Application";"LEW-19045-1";;"13/968,531";"Multimode Directional Coupler for Measurement and Utilization of Harmonic Frequencies from Traveling Wave Tube Amplifiers";"08/16/2033" -"NASA Glenn Research Center";"Application";"LEW-19053-1";;"14/193,719";"Process for Preparing Aerogels from Polyamides";"02/28/2034" -"NASA Glenn Research Center";"Application";"LEW-19067-1";;;"Plasma Spray-Physical Vapor Deposition (PS-PVD) of Advanced Environmental Barrier Coatings"; -"NASA Glenn Research Center";"Application";"LEW-19077-1";;;"Improved Composite Damage Tolerance and Through Thickness Conductivity By Interleaving Carbon Fiber Veil Nanocomposites"; -"NASA Glenn Research Center";"Application";"LEW-19080-1";;;"Crosslinked Polyethylene Aerogels from Low Density Polyethylene, Linear Low Density Polyethylene, and Repurposed Polyethylene"; -"NASA Glenn Research Center";"Application";"LEW-19098-1";;"61/866,585";"High Temperature, Flexible Composite Seals for Aeronautics and Space Environments Incorporating Aerogel Insulation"; -"NASA Glenn Research Center";"Application";"LEW-19171-1";;"61/931,189";"Low Power Charged Particle Counter for Space Radiation Monitoring"; -"NASA Marshall Space Flight Center";"Issued";"MFS-28402-2";5780594;"08/448,196";"Biologically Active Protein Fragments Containing Specific Binding Regions Of Serum Albumin Or Related Proteins";"07/14/2015" -"NASA Marshall Space Flight Center";"Issued";"MFS-28985-1";5641681;"08/422,963";"Device And Method For Screening Crystallization Conditions In Solution Crystal Growth";"04/17/2015" -"NASA Marshall Space Flight Center";"Issued";"MFS-31175-2-CIP";6578851;"09/693,098";"Gasket Assembly For Sealing Mating Surfaces";"10/16/2020" -"NASA Marshall Space Flight Center";"Issued";"MFS-31243-1";6459822;" 09/364,919";"Video Image Stabilization And Registration (VISAR)";"07/26/2019" -"NASA Marshall Space Flight Center";"Issued";"MFS-31243-2-CON";6560375;"10/143,539";"Video Image Stabilization And Registration";"05/10/2022" -"NASA Marshall Space Flight Center";"Issued";"MFS-31258-1";6135255;"09/207,710";"Releasable Conical Roller Clutch";"12/09/2018" -"NASA Marshall Space Flight Center";"Issued";"MFS-31294-2-CIP2";6592687;"10/196,389";"Aluminum Alloy And Article Cast Therefrom";"07/11/2022" -"NASA Marshall Space Flight Center";"Issued";"MFS-31294-5-CIP";6399020;"09/688,729";"Aluminum-Silicon Alloy Having Improved Properties At Elevated Temperatures And Articles Cast Therefrom";"10/11/2020" -"NASA Marshall Space Flight Center";"Issued";"MFS-31294-6-CIP";6419769;"09/749,503";"Aluminum-Silicon Alloy Having Improved Properties At Elevated Temperatures And Process For Producing Cast Articles Therefrom";"12/22/2020" -"NASA Marshall Space Flight Center";"Issued";"MFS-31294-7-CIP";6669792;"09/800,312";"Process For Producing A Cast Article From A Hypereutectic Aluminum-Silicon Alloy";"03/02/2021" -"NASA Marshall Space Flight Center";"Issued";"MFS-31303-1";6748349;"09/313,576";"Generalized Fluid System Simulation Program (GFSSP) Version 2.01c";"05/07/2019" -"NASA Marshall Space Flight Center";"Issued";"MFS-31387-1";6361961;"09/560,532";"GRAVITY RESPONSIVE NADH OXIDASE OF THE PLASMA MEMBRANE";"04/25/2020" -"NASA Marshall Space Flight Center";"Issued";"MFS-31399-1";6658329;"10/138,887";"Addition Of Rangefinder To The Video Guidance Sensor";"06/05/2022" -"NASA Marshall Space Flight Center";"Issued";"MFS-31413-1";6497355;"09/690,035";"Precision Penetration Control System For The Friction Stir Welding (FSW) Retractable Pin Tool";"10/19/2020" -"NASA Marshall Space Flight Center";"Issued";"MFS-31475-1";6424470;"09/616,624";"Panoramic Refracting Optic (PRO)";"07/28/2020" -"NASA Marshall Space Flight Center";"Issued";"MFS-31475-2-DIV";6580567;"10/173,410";"Panoramic Refracting Conical Optic";"06/17/2022" -"NASA Marshall Space Flight Center";"Issued";"MFS-31488-1";6028693;"09/7,124";"Microresonator And Associated Method For Producing And Controlling Photonic Signals With A Photonic Bandgap Delay Apparatus";"01/14/2018" -"NASA Marshall Space Flight Center";"Issued";"MFS-31490-1";7118074;"10/690,161";"Electrodynamic Tether System Design For Spacecraft Deorbit";"10/17/2023" -"NASA Marshall Space Flight Center";"Issued";"MFS-31529-1";7081730;"10/857,375";"Micro-Commanding Servo Motor Controller With Greater Than Fifty Million To One Dynamic Rate Range";"06/19/2024" -"NASA Marshall Space Flight Center";"Issued";"MFS-31559-1-CON";8127977;"13/157,895";"Phase/Matrix Transformation Weld Process And Apparatus";"11/27/2021" -"NASA Marshall Space Flight Center";"Issued";"MFS-31559-1-DIV";7980449;"10/385,168";"Phase/Matrix Transformation Weld Process And Apparatus";"11/27/2021" -"NASA Marshall Space Flight Center";"Issued";"MFS-31559-2-DIV";8225984;"13/157988";"Phase/Matrix Transformation Weld Process And Apparatus";"11/27/2021" -"NASA Marshall Space Flight Center";"Issued";"MFS-31565-1";6885779;"09/877,801";"Full-Cycle, Low Loss, Low Distortion Phase Modulation From Multi-Layered Dielectric Stack With Terahertz Optical Bandwidth";"08/17/2022" -"NASA Marshall Space Flight Center";"Issued";"MFS-31584-1";6497091;"09/877,800";"Hypergolic Ignitor Assembly";"06/06/2021" -"NASA Marshall Space Flight Center";"Issued";"MFS-31584-1-CIP";6845605;"10/288,800";"Hypergolic Ignitor";"01/26/2023" -"NASA Marshall Space Flight Center";"Issued";"MFS-31593-1";6939610;"10/212,564";"Smart Thermal Management Coating";"09/20/2022" -"NASA Marshall Space Flight Center";"Issued";"MFS-31596-1";6873762;"10/118,626";"Fabrication Of Fiber-Optic Gratings Over A Wide Range Of Bragg Wavelength And Bandwidth Using A Single Phase Mask";"10/12/2022" -"NASA Marshall Space Flight Center";"Issued";"MFS-31616-1";6540426;"09/949,408";"Passive Ball Capture Latch Docking Mechanism";"09/04/2021" -"NASA Marshall Space Flight Center";"Issued";"MFS-31646-1";6860099;"10/263,297";"Liquid Propellant Tracing Impingement Injector";"05/24/2023" -"NASA Marshall Space Flight Center";"Issued";"MFS-31649-1";7446860;"11/527,648";"Nonintrusive, Remote, Micron Accuracy, Laser Fresnel Ranging System";"10/19/2026" -"NASA Marshall Space Flight Center";"Issued";"MFS-31698-1";6802999;"10/173,536";"Method Of Fabricating A Protective Crucible Wall Coating Incorporating Designed Multi-Use Channels";"05/02/2023" -"NASA Marshall Space Flight Center";"Issued";"MFS-31706-1";6886392;"10/622,174";"Single Ball Bearing Lubricant And Material Evaluator";"07/17/2023" -"NASA Marshall Space Flight Center";"Issued";"MFS-31727-1";6953129;"10/231,428";"Impact And Fire Resistant Coating For Pressure Vessels";"11/07/2022" -"NASA Marshall Space Flight Center";"Issued";"MFS-31761-1";6802488;"10/232,974";"Electro-Mechanically Actuated Propellant Valve";"01/29/2023" -"NASA Marshall Space Flight Center";"Issued";"MFS-31768-1";6745942;"10/214,482";"Magnetic Symbology Reader";"08/05/2022" -"NASA Marshall Space Flight Center";"Issued";"MFS-31776-1";7735265;"11/780,610";"Foam-Rigidized Inflatable Tubular Space Booms";"07/20/2027" -"NASA Marshall Space Flight Center";"Issued";"MFS-31785-1";7006203;"10/646,000";"Integrated Rangefinding Measurement In Video Guidance Sensor";"08/21/2023" -"NASA Marshall Space Flight Center";"Issued";"MFS-31789-1";7265476;"10/975,121";"MEMS- Micro-Translation Stage With Indefinite Linear Travel Capability";"11/01/2025" -"NASA Marshall Space Flight Center";"Issued";"MFS-31807-1";7050161;"10/637,085";"Global Radius Of Curvature Estimation And Control System For Segmented Mirrors (GRoCECS)";"01/07/2025" -"NASA Marshall Space Flight Center";"Issued";"MFS-31813-1";7802799;"11/527,653";"Joining Metallic To Composite Components";"07/29/2029" -"NASA Marshall Space Flight Center";"Issued";"MFS-31815-1";7325749;"10/738,352";"Distributed Solid State Programmable Thermostat / Power Controller";"01/29/2026" -"NASA Marshall Space Flight Center";"Issued";"MFS-31817-1";7515257;"11/14,455";"Short-Range / Long-Range Integrated Target (SLIT) For Video Guidance Sensor Rendezvous And Docking";"06/07/2027" -"NASA Marshall Space Flight Center";"Issued";"MFS-31823-1-DIV";7095000;"10/943,827";"Radio-Frequency Driven Dielectric Heaters For Non-Nuclear Testing In Nuclear Core Development";"11/27/2024" -"NASA Marshall Space Flight Center";"Issued";"MFS-31828-1";6918970;"10/120,226";"High Strength Aluminum Alloy For High Temperature Applications";"04/12/2023" -"NASA Marshall Space Flight Center";"Issued";"MFS-31838-1";7641949;"10/857,379";"Improved Pressure Vessel Impact Resistance Utilizing Filament Wound Hybrid Fibers";"10/15/2025" -"NASA Marshall Space Flight Center";"Issued";"MFS-31842-1";7347089;"11/215,749";"Gas Volume Contents Within A Container, Smart Volume Instrument";"11/26/2025" -"NASA Marshall Space Flight Center";"Issued";"MFS-31843-1";7174077;"10/631,220";"Fiber-Coupled Laser Diodes With Even Illumination Pattern";"07/30/2023" -"NASA Marshall Space Flight Center";"Issued";"MFS-31852-1";7106457;"10/857,372";"Achromatic Shearing Phase Sensor For Phase Alignment Of A Segmented Telescope";"01/21/2025" -"NASA Marshall Space Flight Center";"Issued";"MFS-31865-1";6888476;"10/615,369";"Advanced Video Guidance Sensor Software";"07/21/2023" -"NASA Marshall Space Flight Center";"Issued";"MFS-31886-1";6850592;"10/321,873";"Digital Equivalent System (DEDS) For X-Ray Flourescent Spectral Output";"01/08/2023" -"NASA Marshall Space Flight Center";"Issued";"MFS-31891-1";7375801;"11/108,140";"Video Sensor With Range Measurement Capability";"11/06/2025" -"NASA Marshall Space Flight Center";"Issued";"MFS-31918-1";7275675;"10/928,876";"Optimal Design Geometry For All Friction Stir Weld Tools";"01/15/2025" -"NASA Marshall Space Flight Center";"Issued";"MFS-31944-1";7017812;"10/730,191";"Variable Distance Angular Symbology Reader";"11/26/2023" -"NASA Marshall Space Flight Center";"Issued";"MFS-32024-1";8297468;"10/857,380";"Liquefied Natural Gas Fuel Tank";"07/13/2021" -"NASA Marshall Space Flight Center";"Issued";"MFS-32031-1";7738084;"11/543,284";"Fiber Optic Liquid Mass Flow Sensor - Improved Prototype Design";"09/29/2026" -"NASA Marshall Space Flight Center";"Issued";"MFS-32099-1-CON";8561829;"13/544,066";"Composite Pressure Vessel Including Crack Arresting Barrier";"10/23/2029" -"NASA Marshall Space Flight Center";"Issued";"MFS-32102-1";7540143;"11/172,665";"Heated Pressure Balls Monopropellant Thermal Rocket Engine Cycle";"12/12/2026" -"NASA Marshall Space Flight Center";"Issued";"MFS-32105-1-DIV";7568608;"11/700,972";"Ultrasonic Stir Welding Process And Apparatus";"01/29/2027" -"NASA Marshall Space Flight Center";"Issued";"MFS-32115-1";7686202;"11/543,287";"Gimbling Shoulder For Friction Stir Welding";"06/18/2027" -"NASA Marshall Space Flight Center";"Issued";"MFS-32136-1";7595841;"11/174,210";"Video Image Stabilization And Registration - Plus (VISAR+)";"12/03/2027" -"NASA Marshall Space Flight Center";"Issued";"MFS-32137-1";7177164;"11/376,632";"Multi-loop High Voltage Power Supply with Fast Rise/Fall Time";"03/10/2026" -"NASA Marshall Space Flight Center";"Issued";"MFS-32175-1";7228241;"11/152,810";"An Extended Lee-Kesler Equation-of-State (ELK-EoS) For The Volumetric And Thermodynamic Properties Of Propellant Fluids, Including The Non-Polar Quantum And Polar Fluids";"06/13/2025" -"NASA Marshall Space Flight Center";"Issued";"MFS-32192-1";7116098;"11/357,454";"Absolute Limit Sensor (ALS)";"02/16/2026" -"NASA Marshall Space Flight Center";"Issued";"MFS-32208-1";7259981;"11/296,719";"Analog Nonvolatile Computer Memory";"12/14/2025" -"NASA Marshall Space Flight Center";"Issued";"MFS-32214-1";7418814;"11/172,666";"Dual Expander Cycle Rocket Engine Cycle with an Intermediate Brayton Cycle Heat Exchanger";"12/19/2026" -"NASA Marshall Space Flight Center";"Issued";"MFS-32228-1";8290435;"12/241,322";"Short Range Antenna / Close Proximity Transmitter and Receiver";"08/17/2031" -"NASA Marshall Space Flight Center";"Issued";"MFS-32253-1";7469878;"11/518,733";"Magnetorestrictive Valves";"10/17/2026" -"NASA Marshall Space Flight Center";"Issued";"MFS-32307-1";7908079;"11/527,658";"Portable Runway Intersection Display And Monitoring System";"01/13/2030" -"NASA Marshall Space Flight Center";"Issued";"MFS-32311-1";7623621;"12/47,686";"Identification And Authentication System Using Integrated Optical And X-ray Fluorescene Spectral Methods";"03/13/2028" -"NASA Marshall Space Flight Center";"Issued";"MFS-32318-1";8098060;"12/173,318";"SCAPS(Single Coil Absolute Position Sensor) GAPSYN (Inductive Gap Sensor) Digital Signal Conditioning Electronics";"09/29/2030" -"NASA Marshall Space Flight Center";"Issued";"MFS-32323-1";8169620;"12/563,819";"Sub-Pixel Spatial Resolution Interferometry With Interlaced Stitching";"10/15/2030" -"NASA Marshall Space Flight Center";"Issued";"MFS-32324-1";7594530;"11/942,322";"Orbital Foamed Metal Extruder";"06/09/2028" -"NASA Marshall Space Flight Center";"Issued";"MFS-32341-1";8550468;"12/210,843";"High Load Fully Retained Dynamic Cryogenic Seal";"01/09/2032" -"NASA Marshall Space Flight Center";"Issued";"MFS-32364-1";7808353;"11/513,433";"Plasmoid Thruster for Electrode-less, High Specific Impulse Propulsion";"07/22/2029" -"NASA Marshall Space Flight Center";"Issued";"MFS-32390-1";7867589;"11/780,561";"Hybrid composite cryogenic tank structure";"10/14/2029" -"NASA Marshall Space Flight Center";"Issued";"MFS-32400-1";7900436;"11/780,626";"Gas Generator Augmented Expander Cycle Rocket Engine";"01/04/2030" -"NASA Marshall Space Flight Center";"Issued";"MFS-32402-1";7911174;"12/39,506";"Inexpensive, Rate Insensitive, Linear, Load Compensating System for Hybrid Stepper Motors";"01/25/2029" -"NASA Marshall Space Flight Center";"Issued";"MFS-32429-1";7807097;"12/123,170";"Orbital Batch Process Foamed Aluminum Facility";"07/11/2028" -"NASA Marshall Space Flight Center";"Issued";"MFS-32438-1";8004364;"11/828,563";"16-Kilowatt (KW) 2-30MHz Solid State Power Amplifier using innovative combining methods";"11/03/2028" -"NASA Marshall Space Flight Center";"Issued";"MFS-32439-1";7831225;"11/828,590";"H2O-NaCl based radio frequency power load";"04/07/2029" -"NASA Marshall Space Flight Center";"Issued";"MFS-32497-1";7848606;"12/047,805";"Reprocessing Non-Oxide Optical Fiber Preforms Utilizing an Axial Magnetic Field";"05/26/2029" -"NASA Marshall Space Flight Center";"Application";"MFS-32518-1-CIP";;"13/452,303";"Liquid Propellant Injection Elements with Self-Adjusted Inlet Area for Rocket and Other Combustor-Type Engines Applications";"10/03/2028" -"NASA Marshall Space Flight Center";"Issued";"MFS-32521-1";7804600;"12/44,740";"Dispersive Filter For Enhancement Of Laser Gyroscopes";"06/10/2029" -"NASA Marshall Space Flight Center";"Issued";"MFS-32548-1";7409875;"11/862,793";"Optical Hotspot Conductive Fluid Flow Sensor";"09/27/2027" -"NASA Marshall Space Flight Center";"Issued";"MFS-32558-1";8490470;"12/569,555";"True Shear Parallel Plate Viscometer";"12/04/2031" -"NASA Marshall Space Flight Center";"Issued";"MFS-32584-1";7929144;"12/336,260";"Local Leak Detection and Health Monitoring of Pressurized Tanks in a Space Environment";"11/17/2029" -"NASA Marshall Space Flight Center";"Issued";"MFS-32588-1";8052860;"11/957,051";"ELECTROCHEMICALLY-ENHANCED MECHANICAL POLISHING OF OPTICS";"09/06/2030" -"NASA Marshall Space Flight Center";"Issued";"MFS-32605-1";8309944;"12/240,626";"Grazing Incidence Optics for Neutron Analysis and Imaging";"12/07/2030" -"NASA Marshall Space Flight Center";"Application";"MFS-32605-1-CIP";0;"12/717,450";"Novel Grazing Incidence Neutron Optics";"09/29/2028" -"NASA Marshall Space Flight Center";"Issued";"MFS-32605-1-DIV";8575577;"13/534,951";"Novel Grazing Incidence Neutron Optics";"09/29/2028" -"NASA Marshall Space Flight Center";"Application";"MFS-32612-1-CIP";;"13/796,693";"Protective Safety Cover for Pool and Spa Drains";"03/24/2029" -"NASA Marshall Space Flight Center";"Issued";"MFS-32614-1";464750;"12/826,887";"Magnetostrictive Regulator";"04/03/2031" -"NASA Marshall Space Flight Center";"Issued";"MFS-32615-1";8132772;"12/567,451";"Avionics/Electronics Box Rail Mount System";"11/27/2030" -"NASA Marshall Space Flight Center";"Issued";"MFS-32638-1";8291776;"12/827,515";"Magnetostrictive Force-to-Angle Sensor";"03/12/2031" -"NASA Marshall Space Flight Center";"Application";"MFS-32642-1";0;"12/827,598";"Cryogenic and Non-Cryogenic Optical Liquid Level Instrument for Stratified Conditions";"04/05/2031" -"NASA Marshall Space Flight Center";"Issued";"MFS-32651-1";8090484;"12/403,096";"A Planar Translation Device for Solar Sail Spacecraft Attitude Control and Maneuvering";"07/03/2030" -"NASA Marshall Space Flight Center";"Application";"MFS-32655-1";0;"12/862,510";"AEROSPACE LASER IGNITION/ABLATION VARIABLE, HIGH PRECISION THRUSTER"; -"NASA Marshall Space Flight Center";"Issued";"MFS-32667-1";8357884;"12/839,848";"Extraction of Water from the Soil of Space Bodies Using Microwave processes";"04/22/2031" -"NASA Marshall Space Flight Center";"Issued";"MFS-32697-1";8252734;"12/634,502";"Multi Layered or Mixed Element Aqueous Ionic Fluids As Fuel or Lubrication Friction Modifiers";"08/26/2030" -"NASA Marshall Space Flight Center";"Issued";"MFS-32697-1-CIP";8563487;"13/525,623";"Multi Layered or Mixed Element Aqueous Ionic Fluids As Fuel or Lubrication Friction Modifiers";"12/09/2029" -"NASA Marshall Space Flight Center";"Issued";"MFS-32715-1";8535440;"12/758169";"Improvement of Crystalline Quality during Melt Growth of Semiconductors by Mechanically Induced Nucleation";"07/18/2032" -"NASA Marshall Space Flight Center";"Issued";"MFS-32719-1";8564770;"13/150832";"Field-Deployable Spectral Estimator of Trichloroacetic Acid (TCAA) in Plants";"05/18/2032" -"NASA Marshall Space Flight Center";"Issued";"MFS-32733-1";7621670;"12/392,867";"Unbalanced Flow Distribution Mixer with Flow Metering Capability";"02/25/2029" -"NASA Marshall Space Flight Center";"Issued";"MFS-32737-1";8448498;"12/870,468";"Hermetic Seal Leak Detection Apparatus";"06/06/2031" -"NASA Marshall Space Flight Center";"Application";"MFS-32737-1-CIP";;"13/874182";"Hermetic Seal Leak Detection Apparatus";"08/27/2030" -"NASA Marshall Space Flight Center";"Issued";"MFS-32748-1";8132961;"12/397,973";"Optimized Length-to-Diameter Ratio Flow Meter";"08/16/2030" -"NASA Marshall Space Flight Center";"Application";"MFS-32757-1";0;"13/118086";"Compliant Mechanical Motor"; -"NASA Marshall Space Flight Center";"Application";"MFS-32761-1-CIP";;"13/673,309";"Multi-Channel Flow Plug with Eddy Current Minimization for Metering, Mixing, and Conditioning";"07/23/2029" -"NASA Marshall Space Flight Center";"Application";"MFS-32761-1-CON";;"13/729,861";"Multi-Channel Flow Plug with Eddy Current Minimization for Meeting, Mixing, and Conditioning";"07/23/2029" -"NASA Marshall Space Flight Center";"Issued";"MFS-32777-1";8425751;"13/020144";"Electrodeposited Nickel-Cobalt Alloy Development";"05/31/2031" -"NASA Marshall Space Flight Center";"Issued";"MFS-32797-1";8330961;"12/837,173";"A compact sensor for in-situ measurements of gas leaks";"08/24/2031" -"NASA Marshall Space Flight Center";"Issued";"MFS-32803-1";8133768;"12/560,371";"Method of Manufacturing Light Emmitting, Photovoltaic or other Electronic Apparatus";"05/31/2027" -"NASA Marshall Space Flight Center";"Application";"MFS-32809-1";0;"13/369,704";"Telemetry encoder/decoder"; -"NASA Marshall Space Flight Center";"Issued";"MFS-32817-1";8290006;"13/281,025";"Variable Power Handheld Laser Torch for Joining Processes";"10/25/2031" -"NASA Marshall Space Flight Center";"Issued";"MFS-32826-1";8316884;"12/846,429";"Drain System for Pools, Spas, and Tanks. (Reference MFS 32612-1)";"03/23/2031" -"NASA Marshall Space Flight Center";"Application";"MFS-33054-1";;"14/020,326";"Multi-spacecraft Autonomous Positioning System / Network-Based Navigation";"09/06/2033" -"NASA Marshall Space Flight Center";"Issued";"MFS-32830-1";8420582;"13/027472";"FRICTION MANAGEMENT USING SOLVENT PARTITIONING OF SINGLE ELEMENT AND MULTI-ELEMENT HYDROPHILIC SURFACE-INTERACTIVE CHEMICALS CONTAINED IN HYDROPHILIC TARGETED EMULSIONS";"02/15/2031" -"NASA Marshall Space Flight Center";"Application";"MFS-32830-1-CIP";;"13/900,452";"Friction and Wear Management Using Solvent Partioning of Hydrophilic Surface-Interactive Chemicals contains in Boundary Layer-Targeted Emulsions";"03/07/2033" -"NASA Marshall Space Flight Center";"Issued";"MFS-32840-1";8322685;"12/842,218";"Non-collinear Valve Actuator";"04/02/2031" -"NASA Marshall Space Flight Center";"Application";"MFS-32841-1";;"13/424,754";"DUPLICATE of Telemetry encoder/decoder"; -"NASA Marshall Space Flight Center";"Application";"MFS-32853-1";;"14/196,203";"Particle Damping for Vibration Mitigation of Circuit Cards";"03/04/2034" -"NASA Marshall Space Flight Center";"Issued";"MFS-32857-1";8668168;"13/326,513";"Rocket Vent Design with Variable Flow Control and Rain Protection";"01/21/2032" -"NASA Marshall Space Flight Center";"Issued";"MFS-32859-1";8393520;"13/240,075";"Variably Pulsed High Power Ultrasonic (HPU) Energy for Ultrasonic Stir Welding (USW)";"11/07/2031" -"NASA Marshall Space Flight Center";"Issued";"MFS-32859-1-DIV";8393523;"13/523,310";"Pulsed Ultrasonic Stir Welding Method";"09/22/2031" -"NASA Marshall Space Flight Center";"Application";"MFS-32865-1";;"13/302,734";"Easily Installed, In-situ Adaptable Flow Measurement Device and Method."; -"NASA Marshall Space Flight Center";"Issued";"MFS-32865-2";8555731;"13/302,773";"Easily Installed, In-situ Adaptable Flow Measurement Device and Method.";"06/04/2032" -"NASA Marshall Space Flight Center";"Application";"MFS-32865-3";;"13/302,817";"Easily Installed, In-situ Adaptable Flow Measurement Device and Method."; -"NASA Marshall Space Flight Center";"Application";"MFS-32865-4";;"13/302,845";"Easily Installed, In-situ Adaptable Flow Measurement Device and Method.";"08/23/2032" -"NASA Marshall Space Flight Center";"Issued";"MFS-32871-1";8577519;"13/424,898";"Low Cost Telemetry System for Small/micro satellites";"06/13/2032" -"NASA Marshall Space Flight Center";"Application";"MFS-32873-1";;"13/523210";"High-current, high-voltage switch using non-hazardous liquid metals";"11/29/2032" -"NASA Marshall Space Flight Center";"Application";"MFS-32889-1";;"13/174,084";"Pyrotechnic Pipe Plug and Variable Area Flow Meter"; -"NASA Marshall Space Flight Center";"Application";"MFS-32895-1";;"13/242,734";"High Powered Ultrasonically Assisted Thermal Stir Welding"; -"NASA Marshall Space Flight Center";"Application";"MFS-32912-1";;"13/299,930";"Salt Water Power Load - Part II"; -"NASA Marshall Space Flight Center";"Application";"MFS-32916-1";;"13/333283";"Improved Impact Toughness and Heat Treatment for Cast Aluminum Wheels"; -"NASA Marshall Space Flight Center";"Application";"MFS-32924-1";;"13/312,481";"Partial Automated Alignment & Integration System";"07/09/2032" -"NASA Marshall Space Flight Center";"Application";"MFS-32934-1";;"12/833,894";"Methods, Devices, and Systems Relating to a Sensing Device"; -"NASA Marshall Space Flight Center";"Issued";"MFS-32940-1";8657179;"13/430,268";"Closed Loop Temperature Control for the Thermal Stir Welding Process";"03/26/2032" -"NASA Marshall Space Flight Center";"Application";"MFS-32944-1";;"13/896,137";"Mitigation of Sonic Boom from Supersonic Vehicles by means of Long Penetration Mode (LPM) Counter-Flowing Cold Gas Jets";"05/16/2033" -"NASA Marshall Space Flight Center";"Application";"MFS-32945-1";;"14/082,956";"Piezoelectric Gravity Gradient and Multiple Purpose Sensor Detection System";"11/18/2033" -"NASA Marshall Space Flight Center";"Application";"MFS-32986-1";;"13/961,573";"Non-Explosively-Actuated Pressurization Start Valve";"08/07/2033" -"NASA Marshall Space Flight Center";"Application";"MFS-33007-1";;"14/192,350";"Carbon Nanotube Tape Vibrating Gyroscope Update";"02/27/2034" -"NASA Marshall Space Flight Center";"Application";"MFS-33022-1";;"14/192,395";"A Design Technology to Eliminate Dribble Volume in Rocket Engine Manifolds for Swirl-Coaxial Injectors";"02/27/2034" -"NASA Marshall Space Flight Center";"Application";"MFS-33031-1";;"13/949,361";"An aerodynamic design concept for rocket nozzle side load reduction";"07/24/2033" -"NASA Marshall Space Flight Center";"Application";"MFS-33060-1";;"14/104,881";"Carbon Nanotube Tape Single Axis Accelerometer";"12/12/2033" -"NASA Johnson Space Center";"Issued";"MSC-21715-2";5869238;"08/390,904";"Quantitative Method Of Measuring Cancer Cell Urokinase And Metastatic Potential";"02/09/2016" -"NASA Johnson Space Center";"Issued";"MSC-21947-1";7541159;"10/828,531";"MOLECULAR SPECIFIC ANTIBODIES AGAINST UROKINASE";"08/28/2025" -"NASA Johnson Space Center";"Issued";"MSC-22119-1";5851816;"08/172,962";"A PROCESS FOR DEVELOPING HIGH-FIDELITY THREE-DIMENSIONAL TUMOR MODELS OF HUMAN PROSTATE CARCINOMA";"12/22/2015" -"NASA Johnson Space Center";"Issued";"MSC-22122-1";6117674;"08/366,065";"HORIZONTAL ROTATING-WALL VESSEL PROPAGATION IN IN VITRO HUMAN TISSUE MODELS";"09/12/2017" -"NASA Johnson Space Center";"Issued";"MSC-22489-1";5827531;"08/349,169";"Multi-Lamellar, Immiscible-Phase Microencapsulation of Drugs";"10/27/2015" -"NASA Johnson Space Center";"Issued";"MSC-22616-2";6133036;"09/7,239";"Preservation Of Liquid Biological Samples";"12/12/2015" -"NASA Johnson Space Center";"Issued";"MSC-22616-3";6716392;"09/630,979";"Preservation Of Liquid Biological Samples";"01/14/2018" -"NASA Johnson Space Center";"Issued";"MSC-22633-1";6485963;"09/587,028";"Electrically Potentiated Growth Of Mammalian Neuronal Tissue Facilitated By Rotating Wall Vessel Culture";"06/02/2020" -"NASA Johnson Space Center";"Issued";"MSC-22633-2";6673597;"09/798,854";"Growth Stimulation Of Biological Cells And Tissue By Electromagnetic Fields And Uses Thereof";"02/28/2021" -"NASA Johnson Space Center";"Issued";"MSC-22695-1";6261844;"09/213,988";"A Unique Urine Preservative With Combined Antibacterial And Antioxidant Properties";"12/17/2018" -"NASA Johnson Space Center";"Issued";"MSC-22721-2";6254359;"09/354,915";"Blood Pump Bearing System";"07/09/2019" -"NASA Johnson Space Center";"Issued";"MSC-22724-1";6047216;"09/129,832";"Millimeter Wave/Microwave Ablation For Treatment Of Atherosclerotic Lesions";"08/05/2018" -"NASA Johnson Space Center";"Issued";"MSC-22724-2";6226553;"09/501,150";"Endothelium Preserving Microwave Treatment For Atherosclerosis";"02/09/2020" -"NASA Johnson Space Center";"Issued";"MSC-22724-3";6223086;"09/504,768";"Endothelium Preserving Microwave Treatment For Atherosclerosis";"02/09/2020" -"NASA Johnson Space Center";"Issued";"MSC-22724-5";6496736;"09/500,538";"Endothelium Preserving Microwave Treatment For Atherosclerosis";"02/09/2020" -"NASA Johnson Space Center";"Issued";"MSC-22757-1";5879079;"08/917,581";"Automated Propellant Blending Machine";"08/20/2017" -"NASA Johnson Space Center";"Issued";"MSC-22797-1";6312398;"08/786,842";"A Method Of Applying External Power To Assist In The Operation Of Joints In Pressure Suits And Inflatable Structures2283";"12/19/2016" -"NASA Johnson Space Center";"Issued";"MSC-22839-1";6501414;"09/826,402";"Locating Concealed Objects Using Spectral Signatures";"04/02/2021" -"NASA Johnson Space Center";"Issued";"MSC-22859-1";6730498;"09/56,363";"Production Of 1-25diOH Vitamin D3, Erythropoietin And Other Products By Epithelial And Interstitial Cells In Response To Shear Stress";"04/08/2017" -"NASA Johnson Space Center";"Issued";"MSC-22859-2";6946246;"09/532,001";"Production Of Functional Proteins: Balance Of Shear Stress And Gravity";"03/21/2020" -"NASA Johnson Space Center";"Issued";"MSC-22859-3";7198947;"10/734,759";"Production Of Functional Proteins: Balance Of Shear Stress And Gravity";"12/22/2023" -"NASA Johnson Space Center";"Issued";"MSC-22859-5";7972821;"12/174,221";"Production of Functional Proteins: Balance of Shear Stress and Gravity";"02/11/2029" -"NASA Johnson Space Center";"Issued";"MSC-22863-1";7122071;"10/263,280";"Centrifugal Adsorption Cartridge System (CACS)";"12/21/2022" -"NASA Johnson Space Center";"Issued";"MSC-22866-1";6099864;"09/79,741";"INSITU Activation Of Microcapsules";"05/15/2018" -"NASA Johnson Space Center";"Issued";"MSC-22900-1";6231010;"09/236,785";"Advanced Structural/Inflatable Hybrid Spacecraft Habitation Module";"01/25/2019" -"NASA Johnson Space Center";"Issued";"MSC-23563-2";8039099;"11/848,332";"Nanoencapsulated Aerogels Produced By Monomer Vapor Deposition And Polymerization";"08/13/2028" -"NASA Johnson Space Center";"Issued";"MSC-22931-1";6354540;"09/405,301";"Electro-Mechanically Actuated Magnetic Ring With Load Sensing Feedback And Closed Loop Control Docking/Berthing System For Alignment And Mating Of Multiple Vehicles, Structures, And/or Assemblies";"09/20/2019" -"NASA Johnson Space Center";"Issued";"MSC-22936-1";6387399;"09/79,766";"Protein Crystal Encapsulation Process";"05/15/2018" -"NASA Johnson Space Center";"Issued";"MSC-22936-2";6558698;"09/733,391";"Microencapsulated Bioactive Agents And Method Of Making";"12/06/2020" -"NASA Johnson Space Center";"Issued";"MSC-22936-3";6676964;"09/774,168";"Method For Determining The Three-Dimensional Structure Of A Protein";"01/26/2021" -"NASA Johnson Space Center";"Issued";"MSC-22936-4";6599449;"09/774,169";"X-Ray Crystallography Reagent";"01/24/2021" -"NASA Johnson Space Center";"Issued";"MSC-22937-1";6214300;"09/79,833";"Microencapsulation And Electrostatic Processing Device (MEPS)";"05/15/2018" -"NASA Johnson Space Center";"Issued";"MSC-22938-1";6103271;"09/79,770";"Low-Shear Microencapsulation & Electrostatic Coating Process";"05/15/2018" -"NASA Johnson Space Center";"Issued";"MSC-22939-4";7968117;"12/100,009";"Externally Triggered Microcapsules";"07/09/2029" -"NASA Johnson Space Center";"Issued";"MSC-22970-1";6253563;"09/337,208";"Solar-Powered Refrigeration System";"06/03/2019" -"NASA Johnson Space Center";"Issued";"MSC-22970-2";6469487;"09/838,679";"Solar Powered Refrigeration System";"06/03/2019" -"NASA Johnson Space Center";"Issued";"MSC-22970-3";6453693;"09/838,680";"Solar Powered Refrigeration System";"06/03/2019" -"NASA Johnson Space Center";"Issued";"MSC-23029-1";6651739;"09/793,817";"Medium Frequency Pseudo Noise Geological Radar";"07/20/2021" -"NASA Johnson Space Center";"Issued";"MSC-23037-1";6864473;"09/988,855";"Variable Shadow Screen For Optical Devices";"11/14/2021" -"NASA Johnson Space Center";"Issued";"MSC-23041-1";6334302;"09/351,152";"Variable Specific Impulse Magnetoplasma Rocket (VASIMR)";"06/28/2019" -"NASA Johnson Space Center";"Issued";"MSC-23049-3";6592579;"09/746,542";"Method For Selective Thermal Ablation";"06/28/2021" -"NASA Johnson Space Center";"Issued";"MSC-23049-4";6675050;"09/746,533";"Computer Program For Microwave Antenna";"05/07/2021" -"NASA Johnson Space Center";"Issued";"MSC-23076-1";6321746;"09/574,758";"Collapsable, Light, Portable Human Hyperbaric Chamber/Airlock System";"05/17/2020" -"NASA Johnson Space Center";"Issued";"MSC-23092-1";6547189;"09/826,403";"Advanced, Large Volume, Highly Loaded, Hybrid Inflatable Pressure Vessel";"05/26/2021" -"NASA Johnson Space Center";"Issued";"MSC-23153-1";6995572;"09/803,613";"Coplanar Waveguide Ice Detection Sensor";"11/04/2023" -"NASA Johnson Space Center";"Issued";"MSC-23154-1";7113820;"09/906,013";"A Real-Time, High Frequency QRS Electrocardiograph.";"05/03/2023" -"NASA Johnson Space Center";"Issued";"MSC-23154-2";7539535;"11/345,687";"A Real-Time, High Frequency QRS Electrocardiograph";"07/13/2027" -"NASA Johnson Space Center";"Issued";"MSC-23178-1";6997637;"10/5,820";"Deceleration Limiting Safety Crash Wall";"05/19/2022" -"NASA Johnson Space Center";"Issued";"MSC-23193-1";6618010;"09/994,989";"Passive Noncoherent Tracking Of A Data-Modulated Signal";"11/14/2021" -"NASA Johnson Space Center";"Issued";"MSC-23277-1";7295309;"10/734,753";"Microcapsule Flow Sensor";"11/12/2024" -"NASA Johnson Space Center";"Issued";"MSC-23303-1";7397774;"10/446,283";"Downlink Data Multiplexer";"01/16/2026" -"NASA Johnson Space Center";"Issued";"MSC-23307-1";6559645;"10/28,962";"Detection Of Subterranean Metal Objects Using Differential Spectral Processing";"11/17/2020" -"NASA Johnson Space Center";"Issued";"MSC-23309-1";7040319;"10/87,866";"Oxygen Partial Pressure Monitoring Device For Aircraft Oxygen Masks.";"04/27/2022" -"NASA Johnson Space Center";"Issued";"MSC-23311-1";6650280;"09/953,612";"Mass Measurement During Fluid Flow Using An Integrated Sonic/Microwave Detector.";"09/14/2021" -"NASA Johnson Space Center";"Issued";"MSC-23314-1";6899009;"09/892,355";"Flexshield (Flexible Multi-Shock Shield Technology)";"06/26/2021" -"NASA Johnson Space Center";"Issued";"MSC-23349-1";7415005;"10/283,354";"MCC Voice Over Internet Protocol (VOIP)";"08/08/2026" -"NASA Johnson Space Center";"Application";"MSC-23349-2-SB";0;"12/170,614";"Ad Hoc Selection of Voice Over Internet Streams"; -"NASA Johnson Space Center";"Issued";"MSC-23424-1";6985606;"10/212,579";"Global Distribution Of Large Fluvial Fans/Potential Hydrocarbon Exploration Guide";"06/12/2024" -"NASA Johnson Space Center";"Issued";"MSC-23427-1";6944504;"10/302,323";"Microwave Ablation Of Prostatic Cells Using A Separated Antenna Array";"07/23/2023" -"NASA Johnson Space Center";"Issued";"MSC-23436-1";7126553;"10/679,688";"Tri-Sector Deployable Array Antenna";"08/11/2024" -"NASA Johnson Space Center";"Issued";"MSC-23443-1";6647855;"10/263,293";"Method And Apparatus For Deploying A Hypervelocity Shield";"09/30/2022" -"NASA Johnson Space Center";"Issued";"MSC-23444-1";6932090;"10/361,046";"A Simple Countermeasure For Management Of Motion Sickness And Vestibular/Sensory-Motor Problems Associated With Space Flight And Terrestial Motion Sickness";"07/01/2023" -"NASA Johnson Space Center";"Issued";"MSC-23449-1";7386340;"10/402,866";"Method For Diagnosis Of Coronary Artery Disease And Related Conditions Using 12-Lead High Frequency QRS Electrocardiography";"12/30/2025" -"NASA Johnson Space Center";"Issued";"MSC-23510-1";6851647;"10/417,377";"Portable Catapult Launcher For Small Aircraft";"04/03/2023" -"NASA Johnson Space Center";"Issued";"MSC-23518-1";7168935;"10/637,086";"Low Voltage Electron Beam Solid Freeform Fabrication System";"09/29/2024" -"NASA Johnson Space Center";"Issued";"MSC-23538-1";6943619;"10/443,233";"Practical Active Capacitor Filter";"05/21/2023" -"NASA Johnson Space Center";"Issued";"MSC-23539-1";6943621;"10/443,234";"Auto-Routable, Configurable, Daisy Chainable Data Acquisition System";"08/16/2023" -"NASA Johnson Space Center";"Issued";"MSC-23563-1";7270851;"10/985,081";"Nano-Encapsulated Aerogel";"05/14/2025" -"NASA Johnson Space Center";"Issued";"MSC-23594-1";7125370;"10/845,608";"Articulating Subject Support For Resistive Exercise In The Horizontal Position";"02/22/2025" -"NASA Johnson Space Center";"Issued";"MSC-23623-1";7212934;"11/370,379";"String Resistance Detector Concept";"03/06/2026" -"NASA Johnson Space Center";"Issued";"MSC-23659-1";7094045;"10/734,754";"Pulse-Flow Microencapsulation System";"06/09/2024" -"NASA Johnson Space Center";"Issued";"MSC-23659-2";7588703;"11/428,465";"Microencapsulation System And Method";"03/14/2027" -"NASA Johnson Space Center";"Issued";"MSC-23668-1";7250075;"10/874,004";"Water Outlet Control Mechanism For Fuel Cell System Operation In Variable Gravity Environments";"11/04/2025" -"NASA Johnson Space Center";"Issued";"MSC-23695-1";7249540;"11/177,652";"Torquing Tool Attachment For Round Connectors With Attached Cables";"08/27/2025" -"NASA Johnson Space Center";"Issued";"MSC-23781-1";7410485;"11/40,613";"Directional Microwave Applicator/Antenna";"10/16/2026" -"NASA Johnson Space Center";"Issued";"MSC-23805-1";7462141;"11/31,942";"Advanced Resistive Exercise Device (ARED)";"01/10/2027" -"NASA Johnson Space Center";"Issued";"MSC-23881-1";7686529;"11/958,908";"Low Friction, Low Profile, High Moment Two-Axis Joint";"12/18/2027" -"NASA Johnson Space Center";"Application";"MSC-23882-1";0;"12/899654";"Analog Strain Gage Conditioning System for Space Environment"; -"NASA Johnson Space Center";"Issued";"MSC-23906-1";7295884;"11/158,354";"Method for the Design and Analysis of the Primary Load Bearing Layer of an Inflatable Vessel";"07/20/2026" -"NASA Johnson Space Center";"Issued";"MSC-23933-1";7543779;"11/625,066";"Low Impact Docking System (LIDS) A.k.a, International Berthing Docking Mechanism (IBDM)";"02/22/2028" -"NASA Johnson Space Center";"Issued";"MSC-23954-1";7357606;"11/357,461";"Self-Advancing Step-Tap Drill";"08/14/2026" -"NASA Johnson Space Center";"Issued";"MSC-23988-1";8343740;"12/58,227";"Micro-Organ Device";"10/31/2031" -"NASA Johnson Space Center";"Issued";"MSC-23988-2";8580546;"13/688982";"Micro-Organ Device";"11/29/2032" -"NASA Johnson Space Center";"Issued";"MSC-23997-2";7815149;"12/388,345";"Magnetic Capture Docking Mechanism";"04/01/2025" -"NASA Johnson Space Center";"Issued";"MSC-24000-1";8076136;"/0";"Development And Characterization Of A Three-Dimensional Tissue Culture Model Of Bone";"10/31/2021" -"NASA Johnson Space Center";"Issued";"MSC-24042-1";7411198;"11/421,174";"New Architecture for Space Radiation Detection";"02/01/2027" -"NASA Johnson Space Center";"Issued";"MSC-24106-1";7577482;"11/683,770";"Network System Plug And Play Through Positional And Functional Connectivity Identification";"04/21/2028" -"NASA Johnson Space Center";"Issued";"MSC-24115-1";8022307;"11/772,999";"Method and Apparatus for Fabric Circuits and Antennas";"06/19/2030" -"NASA Johnson Space Center";"Issued";"MSC-24149-1";8122646;"12/402,986";"A Description Of An Improved Method For Folding, Assembling, And Weight Relief Of An Inflatable Shell";"02/04/2030" -"NASA Johnson Space Center";"Issued";"MSC-24149-2";8266866;"13/346137";"A Description Of An Improved Method For Folding, Assembling, And Weight Relief Of An Inflatable Shell";"03/12/2029" -"NASA Johnson Space Center";"Issued";"MSC-24164-1";8338114;"11/789,117";"Methods For Growing Tissue-Like 3D Assemblies (TLA) Of Human Broncho-Epithelial Cells";"05/04/2030" -"NASA Johnson Space Center";"Issued";"MSC-24169-1";7862946;"11/671,210";"Self-Regulating Control of Parasitic Electric Loads in Fuel Cell Power Systems";"11/05/2029" -"NASA Johnson Space Center";"Issued";"MSC-24180-1";7935259;"12/167,332";"Water Filtering Device, 100% Effective";"09/14/2029" -"NASA Johnson Space Center";"Issued";"MSC-24184-1";8116350;"12/353,755";"Ultra-Wideband (UWB) Two-Cluster Angle Of Arrival (AOA) Passive Tracking System Design";"07/22/2030" -"NASA Johnson Space Center";"Issued";"MSC-24201-1";7509774;"11/610,295";"A Description Of An Improved Method For Attaching An Inflatable Shell To A Rigid Interface";"06/13/2027" -"NASA Johnson Space Center";"Issued";"MSC-24207-1";7604782;"11/625,670";"X-38 Advanced Sublimator";"04/12/2028" -"NASA Johnson Space Center";"Issued";"MSC-24215-1";8070105;"11/956,826";"A Description Of A Concentric Nested Torroidal Inflatable Habitat";"10/04/2030" -"NASA Johnson Space Center";"Issued";"MSC-24216-1";8047473;"12/240,537";"A Description Of An Octonode Connecting Node Concept And Method";"01/10/2030" -"NASA Johnson Space Center";"Issued";"MSC-24228-1";7521682;"11/421,196";"New Architecture For Space Radiation Detection";"03/07/2027" -"NASA Johnson Space Center";"Issued";"MSC-24238-1";8388613;"12/757657";"Microwave Tissue Welding For Wound Closure";"11/17/2031" -"NASA Johnson Space Center";"Issued";"MSC-24263-1";7805276;"11/958,937";"Impact Detection System";"02/12/2029" -"NASA Johnson Space Center";"Issued";"MSC-24273-1";7840387;"11/778,858";"Method For The Design And Analysis Of The Primary Load Bearing Layer That Interfaces To The Structural Pass-through Of An Inflatable Vessel";"07/31/2029" -"NASA Johnson Space Center";"Application";"MSC-24314-1";0;"12/880602";"HDSS - High Density Spot Seeding"; -"NASA Johnson Space Center";"Issued";"MSC-24346-1";8466776;"12/828558";"Extended Range RFID and Sensor Tag";"09/05/2031" -"NASA Johnson Space Center";"Issued";"MSC-24387-1";8011229;"12/323,912";"Artificial Intelligence Algorithm For Assessing Postural Stability During Normal Daily Activities Using Shoe Insert Pressure Sensors";"11/26/2028" -"NASA Johnson Space Center";"Issued";"MSC-24441-1";7905946;"12/190,364";"A Capillary-based Static Phase Separator For Highly Variable Wetting Conditions";"07/02/2029" -"NASA Johnson Space Center";"Issued";"MSC-24444-1";8577120;"12/900644";"Flash Infrared (IR) Thermography Contrast Computer Simulation And Data Analysis Software";"04/22/2031" -"NASA Johnson Space Center";"Application";"MSC-24451-1";0;"13/057399";"Rapid Detection Of The Varicella Zoster Virus (VZV) In Saliva Samples"; -"NASA Johnson Space Center";"Issued";"MSC-24464-1";7859292;"12/502,575";"Reconfigurable SEU/SET Tolerance for FPGAs";"07/14/2029" -"NASA Johnson Space Center";"Issued";"MSC-24466-1";8183870;"12/370,021";"Battery cell voltage sensing and balancing using addressable transformers with electrical isolation and minimal additional connector pins and circuitry.";"07/01/2030" -"NASA Johnson Space Center";"Application";"MSC-24490-1";0;"12/612,171";"High Altitude Hydration System"; -"NASA Johnson Space Center";"Application";"MSC-24506-1";0;"12/971919";"A Method to Measure and Estimate Normalized contrast In Infrared Flash Thermography";"01/08/2030" -"NASA Johnson Space Center";"Issued";"MSC-24508-1";8343403;"12/174,380";"METHOD FOR MAKING A MICROPOROUS MEMBRANE";"12/31/2030" -"NASA Johnson Space Center";"Issued";"MSC-24509-1";8570047;"12/855384";"Battery Fault Detection with Saturating Transformers";"02/02/2032" -"NASA Johnson Space Center";"Issued";"MSC-24525-1";8384614;"12/894749";"Deployable Fresnel Rings";"10/11/2031" -"NASA Johnson Space Center";"Application";"MSC-24541-1";0;"12/899815";"Electromagnetic Time-Variance Magnetic Fields (TVMF) to generate, and re-grow Cartilage Cells by a Noninvasive Method"; -"NASA Johnson Space Center";"Issued";"MSC-24569-1";8176809;"12/331844";"Planar Torsion Spring"; -"NASA Johnson Space Center";"Issued";"MSC-24570-1";8276958;"12/269579";"Bidirectional Tendon Terminator"; -"NASA Johnson Space Center";"Issued";"MSC-24571-1";8371177;"12/241309";"Tendon Tension Sensor"; -"NASA Johnson Space Center";"Application";"MSC-24685-1";8056423;"12/269,552";"Sensing the Tendon Tension through the Conduit Reaction Forces";"11/12/2028" -"NASA Johnson Space Center";"Application";"MSC-24686-1";8060250;"12/335,153";"Joint Space Impedance Control for Tendon-Driven Manipulators";"12/15/2028" -"NASA Johnson Space Center";"Issued";"MSC-24687-1";8170718;"12/338697";"Multiple Priority Operational Space Impedance Control"; -"NASA Johnson Space Center";"Issued";"MSC-24688-1";8280837;"12/474068";"CONTACT STATE ESTIMATION FOR MULTI-FINGER ROBOT HANDS USING PARTICLE FILTERS"; -"NASA Johnson Space Center";"Issued";"MSC-24689-1";7784363;"12/241320";"PHALANGE TACTILE LOAD CELL";"09/30/2028" -"NASA Johnson Space Center";"Issued";"MSC-24732-1";8364314;"12/624445";"METHOD AND APPARATUS FOR AUTOMATIC CONTROL OF A HUMANOID ROBOT"; -"NASA Johnson Space Center";"Application";"MSC-24733-1";0;"13/349265";"Pyrometer"; -"NASA Johnson Space Center";"Application";"MSC-24734-1";8498741;"12/564088";"Dexterous Humanoid Robotic Wrist"; -"NASA Johnson Space Center";"Application";"MSC-24735-1";8467903;"12/564086";"Tendon Driven Finger Actuation System"; -"NASA Johnson Space Center";"Issued";"MSC-24736-1";8291788;"12/564090";"Rotary Series Elastic Actuator"; -"NASA Johnson Space Center";"Issued";"MSC-24737-1";8401700;"12/564124";"ACTUATOR AND ELECTRONICS PACKAGING FOR EXTRINSIC HUMANOID HAND"; -"NASA Johnson Space Center";"Application";"MSC-24738-1";0;"12/564094";"FRAMEWORK AND METHOD FOR CONTROLLING A ROBOTIC SYSTEM USING A DISTRIBUTED COMPUTER NETWORK"; -"NASA Johnson Space Center";"Application";"MSC-24739-1";8511964;"12/564084";"Dexterous Humanoid Robot"; -"NASA Johnson Space Center";"Application";"MSC-24740-1";0;"12/564078";"Dexterous Humanoid Robotic Finger"; -"NASA Johnson Space Center";"Issued";"MSC-24741-1";8255079;"12/564095";"Human Grasp Assist";"09/23/2029" -"NASA Johnson Space Center";"Application";"MSC-24742-1";8442684;"12/564076";"Integrated High Speed FPGA Based Torque Controller"; -"NASA Johnson Space Center";"Application";"MSC-24743-1";8250901;"12/564092";"Rotary Absolute Position Sensor Calibration"; -"NASA Johnson Space Center";"Application";"MSC-24744-1";8369992;"12/564083";"Diagnostics, prognostics & health management for humanoid robotics and method thereof"; -"NASA Johnson Space Center";"GM";"MSC-24745-1";8424941;"12/564085";"ROBOTIC THUMB ASSEMBLY"; -"NASA Johnson Space Center";"Application";"MSC-24746-1";8260460;"12/564096";"Interactive Robot Control System"; -"NASA Johnson Space Center";"Issued";"MSC-24747-1";8244402;"12/564074";"VISUAL PERCEPTION SYSTEM AND METHOD FOR A HUMANOID ROBOT"; -"NASA Johnson Space Center";"Issued";"MSC-24750-1";8483882;"12/686512";"HIERARCHICAL ROBOT CONTROL SYSTEM AND METHOD FOR CONTROLLING SELECT DEGREES OF FREEDOM OF AN OBJECT USING MULTIPLE MANIPULATORS"; -"NASA Johnson Space Center";"Issued";"MSC-24751-1";8412376;"12/720725";"TENSION DISTRIBUTION IN A TENDON-DRIVEN ROBOTIC FINGER"; -"NASA Johnson Space Center";"Issued";"MSC-24752-1";8033876;"12/706744";"CONNECTOR PIN AND METHOD"; -"NASA Johnson Space Center";"Application";"MSC-24753-1";0;"12/720727";"UNDERACTUATED DESIGN AND CONTROL OF A TENDON-DRIVEN FINGER"; -"NASA Johnson Space Center";"Application";"MSC-24755-1";0;"12/698832";"Architecture For Robust Force and Impedance Control Of Series Elastic Actuators"; -"NASA Johnson Space Center";"Application";"MSC-24758-1";0;"14/184278";"RFID Cavity";"03/11/2033" -"NASA Johnson Space Center";"Application";"MSC-24798-1";0;"13/789903";"Soft Decision Analyzer (SDA)";"03/08/2033" -"NASA Johnson Space Center";"Application";"MSC-24811-1";0;"13/461,487";"Self-enclosed and pipette free DNA/RNA Isolation device"; -"NASA Johnson Space Center";"Application";"MSC-24813-1";0;"13/791290";"Pre-Polymerase Chain Reaction Preparation Kit";"08/06/2032" -"NASA Johnson Space Center";"Application";"MSC-24817-1";8265792;"12/760954";"Method and Apparatus for Calibrating Multi-Axis Load Cells in a Dexterous Robot"; -"NASA Johnson Space Center";"Application";"MSC-24837-1";0;"12/787479";"Applying Workspace Limitations in a Velocity-Controlled Robotic Mechanism"; -"NASA Johnson Space Center";"Application";"MSC-24919-1";0;"13/790591";"RFID Waveguide, Antenna, and Cavity Sensors";"07/13/2032" -"NASA Johnson Space Center";"Issued";"MSC-24926-1";8412378;"12/629637";"IN-VIVO TENSION CALIBRATION IN TENDON-DRIVEN MANIPULATORS"; -"NASA Johnson Space Center";"Issued";"MSC-24930-1";8489239;"12/916803";"ROBUST OPERATION OF TENDON-DRIVEN ROBOT FINGERS USING FORCE AND POSITION-BASED CONTROL LAWS"; -"NASA Johnson Space Center";"Application";"MSC-25026-1";0;"13/354552";"Battery Charge Equalizer with transformer array"; -"NASA Johnson Space Center";"Issued";"MSC-25053-1";"D628,609";"29/359105";"ROBOT";"04/06/2030" -"NASA Johnson Space Center";"Application";"MSC-25056-1";0;"13/014901";"SYSTEM AND METHOD FOR TENSIONING A ROBOTICALLY ACTUATED TENDON"; -"NASA Johnson Space Center";"Issued";"MSC-25084-1";8067909;"12/474430";"METHOD AND APPARATUS FOR ELECTROMAGNETICALLY BRAKING A MOTOR";"05/29/2029" -"NASA Johnson Space Center";"Application";"MSC-25084-DE";0;"12/474430";"Method and Apparatus for Electromagnetically Braking a Motor"; -"NASA Johnson Space Center";"Application";"MSC-25084-JP";0;"12/474430";"Method and Apparatus for Electromagnetically Braking a Motor"; -"NASA Johnson Space Center";"Application";"MSC-25091-1";0;"13/199484";"FRET-Aptamer Assays for C-Telopeptide, Creatinine and Vitamin D";"08/31/2031" -"NASA Johnson Space Center";"Issued";"MSC-25121-1";8483877;"12/875254";"WORKSPACE SAFE OPERATION OF A FORCE- OR IMPEDANCE-CONTROLLED ROBOT"; -"NASA Johnson Space Center";"Application";"MSC-25149-1";0;"13/196252";"Controlling Execution Sequence Using Tactile-Classification during manipulation by a humanoid robot"; -"NASA Johnson Space Center";"Application";"MSC-25216-1";0;"13/439,546";"METHOD AND COMPOSITION FOR AMELIORATING THE EFFECTS FOR A SUBJECT EXPOSED TO RADIATION OR OTHER SOURCES OF OXIDATIVE STRESS"; -"NASA Johnson Space Center";"Application";"MSC-25217-1";0;"13/272442";"METHOD FOR DYNAMIC OPTIMIZATION OF A ROBOT CONTROL INTERFACE"; -"NASA Johnson Space Center";"Application";"MSC-25219";0;"13/207911";"FAST GRASP CONTACT COMPUTATION FOR A SERIAL ROBOT"; -"NASA Johnson Space Center";"Application";"MSC-25265-1";0;"13/851778";"New method and device for digital to analog transformations and reconstructions of multichannel electrocardiograms";"10/30/2032" -"NASA Johnson Space Center";"Application";"MSC-25286-1";0;"14/252660";"A chemical formulation to stabilize urine and minimize the precipitation potential of minerals during distillation of urine";"03/11/2033" -"NASA Johnson Space Center";"Application";"MSC-25313-1";0;"13/774835";"Hydrostatic Hyperbaric Chamber";"02/22/2033" -"NASA Johnson Space Center";"Application";"MSC-25318";0;"13/408668";"HUMAN GRASP ASSIST SOFT"; -"NASA Johnson Space Center";"Application";"MSC-25319";0;"13/408656";"HUMAN GRASP ASSIST "; -"NASA Johnson Space Center";"Application";"MSC-25320";0;"13/408675";"HUMAN GRASP ASSIST CONTROLS"; -"NASA Johnson Space Center";"Application";"MSC-25327-1";0;"13/459557";"COMMUNICATION SYSTEM AND METHOD"; -"NASA Johnson Space Center";"Application";"MSC-25386-1";0;"13/951671";"Active Response Gravity Offload System - Vertical Software Release";"07/26/2033" -"NASA Johnson Space Center";"Application";"MSC-25590-1";0;"13/790927";"Systems and Methods for RFID-Enabled Information Collection"; -"NASA Johnson Space Center";"Application";"MSC-25604-1";0;"13/791584";"Systems and Methods for RFID-Enabled Dispenser"; -"NASA Johnson Space Center";"Application";"MSC-25605-1";0;"13/790721";"Switch Using Radio Frequency Identification"; -"NASA Johnson Space Center";"Application";"MSC-25626-1";0;"14/200,122";"RFID Torque-Sensing Tag System for Fasteners";"03/07/2034" -"NASA Johnson Space Center";"Application";"MSC-25632-1";0;"13/803017";"ROBOT TASK COMMANDER WITH EXTENSIBLE PROGRAMMING ENVIRONMENT -";"03/14/2033" -"NASA Johnson Space Center";"Application";"MSC-25758-1";0;"14/184303";"Methods, Systems and Apparatuses for Radio Frequency Identification";"03/11/2033" -"NASA Johnson Space Center";"Application";"MSC-25759-1";0;"14/184337";"Methods, Systems and Apparatuses for Radio Frequency Identification";"03/11/2033" -"NASA Johnson Space Center";"Application";"MSC-25760-1";0;"14/184365";"Methods, Systems and Apparatuses for Radio Frequency Identification";"03/11/2033" -"NASA Jet Propulsion Laboratory";"Application";"NPO-17734-1";0;"07/700,830";"Formation Of Self-Aligned Guard Ring For Silicide Schottky-Barrier Diodes Used For Infrared Detection"; -"NASA Jet Propulsion Laboratory";"Issued";"NPO-19289-1";6513023;"09/412,199";"On-Chip Learning In VLSI Hardware";"10/01/2019" -"NASA Jet Propulsion Laboratory";"Application";"NPO-19769-1";0;"08/868,175";"Automated Cargo Inventory Identification Transponder"; -"NASA Jet Propulsion Laboratory";"Issued";"NPO-19855-1";6374630;"09/853,931";"Champagne Heat Pump";"05/09/2021" -"NASA Jet Propulsion Laboratory";"Issued";"NPO-20031-1";6828935;"10/176,761";"Receiver Controlled Phased Array Antenna";"07/19/2022" -"NASA Jet Propulsion Laboratory";"Issued";"NPO-20837-1";6526556;"09/591,386";"MORPHING TECHNIQUE FOR ACCELERATED EVOLUTIONARY SYNTHESIS OF ELECTRONIC CIRCUITS";"06/07/2020" -"NASA Jet Propulsion Laboratory";"Application";"NPO-21136-1";0;"10/219,384";"A CMOS ACTIVE PIXEL SENSOR (APS) FOR READING COMPACT DISCS"; -"NASA Jet Propulsion Laboratory";"Issued";"NPO-30703-1";7240208;"10/424,287";"ENCRYPTING DIGITAL CAMERA";"04/23/2023" -"NASA Jet Propulsion Laboratory";"Issued";"NPO-40040-1";7480984;"40/863,835";"A Concept For Suppressing Sublimation In Advanced Thermoelectric Devices";"06/07/2024" -"NASA Jet Propulsion Laboratory";"Issued";"NPO-40407-1";7592747;"11/056,633";"Piezoelectrically Enhanced PhotoCathode (PEPC)";"02/09/2025" -"NASA Jet Propulsion Laboratory";"Issued";"NPO-40827-1";7156189;"11/1,465";"SELF-MOUNTABLE AND EXTRACTABLE ULTRASONIC/SONIC ANCHOR (U/S-Anchor)";"12/01/2024" -"NASA Jet Propulsion Laboratory";"Issued";"NPO-41446-1";8358723;"11/602,440";"Architecture Of An Autonomous Radio";"09/12/2031" -"NASA Jet Propulsion Laboratory";"Issued";"NPO-41506-2";8492160;"12/720,103";"BIOMARKER SENSOR SYSTEM AND METHOD FOR MULTI-COLOR IMAGING AND PROCESSING OF SINGLE-MOLECULE LIFE SIGNATURES";"04/09/2031" -"NASA Jet Propulsion Laboratory";"Issued";"NPO-41511-1";7385462;"11/376,638";"Wideband (31 To 36 GHz) 24-Way Radial Power Combiner/Divider Fed By A Marie Transducer";"03/14/2026" -"NASA Jet Propulsion Laboratory";"Issued";"NPO-41982-1";8078309;"12/415,206";"Inverse Tomographic Approach To Create Arbitrary Sidewall Geometries In 3D Using LiGA Technologies";"03/03/2021" -"NASA Jet Propulsion Laboratory";"Issued";"NPO-42131-1";7824247;"11/756,819";"PORTABLE RAPID AND QUIET DRILL (PRAQD)";"11/02/2027" -"NASA Jet Propulsion Laboratory";"Issued";"NPO-42312-1";7184624;"11/422,147";"Slow light in chains of vertically coupled whispering gallery mode resonators";"06/05/2026" -"NASA Jet Propulsion Laboratory";"Issued";"NPO-42466-1";7764384;"11/924,766";"Swept frequency laser metrology system";"10/26/2027" -"NASA Jet Propulsion Laboratory";"Issued";"NPO-42563-1";7353768;"11/456,441";"Submersible Vehicle Propulsion and Power Generation";"07/10/2026" -"NASA Jet Propulsion Laboratory";"Issued";"NPO-42672-1";7996112;"11/756,793";"Micro Robot Explorer (SpiderBot) Mesh Crawler";"06/08/2030" -"NASA Jet Propulsion Laboratory";"Issued";"NPO-43213-1";7850861;"11/764,359";"Patterning packing materials for Fluidic Channels";"10/13/2029" -"NASA Jet Propulsion Laboratory";"Issued";"NPO-43348-1";7809521;"12/40,459";"Precise delay measurement circuit on FPGAs";"01/31/2029" -"NASA Jet Propulsion Laboratory";"Issued";"NPO-43361-1";7773121;"11/741,213";"High Resolution, Continuous Field of View, Non-Rotating Imaging Sensor Head";"10/15/2028" -"NASA Jet Propulsion Laboratory";"Issued";"NPO-43524-1";7773362;"11/683,007";"Dusty Plasma Thruster";"01/03/2029" -"NASA Jet Propulsion Laboratory";"Issued";"NPO-44079-1";8022860;"11/781,022";"Enhanced Interference Cancellation and Telemetry Reception with a Single Parabolic Dish Antenna using a Focal Plane Array";"04/30/2030" -"NASA Jet Propulsion Laboratory";"Issued";"NPO-44765-1";7740088;"11/928,069";"Ultrasonic/Sonic Rotary-Hammer Drill (USRoHD)";"04/15/2028" -"NASA Jet Propulsion Laboratory";"Issued";"NPO-44914-1";8407979;"11/926,279";"Magnetically-Conformed, Variable Area Discharge Chamber for Hall Thruster Plasma Accelerators";"06/08/2031" -"NASA Jet Propulsion Laboratory";"Issued";"NPO-45053-1";8057283;"12/119,989";"The process of significant improving of optical quality factor of whispering gallery mode resonator.";"09/15/2030" -"NASA Jet Propulsion Laboratory";"Issued";"NPO-45911-1";8163094;"12/508,006";"Method to Improve Indium Bump Bonding Via Indium Oxide Removal Using a Two Step Plasma Process";"08/16/2030" -"NASA Jet Propulsion Laboratory";"Issued";"NPO-45948-1";7843650;"12/490,422";"Monolithic Afocal Telescope";"06/24/2029" -"NASA Jet Propulsion Laboratory";"Application";"NPO-46253-1";0;"12/237,159";"Generation of optical combs in a whispering gallery mode resonator from a bichromatic pump"; -"NASA Jet Propulsion Laboratory";"Issued";"NPO-46843-1";8169371;"12/541,725";"A single-layer, all-metal patch antenna element with wide bandwidth";"09/25/2030" -"NASA Jet Propulsion Laboratory";"Issued";"NPO-46938-1";8026768;"12/691,070";"A 201Hg+ co-magnetometer for 199Hg+ trapped ion space atomic clocks";"04/03/2030" -"NASA Jet Propulsion Laboratory";"Application";"NPO-47300-1";0;"13/017,174";"Textured Si Anode for High Capacity, Rapid Charge Rate Li Ion Batteries"; -"NASA Jet Propulsion Laboratory";"Application";"NPO-47300-2";0;"13/895,499";"Textured Si Anode for High Capacity, Rapid Charge Rate Li Ion Batteries";"01/31/2031" -"NASA Jet Propulsion Laboratory";"Issued";"NPO-47310-1";8502987;"13/018,672";"Coherent Detector for Near-Angle Scattering and Polarization Characterization of Telescope Mirror Coatings";"03/24/2032" -"NASA Jet Propulsion Laboratory";"Issued";"NPO-47604-1";8649000;"13/277,954";"Surface Enhanced Raman Scattering using Silica Whispering-Gallery Mode Resonators";"07/10/2032" -"NASA Jet Propulsion Laboratory";"Application";"NPO-47717-1";;"13/281,683";"360-Degree Camera Head for Unmanned Surface Sea Vehicles"; -"NASA Jet Propulsion Laboratory";"Issued";"NPO-47869-1";8649609;"13/071,299";"FPGA Vision Data Architecture";"04/17/2032" -"NASA Jet Propulsion Laboratory";"Application";"NPO-47881-1";;"14/151,684";"Pulsed Plasma Lubricator (PPL) Technology for the In Situ Replenishment of Dry Lubricants in Extreme Environments"; -"NASA Jet Propulsion Laboratory";"Application";"NPO-48140-1";;"13/456,451";"Probabilistic Surface Characterization for Safe Landing Hazard Detection and Avoidance"; -"NASA Jet Propulsion Laboratory";"Application";"NPO-48413-1";;"13/757,929";"Simple Laser-Communications Terminal for Downlink from Earth-Orbit at Rates Exceeding 10 Gb/s";"02/04/2033" -"NASA Jet Propulsion Laboratory";"Application";"NPO-48539-1";;"13/858,267";"Neutral mounting of whispering gallery mode resonators for suppression of acceleration-induced frequency fluctuations";"04/08/2033" -"NASA Jet Propulsion Laboratory";"Application";"NPO-49086-1";;"14/101,547";"Electride Mediated Surface Enhanced Raman Spectroscopy";"12/10/2033" -"NASA Stennis Space Center";"Issued";"SSC-00040";5726632;"08/622,178";"HANDHELD HYDROGEN FIRE IMAGER";"03/14/2016" -"NASA Stennis Space Center";"Issued";"SSC-00050";6020587;"09/3,212";"A HAND HELD PLANT STRESS DETECTION SYSTEM";"01/06/2018" -"NASA Stennis Space Center";"Issued";"SSC-00247";8618933;"11/866,042";"Valve Health Monitoring System Utilizing Smart Instrumentation for Real Time and Historical Data Tracking";"05/03/2032" -"NASA Stennis Space Center";"Issued";"SSC-00264";8336849;"12/704193";"Conical Seat Shut Off Valve";"01/13/2031" -"NASA Stennis Space Center";"Issued";"SSC-00327";8401820;"12/566,111";"IN SITU HEALTH MONITORING OF PIEZOELECTRIC SENSORS";"07/31/2030" +"Center"\"Status"\"Case Number"\"Patent Number"\"Application SN"\"Title"\"Patent Expiration Date" +"NASA Kennedy Space Center"\"Application"\"KSC-12871"\0\"13/033,085"\"Polyimide Wire Insulation Repair System"\ +"NASA Ames Research Center"\"Issued"\"ARC-14048-1"\5694939\"08/543,093"\"Autogenic-Feedback Training Exercise Method & System"\"10/03/2015" +"NASA Ames Research Center"\"Issued"\"ARC-14231-1"\6109270\"09/017,519"\"Multimodality Instrument For Tissue Characterization"\"02/04/2017" +"NASA Ames Research Center"\"Issued"\"ARC-14231-2DIV"\6976013\"10/874,003"\"Metrics For Body Sensing System"\"06/16/2024" +"NASA Ames Research Center"\"Issued"\"ARC-14231-3"\6718196\"09/652,299"\"Multimodality Instrument For Tissue Characterization"\"02/04/2017" +"NASA Ames Research Center"\"Issued"\"ARC-14275-1"\6445390\"09/226,673"\"Automated Triangle Geometry Processing For Surface Modeling And Cartesian Grid Generation (CART3D)"\"12/24/2018" +"NASA Ames Research Center"\"Issued"\"ARC-14281-1"\6606612\"09/374,491"\"Aerodynamic Design Using Neural Networks"\"08/13/2019" +"NASA Ames Research Center"\"Issued"\"ARC-14281-3"\7191161\"10/637,087"\"Method For Constructing Composite Response Surfaces By Combining Neural Networks With Polynomial Interpolation Or Estimation Techniques"\"11/18/2020" +"NASA Ames Research Center"\"Issued"\"ARC-14359-1"\6314362\"09/498,123"\"A Direct-To Controller Tool (A Component Of The CTAS Software Suite)"\"02/02/2020" +"NASA Ames Research Center"\"Issued"\"ARC-14494-1"\6720984\"09/606,107"\"Bio-Electric Keyboard/Mouse/Joystick Interface Software/Algorithm"\"06/13/2020" +"NASA Ames Research Center"\"Issued"\"ARC-14512-1"\6823333\"09/800,309"\"Keyword-in-context Search Method And Software For Information Retrieval From Collections Of Text Documents (Quorum/Perilog)"\"03/02/2021" +"NASA Ames Research Center"\"Issued"\"ARC-14513-1"\6741981\"09/800,311"\"Model-based Phrase Search Method And Software For Information Retrieval From Collections Of Text Documents (Quorum/Perilog)"\"09/14/2021" +"NASA Ames Research Center"\"Issued"\"ARC-14514-1"\6697793\"09/800,313"\"Method And Software For Using Implicit Phrase Models To Generate Prominent Phrases Contained In Collections Of Text Documents (Quorum/Perilog)"\"03/02/2021" +"NASA Ames Research Center"\"Issued"\"ARC-14515-1"\6721728\"09/800,310"\"Method And Software For Extracting And Distilling Topically And Situationally Relevant Phrases From Collections Of Text Documents (Quorum/Perilog)"\"07/26/2021" +"NASA Ames Research Center"\"Issued"\"ARC-14556-1"\7346172\"09/822470"\"Spatially-modulated Auditory Alert Having Enhanced Detection"\"08/24/2022" +"NASA Ames Research Center"\"Issued"\"ARC-14569-1"\7783130\"11/045,041"\"Spatial Standard Observer"\"03/26/2028" +"NASA Ames Research Center"\"Issued"\"ARC-14569-2"\8139892\"12/807,375"\"Spatial Standard Observer"\"01/24/2025" +"NASA Ames Research Center"\"Issued"\"ARC-14586-1DIV"\7293001\"11/274,744"\"A Hybrid Neural Network And Support Vector Machine Method For Optimization"\"01/07/2022" +"NASA Ames Research Center"\"Issued"\"ARC-14613-1"\6858197\"10/099,247"\"A Novel Technique That Allows For The Deposition And Patterning Of A Catalyst Onto A Surface For The Growth Of Single-Walled Carbon Nanotubes"\"11/30/2019" +"NASA Ames Research Center"\"Issued"\"ARC-14652-1"\7375826\"10/956,517"\"3D Laser Scanner"\"03/25/2026" +"NASA Ames Research Center"\"Issued"\"ARC-14653-1"\7702427\"10/914,783"\"Future ATM (Air Traffic Management) Concepts Evaluation Tool (FACET)"\"07/30/2024" +"NASA Ames Research Center"\"Issued"\"ARC-14653-2"\8290696\"12/694,966"\"Future ATM (Air Traffic Management) Concepts Evaluation Tool (FACET)"\"07/30/2024" +"NASA Ames Research Center"\"Issued"\"ARC-14661-1"\7276266\"10/320,698"\"A Plasma Apparatus And Process For Functionalization Of Carbon Nanotubes"\"12/13/2022" +"NASA Ames Research Center"\"Issued"\"ARC-14661-2"\7473436\"10/828,524"\"Improved Functionalization Of Carbon Nanotubes"\"12/13/2022" +"NASA Ames Research Center"\"Issued"\"ARC-14661-3"\7767270\"11/387,503"\"Selective Functionalization Of Carbon Nanotubes Based Upon Distance Traveled"\"11/05/2025" +"NASA Ames Research Center"\"Issued"\"ARC-14662-1"\6968338\"10/232,975"\"Advanced XML Database Integration Technique For Managing Unstructured Documents (NETMARK) (Part of NTTS Suite)"\"07/18/2023" +"NASA Ames Research Center"\"Issued"\"ARC-14682-2"\7333735\"10/885,533"\"Communication Using VCSEL Laser Array"\"11/03/2023" +"NASA Ames Research Center"\"Issued"\"ARC-14710-1"\7231329\"10/706,478"\"Elimination Of Parameter Input Requirement For Elliptic Grid Generation Methods In Engineering"\"03/11/2025" +"NASA Ames Research Center"\"Issued"\"ARC-14733-1"\6972056\"10/135,013"\"An Environmentally Compatible Method To Purify Carbon Nanotubes"\"01/03/2023" +"NASA Ames Research Center"\"Issued"\"ARC-14743-1"\7767305\"10/758611"\"High-Efficiency Tantalum-Based Ceramics (HETC)"\"01/14/2024" +"NASA Armstrong Flight Research Center"\"Issued"\"DRC-008-014"\8047472\"12/45,970"\"IMPROVED RAM BOOSTER"\"03/11/2028" +"NASA Ames Research Center"\"Issued"\"ARC-14744-1US"\7816491\"10/494,853"\"Ordered Biological Nanostructures Formed From Chaperonin Polypeptides"\"05/06/2024" +"NASA Ames Research Center"\"Issued"\"ARC-14744-2"\7795388\"11/194,991"\"A Versatile Platform For Nanotechnology Based On Circular Permutations Of Chaperonin Protein"\"05/06/2024" +"NASA Ames Research Center"\"Issued"\"ARC-14940-1"\7135172\"10/238,515"\"Bucky Paper As An Artificial Support Membrane In Retinal Cell Transplantation"\"06/12/2024" +"NASA Ames Research Center"\"Issued"\"ARC-14941-1"\6755530\"10/198,672"\"Carbon Nanotubes As A Prototype Interface For Retinal Cell Recording And Stimulation (Vision Chip)"\"10/18/2022" +"NASA Ames Research Center"\"Issued"\"ARC-14950-1"\7596416\"10/928,874"\"Program Management Tool (PMT) Also Known As Business Intelligence (BI)"\"07/22/2027" +"NASA Ames Research Center"\"Issued"\"ARC-14950-2"\8224472\"12/211,439"\"Enhanced Project Management Tool"\"10/20/2026" +"NASA Ames Research Center"\"Issued"\"ARC-14970-1"\7129857\"10/789,049"\"Intelligent Weather Agent"\"07/20/2024" +"NASA Ames Research Center"\"Issued"\"ARC-15040-1"\8200486\"10/457,696"\"Sub Auditory Speech Recognition Based On Electromyographic Signals"\"09/14/2025" +"NASA Ames Research Center"\"Issued"\"ARC-15041-2"\7206674\"10/923,156"\"Information Display System For Atypical Flight Phase"\"05/21/2024" +"NASA Ames Research Center"\"Issued"\"ARC-15042-2"\7217650\"10/816,576"\"Metallic Nanowire Interconnections For Integrated Circuit Fabrication"\"03/11/2023" +"NASA Ames Research Center"\"Issued"\"ARC-15058-1"\7383238\"10/789,029"\"Inductive Monitoring System - System Health Monitoring Software That Learns System Behavior From Data (IMS)"\"03/12/2025" +"NASA Ames Research Center"\"Issued"\"ARC-15073-1"\7590606\"10/703,039"\"InvestigationOrganizer: Information Storage, Modeling And Visualization Support For Accident/Mishap Investigations (Part Of A Suite Of Software That Includes ARC-15069, ARC-15070 And ARC-15073) "\"04/30/2026" +"NASA Ames Research Center"\"Issued"\"ARC-15088-1"\7070923\"10/608,884"\"Carbon Nanotube Bucky Paper Cages For Immune Shielding Of Cells And Tissue For Transplantation"\"09/20/2023" +"NASA Ames Research Center"\"Issued"\"ARC-15101-1"\7113265\"10/808,704"\"Sample Handling Device For X-ray Diffraction Instruments"\"03/17/2024" +"NASA Ames Research Center"\"Issued"\"ARC-15157-1"\7286573\"10/923,160"\"A Method Of Converting Quantum Wells From Type-II To Type-I And Of Enhancing Interband Optical Gain "\"03/11/2025" +"NASA Ames Research Center"\"Issued"\"ARC-15171-1"\7650232\"11/239,456"\"Trajectory Specification For High-Capacity Air Traffic Control"\"05/25/2027" +"NASA Ames Research Center"\"Issued"\"ARC-15173-1"\7273095\"10/825,795"\"Embedded Carbon Nanotube Array As High Performance Thermal Conductors"\"03/11/2023" +"NASA Ames Research Center"\"Issued"\"ARC-15173-2"\7784531\"11/900,131"\"Nanoengineered Thermal Materials Based On Carbon Nanotube Array Composites"\"02/16/2024" +"NASA Ames Research Center"\"Issued"\"ARC-15201-1"\7381459\"10/779,504"\"Toughened Uni-piece Fibrous Reduced Oxidation Ceramic (TUFROC) Light-Weight Thermal Protection System For Use On Space Vehicles During Atmospheric Entry At Hypersonic Speed"\"02/12/2024" +"NASA Ames Research Center"\"Issued"\"ARC-15201-2"\7314648\"10/911,747"\"Toughened Uni-piece Fibrous Reinforced Oxidation-Resistant Composite (TUFROC)"\"02/12/2024" +"NASA Ames Research Center"\"Issued"\"ARC-15204-1"\7949472\"10/885,537"\"Nanopore Pipetts For Structural Characterization Of Single Polymeric Biomelecules"\"01/14/2026" +"NASA Ames Research Center"\"Issued"\"ARC-15204-1DIV"\8494782\"13/092,048"\"Nanopore Pipetts For Structural Characterization Of Single Polymeric Biomelecules"\"06/24/2024" +"NASA Ames Research Center"\"Issued"\"ARC-15205-1"\7939734\"10/873,996"\"The Electrochemical Biosensors Using Carbon Nanotube Nanoelectrode Arrays"\"06/14/2024" +"NASA Ames Research Center"\"Issued"\"ARC-15312-1"\7672969\"11/513,429"\"Context Based Configuration Management Concept"\"08/25/2026" +"NASA Ames Research Center"\"Issued"\"ARC-15314-1"\7718223\"11/007,913"\"Provision Of Carbon Nanotube Arrays Of Variable Density For IC Hot Spot Control"\"02/12/2027" +"NASA Ames Research Center"\"Issued"\"ARC-15314-2"\7704547\"11/472,516"\"Carbon Nanotube Growth Density Control"\"12/07/2024" +"NASA Ames Research Center"\"Issued"\"ARC-15315-1"\7378963\"11/239,449"\"Reconfigurable Auditory-visual Display For Multi-channel Control Center And Rescue Communications"\"01/06/2026" +"NASA Ames Research Center"\"Issued"\"ARC-15356-2"\7161501\"11/66,650"\"Display Of Aircraft Energy State For Flight Operations Quality Assurance (FOQA) Programs"\"09/22/2024" +"NASA Ames Research Center"\"Issued"\"ARC-15356-3"\7212135\"11/066649"\"Real-Time Analysis And Display Of Aircraft Approach Maneuvers "\"09/22/2024" +"NASA Ames Research Center"\"Issued"\"ARC-15370-1"\7698274\"10/956,524"\"Selective Access And Editing In A Database (Part of NTTS Suite)"\"03/18/2027" +"NASA Ames Research Center"\"Issued"\"ARC-15392-1"\7313475\"11/053,713"\"Delay Banking: Collaborative Decision Making For Airspace-user Priority In Tactical Flow Restrictions"\"04/04/2025" +"NASA Ames Research Center"\"Issued"\"ARC-15404-1"\7288490\"11/009,854"\"Use Of A Single Electrode To Orient Carbon Nanotube Growth"\"12/07/2024" +"NASA Ames Research Center"\"Issued"\"ARC-15437-1"\7438422\"11/340,816"\"Low Cost Portable Planetarium Imaging System"\"05/14/2027" +"NASA Ames Research Center"\"Issued"\"ARC-15443-1"\7531775\"11/251,006"\"A Tracking Sunphotometer Without Moving Parts "\"01/31/2026" +"NASA Ames Research Center"\"Issued"\"ARC-15460-1"\7426848\"11/203,576"\"Discharge Based Gas Sensor Array Using Self-Oriented Regular Vertical Array Of Carbon Nanotubes"\"08/05/2025" +"NASA Ames Research Center"\"Issued"\"ARC-15462-1"\7574338\"11/340002"\"Finite-Difference Simulation And Visualization Of Elastodynamics In Time-Evolving Generalized Curvilinear Coordinates "\"07/29/2026" +"NASA Ames Research Center"\"Issued"\"ARC-15487-1"\7796026\"11/111,620"\"Electronic Firefighter Escape Trail"\"06/04/2028" +"NASA Ames Research Center"\"Issued"\"ARC-15506-1"\7529633\"11/203,589"\"Applications Of Carbon Nanotube Hold-Off Voltages"\"10/22/2026" +"NASA Ames Research Center"\"Issued"\"ARC-15519-1"\7574357\"11/169,265"\"Security Applications For Subvocal Speech"\"11/09/2026" +"NASA Ames Research Center"\"Issued"\"ARC-15566-1"\7801687\"11/178,079"\"Gas Sensors Based on Coated and Doped Carbon Nanotubes"\"05/26/2029" +"NASA Ames Research Center"\"Issued"\"ARC-15566-2"\8000903\"11/416,505"\"Coated Or Doped Carbon Nanotube Network Sensors As Affected By Environmental Parameters And Elapsed Time"\"09/15/2029" +"NASA Ames Research Center"\"Issued"\"ARC-15566-3"\7875455\"11/489,803"\"Nanotechnology Sensors For Determination Of Chemical Substances In An Oil Reservoir"\"12/17/2028" +"NASA Ames Research Center"\"Issued"\"ARC-15566-5"\7623972\"11/591,630"\"Detection Of Presence Of Chemical Precursors"\"07/08/2025" +"NASA Ames Research Center"\"Issued"\"ARC-15575-1"\7473930\"11/173,053"\"Use Of Carbon Nanotube Arrays For Display Purposes"\"10/24/2026" +"NASA Ames Research Center"\"Issued"\"ARC-15578-2"\7873181\"11/525,600"\"Visual Signal Sensor Organ Replacement: Implementation"\"05/19/2028" +"NASA Ames Research Center"\"Issued"\"ARC-15606-1"\7431242\"11/265,324"\"Aero Assist Capsule Vehicle Geometry For Atmospheric Entry"\"04/01/2026" +"NASA Ames Research Center"\"Issued"\"ARC-15684-1"\7516890\"11/444,807"\"InterIssued Inventory Monitoring"\"05/25/2026" +"NASA Ames Research Center"\"Issued"\"ARC-15714-1"\7869029\"11/398,733"\"Light Collimator And Monitor"\"11/11/2029" +"NASA Ames Research Center"\"Issued"\"ARC-15782-1"\7549338\"11/973998"\"Nanotechnology Sensor Of Presence And Concentration Of A Target Molecule"\"09/28/2027" +"NASA Ames Research Center"\"Issued"\"ARC-15796-1"\8675922\"13/444,777"\"Motion Blur Evaluation Techniques"\"08/31/1932" +"NASA Ames Research Center"\"Issued"\"ARC-15870-1"\7655497\"11/513,431"\"Growth Method For Phase Change Nanostructures"\"08/16/2027" +"NASA Ames Research Center"\"Issued"\"ARC-15890-1"\7655145\"11/543,275"\"Water Treatment Systems For Long Space Flight Use"\"11/05/2027" +"NASA Ames Research Center"\"Issued"\"ARC-15900-1"\7490367\"11/526,175"\"Wet Waste Drying Bag"\"09/20/2026" +"NASA Ames Research Center"\"Issued"\"ARC-15903-1DIV"\8409491\"13/215,206"\"In-situ Formation Of Reinforcement Phases In Ceramic Composites And Ultra High Temperature Ceramic Composites For Advanced TPS Applications"\"09/28/2027" +"NASA Ames Research Center"\"Issued"\"ARC-15967-1"\7635420\"11/645,267"\"Dielectrophoresis-Based Particle Sensor Using Nanoelectrode Arrays"\"06/06/2028" +"NASA Ames Research Center"\"Application"\"ARC-15977-1"\0\"12/100,378"\"Artificial Immune System Based Approach For Air Combat Maneuvering"\ +"NASA Ames Research Center"\"Application"\"ARC-15981-4"\\"13/463,780"\"Chaperonin-based Templates for Pseudo-cellulosomes with Multiple Enzymes Present"\"07/19/2027" +"NASA Ames Research Center"\"Issued"\"ARC-15983-1"\7923709\"12/273,502"\"Radiation Shielding System Using A Composite Of Hydrogen-Rich Polymers Loaded With Carbon Nanotubes"\"09/30/2029" +"NASA Ames Research Center"\"Application"\"ARC-16478-1"\\"14/191,246"\"Real Time PIREPs Using Audio Twitter"\"02/26/1934" +"NASA Ames Research Center"\"Issued"\"ARC-15995-1"\8290246\"11/958,296"\"A Method To Measure The Recession Of Ablative Materials In Arc-jet Testing Using Digital Stereo-photogrammetry And Image Cross-correlation"\"07/01/1931" +"NASA Ames Research Center"\"Issued"\"ARC-16013-1"\7968054\"11/715,785"\"Wireless Chemical Sensor Data Transmission System Based On Nanotechnology"\"10/03/2029" +"NASA Ames Research Center"\"Issued"\"ARC-16018-1"\7662459\"12/175,379"\"Atmospheric Entry Heat Shield Employing Cured Thermal Protection Material Blocks Bonded In A Large-Cell Honeycomb Matrix"\"07/17/2028" +"NASA Ames Research Center"\"Application"\"ARC-16132-1"\0\"14/091,250"\"Surface Densification Of Phenolic Impregnated Carbon Ablator (PICA)"\"11/26/1933" +"NASA Ames Research Center"\"Issued"\"ARC-16133-1"\8069001\"12/319,918"\"Hollow AErothermal Ablation And Temperature (HEAT) Isotherm Sensor For Tracking Isotherm Through The TPS Material"\"10/09/2029" +"NASA Ames Research Center"\"Application"\"ARC-16211-1"\0\"13/896,284"\"Low Cost Optical Fiber Solar Cell Configurations"\"05/16/1933" +"NASA Ames Research Center"\"Issued"\"ARC-16235-1"\8285659\"12/543,411"\"Modeling-Error-Driven Performance-Seeking Direct Adaptive Control"\"11/18/1930" +"NASA Ames Research Center"\"Application"\"ARC-16273-1"\0\"12/454,024"\"Decomposition Technique for Remaining Useful Life Prediction"\"11/18/1930" +"NASA Ames Research Center"\"Issued"\"ARC-16280-1"\8409845\"12/316,557"\"Offshore membrane enclosures for dewatering Algae (OMEDA)"\"10/15/1931" +"NASA Ames Research Center"\"Issued"\"ARC-16298-1"\8333810\"12/398,854"\"Nanotechnology-Based Supercapacitor"\"06/29/1930" +"NASA Ames Research Center"\"Issued"\"ARC-16320-1"\8332342\"12/622,407"\"Battery Prognostics using Particle Filtering Techniques"\"02/05/1931" +"NASA Ames Research Center"\"Issued"\"ARC-16331-1"\8408707\"12/428,441"\"System to estimate visual acuity from wavefront aberrations"\"05/29/2029" +"NASA Ames Research Center"\"Issued"\"ARC-16334-1"\8244477\"12/478,667"\"Estimation of Growth Stage and Growth Rate for Algae"\"06/04/2029" +"NASA Ames Research Center"\"Application"\"ARC-16337-1"\0\"13/793,998"\"Method and Device for Biometric Subject Verification and Identification Based Upon electrocardiographic signals"\"03/11/1933" +"NASA Ames Research Center"\"Application"\"ARC-16340-1"\0\"13/645,284"\"Method for formation and manufacture of carbon nanotube mesh bucky paper capsules for transplantation of cells and tissue and implantation of medical devices"\"10/04/1932" +"NASA Ames Research Center"\"Issued"\"ARC-16342-1"\8412469\"12/698,996"\"Advanced Sensor Technology for Algal Biotechnology (ASTAB) "\"12/16/1930" +"NASA Ames Research Center"\"Application"\"ARC-16348-1"\\"13/109,954"\"Co-Optimized Blunt-Body ReEntry Vehicle Aerothermodynamic Parametric Shape and Multi-Discipline Optimization Design Process"\ +"NASA Ames Research Center"\"Issued"\"ARC-16351-1"\8498756\"13/213,022"\"Hovercraft Landing System"\"12/07/1931" +"NASA Ames Research Center"\"Issued"\"ARC-16370-1"\8375675\"12/574,493"\"Self Aligning Lug for adapting carbon fiber rods to a bolted metallic connection"\"05/07/1931" +"NASA Ames Research Center"\"Application"\"ARC-16372-1"\0\"13/794,061"\"Inexpensive Cooling Systems for Devices"\"03/11/1933" +"NASA Ames Research Center"\"Issued"\"ARC-16373-1"\8489181\"12/319,220"\"Heart Electrical Actions as Biometric Indicia"\"04/29/1932" +"NASA Ames Research Center"\"Application"\"ARC-16405-1"\0\"14/091,236"\"Nanowire based piezoelectric power generation"\"11/26/1933" +"NASA Ames Research Center"\"Issued"\"ARC-16407-1"\8337208\"12/622,374"\"Content Analysis to Detect High Stress in Oral Interviews and Text Documents"\"05/26/1931" +"NASA Ames Research Center"\"Application"\"ARC-16419-1"\0\"13/317,034"\"Strobing to Mitigate Vibration for Display Legibility"\"10/05/1932" +"NASA Ames Research Center"\"Application"\"ARC-16450-1CIP"\0\"13/720,898"\"Distributed Prognostics and Health Management with a Wireless Network Architecture "\"05/05/2029" +"NASA Ames Research Center"\"Application"\"ARC-16456-1"\\"13/480,917"\"FABRICATION OF NANOPIPETTE ARRAY FOR BIOSENSING"\ +"NASA Ames Research Center"\"Application"\"ARC-16461-1"\\"13/956,218"\"Solar Powered CO2 Conversions with Thin Film Devices"\"07/31/1933" +"NASA Ames Research Center"\"Application"\"ARC-16466-1"\\"14/010,322"\"Combined HETC/ROCCI TPS Material for Temperatures Up To T=3200 F "\"08/26/1933" +"NASA Ames Research Center"\"Application"\"ARC-16467-1"\\"13/615,202"\"ODVEC: Outlier Detection Via Estimating Clusters"\ +"NASA Ames Research Center"\"Application"\"ARC-16607-1"\\"13/658,749"\"An Approach to Make Flexible Ablators that are Flexible Char Formers"\"10/23/1932" +"NASA Ames Research Center"\"Application"\"ARC-16621-1"\\"13/472,283"\"Transformable Hypersonic Aerodynamic Decelerator"\"12/04/1932" +"NASA Ames Research Center"\"Application"\"ARC-16644-1"\\"13/648,197"\"Variable Camber Continuous Aerodynamic Control Surfaces and Methods for Active Wing Shaping Control "\"10/09/1932" +"NASA Ames Research Center"\"Application"\"ARC-16646-1"\\"13/485,721"\"A method to produce copper nanowires for interconnect applications"\ +"NASA Ames Research Center"\"Application"\"ARC-16661-1"\\"13/444,789"\"Video acuity measurement system"\ +"NASA Ames Research Center"\"Application"\"ARC-16697-1"\\"13/956,929"\"NTTS Search and Reporting (Part of NTTS Suite)"\"08/01/1933" +"NASA Ames Research Center"\"Application"\"ARC-16707-1"\\"13/438,793"\"Ectomycorrhizal mediated remediaiton of phenolic-based contamination through use of specifically adapted ectomycorrhizal fungi and enzyme enhancement through partial defoliation of the host."\ +"NASA Ames Research Center"\"Application"\"ARC-16707-1CIP"\\"13/854,620"\"Ectomycorrhizal mediated remediaiton of phenolic-based contamination through use of specifically adapted ectomycorrhizal fungi and enzyme enhancement through partial defoliation of the host."\"04/03/1932" +"NASA Ames Research Center"\"Application"\"ARC-16732-1"\\"13/573,924"\"NanoSat Launch Adapter System (NLAS)"\"03/14/1933" +"NASA Ames Research Center"\"Application"\"ARC-16733-1"\\"13/535,884"\"Habitat Water Wall for Water, Solids, and Atmosphere Recycle and Reuse "\ +"NASA Ames Research Center"\"Application"\"ARC-16752-1"\\"14/179,401"\"Fuel-Efficient, Airport-Friendly, Multi-Speed Transport Aircraft Configuration with Novel Structural Approach"\"02/12/1934" +"NASA Ames Research Center"\"Application"\"ARC-16811-1"\\"13/544,752"\"Compliant electrode and composite materials for piezoelectric wind and mechanical energy conversions"\ +"NASA Ames Research Center"\"Application"\"ARC-16812-1"\\"13/783,112"\"Graphene composite materials for supercapacitor electrodes "\"03/01/1933" +"NASA Ames Research Center"\"Application"\"ARC-16833-1"\\"13/747,875"\"Flight Deck Predictive Weather Display and Decision Support Interface "\"01/23/1933" +"NASA Ames Research Center"\"Application"\"ARC-16844-1"\\"13/662,346"\"Adaptive control and disturbance rejection of non-minimum phase plants using residual mode filters"\"10/26/1932" +"NASA Ames Research Center"\"Application"\"ARC-16846-1"\\"13/707,546"\"Dynamic Weather Routes Tool"\"12/06/1932" +"NASA Ames Research Center"\"Application"\"ARC-16892-1A"\\"13/929,646"\"The Surface-Adhering Bioreactor (SABR): A novel microbial cell cultivation platform"\"06/27/1933" +"NASA Ames Research Center"\"Application"\"ARC-16902-1"\\"13/725,475"\"Nanosensors for medical diagnosis"\"12/21/1932" +"NASA Ames Research Center"\"Application"\"ARC-16916-1"\\"13/956,736"\"A Method for Improving Control Systems with Normalized Adaptation by Optimal Control Modification"\"08/01/1933" +"NASA Ames Research Center"\"Application"\"ARC-16924-1"\\"14/010,355"\"Aluminoborosilicate Supplement for Thermal Protection of a Re-entrant Vehicle"\"08/26/1933" +"NASA Ames Research Center"\"Application"\"ARC-16942-2"\\"13/659,739"\"A new family of low density flexible ablators"\"10/24/1932" +"NASA Armstrong Flight Research Center"\"Issued"\"DRC-001-049"\7180943\"10/113,637"\"Adaptive Lossless Data Compression"\"03/26/2022" +"NASA Armstrong Flight Research Center"\"Issued"\"DRC-005-031"\7407131\"11/288,052"\"Sound Shield"\"10/31/2025" +"NASA Armstrong Flight Research Center"\"Issued"\"DRC-006-001"\7431243\"11/227,325"\"Algorithms For Autonomous Soaring"\"02/27/2026" +"NASA Armstrong Flight Research Center"\"Application"\"DRC-006-002"\0\"11/422,554"\"Air Breathing,Reusable, Vertical Launch, Vertical Landing, First Stage Launch System with Off-the-Shelf Second Stage - Ram Booster"\ +"NASA Armstrong Flight Research Center"\"Issued"\"DRC-006-005"\7711455\"11/463,485"\"Propulsion Controlled Aircraft Computer (PCAC)"\"08/09/2026" +"NASA Armstrong Flight Research Center"\"Issued"\"DRC-006-024"\7520176\"11/567,118"\"Method for Real-Time Structure Shape Sensing"\"12/05/2026" +"NASA Armstrong Flight Research Center"\"Application"\"DRC-006-045"\0\"11/682,969"\"METHOD FOR REDUCING THE REFRESH RATE OF FIBER BRAGG GRATING SENSORS"\ +"NASA Armstrong Flight Research Center"\"Issued"\"DRC-008-001"\8145366\"12/138,747"\"Real-time Interactive Sonic Boom Display"\"04/28/2030" +"NASA Armstrong Flight Research Center"\"Issued"\"DRC-008-023"\7715994\"12/191,734"\"IMPROVED PROCESS FOR USING SURFACE STRAIN MEASUREMENTS TO OBTAIN OPERATIONAL LOADS FOR COMPLEX STRUCTURES"\"08/14/2028" +"NASA Armstrong Flight Research Center"\"Application"\"DRC-009-008"\0\"12/718034"\"Continental Digital Elevation Map Compression and Decompression Software"\ +"NASA Armstrong Flight Research Center"\"Issued"\"DRC-009-026"\8447443\"13/367990"\"A New Peak-Seeking Control Method"\"02/07/2032" +"NASA Armstrong Flight Research Center"\"Application"\"DRC-010-042"\\"13/463246"\"An apparatus and a method to eliminate polarization-induced fading from multiple fiber-optics strain sensors via signal-processing under polarization diversity detection scheme"\ +"NASA Armstrong Flight Research Center"\"Application"\"DRC-011-002"\\"13/759,847"\"OPTICAL WAVEGUIDE BRAGG GRATING WAVELENGTH SHIFT BY LIGHT INTERACTION WITH ACTIVE MATERIAL"\"02/05/2033" +"NASA Armstrong Flight Research Center"\"Application"\"DRC-011-015"\\"14/106947"\"In-situ three-dimensional shape rendering from strain values obtained through optical fiber sensors"\"05/31/2032" +"NASA Armstrong Flight Research Center"\"Application"\"DRC-012-005"\\"13/759210"\"Method and apparatus of multiplexing and acquiring data from multiple optical fibers using a single data channel of an optical frequency-domain reflectrometry (OFDR) system (Revised)"\"02/05/2033" +"NASA Armstrong Flight Research Center"\"Application"\"DRC-012-006"\\"13/733364"\"A Novel Approach to Liquid Level Sensing Using Fiber Bragg Grating Technology"\"01/03/2033" +"NASA Armstrong Flight Research Center"\"Application"\"DRC-012-011"\\"13/573920"\"Air Launch From A Towed Aircraft"\"07/05/2032" +"NASA Armstrong Flight Research Center"\"Issued"\"DRC-096-055"\6126111\"09/112,067"\"Emergency Flight Control System Using One Engine And Fuel Transfer"\"07/08/2018" +"NASA Armstrong Flight Research Center"\"Issued"\"DRC-097-021"\6102330\"08/905,777"\"Emergency Aircraft Lateral Controller Using Existing (non-modified) Digital Engine Computers During A System Failure For The Purpose Of Safe Landing"\"07/29/2017" +"NASA Armstrong Flight Research Center"\"Issued"\"DRC-098-001"\6216063\"09/74,024"\"A Flutterometer Flight Test Tool"\"05/06/2018" +"NASA Goddard Space Flight Center"\"Application"\"GSC-13378-1"\0\"07/710,633"\"SPLINE-LOCKING PAYLOAD FASTENER"\ +"NASA Goddard Space Flight Center"\"Issued"\"GSC-13802-1"\6584874\"08/673,859"\"USING A 3-D SPRAG IN RACHETING TOOLS BASED ON PAT. NO. 5,482-144"\"07/02/2016" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-13817-1"\5983162\"08/872,586"\"Empirical Mode Decomposition Method And Hilbert Spectral Analysis Algorithms"\"06/10/2017" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-13817-2"\6631325\"09/82,523"\"COMPUTER IMPLEMENTED EMPIRICAL MODE DECOMPOSITION METHOD APPARATUS AND ARTICLE OF MANUFACTURE UTILIZING CURVATURE EXTREMA"\"06/10/2017" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-13817-3"\6381559\"09/282,424"\"Empirical Mode Decomposition Apparatus, Method, And Article Of Manufacture For Analyzing Biological Signals And Performing Curve Fitting"\"03/31/2019" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-13817-4"\6862558\"10/73,957"\"Empirical Mode Decomposition For Analyzing Acoustical Signals"\"02/13/2022" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-13817-5"\6738734\"10/11,206"\"Empirical Mode Decomposition Apparatus, Method And Article Of Manufacture For Analyzing Biological Signals And Performing Curve Fitting"\"06/10/2017" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-13905-1"\6640949\"10/95,343"\"1-Way Bearing"\"03/01/2022" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-13909-1"\6311130\"09/150,671"\"Computer Implemented Empirical Mode Decomposition Method, Apparatus, And Article Of Manufacture For Two-Dimensional Signals"\"09/10/2018" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-13985-1"\6566854\"09/646,161"\"Active Antenna Combined With Non-Ferrous Current Probe."\"09/12/2020" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-14064-1"\6648522\"09/804,646"\"Universal Fiber Optic Connector Polishing Fixture With Precision Alignment Capability"\"03/13/2021" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-14207-1"\6626792\"09/799,872"\"Gear Bearings"\"03/03/2021" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-14209-1"\6293803\"09/501,412"\"Stress Relieved Zee Electrical Interconnect"\"02/09/2020" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-14213-1"\6760487\"09/550,254"\"Estimated Spectrum Adaptive Postfilter (ESAP) And The Iterative Prepost Filtering (IPF) Algorithms"\"04/14/2020" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-14236-1"\6538796\"09/541,680"\"MEMS Devices For Spacecraft Thermal Control Applications"\"03/31/2020" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-14302-1"\6782124\"09/729,138"\"Extension Of The Empirical Mode Decomposition Method To A Time Series Of 2-Dimensional Grid Maps"\"11/29/2020" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-14305-1"\6895115\"09/839,147"\"Method For Recursive Implementation Of Hierarchical Segmentation"\"04/23/2021" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-14389-1"\7543274\"10/789,028"\"Deriving Formal Specifications And Code From Scenarios"\"02/25/2024" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-14393-1"\7145739\"10/385,166"\"Light Weight Optical Mirrors Formed In Single Crystal Silicon"\"03/06/2023" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-14413-1"\7255483\"10/93,621"\"Thrust Rollers"\"03/01/2022" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-14435-1"\6740224\"10/173,533"\"Innovative Manufacturing Procedure For Low Cost And High Quality Carbon Nanotubes"\"06/11/2022" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-14480-2"\7762155\"11/444,808"\"Gear Bearings"\"05/25/2026" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-14561-1"\7207245\"11/174,454"\"Screw-Locking Wrench"\"06/30/2025" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-14562-1"\7504921\"11/543,278"\"Stepping Flextures"\"09/29/2026" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-14601-1"\7008605\"10/292,952"\"Method For Manufacturing High Quality Carbon Nanotubes"\"11/08/2022" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-14603-1"\7544146\"11/122,201"\"Anti-Backlash Gear-Bearings"\"05/02/2025" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-14608-1"\6990436\"10/729,579"\"Time Frequency Analysis Based On Extrema Sifting"\"11/28/2023" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-14616-1"\7248342\"10/730,195"\"Conceptual Design Of A 3D Imaging Lidar For High-Resolution Mapping Of The Surface Topography Of Moons Or Planets From Space"\"12/05/2023" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-14657-1"\7512568\"11/109,400"\"Evolvable Neural Software System"\"04/08/2025" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-14666-1"\6775600\"10/267,092"\"Systems And Methods For Determining Spacecraft Orientation"\"10/07/2022" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-14673-1"\6901353\"10/615,365"\"Normalized Amplitude Hilbert Transform (NAHT): A New Algorithm For Computing Instantaneous Frequency"\"07/08/2023" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-14683-1"\8480826\"11/736,874"\"Specular Coatings For Composite Structures"\"04/18/2027" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-14762-1"\7769488\"11/108,627"\"SMART Solar Sail"\"04/08/2025" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-14777-1"\7341932\"11/251,531"\"Large Area Vacuum Ultra-Violet Sensors"\"09/30/2025" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-14793-1"\7548199\"11/239,458"\"Pivot 2.0: Radiation Hardened, Fast Acquisition/Weak Signal Tracking GPS Receiver"\"09/20/2025" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-14807-1"\7464006\"10/963,470"\"Application Of HHT To Financial Data Analysis For Define Volatility And Trend"\"10/07/2024" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-14833-1"\7346461\"11/251,004"\"Stability Spectrum Through Hilbert-Huang Transform"\"09/30/2025" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-14845-1"\7290737\"11/251,537"\"Demiseable Reaction Wheel Assembly"\"09/29/2025" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-14871-1"\7935297\"11/370,396"\"Template For Deposition Of Micron And Sub-micron Pointed Structures"\"03/06/2026" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-14873-1"\8357211\"12/872,445 "\"ADR Salt Pill Design And Crystal Growth Process For Hydrated Magnetic Salts"\"08/31/2030" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-14879-1"\7635832\"11/469,105"\"Iterative-Transform Phase-Retrieval Utilizing Adaptive Diversity"\"08/31/2026" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-14941-1"\7739671\"11/203,590"\"A Method And System For Direct Implementation Of Formal Specifications Derived Mechanically From Informal Requirements"\"08/12/2025" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-14942-1"\7752608\"11/203,586"\"A Method And System For Formal Analysis, Simulation, And Verification Of Knowledge-Based Systems, Rule-Based Systems, And Expert Systems"\"08/12/2025" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-14952-1"\7513546\"11/689,161"\"Conformal Gripper"\"03/21/2027" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-14960-1"\7992760\"11/357,458"\"Hardware And Technique For Dead End Welding Of All Types Of Tubing"\"02/08/2026" +"NASA Goddard Space Flight Center"\"Application"\"GSC-16700-1"\\"14/041407"\"SpaceCube v2.0 Flight Processor Card"\"09/30/2033" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-14968-1"\7627538\"11/251,538"\"Apoptosis And Self-destruct: Mechanisms For Management Of Autonomic Systems"\"09/29/2025" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-14968-2"\7925600\"12/603,140"\"SWARM AUTONOMIC AGENTS WITH SELF-DESTRUCT CAPABILITY"\"10/21/2029" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-14979-1"\7601091\"11/426,134"\"Modular Gear Bearing"\"06/23/2026" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-14994-1"\7697759\"11/251,530"\"A Split-Remerge Method For Eliminating Processing Window Artifacts In Recursive Hierarchical Segmentation"\"09/30/2025" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15001-1"\7924415\"12/389,097"\"Light Direction Sensor"\"02/19/2029" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15002-1"\7240879\"11/124,592"\"Space Robotic System For In Space Servicing Of Unmanned Spacecraft Applications"\"05/06/2025" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15002-2"\7513459\"11/670,653"\"Method And Associated Apparatus For Capturing, Servicing, And De-Orbiting Earth Satellites Using Robotics"\"05/06/2025" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15002-3"\7293743\"11/670,270"\"Method And Associated Apparatus For Capturing, Servicing, And De-Orbiting Earth Satellites Using Robotics"\"11/13/2025" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15002-4"\7438264\"11/670,781"\"Method And Associated Apparatus For Capturing, Servicing And De-Orbiting Earth Satellites Using Robotics"\"05/06/2025" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15002-5"\7513460\"11/671,062"\"Method And Associated Apparatus For Capturing, Servicing, And De-Orbiting Earth Satellites Using Robotics"\"05/06/2025" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15027-1"\7412175\"11/425,352"\"Millimeter Wave Polarization Transformer"\"06/20/2026" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15027-2"\7609978\"12/056,964"\"INTERFEROMETRIC POLARIZATION CONTROL"\"03/27/2028" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15027-3"\7616903\"12/057,060"\"INTERFEROMETRIC POLARIZATION CONTROL"\"03/27/2028" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15030-1"\7907333\"11/460,482"\"A Pulsed, 1 Micron, Single Frequency, Diode-Seeded Ytterbium-doped Fiber Amplifier With Variable Output Parameters, P"\"07/27/2026" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15038-1"\7765171\"11/426,853"\"SPAACE: Self Properties For An Autonomous & Autonomic Computing Environment"\"06/27/2026" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15039-1"\7762523\"11/861,038"\"Miniaturized Double Latching Solenoid Valve"\"09/25/2027" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15042-1"\7622907\"11/535,872"\"Driven Ground"\"09/27/2026" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15055-1"\7746190\"11/748,969"\"Broadband High Spurious-suppression Microwave Waveguide Filter For Polarization-preserving And Transformer"\"05/15/2027" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15077-1"\8068556\"12/147,100"\"Low Cost TDRSS Tranceiver (LCT2)"\"06/26/2028" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15079-1"\7886273\"11/532,800"\"Generation And Verification Of Policies For Autonomic Systems"\"09/18/2026" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15080-1"\7979848\"11/533,837"\"A Method Of Deriving Process Based Specifications From Scenarios Via Pattern Matching"\"09/21/2026" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15115-1"\7465926\"11/537,280"\"Miniaturized Radiation Spectrometer Development"\"09/29/2026" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15136-1"\8093094\"12/137,844"\"Blocking Contacts For N-Type Cadmium Zinc Cadmium Zinc Telluride (CdZnTe)"\"06/12/2028" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15148-1"\7668796\"11/536,132"\"Enhancing R2D2C Requirements Based Programming With Automata Learning"\"09/28/2026" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15162-1"\7796726\"11/706,693"\"Instrument And Method For X-Ray Diffraction, Fluorescence, And Crystal Texture Analysis Without Sample Preparation"\"02/14/2027" +"NASA Goddard Space Flight Center"\"Application"\"GSC-15163-2"\0\"13/092198"\"AIGaN Ultraviolet Detectors For Dual Band UV Detection"\ +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15176-1"\7899760\"11/533,855"\"Autonomic Quiescence"\"09/21/2026" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15177-1"\8082538\"11/536378"\"A Method For Developing And Maintaining Evolving Systems With Software Product Lines"\"09/28/2026" +"NASA Goddard Space Flight Center"\"Application"\"GSC-15177-2"\0\"13/305932"\"A Method For Developing And Maintaining Evolving Systems With Software Product Lines"\ +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15178-1"\7992134\"11/536,969"\"Modeling, Specifying And Deploying Policies In Autonomous And Autonomic Systems Using An AOSE Methodology"\"09/29/2026" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15179-1"\7904396\"11/533,895"\"An Autonomic Smoke Detector"\"09/21/2026" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15184-1"\7978312\"11/933,492"\"An Active, Solid-state, 3-Dimensional Range Imaging System"\"11/01/2027" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15206-1"\8041655\"11/836,352"\"Otoacoustic Protection In Biologically-Inspired Systems"\"08/09/2027" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15206-2"\8140452\"13/230915"\"Otoacoustic Protection In Biologically-Inspired Systems"\"09/13/2031" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15206-3"\8140453\"13/230922"\"Otoacoustic Protection In Biologically-Inspired Systems"\"09/13/2031" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15206-4"\8275725\"13/230920"\"Otoacoustic Protection In Biologically-Inspired Systems"\"09/13/2031" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15206-5"\8165976\"13/230922"\"Otoacoustic Protection In Biologically-Inspired Systems"\"09/13/2031" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15206-6"\8165977\"13/230923"\"Otoacoustic Protection In Biologically-Inspired Systems"\"09/13/2031" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15217-1"\8139674\"12/173,243"\"Spaceflight Ka-Band High Rate Rad Hard Modulator"\"07/15/2028" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15301-1"\7673089\"11/935,572"\"An Extendibe USB Drive That Accepts External Media"\"11/06/2027" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15302-1"\7673089\"11/935,572"\"An Double-Headed USB Drive"\"11/06/2027" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15328-1"\8499779\"12/014,889"\"Non-Pyrotechnic Zero-Leak Normally-Closed Valve"\"01/16/2028" +"NASA Goddard Space Flight Center"\"Application"\"GSC-15333-1"\0\"11/860,830"\"Improved, Flexure-Base Linear Bearing"\ +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15341-1"\7922920\"11/862,550"\"Low Conductance Silicon Micro-leak for Mass Spectrometer Inlet"\"09/27/2027" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15341-3"\8455926\"12/889,014 "\"Low Conductance Silicon Micro-leak for Mass Spectrometer Inlet"\"09/23/2030" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15349-1"\7830527\"12/102,240"\"Method And Apparatus For Second Harmonic Generation And Other Frequency Convertion With Multiple Frequency Channels"\"04/14/2028" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15353-1"\7830224\"11/877,102"\"Compact Low-loss Planar Magic-T With Broadband Phase And Amplitude Responses"\"10/23/2027" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15357-1"\8041661\"11/861,687"\"Stability Algorithm For Neural Entities (SANE)"\"09/26/2027" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15364-1"\8155939\"12/170,683"\"Hughes Particle – Surface Interaction Model"\"07/10/2028" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15377-1"\7811406\"12/249,265"\"Advanced Adhesive Bond Shape Tailoring for Large Composite Primary Structures Subjected to Cryogenic and Ambient Loading Environments"\"10/10/2028" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15416-1"\7999427\"12/188,039"\"Directed Flux Motor Utilizing Concentric Magnets and Interwoven Flux Channels"\"08/07/2028" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15417-1"\7735385\"12/187,562"\"Actuated Ball and Socket Joint"\"08/07/2028" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15419-1"\8030873\"12/187,926"\"Improvements to the Walk and Roll Robot"\"08/07/2028" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15421-1"\7968812\"12/353,009"\"Spring Joint Package with Overstrain Sensor ( OS Sensor Joint )"\"01/13/2029" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15431-1"\7921731\"12/327,514"\"A two-axis direct fluid shear stress sensor suited for aerodynamic applications"\"12/03/2028" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15445-1"\7982861\"12/183,820"\"Pseudo-Noise Code Modulation using Return to Zero pulses for Ranging, Altimetry and Communications"\"07/31/2028" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15458-1"\8094731\"12/357,081"\"Space Link Extension Return Channel Frames (SLE-RCF) Service (User side) Software Library"\"01/21/2029" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15483-1"\7817087\"12/116,518"\"Relative Spacecraft Navigation using Reflected GPS Signals"\"05/07/2028" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15520-1"\8547531\"12/873373"\"Non-scanning laser 3D imager"\"09/01/2030" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15527-1"\8160728\"12/558,672"\"Sensor Complete Requirements Algorithm For Autonomous Mobility"\"09/14/2029" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15538-1"\8198956\"12/535,954"\"Compact planar microwave blocking filter"\"08/05/2029" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15550-1"\8275724\"12/569,422"\"A biologically-inspired method of improving system performance and survivability through self-sacrifice"\"09/29/2029" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15552-1"\7924126\"12/555,634"\"Small, High Field Superconducting Magnets"\"09/08/2029" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15557-1"\8095485\"12/353,637"\"Formulation for Emotion Embedding in Logic Systems (FEELS)"\"01/14/2029" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15583-1"\7970025\"12/496,954"\"Tunable Frequency-stabilized Laser via Offset Sideband Locking"\"07/02/2029" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15584-1"\8144331\"12/487,454"\"Hilbert-Transform-Based Phase Referencing Algorithm for Wide-Field Imaging Interferometry."\"06/18/2029" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15655-1"\8138961\"12/561,644"\"Low Frequency Wideband Step Frequency Inverse Synthetic Aperture Radar For 3-D Imaging of Interior of Near Earth Objects/Planetary Bodies"\"09/17/2029" +"NASA Goddard Space Flight Center"\"Application"\"GSC-15660-1"\0\"13/247416"\"Extreme Environment Low Temperature Transistor Models"\ +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15662-1"\8092031\"12/569,090"\"Flight Mirror Mount and Flight Mounting Procedure for an Ultra-Lightweight High-Precision Glass Mirror"\"09/29/2029" +"NASA Goddard Space Flight Center"\"Application"\"GSC-15672-1"\0\"13/211413"\"Multicolor detectors for ultrasensitive long-wave imaging cameras"\ +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15678-1"\8484274\"12/549,159"\"Optimal Padding for the Two-Dimensional Fast Fourier Transform"\"08/27/2029" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15684-1"\8285401\"12/549,898"\"Discrete Fourier Transform (DFT) Analysis in a Complex Vector Space"\"08/28/2029" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15685-1"\8331733\"12/550,141"\"Sampling Theorem in Terms of the Bandwidth and Sampling Interval"\"08/28/2029" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15692-1"\8330644\"12/835,958 "\"Expandable Reconfigurable Instrument Node - Web Sensor Strand Demonstration"\"07/19/2030" +"NASA Goddard Space Flight Center"\"Application"\"GSC-15693-1"\0\"12/570,224"\"Variable Sampling Mapping: A novel supplement to iterative-transform phase retrieval algorithms for undersampled images, broadband illumination, and noisy detection environments"\ +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15699-1"\8480296\"12/560,535"\"A Low Cost, Low Temperature Radiometer for Thermal Measurements."\"09/16/2029" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15724-1"\8275015\"12/551,212"\"Passively Q-switched side pumped Monolithic Ring Laser"\"08/31/2029" +"NASA Goddard Space Flight Center"\"Application"\"GSC-15727-1"\0\"13/222575"\"An All-metal, Solderless Circularly Polarized Microwave Antenna Element with Very Low Off-Axis Cross-Polarization"\ +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15729-1"\8674302\"12/789,937"\"Novel Superconducting Transition Edge Sensor Design"\"05/28/2030" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15729-2"\8393786\"12/789,954 "\"Novel Superconducting Transition Edge Sensor Design"\"05/28/2030" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15730-1"\8355579\"12/783054"\"Automatic Extraction of Planetary Image Features"\"05/19/2030" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15732-1"\8093565\"12/695478"\"Crossed Small Deflection Energy Analyzer (SDEA) for Wind/Temperature Spectrometer (WTS)"\"01/28/2030" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15758-1"\8044332\"12/553,613"\"Hybrid Architecture Active Wavefront Sensing and Control"\"09/03/2029" +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15771-1"\8035081\"12/570,166"\"High Precision Electric Gate (HPEG) for Time of Flight Mass Spectrometers"\"09/30/2029" +"NASA Goddard Space Flight Center"\"Application"\"GSC-15774-1"\0\"13/154599"\"Ensemble Detector"\ +"NASA Goddard Space Flight Center"\"Application"\"GSC-15782-1"\0\"13/216479"\"Ultra-low Power (< 100mW), 64-Channel Pulse Data Collection System"\ +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15792-1"\8406469\"12/838600"\"Progressive Band Selection for Hyperspectral Images"\"07/19/2030" +"NASA Goddard Space Flight Center"\"Application"\"GSC-15815-1"\0\"12/887988"\"LIDAR Luminance Quantizer"\ +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15826-1"\8134130\"12/839207"\"The Corner Cathode: Making Collimated Electron Beams with a Small Number of Electrodes"\"07/19/2030" +"NASA Goddard Space Flight Center"\"Application"\"GSC-15829-1"\0\"13/601293"\"Resolution enhanced pseudo random code technique"\"08/31/2032" +"NASA Goddard Space Flight Center"\"Application"\"GSC-15839-1"\0\"12/840787"\"Low threshold, narrow linewidth optical parametric generator"\ +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15856-1"\8196853\"12/779494"\"Aerodynamically Stabilized Instrument Platform for Kites and Tethered Blimps ( AeroPod )"\"05/13/2030" +"NASA Goddard Space Flight Center"\"Application"\"GSC-15886-1"\0\"12/838963"\"Automated Beam Balance Scale Logger"\ +"NASA Goddard Space Flight Center"\"Application"\"GSC-15911-1"\0\"13/217965"\"Graphite Composite Panel Polishing Fixture"\ +"NASA Goddard Space Flight Center"\"Application"\"GSC-15934-1"\0\"12/839125"\"Determining Phase Retrieval Sampling from the Modulation Transfer Function"\ +"NASA Goddard Space Flight Center"\"Application"\"GSC-15935-1"\0\"13/043257"\"New Variables for Iterative Transform Phase Retrieval"\ +"NASA Goddard Space Flight Center"\"Application"\"GSC-15936-1"\0\"12/854490"\"SpaceCube Version 1.5"\ +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15947-1"\8274726\"12/839171"\"Sampling and Reconstruction of the Sinc(x) Function"\"07/19/2030" +"NASA Goddard Space Flight Center"\"Application"\"GSC-15948-1"\0\"13/204767"\"Lateral Kevlar Suspension Device (LKSD)"\ +"NASA Goddard Space Flight Center"\"Application"\"GSC-15949-1"\0\"13/600992"\"Vectorized Rebinning Algorithm for Fast Data Down-Sampling"\"08/31/2032" +"NASA Goddard Space Flight Center"\"Application"\"GSC-15951-1"\0\"13/222839"\"An Improved Method of Fabricating Single Crystal Silicon Light Weight Mirrors"\ +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15953-1"\8484509\"12/854546"\"SpaceCube Demonstration Platform"\"08/11/2030" +"NASA Goddard Space Flight Center"\"Application"\"GSC-15953-2"\0\"13/903357"\"SpaceCube Demonstration Platform"\"09/30/2029" +"NASA Goddard Space Flight Center"\"Application"\"GSC-15957-1"\0\"13/211526"\"Imaging System Aperture Masks for Image Plane Exit Pupil Characterization"\ +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15964-1"\8525110\"13/247,168 "\"An Instrument Suite for the Vertical Characterization of the Ionosphere-Thermosphere System from 100 km to 700km Altitude"\"09/28/2031" +"NASA Goddard Space Flight Center"\"Application"\"GSC-15970-1"\0\"13/034125"\"Electrospray Ionization for Chemical Analysis of Organic Molecules for Mass Spectrometry"\ +"NASA Goddard Space Flight Center"\"Application"\"GSC-15976-1"\0\"12/872366"\"Phase Retrieval System for Assessing Diamond-Turning and other Optical Surface Artifacts"\ +"NASA Goddard Space Flight Center"\"Issued"\"GSC-15977-1"\8354952\"12/839060"\"Phase Retrieval for Radio Telescope and Antenna Control"\"07/19/2030" +"NASA Goddard Space Flight Center"\"Application"\"GSC-15979-1"\0\"12/839187"\"Multi-Scale Image Reconstruction using Wavelets"\ +"NASA Goddard Space Flight Center"\"Application"\"GSC-15994-1"\\"13/104538"\"Photonic Choke-Joints for Dual-Polarization Waveguides"\ +"NASA Goddard Space Flight Center"\"Application"\"GSC-16006-1"\\"13/216671"\"Programmable High-Rate Multi-Mission Receiver for Space Communication"\ +"NASA Goddard Space Flight Center"\"Application"\"GSC-16008-1"\\"13/600826"\"Phase controlled magnetic mirror for wavefront correction"\"08/31/2032" +"NASA Goddard Space Flight Center"\"Application"\"GSC-16016-1"\\"13/193272"\"Carbon Nanotubes on titanium substrates for stray light suppression"\ +"NASA Goddard Space Flight Center"\"Issued"\"GSC-16024-1"\8526733\"13/150,316"\"Refinement of the HSEG Algorithm for Improved Computational Processing Efficiency"\"06/01/2031" +"NASA Goddard Space Flight Center"\"Application"\"GSC-16789-1"\\"14/ 033725"\"LEARNS (Logic Expansion for Autonomously Reconfigurable Neural Systems)"\ +"NASA Goddard Space Flight Center"\"Application"\"GSC-16029-1"\\"13/193249"\"Nanostructure secondary mirror apodization mask for transmitter signal suppression in a duplex telescope."\ +"NASA Goddard Space Flight Center"\"Application"\"GSC-16096-1"\\"13/211432"\"Prototype Genomics Based keyed-Hash Message Authentication Code Protocol"\ +"NASA Goddard Space Flight Center"\"Application"\"GSC-16100-1"\\"12/881587"\"Lunar Reconnaissance Orbiter (LRO) Command and Data Handling Flight Electronics Subsystem"\ +"NASA Goddard Space Flight Center"\"Application"\"GSC-16105-1"\\"13/197214"\"Molecular Adsorber Coating"\ +"NASA Goddard Space Flight Center"\"Application"\"GSC-16109-1"\\"13/240180"\"HEXPANDO expanding head for fastener retention hexagonal wrench"\ +"NASA Goddard Space Flight Center"\"Application"\"GSC-16122-1"\\"13/474053"\"Apparatuses and Methods to Enable Sub-MHz Precision in Fast Laser Frequency Tuning"\ +"NASA Goddard Space Flight Center"\"Application"\"GSC-16135-1"\\"13/534427"\"A cryptographic approach to microRNA target binding analysis"\ +"NASA Goddard Space Flight Center"\"Application"\"GSC-16146-1"\\"13/601194"\"Wafer Level Microchannel Fabrication Process for Lap-on-a-Chip Devices"\"08/31/2032" +"NASA Goddard Space Flight Center"\"Application"\"GSC-16182-1"\\"13/595604"\"A High Event Rate, Zero Dead Time, Multi-Stop Time-to-digital Converter Application Specific Integrated Circuit"\"08/27/2032" +"NASA Goddard Space Flight Center"\"Application"\"GSC-16193-1"\\"13/720175"\"Fine Control and Maintenance Algorithm for Visible Nulling Coronagraphy"\"12/19/2032" +"NASA Goddard Space Flight Center"\"Application"\"GSC-16223-1"\\"13/551649"\"SpaceCube Mini"\ +"NASA Goddard Space Flight Center"\"Application"\"GSC-16247-1"\\"13/570100"\"Enhanced adhesion multiwalled carbon nanotubes on titanium substrates for stray light control"\ +"NASA Goddard Space Flight Center"\"Application"\"GSC-16250-1"\\"13/150316"\"Further Refinement of the Computationally Efficient HSEG Algorithm"\ +"NASA Goddard Space Flight Center"\"Application"\"GSC-16259-1"\\"13/050617"\"Spaceflight Refuiling Tools"\ +"NASA Goddard Space Flight Center"\"Application"\"GSC-16299-1"\\"13/622465"\"V-Assembly Dual Head Efficiency Resonator (VADER) Laser Transmitter"\"09/19/2032" +"NASA Goddard Space Flight Center"\"Application"\"GSC-16301-1"\\"13/771815"\"Impedance matched to vacuum, invisible-edge diffraction suppressed mirror"\"02/20/2033" +"NASA Goddard Space Flight Center"\"Application"\"GSC-16327-1"\\"13/545173"\"Miniaturized laser heterodyne radiometer for carbon dioxide (CO2), methane (CH4), and carbon monoxide (CO) measurements in the atmospheric column."\ +"NASA Goddard Space Flight Center"\"Application"\"GSC-16328-1"\\"13/474367"\"Development of the Hilbert-Huang Transform Real-Time Data Processing System with 2-D Capabilities"\ +"NASA Goddard Space Flight Center"\"Application"\"GSC-16438-1"\\"13/606174"\"Power provision based on self-sacrificing spacecraft"\ +"NASA Goddard Space Flight Center"\"Application"\"GSC-16460-1"\\"13/592409"\"Autonomic Autopoiesis"\"08/23/2032" +"NASA Goddard Space Flight Center"\"Application"\"GSC-16461-1"\\"13/592412"\"Autonomic and Apoptotic Cloud, Autonomic and Apoptotic Grid, Autonomic and Apoptotic Highly Distributed System"\ +"NASA Goddard Space Flight Center"\"Application"\"GSC-16485-1"\\"14/038381"\"Broadband planar impedance transformer"\"09/26/2033" +"NASA Goddard Space Flight Center"\"Application"\"GSC-16516-1"\\"14/021812"\"Muti-function microposters inside of microfluidic channel for Lab-On-A-Chip device"\"09/09/2033" +"NASA Kennedy Space Center"\"Application"\"KSC-12866"\0\"12/843,353"\"In-Situ Wire Damage Detection System"\ +"NASA Goddard Space Flight Center"\"Application"\"GSC-16545-1"\\"13/534442"\"INTEGRATED GENOMIC AND PROTEOMIC INFORMATION SECURITY PROTOCOL"\ +"NASA Goddard Space Flight Center"\"Application"\"GSC-16555-1"\\"14/023847"\"Green Precision Cleaning System"\"09/11/2033" +"NASA Goddard Space Flight Center"\"Application"\"GSC-16569-1"\\"14/041,720"\"Mirrorlet array for Integral Field Spectrometers (IFS)"\ +"NASA Goddard Space Flight Center"\"Application"\"GSC-16674-1"\\"14/041224"\"MISSE-7 Control Center"\"09/30/2033" +"NASA Goddard Space Flight Center"\"Application"\"GSC-16795-1"\\"13/781,121 "\"Wallops Flight Facility 6U Advanced CubeSat Ejector (ACE)"\"01/04/2033" +"NASA Goddard Space Flight Center"\"Application"\"GSC-16805-1"\\"14/040924"\"SpaceCube v2.0 Micro"\"09/30/2033" +"NASA Goddard Space Flight Center"\"Application"\"GSC-16808-1"\\"14/040848"\"SpaceCube v. 2.0 Flight Power Card"\"09/30/2033" +"NASA Goddard Space Flight Center"\"Application"\"GSC-16859-1"\\"14/037484"\"Chemical sensors based on 2-dimensional materials"\"09/26/2033" +"NASA Goddard Space Flight Center"\"Application"\"GSC-16887-1"\\"14/037458"\"Propellant Transfer Assembly Design and Development"\"09/26/2033" +"NASA Headquarters"\"Issued"\"HQN-11248-1"\6223143\"09/143,969"\"Quantitative Risk Assessment Software (QRAS) System"\"08/31/2018" +"NASA Kennedy Space Center"\"Issued"\"KSC-11641"\5730806\"08/437,859"\"Gas-Liquid Supersonic Cleaning And Cleaning Verification Spray System"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-11751"\5710377\"08/540,616"\"Improved Portable Ultrasonic Leak Detector (Combined With KSC-11751-2)"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-11804"\5693871\"08/695,071"\"Low-Differential Pressure Generator For Evaluating Low Differential Pressure Transducers"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-11866-1"\5977773\"08/912,035"\"Non-Intrusive Impedance-Based Cable Tester - Standing Wave Reflectometer"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-11884"\6039783\"08/772,057"\"A New Process And Equipment For Conversion Of NOx Scrubber Liquor To Fertilizer (related To KSC-11994)"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-11884-2"\6641638\"09/511,634"\"Process And Equipment For Nitrogen Oxide Waste Conversion To Fertilizer - Continuation-In-Part Filed 2/17/00"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-11937-2"\7209567\"10/390,259"\"Communication System With Adaptive Noise Suppression"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-12035-1"\6552521\"09/906,014"\"Improved Single-Station Accurate Location Of Lightning Strikes (Combined With KSC-12276 & KSC-12173)"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-12049"\6627065\"09/977,531"\"Liquid Galvanic Coatings For Protection Of Imbedded Metals"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-12056"\6676912\"09/698,607"\"New Air Pollution Control Technology For Removal Of Nitrogen Oxides From Stationary Combustion Sources"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-12092-2"\6967051\"09/939,286"\"Thermal Insulation System And Method (Continuing Patent Application) (Combined With KSC-12092)"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-12107"\6742926\"09/906,018"\"Thermal Insulation Test Apparatus With Sleeve (Related To KSC-12108)"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-12108"\6487866\"09/906,011"\"Multipurpose Thermal Insulation Test Apparatus (Related To 12107)"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-12168"\6452510\"09/802,535"\"Personal Cabin Pressure Monitor And Altitude Warning System"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-12190"\6764617\"09/994,996"\"A Novel Ferromagnetic Conducting Lignosulfonic Acid-Doped Polyaniline (Related To KSC-11940, KSC-11940-1, KSC-11940-2, KSC-12154, KSC-12191)"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-12191-2"\7179404\"11/215,205"\"Corrosion Prevention Of Cold Rolled Steel Using Water Dispersible Lignosulfonic Acid Doped Polyaniline"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-12205"\6715914\"10/185,378"\"Apparatus And Method For Thermal Performance Testing Of Pipelines And Piping Systems"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-12220"\6917203\"10/235,020"\"Current Signature Sensor (Combined With KSC-12152)"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-12221"\6757641\"10/185,830"\"Multisensor Transducer And Weight Factor (Combined With KSC-12359 and KSC-13139)"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-12235"\6793903\"10/014,140"\"High-Temperature Decomposition Of Hydrogen Peroxide"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-12235-2"\6955799\"10/923,152"\"Temperature Decomposition Of Hydrogen Peroxide"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-12235-3"\8029736\"10/923,163"\"High Temperature Decomposition Of Hydrogen Peroxide"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-12236"\8511396\"10/476,175"\"Non-Toxic Environmentally Safe Halon Replacement (HABx)"\ +"NASA Kennedy Space Center"\"Application"\"KSC-12236-2-PCT"\0\"/0"\"Flame Suppression Agent, System And Users"\ +"NASA Kennedy Space Center"\"Application"\"KSC-12236-CIP"\\"13/428,736"\"Non-Toxic Environmentally Safe Halon Replacement (HABx)"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-12246"\6664298\"09/972,296"\"Zero-Valent Metal Emulsion For Reductive Dehalogenation Of DNAPLs"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-12246-2"\7037946\"10/701,412"\"Zero-Valent Metal Emulsion For Reductive Dehalogenation Of DNAPLs"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-12278"\7400766\"10/783,295"\"Image Edge Extraction Via Fuzzy Reasoning (FRED) (combined With KSC-12272)"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-12386"\7274907\"10/748,915"\"Modular Wireless Data Acquisition System (combined With KSC-12479, KSC-12486)"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-12390"\6824306\"10/318,665"\"Thermal Insulation Test Apparatus For Flat Specimens"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-12394"\7239751\"10/750,629"\"Hypothesis Support Mechanism For Mid-Level Visual Pattern Recognition (PIPR)"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-12458"\7156957\"10/440,543"\"UV Induced Oxidation Of Nitric Oxide"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-12490"\7298897\"10/779,551"\"Noniterative Optimal Binarization Of Gray-Scaled Digital Images Via Fuzzy Reasoning (FRAT) (combined With KSC-12272)"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-12518"\7790128\"10/641,581"\"Hydrogen Peroxide Catalytic Decomposition"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-12539"\7285306\"10/684,064"\"Self-Healing Wire Insulation"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-12539-2"\8119238\"11/856,218"\"Self-Healing Wire Insulation"\ +"NASA Kennedy Space Center"\"Application"\"KSC-12539-3"\0\"13/348,861"\"Self-Healing Wire Insulation"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-12540"\6958085\"10/666,821"\"High Performance Immobilized Liquid Membranes For Carbon Dioxide Separations"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-12630"\7496237\"11/010,698"\"Image Processing For Binarization Enhancement Via Fuzzy Reasoning"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-12631"\7582147\"11/208,122"\"Metallic Pigment Powder Particle For Use In A Liquid Coating System To Protect Reinforcing Steel In Concrete Structures"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-12637"\7271199\"10/977,622"\"Micro-scale Particle Emulsion And Their Application For Removal Of PCBs And Metals Found In Ex Situ Structures"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-12664"\7404938\"10/845,418"\"Emission Control System"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-12664-3-CIP"\7582271\"11/40,294"\"Emission Control System"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-12666"\7122166\"10/845,607"\"Hydrogen Peroxide Concentrator"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-12669"\7302364\"11/83,420"\"Integrated Spaceport Automated Data Management Architecture (Combine With KSC-12581, KSC-12583, KSC-12671and KSC-12582)"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-12697"\7309738\"10/962,827"\"A New Approach For Achieving Fire Retardancy While Retaining Physical Properties In A Compatible Polymer Matrix"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-12697-3"\7968648\"11/935,093"\"A New Approach For Achieving Flame Retardancy While Retaining Physical Properties In A Compatible Polymer Matrix"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-12703"\8031449\"12/485,979"\"Integral Battery Power Limiting Circuit For Intrinsically Safe Applications"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-12723"\7790225\"11/239,445"\"Coating For Corrosion Detection And Prevention"\ +"NASA Kennedy Space Center"\"Application"\"KSC-12723-DIV"\\"12/792,238"\"Coating For Corrosion Detection And Prevention"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-12848"\7781492\"11/759,672"\"New Organic/inorganic Polymeric Thermal Insulators"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-12848-DIV"\7977411\"12/835,233"\"New Organic/inorganic Polymeric Thermal Insulators"\ +"NASA Kennedy Space Center"\"Application"\"KSC-12871-CIP"\0\"13/915,407"\"Polyimide Wire Insulation Repair System"\ +"NASA Kennedy Space Center"\"Application"\"KSC-12871-DIV1"\0\"14/093,701"\"Polyimide Wire Insulation Repair System"\ +"NASA Kennedy Space Center"\"Application"\"KSC-12871-DIV2"\0\"14/093,680"\"Polyimide Wire Insulation Repair System"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-12875"\7841771\"11/777,711"\"Self Validating Thermocouple (Combined With KSC-12865)"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-12878-2-CIP"\8163972\"12/465,457"\"Bimetallic Treatment System and it's application for Removal of PCBs Found in Ex Situ Structures without the Use of a Catalized Agent"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-12890"\7790787\"11/740,357"\"New Organic/Inorganic Polymeric Materials"\ +"NASA Kennedy Space Center"\"Application"\"KSC-12890-2-DIV"\0\"12/834,416"\"New Organic/Inorganic Polymeric Materials"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-12899"\8425866\"11/466,624"\"Gas Phase Oxidation Of NO To NO2"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-12978"\7842639\"11/749,767"\"Preparation of a Bimetal Using Mechanical Alloying for the Dehalogenation of Compounds"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-12978-DIV"\8288307\"12/909,219"\"Preparation of a Bimetal Using Mechanical Alloying for the Dehalogenation of Compounds"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-12983"\8409534\"11/692,557"\"Mercury Emission Control System"\ +"NASA Kennedy Space Center"\"Application"\"KSC-13047"\0\"12/813,864"\"Insulation Test Cryostat with Lift Mechanism (Combined with KSC-13048)"\ +"NASA Kennedy Space Center"\"Application"\"KSC-13047-DIV"\0\"14/090,193"\"Insulation Test Cryostat with Lift Mechanism (Combined with KSC-13048)"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-13088"\8293178\"11/935,545"\"Improved Thermal Reactivity Of Hydrogen Sensing Pigments In Manufactured Polymer Composites"\ +"NASA Kennedy Space Center"\"Application"\"KSC-13088-CON"\0\"13/611,856"\"Improved Thermal Reactivity Of Hydrogen Sensing Pigments In Manufactured Polymer Composites"\ +"NASA Kennedy Space Center"\"Application"\"KSC-13088-DIV"\0\"13/615,850"\"Improved Thermal Reactivity Of Hydrogen Sensing Pigments In Manufactured Polymer Composites"\ +"NASA Kennedy Space Center"\"Application"\"KSC-13161"\0\"12/855,791"\"PH Sensitive Microcapsule With Corrosion Indicator"\ +"NASA Kennedy Space Center"\"Application"\"KSC-13167"\0\"12/856,849"\"Watercore PH Sensitive Microcapsule"\ +"NASA Kennedy Space Center"\"Application"\"KSC-13265-CIP2"\0\"14/150,502"\"An Inductive Non-Contact Position Sensor"\ +"NASA Kennedy Space Center"\"Application"\"KSC-13278"\0\"13/354,576"\"A Method for Making Elongated Microcapsules Under Simple Shear Conditions"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-13285"\8593153\"12/843,382"\"An improved Online Diagnostic Device (ODD) for Wiring Evaluation"\ +"NASA Kennedy Space Center"\"Issued"\"KSC-13331"\8577639\"13/031,182"\"A Method for Accurately Calibrating a Spectrometer Using Broadband Light"\ +"NASA Kennedy Space Center"\"Application"\"KSC-13336"\0\"12/843,487"\"Sputter Coated wire for in-situ wire damage detection"\ +"NASA Kennedy Space Center"\"Application"\"KSC-13343"\0\"13/278,710"\"Conductive Carbon Nanotube for use with Desktop Inkjet Printing"\ +"NASA Kennedy Space Center"\"Application"\"KSC-13366"\0\"13/523,806"\"High Performance Self Healing Film"\ +"NASA Kennedy Space Center"\"Application"\"KSC-13579"\\"13/895,717"\"Green PCB Removal From Sediment Systems (GPRSS)"\ +"NASA Kennedy Space Center"\"Application"\"KSC-13588"\\"13/495,862"\"Multi-Dimensional Damage Detection For Flat Surfaces"\ +"NASA Kennedy Space Center"\"Application"\"KSC-13592"\\"13/542,155"\"pH sensitive microparticles"\ +"NASA Kennedy Space Center"\"Application"\"KSC-13595"\\"14/192,784"\"Aerogel insulation and composites integrated into unique lay-ups (Incorporates Embodiments from KSC-13702)"\ +"NASA Kennedy Space Center"\"Application"\"KSC-13636"\\"13/546,880"\"Incorporation of Chemochromic Indicator for the Presence of Hypergolic Fuels into a Variety of Manufactured Parts"\ +"NASA Kennedy Space Center"\"Application"\"KSC-13638"\\"14/176,824"\"A Two Dimensional Inductive Position Sensor"\ +"NASA Kennedy Space Center"\"Application"\"KSC-13664"\\"13/896,896"\"Regolith Advanced Surface Systems Operations Robot (RASSOR) Excavator"\ +"NASA Kennedy Space Center"\"Application"\"KSC-13689"\\"13/961,521"\"Coherence Multiplexing of Wireless Surface Acoustic Wave Sensors"\ +"NASA Langley Research Center"\"Issued"\"LAR-14673-1"\5736642\"08/778,066"\"Nonlinear Ultrasonic Scanning To Detect Material Defects"\"01/08/2017" +"NASA Langley Research Center"\"Issued"\"LAR-14840-1"\5841032\"08/792,909"\"Variable And Fixed Frequency Pulsed Phase-Locked Loop"\"01/24/2017" +"NASA Langley Research Center"\"Issued"\"LAR-15205-1"\5741883\"08/359,752"\"Tough, Soluble, Aromatic, Thermoplastic Copolyimides"\"04/21/2015" +"NASA Langley Research Center"\"Issued"\"LAR-15282-1"\5755571\"08/712,984"\"Ultrasonic Periodontal Structures Mapping Device"\"09/09/2016" +"NASA Langley Research Center"\"Issued"\"LAR-15318-1"\5798521\"08/806,732"\"Distributed Fiber-optic Strain Sensor"\"02/27/2017" +"NASA Langley Research Center"\"Issued"\"LAR-15348-1"\5632841\"08/416,598"\"Thin Layer Composite Unimorph Ferroelectric Driver And Sensor, THUNDER"\"04/04/2015" +"NASA Langley Research Center"\"Issued"\"LAR-15348-2"\6734603\"08/797,553"\"Thin Layer Composite Unimorph Ferroelectric Driver And Sensor"\"04/04/2015" +"NASA Langley Research Center"\"Issued"\"LAR-15351-1-CU"\5585083\"08/414,661"\"Catalyst For Formaldehyde Oxidation"\"03/30/2015" +"NASA Langley Research Center"\"Issued"\"LAR-15370-1-SB"\5640408\"08/593,438"\"Quasi Four-Level TM:LuAG Laser (Tm:LuAG Laser)"\"01/27/2016" +"NASA Langley Research Center"\"Issued"\"LAR-15376-1"\5771204\"08/754,642"\"Relative Phase Measurement Instrument For Multiple-Echo Systems"\"11/21/2016" +"NASA Langley Research Center"\"Issued"\"LAR-15406-1"\5617873\"08/449,473"\"Noninvasive Meth/Apparatus For Monitoring Intracranial Pressure & Pressure Vols Index In Humans"\"05/23/2015" +"NASA Langley Research Center"\"Issued"\"LAR-15412-1"\5606014\"08/511,422"\"Imide Oligomers And Co-Oligomers Containing Pendent Phenylethynyl Groups And Polymers Therefrom"\"08/04/2015" +"NASA Langley Research Center"\"Issued"\"LAR-15412-2"\5689004\"08/747,472"\"Imide Oligomers And Co-Oligomers Containing Pendent Phenylethynyl Groups And Polymers Therefrom"\"08/04/2015" +"NASA Langley Research Center"\"Issued"\"LAR-15449-1"\6133401\"09/342,462"\"A Method To Prepare Processable Polyimides With Reactive Endgroups Using 1,3 Bis (3-Aminophenoxyl) Benzene"\"06/29/2019" +"NASA Langley Research Center"\"Issued"\"LAR-15449-2"\6288209\"09/667,426"\"Method To Prepare Processable Polyimides With Reactive Endgroups Using 1,3-Bix(3-Aminophenoxyl)Benzene"\"06/29/2019" +"NASA Langley Research Center"\"Issued"\"LAR-15507-1"\6475147\"09/493,044"\"Ultrasonic Technique To Measure Intracranial Pressure"\"01/27/2020" +"NASA Langley Research Center"\"Issued"\"LAR-15508-1"\6545760\"09/535,659"\"Distributed Rayleigh Scatter Fiber Optic Strain Sensor"\"03/24/2020" +"NASA Langley Research Center"\"Issued"\"LAR-15514-1-SB"\5991456\"08/654,840"\"Method Of Improving A Digital Image"\"05/29/2016" +"NASA Langley Research Center"\"Issued"\"LAR-15524-1"\6000844\"08/810,058"\"A Method And Apparatus For The Portable Identification Of Material Thickness Of Layers Using A Scanning Linear Heat Source And Infrared Detectorcramer"\"03/04/2017" +"NASA Langley Research Center"\"Issued"\"LAR-15525-1-CU"\5948965\"08/845,899"\"Solid State Carbon Monoxide Sensor"\"04/28/2017" +"NASA Langley Research Center"\"Issued"\"LAR-15637-1"\6015272\"08/673,627"\"Magnetically Suspended Miniature Fluid Pump And Method Of Making Same"\"06/26/2016" +"NASA Langley Research Center"\"Issued"\"LAR-15637-2"\6447265\"09/398,878"\"Magnetically Suspended Miniature Fluid Pump And Method Of Designing The Same"\"06/26/2019" +"NASA Langley Research Center"\"Issued"\"LAR-15652-1-CU"\6132694\"08/991,075"\"Catalyst For Oxidation Of Hydro-Carbons And Volatile Organic Compounds"\"12/16/2017" +"NASA Langley Research Center"\"Application"\"LAR-15665-1-CU"\0\"08/838,596"\"Catalyst For Carbon Monoxide Oxidation"\ +"NASA Langley Research Center"\"Issued"\"LAR-15745-1"\6222007\"09/093,826"\"Prepreg And Composites Made From Polyimide Salt-Like Solution"\"05/29/2018" +"NASA Langley Research Center"\"Issued"\"LAR-15747-1-CU"\6200539\"09/357,403"\"One-Atmosphere Uniform Glow Discharge Plasma Gas Flow Acceleration"\"07/20/2019" +"NASA Langley Research Center"\"Issued"\"LAR-15767-1"\6180746\"09/316,428"\"Polyimide Foam From Ether-Containing Monomeric Solutions"\"05/21/2019" +"NASA Langley Research Center"\"Issued"\"LAR-15816-1"\6629341\"09/430,677"\"Macro-Fiber Composite Actuator With Interdigitated Electrodes"\"10/29/2019" +"NASA Langley Research Center"\"Issued"\"LAR-15816-2"\7197798\"10/653,824"\"A Method For Fabricating A Piezoelectric Composite Apparatus"\"06/30/2020" +"NASA Langley Research Center"\"Issued"\"LAR-15817-1"\6450820\"09/612,412"\"A Method Of Encouraging Physiological Self-Regulation Through Modulation Of An Operator's Control Input To A Video Game Or Training Simulator"\"07/12/2020" +"NASA Langley Research Center"\"Issued"\"LAR-15818-3"\6922242\"10/465,386"\"Optical Path Switching Based Differential Absorption Radiometry For Substance Detection"\"06/21/2019" +"NASA Langley Research Center"\"Issued"\"LAR-15831-1"\5994418\"09/316,865"\"Hollow Polyimide Microspheres"\"05/21/2019" +"NASA Langley Research Center"\"Issued"\"LAR-15831-2"\6235803\"09/408,652"\"Hollow Polyimide Microspheres"\"05/21/2019" +"NASA Langley Research Center"\"Issued"\"LAR-15831-3"\6084000\"09/394,534"\"Hollow Polyimide Microsphere"\"05/21/2019" +"NASA Langley Research Center"\"Issued"\"LAR-15834-1"\6359107\"09/575,826"\"High Performance / High Temperature Resins For Infusion And Transfer Molding Processes"\"05/18/2020" +"NASA Langley Research Center"\"Issued"\"LAR-15851-1-CU"\6753293\"09/607,211"\"Process For Coating Substrates With Catalyst Materials"\"05/11/2021" +"NASA Langley Research Center"\"Issued"\"LAR-15854-1"\6761695\"10/94,023"\"Technique For Non-Invasive Absolute Measurement Of Intra-Cranial Pressure In Humans"\"07/28/2022" +"NASA Langley Research Center"\"Issued"\"LAR-15927-1"\6584848\"10/263,292"\"Dielectric Electrostatic Ultrasonic Transducer (DEUT)"\"09/30/2022" +"NASA Langley Research Center"\"Issued"\"LAR-15934-1"\6566648\"09/535,661"\"Edge Triggered Apparatus And Method For Measuring Strain In Bragg Gratings"\"03/24/2020" +"NASA Langley Research Center"\"Issued"\"LAR-15943-1"\6746410\"10/121,932"\"Transducer Assembly To Measure Changes In Circumferential Expansion Of The Human Skull Due To Changes In Intracranial Pressure"\"11/16/2022" +"NASA Langley Research Center"\"Issued"\"LAR-15954-1"\6376830\"09/606,120"\"Single Laser Sweep Full S-Parameter Characterization Of Fiber Bragg Gratings"\"06/15/2020" +"NASA Langley Research Center"\"Issued"\"LAR-15959-1"\7019621\"09/753,370"\"Structural Tailored High Displacement Ferro-Electric Sensors And Actuators"\"01/02/2021" +"NASA Langley Research Center"\"Issued"\"LAR-15977-1"\6133330\"09/337,475"\"Polyimide Foam From Monomeric Solutions"\"05/21/2019" +"NASA Langley Research Center"\"Issued"\"LAR-15990-1"\6551251\"09/784,413"\"Dual Transmission Interface For Passive Fetal Heart Monitoring"\"02/13/2021" +"NASA Langley Research Center"\"Issued"\"LAR-16001-1"\7371358\"10/975,117"\"Catalyst For Treatment And Control Of Post-Combustion Emissions"\"10/25/2024" +"NASA Langley Research Center"\"Issued"\"LAR-16005-1"\6426496\"09/648,529"\"High Precision Solid State Wavelength Monitor"\"11/26/2020" +"NASA Langley Research Center"\"Issued"\"LAR-16012-1-CU"\6834125\"09/888,701"\"Improvement To The Multiscale Retinex With Color Restoration"\"06/25/2021" +"NASA Langley Research Center"\"Issued"\"LAR-16020-1"\6629446\"09/758,115"\"Single Vector Force Balance Calibration System"\"01/26/2022" +"NASA Langley Research Center"\"Issued"\"LAR-16079-1"\6939940\"09/757,398"\"Liquid Crystalline Thermosets From Oligo-Esters, Ester-Imides And Ester-Amides"\"01/05/2021" +"NASA Langley Research Center"\"Issued"\"LAR-16083-1"\8062129\"11/536,811"\"A Method And System For Multi-Player Game Playing Where Physiological Characteristics Of The Players Modulate Their Relative Advantage Over Opponents Or Competitors"\"05/22/2030" +"NASA Langley Research Center"\"Issued"\"LAR-16116-1"\6888346\"10/21,683"\"Giant Magnetoresistive Based Self-Nulling Probe For Deep Flaw Detection"\"11/28/2021" +"NASA Langley Research Center"\"Issued"\"LAR-16176-2"\7109287\"10/988,407"\"Space Environmentally Durable Polyimides And Copolyimides"\"03/03/2025" +"NASA Langley Research Center"\"Issued"\"LAR-16220-1"\6867533\"09/696,527"\"Shaping, Tuning, And Positioning Membrane Structures Using Electroactive Polymer Actuators"\"10/23/2020" +"NASA Langley Research Center"\"Issued"\"LAR-16231-1-CU"\7092539\"09/997,113"\"MEMS Based Acoustic Array"\"11/28/2021" +"NASA Langley Research Center"\"Issued"\"LAR-16256-1"\8628333\"11/129,756"\"Method And System For Training Psychophysiological Skills Conducive To Optimal Performance Through Perturbation Of Training Tasks, Environments And Devices"\"08/27/2029" +"NASA Langley Research Center"\"Application"\"LAR-16256-1-CON"\0\"14/153,434"\"Method And System For Training Psychophysiological Skills Conducive To Optimal Performance Through Perturbation Of Training Tasks, Environments And Devices"\"05/13/2025" +"NASA Langley Research Center"\"Issued"\"LAR-16299-1"\7871682\"10/956,520"\"Composite Roll Press And Processes"\"12/07/2025" +"NASA Langley Research Center"\"Issued"\"LAR-16307-1-SB"\7390768\"10/056,845"\"Methodology For The Effective Stabilization Of Tin-Oxide-Based Oxidation/Reduction Catalysts"\"01/22/2022" +"NASA Langley Research Center"\"Issued"\"LAR-16307-2"\7985709\"10/956,515"\"Methodology For The Effective Stabilization Of Tin-Oxide-Based Oxidation/Reduction Catalysts"\"04/16/2027" +"NASA Langley Research Center"\"Application"\"LAR-16308-2"\0\"12/726,403"\"Catalyst For Decomposition Of Nitrogen Oxides (Divisional of LAR 16308-1-CU)"\ +"NASA Langley Research Center"\"Issued"\"LAR-16311-1"\6777525\"10/115,812"\"Heat, Moisture, Chemical Resistant Polyimide Compositions And Methods For Making And Using The Same"\"04/01/2022" +"NASA Langley Research Center"\"Issued"\"LAR-16323-1"\7253903\"11/27,930"\"Method To Linearize Non-Linear Physical Measurements"\"06/24/2025" +"NASA Langley Research Center"\"Issued"\"LAR-16324-1"\6714132\"10/011,229"\"Proximity Sensor"\"11/27/2021" +"NASA Langley Research Center"\"Issued"\"LAR-16324-2"\7106203\"10/783,486"\"Self-Activating System And Method For Alerting When An Object Or Person Is Left Unattended"\"11/27/2021" +"NASA Langley Research Center"\"Issued"\"LAR-16326-1"\7060991\"10/410,605"\"Method For Measuring Thickness Of Small Radius Of Curvature Structures Using A Thermal Line Scanner"\"04/10/2023" +"NASA Langley Research Center"\"Issued"\"LAR-16332-1-CU"\6842543\"09/888,816"\"Method Of Improving A Digital Image Having White Zones"\"06/25/2021" +"NASA Langley Research Center"\"Issued"\"LAR-16363-1"\6856073\"10/390,675"\"Radial Electric Field Piezo-Diaphragm Fluidic Control Systems"\"03/13/2023" +"NASA Langley Research Center"\"Issued"\"LAR-16383-1-NP"\7588699\"10/288,797"\"Electrically Conductive, Optically Transparent Polymer/Carbon Nanotube Composites And Process For Preparation Thereof"\"07/02/2023" +"NASA Langley Research Center"\"Issued"\"LAR-16383-2"\7972536\"12/546,724"\"Electrically Conductive, Optically Transparent Polymer/Carbon Nanotube Composites And Process For Preparation Thereof"\"10/12/2029" +"NASA Langley Research Center"\"Issued"\"LAR-16390-1-SB"\7318915\"10/342,660"\"Ruthenium Stabilization Mechanism For Next Generation Oxidation And Reduction Catalyst Systems"\"01/13/2023" +"NASA Langley Research Center"\"Issued"\"LAR-16393-1"\6919669\"10/392,491"\"Sonic Transducers And Sensors Using Radial Field Diaphragms"\"05/31/2023" +"NASA Langley Research Center"\"Issued"\"LAR-16406-1-CU"\7491169\"10/805,816"\"Ultrasonic Method And Means To Assess Compartment Syndrome (Hyper Pressure States In Arm, Leg Muscle/Tendon Compartments)"\"09/20/2025" +"NASA Langley Research Center"\"Issued"\"LAR-16409-1"\8015819\"11/536,790"\"Wet Active Chevron Nozzle For Controllable Jet Noise Reduction"\"09/17/2028" +"NASA Langley Research Center"\"Issued"\"LAR-16432-1"\7692116\"10/188,525"\"Synthesis Of Carbon Nanotubes Using High Average Power Ultrafast Laser Ablation"\"07/03/2022" +"NASA Langley Research Center"\"Issued"\"LAR-16437-1-NP"\7169374\"11/129,751"\"Templated Growth Of Carbon Nanotubes"\"05/11/2025" +"NASA Langley Research Center"\"Issued"\"LAR-16440-1"\6740048\"10/263,285"\"Method Of Determining Intracranial Pressure From Skull Expansion Measurements"\"09/25/2022" +"NASA Langley Research Center"\"Issued"\"LAR-16475-1"\7194912\"10/890,843"\"Carbon Nanotube-Based Structural Health Monitoring Sensor"\"08/07/2024" +"NASA Langley Research Center"\"Issued"\"LAR-16496-1"\7104498\"10/867,114"\"Blown Channel-Wing System For Thrust Deflection And Force/Moment Generation"\"10/03/2024" +"NASA Langley Research Center"\"Issued"\"LAR-16499-1"\7491428\"10/730,188"\"Method for the controlled deposition and alignment of single walled carbon nanotubes"\"11/15/2025" +"NASA Langley Research Center"\"Issued"\"LAR-16510-1"\6773407\"10/263,286"\"Non-Invasive Method Of Determining Absolute Intracranial Pressure"\"12/25/2022" +"NASA Langley Research Center"\"Issued"\"LAR-16516-1"\6879893\"10/675,502"\"Autonomous Health Monitoring Architecture Hardware"\"09/30/2023" +"NASA Langley Research Center"\"Issued"\"LAR-16517-1"\7048228\"10/678,474"\"Partial-Span Slotted Wing For Transonic Aircraft"\"10/03/2023" +"NASA Langley Research Center"\"Issued"\"LAR-16532-1"\7334998\"11/5,624"\"Low-Noise Fan Exit Guide Vanes"\"12/06/2024" +"NASA Langley Research Center"\"Issued"\"LAR-16538-1"\7675619\"12/129,967"\"Micro-LiDAR For In-Flight Flow Velocimetry And Boundary Layer Control"\"11/11/2028" +"NASA Langley Research Center"\"Issued"\"LAR-16549-1"\7262543\"10/943,655"\"Inductor (L)-Capacitor ( C ) (aka, LC) Sensor Circuit For Piezo Material Monitoring"\"04/17/2025" +"NASA Langley Research Center"\"Application"\"LAR-16565-1"\0\"13/020,025"\"e-Sensor: Quantitative Imaging of Electric Fields and Electric Potentials"\ +"NASA Langley Research Center"\"Issued"\"LAR-16566-1"\7285932\"10/975,119"\"Method And Apparatus For Loss Of Control Inhibitor Systems"\"10/27/2024" +"NASA Langley Research Center"\"Issued"\"LAR-16571-1"\7075295\"10/839,448"\"LC Sensing Element For Closed Cavities Having Low Radio Frequency Transmissivity"\"04/30/2024" +"NASA Langley Research Center"\"Issued"\"LAR-16571-2"\7589525\"11/421,886"\"Magnetic Field Response Sensor For Conductive Media"\"09/26/2024" +"NASA Langley Research Center"\"Issued"\"LAR-16571-3"\7759932\"12/533,520"\"Magnetic Field Response Sensor For Conductive Media"\"07/31/2029" +"NASA Langley Research Center"\"Issued"\"LAR-16573-1"\7129467\"10/943,831"\"Carbon Nanotube Based Light Sensor"\"09/29/2024" +"NASA Langley Research Center"\"Issued"\"LAR-16575-1"\7181942\"10/943,649"\"Instrumented Crimping Tool For Critical Wiring Applications"\"11/24/2024" +"NASA Langley Research Center"\"Issued"\"LAR-16605-1"\7623993\"10/731,742"\"Energy-extraction-based active noise control system"\"11/27/2026" +"NASA Langley Research Center"\"Issued"\"LAR-16615-1"\6956066\"10/779,552"\"Polyimide Foams"\"02/11/2024" +"NASA Langley Research Center"\"Issued"\"LAR-16615-2"\7541388\"11/124,640"\"Polyimide Foams"\"05/05/2025" +"NASA Langley Research Center"\"Issued"\"LAR-16616-1"\7758927\"10/956,704"\"Laser-Induced Fabrication Of Metallic Interlayers And Patterns In Polyimide Films"\"09/30/2024" +"NASA Langley Research Center"\"Issued"\"LAR-16640-1"\8089677\"12/135,180"\"Programmable Smart Grating Device With Quantum Aperture Array"\"08/05/2029" +"NASA Langley Research Center"\"Issued"\"LAR-16696-1"\7048235\"10/678,397"\"Slotted Aircraft Wing (a.k.a. Full Span Slotted Wing)"\"10/03/2023" +"NASA Langley Research Center"\"Issued"\"LAR-16698-1"\7394181\"11/76,824"\"High Performance High Efficiency Hybrid Actuator Systems (HYBAS)"\"03/04/2025" +"NASA Langley Research Center"\"Issued"\"LAR-16736-1"\7962252\"11/422,984"\"Semi Autonomous Flight System With Avionics Sensor Board, Processing Board, And Flight Control Board"\"04/07/2027" +"NASA Langley Research Center"\"Issued"\"LAR-16845-1"\8083986\"12/315,520"\"Advanced Thermo-Electric Materials with Nano-Voids"\"12/04/2028" +"NASA Langley Research Center"\"Issued"\"LAR-16854-1"\7381186\"10/911,755"\"Ultrasonic Method And Means To Assess Compartment Syndrome Part B"\"08/02/2024" +"NASA Langley Research Center"\"Issued"\"LAR-16858-1"\7667847\"11/533,921"\"Thin, High-Contrast Targets for Ultralightweight Structures"\"12/15/2026" +"NASA Langley Research Center"\"Issued"\"LAR-16867-1"\7402264\"11/076,460"\"Electroactive polymer-carbon nanotube-ceramic nanocomposites"\"02/27/2026" +"NASA Langley Research Center"\"Issued"\"LAR-17548-1"\8236413\"12/166,852"\"Fail Safe High-Temperature Composite Structure"\"07/07/2030" +"NASA Langley Research Center"\"Issued"\"LAR-16867-2"\7527751\"12/109,490"\"Sensing/Actuating Materials Made From Carbon Nanotube Polymer Composites And Methods For Making Same"\"04/25/2028" +"NASA Langley Research Center"\"Issued"\"LAR-16868-1"\7341883\"11/242,415"\"Lattice Matched SiGe Layer On Single Crystalline Sapphire Substrate"\"09/27/2025" +"NASA Langley Research Center"\"Issued"\"LAR-16871-1"\6413227\"09/459,384"\"Optimization Of Ultrasonic Method For Assessment Of Changes In Intracranial Pressure Through Measurement Of Skull Expansion"\"12/02/2019" +"NASA Langley Research Center"\"Issued"\"LAR-16872-1"\7514726\"11/387,086"\"Graded Indexed SiGe Layers on Lattice Matched SiGe Layers on Sapphire"\"06/10/2027" +"NASA Langley Research Center"\"Issued"\"LAR-16874-1"\7723464\"11/674,321"\"Novel Aromatic/Aliphatic Diamine Derivatives For Advanced Compositions And Polymers"\"02/13/2027" +"NASA Langley Research Center"\"Issued"\"LAR-16877-1"\7186367\"11/110,996"\"Double-Vacuum Bag (DVB) Process For Volatile Management In Resin Matrix Composite Manufacturing"\"07/08/2025" +"NASA Langley Research Center"\"Issued"\"LAR-16885-1"\7890311\"11/177,664"\"Method Of Simulating Flow-Through Area Of A Pressure Regulator"\"12/15/2029" +"NASA Langley Research Center"\"Issued"\"LAR-16886-1"\7375808\"11/536,120"\"Dual Sensing Capable Germ Or Toxic Chemical (GTC) Sensor Using Quantum Aperture Array With Surface Plasmon Polariton (SPP)"\"09/28/2026" +"NASA Langley Research Center"\"Issued"\"LAR-16900-1"\7278324\"11/155,923"\"CNT based crack growth detector and strain field monitor"\"08/07/2024" +"NASA Langley Research Center"\"Issued"\"LAR-16906-1"\8529825\"12/928,128"\"Fabrication of Nanovoid-imbedded Bismuth Telluride with Low Dimensional System"\"02/01/2028" +"NASA Langley Research Center"\"Issued"\"LAR-16907-1"\7783060\"11/126,518"\"A Deconvolution Approach For The Mapping Of Acoustic Sources (DAMAS) Determined From Phased Microphone Arrays"\"03/27/2029" +"NASA Langley Research Center"\"Issued"\"LAR-16908-1"\7086593\"10/839,445"\"Magnetic Field Response Measurement Acquisition System (Includes LAR-16138-1, LAR-16554-1, LAR-16591-1, LAR-16614-1, LAR-16617-1, & LAR-16908-1)"\"05/04/2024" +"NASA Langley Research Center"\"Issued"\"LAR-16946-1"\7484930\"11/169,256"\"Blowing Flap Side Edge"\"07/01/2025" +"NASA Langley Research Center"\"Issued"\"LAR-16950-1"\7379231\"11/470,771"\"Ferroelectric Light Control Device"\"09/07/2026" +"NASA Langley Research Center"\"Issued"\"LAR-16958-1"\7510802\"11/371,575"\"Fabrication of Multilayer Ferritin Array for Bionanobattery"\"08/24/2027" +"NASA Langley Research Center"\"Issued"\"LAR-16970-1"\7231832\"11/229,439"\"Method For Determining Cracks On And Within Composite Panels"\"12/02/2025" +"NASA Langley Research Center"\"Issued"\"LAR-16974-1"\7047807\"11/203,583"\"Methods Of Mounting Erectable, Flexible And Fixed Magnetic Field Response Sensors"\"08/08/2025" +"NASA Langley Research Center"\"Issued"\"LAR-17003-1"\7467921\"11/239,436"\"Rotor Blade Vortex Management Via Boundary Layer Separation Control"\"09/22/2025" +"NASA Langley Research Center"\"Issued"\"LAR-17013-1"\7647771\"11/374,480"\"Thermally Driven Miniature Piston Actuator"\"11/12/2026" +"NASA Langley Research Center"\"Issued"\"LAR-17017-1"\7537182\"11/250,700"\"Enhanced Separation Control Via Simultaneous Multiple-Location Forcing"\"06/18/2027" +"NASA Langley Research Center"\"Issued"\"LAR-17032-1"\7321185\"11/370,377"\"A New Concept For Active Bistable Twisting Structures"\"03/06/2026" +"NASA Langley Research Center"\"Issued"\"LAR-17044-1"\7558371\"12/254,150"\"Applications Of Twin-Detection XRD Methods On SiGe (111) Layers On Sapphire (0001) Substrate"\"10/20/2028" +"NASA Langley Research Center"\"Issued"\"LAR-17073-1"\7580323\"11/419,818"\"Interdigitated Electrode Actuators For Straining Optical Fibers (IDEAS)"\"05/27/2026" +"NASA Langley Research Center"\"Application"\"LAR-17088-1"\0\"13/032,045"\"Nanotubular Toughening Inclusions For Improved Mechanical Reinforcement"\ +"NASA Langley Research Center"\"Issued"\"LAR-17112-1"\7507472\"11/81,888"\"Multi-Layer Electroactive Devices"\"09/08/2025" +"NASA Langley Research Center"\"Issued"\"LAR-17116-1"\7506541\"11/328,468"\"Wireless Fuel Volume Measurement Techniques"\"10/18/2026" +"NASA Langley Research Center"\"Issued"\"LAR-17126-1"\7666939\"11/432,201"\"A Method For Producing Stable Dispersions Of Single Walled Carbon Nanotubes In Polymer Matrices Using Noncovalent Interactions"\"05/11/2026" +"NASA Langley Research Center"\"Issued"\"LAR-17128-1"\7285933\"11/188,227"\"Method And Apparatus For Loss Of Control Inhibitor Systems"\"07/20/2025" +"NASA Langley Research Center"\"Issued"\"LAR-17135-1"\8217143\"11/827,567"\"Fabrication of Metal Nanoshells Derived by a Biotemplate"\"11/17/2030" +"NASA Langley Research Center"\"Issued"\"LAR-17149-2"\8608993\"13/053,633"\"A Method For Producing Multifunctional Structural Thermally Stable Nanocomposites With Aligned Carbon Nanotubes"\"05/20/2026" +"NASA Langley Research Center"\"Issued"\"LAR-17154-1"\7655595\"11/421,924"\"Sprayable Low Temperature Oxidation Catalyst Coating Based on Sol-Gel Technology"\"08/11/2027" +"NASA Langley Research Center"\"Issued"\"LAR-17154-2"\7781366\"12/369,932"\"Sol-Gel Based Oxidation Catalyst And Coating System Using Same (Divisional of -1)"\"02/12/2029" +"NASA Langley Research Center"\"Issued"\"LAR-17155-1"\7255004\"11/229,438"\"Wireless Fluid-Lead Measuring Dipstick Assembly (Broken Out Of LAR-16974-1)"\"03/22/2026" +"NASA Langley Research Center"\"Issued"\"LAR-17157-1"\7507784\"11/124,508"\"Liquid Crystalline Thermosets From Ester, Ester-Imide, And Ester-Amide Oligomers"\"01/05/2021" +"NASA Langley Research Center"\"Issued"\"LAR-17163-1"\7467536\"11/428,017"\"Multi-axis Accelerometer Calibration System Using a Cuboidal Attitude Positioning Device"\"08/18/2027" +"NASA Langley Research Center"\"Issued"\"LAR-17165-1"\7595112\"11/461,150"\"Method To Prepare Hybrid Metal/Composite Laminates By Resin Infusion"\"02/01/2028" +"NASA Langley Research Center"\"Issued"\"LAR-17168-1"\7732998\"11/462,114"\"Cylindrical Shaped Micro Fiber Composite (CMFC) Actuators"\"09/24/2027" +"NASA Langley Research Center"\"Issued"\"LAR-17169-1"\7446459\"11/486,200"\"Hybrid Force/Stress Amplified Piezoelectric Energy Harvesting Transducer System"\"07/13/2026" +"NASA Langley Research Center"\"Application"\"LAR-17211-1"\0\"13/557,250"\"Floating Ultrasonic Transducer Inspection System For Nondestructive Evaluation"\ +"NASA Langley Research Center"\"Issued"\"LAR-17213-1"\8020805\"11/831,233"\"New Configuration and Power Technology for Application-Specific Scenarios of High Altitude Airships"\"03/25/2030" +"NASA Langley Research Center"\"Issued"\"LAR-17224-1"\7998368\"12/272,826"\"Effective Dispersion of Carbon Nanotubes in an Aqueous Solution and Their Application on Bionanotechnology"\"06/04/2029" +"NASA Langley Research Center"\"Issued"\"LAR-17229-1"\7760778\"11/670,044"\"Thin-film evaporative cooling concept for a solid-state laser diode crystal"\"02/01/2027" +"NASA Langley Research Center"\"Issued"\"LAR-17235-1"\7414708\"11/461,569"\"Multi-Point, Multi-Component Interferometric Rayleigh/Mie Doppler Velocimeter"\"08/01/2026" +"NASA Langley Research Center"\"Issued"\"LAR-17237-1"\8294989\"12/512,344"\"Photonic DART (Densely Accumulated Ray-point by micro-zone-plaTe)"\"04/25/2031" +"NASA Langley Research Center"\"Issued"\"LAR-17240-1"\8111943\"12/423,907"\"Computational Visual Servo:Automatic Measurement and Control for Smart Image Enhancement"\"09/14/2030" +"NASA Langley Research Center"\"Issued"\"LAR-17241-1"\8018815\"12/490,747"\"Optical Data Storage System with Micro Zone Plate"\"12/05/2029" +"NASA Langley Research Center"\"Issued"\"LAR-17242-1"\8174695\"12/508,018"\"MICRO-RING THIN-FILM SPECTROMETER ARRAY"\"09/03/2030" +"NASA Langley Research Center"\"Issued"\"LAR-17243-1"\8411214\"12/144,937"\"Variable Visibility Glasses for Flight Training"\"02/01/2032" +"NASA Langley Research Center"\"Issued"\"LAR-17245-1"\8344281\"12/751,075"\"Use of Beam Deflection to Control Electron Beam Wire Deposition Processes"\"04/26/2031" +"NASA Langley Research Center"\"Issued"\"LAR-17257-1"\7590904\"11/531,703"\"Detecting the loss of configuration access of reprogrammable Field Programmable Gate Array (FPGA) without external circuitry"\"10/07/2027" +"NASA Langley Research Center"\"Issued"\"LAR-17267-1"\7704553\"11/710,386"\"Method of Depositing Metals onto Carbon Allotropes and Compositions Therefrom"\"06/26/2028" +"NASA Langley Research Center"\"Issued"\"LAR-17268-1"\7647543\"11/535,574"\"Integrated mitigation for single event upset (SEU) of reprogrammable field programmable gate arrays (FPGA) operating in radiation environments"\"09/27/2026" +"NASA Langley Research Center"\"Issued"\"LAR-17280-1"\7159774\"11/305,854"\"Magnetic Field Response Measurement Acquisition System"\"04/30/2024" +"NASA Langley Research Center"\"Issued"\"LAR-17286-1"\8081734\"12/628,446"\"Miniature, Low-Power X-Ray Tube Using A Microchannel Electron Generator Electron Source"\"02/26/2030" +"NASA Langley Research Center"\"Issued"\"LAR-17290-1"\7737867\"11/696,333"\"Advance Display Media for Improved Airport Surface Operations"\"06/11/2028" +"NASA Langley Research Center"\"Issued"\"LAR-17293-1"\7991491\"11/559,420"\"Control Device And Method For Generating Control Signals For Technical Devices"\"03/04/2030" +"NASA Langley Research Center"\"Issued"\"LAR-17294-1"\8430327\"11/671,089"\"Low Profile Sensors Using Self-Resonating Inductors"\"08/22/2028" +"NASA Langley Research Center"\"Issued"\"LAR-17295-1"\7683797\"11/671,131"\"System For Providing Damage Detection And Thermal Protection"\"02/15/2028" +"NASA Langley Research Center"\"Issued"\"LAR-17300-1"\7538860\"11/840,363"\"A Method and Apparatus for Determination of the Reflection Wavelength of Multiple Low-Reflectivity Bragg Gratings in a Single Fiber"\"12/31/2027" +"NASA Langley Research Center"\"Application"\"LAR-17307-1"\0\"11/466,569"\"Low Mass Free Piston Space Radiator"\ +"NASA Langley Research Center"\"Issued"\"LAR-17317-1"\8401217\"11/780,500"\"Extreme Low Frequency Acoustic Measurement Portable System"\"11/29/2030" +"NASA Langley Research Center"\"Application"\"LAR-17317-2"\\"13/771,735"\"Extreme Low Frequency Acoustic Measurement System"\"07/20/2027" +"NASA Langley Research Center"\"Application"\"LAR-17318-1"\0\"13/082,734"\"Preparation of Metal Nanowire Decorated Carbon Allotropes"\"08/29/2027" +"NASA Langley Research Center"\"Issued"\"LAR-17321-1"\8545986\"12/043,276"\"Ultra High-Temperature, Lightweight Insulation Material Compositions And Methods For Making And Using Them"\"06/27/2030" +"NASA Langley Research Center"\"Application"\"LAR-17323-1"\0\"11/757,780"\"Concept And Design Of Oxygen Band Radar For Surface Air Pressure Remote Sensing"\ +"NASA Langley Research Center"\"Issued"\"LAR-17325-1"\8060350\"12/56,686"\"Unsteady aerodynamic reduced-order models (ROMs) for efficient aeroelastic analysis"\"03/04/2030" +"NASA Langley Research Center"\"Issued"\"LAR-17327-1"\8117013\"12/002,857"\"Standardized Radiation Shield Design Method: 2005 HZETRN"\"07/05/2030" +"NASA Langley Research Center"\"Application"\"LAR-17330-1"\0\"11/946,207"\"Multi Functional Composite And Honeycomb Panels"\ +"NASA Langley Research Center"\"Issued"\"LAR-17332-1"\7958733\"11/762,827"\"Active Flow Effectors by Embedded Shape Memory Alloy Actuation"\"11/04/2029" +"NASA Langley Research Center"\"Application"\"LAR-17332-2"\\"13/096,305"\"Jet Engine Exhaust Nozzle Flow Effector"\"07/05/2027" +"NASA Langley Research Center"\"Issued"\"LAR-17335-1"\8170234\"12/108,562"\"Extension Of DAMAS Phased Array Processing For Spatial Coherence Determination (DAMAS-C)"\"03/02/2031" +"NASA Langley Research Center"\"Issued"\"LAR-17346-1"\7649439\"11/465,503"\"Thermoelectric Devices From Thin Metal System To Include Flexible Substrate And Method Of Making Same"\"04/28/2027" +"NASA Langley Research Center"\"Issued"\"LAR-17355-1"\8164485\"11/863,964"\"A Method of Providing a Synthetic Vision System Flight Management Visualization Display for Aiding Pilot Preview, Rehearsal and/or Review and Real-Time Visual Acquisition of Flight Mission Progress"\"06/24/2029" +"NASA Langley Research Center"\"Application"\"LAR-17361-1"\0\"12/138,709"\"Airfoil/ Wing Flow Control Using Flexible Extended Trailing Edge"\ +"NASA Langley Research Center"\"Issued"\"LAR-17365-1"\7784732\"11/958,673"\"Boundary-Layer-Ingesting S-Duct Diffusing Inlet Flow Control Using Hybrid Vane/Jet Approach at Transonic Flow Conditions"\"04/26/2029" +"NASA Langley Research Center"\"Issued"\"LAR-17381-1"\8044294\"12/254,016"\"Thermoelectric material made with highly oriented twinned alloy of Si, Ge, C, and Sn on the basal plane of trigonal substrate and thermoelectric device made with the same material"\"10/11/2029" +"NASA Langley Research Center"\"Issued"\"LAR-17382-1"\8052069\"12/393,238"\"Advanced High Performance Vertical Hybrid Electroactive Synthetic Jet Actuator (ASJA-V)"\"10/18/2029" +"NASA Langley Research Center"\"Issued"\"LAR-17384-1"\8662412\"12/354,808"\"Advanced Modified High Performance Synthetic Jet Actuator With Optimized Curvature Shape Chamber (ASJA-M)"\"10/27/2031" +"NASA Langley Research Center"\"Issued"\"LAR-17385-1"\7671306\"11/589,011"\"Apparatus For Free Electron Laser Ablative Synthesis Of Carbon Nanotubes"\"03/10/2028" +"NASA Langley Research Center"\"Application"\"LAR-17386-1"\0\"12/851,584"\"Fine-Grained Targets For Free Electron Laser Synthesis Of Carbon Nanotubes"\ +"NASA Langley Research Center"\"Issued"\"LAR-17387-1"\7663077\"11/589,010"\"Process For Optimizing The Yield And Production Rate Of Single-Walled Carbon Nanotubes Using Free Electron Laser Synthesis"\"01/23/2028" +"NASA Langley Research Center"\"Issued"\"LAR-17390-1"\8235309\"12/355,782"\"Advanced High Performance Horizontal Piezoelectric Hybrid Synthetic Jet Actuator (ASJA-H)"\"04/02/2031" +"NASA Langley Research Center"\"Issued"\"LAR-17391-1"\7792015\"12/187,458"\"A Byzantine-Fault Tolerant Self-Stabilizing Protocol for Distributed Clock Synchronization Systems"\"08/14/2028" +"NASA Langley Research Center"\"Issued"\"LAR-17402-1"\7964698\"11/935,036"\"Wholly Aromatic Liquid Crystalline Polyetherimide (LC-PEI) Resin for manufacturing high modulus fibers, films, injection molded articles and foams"\"09/27/2029" +"NASA Langley Research Center"\"Issued"\"LAR-17405-1"\8226767\"12/254,134"\"Hybrid Bandgap Engineering for Rhombohedral Super-Hetero-Epitaxy"\"05/11/2031" +"NASA Langley Research Center"\"Application"\"LAR-17413-2"\0\"12/641,603"\"Nanoparticle-Containing Thermoplastic Composites and Methods of Preparing Same"\ +"NASA Langley Research Center"\"Issued"\"LAR-17425-1"\8059273\"12/496,788"\"Micro Spectrometer for Parallel Light"\"08/19/2029" +"NASA Langley Research Center"\"Application"\"LAR-17427-1"\0\"12/174,360"\"Tailorable Dielectric Materials with Complex Permittivity Characteristics providing High Dielectric Constants and Low Loss Factors"\ +"NASA Langley Research Center"\"Issued"\"LAR-17432-1"\8112243\"12/118,172"\"Forward Voltage Short Pulse (FVSP) Technique for Measuring High Power Laser Diode Array (LDA) Junction Temperature"\"11/27/2030" +"NASA Langley Research Center"\"Issued"\"LAR-17433-1"\7902815\"11/856,807"\"A Multi-Measurement Wheel Sensor"\"06/19/2029" +"NASA Langley Research Center"\"Issued"\"LAR-17440-1"\7845215\"11/844,571"\"Resonant Difference-Frequency Atomic Force Ultrasonic Microscope"\"02/03/2029" +"NASA Langley Research Center"\"Issued"\"LAR-17444-1"\8042739\"11/864,012"\"Wireless Tamper Detection Sensor Requiring No Electrical Connection"\"11/08/2029" +"NASA Langley Research Center"\"Issued"\"LAR-17447-1"\8002219\"11/941,119"\"Multifunctional Boost Protective Cover (MBPC) For A Launch Abort System (LAS)"\"01/16/2030" +"NASA Langley Research Center"\"Application"\"LAR-17455-3"\\"13/938,622"\"A Nanotube Film Electrode and an Electroactive Device Fabricated with the Nanotube Film Electrode and Methods for Making Same"\"10/28/2031" +"NASA Langley Research Center"\"Issued"\"LAR-17469-1"\8094306\"12/487,735"\"Micro Ring Grating Spectrometer with Moveable Aperture Slit"\"08/27/2030" +"NASA Langley Research Center"\"Issued"\"LAR-17477-1"\7993567\"12/131,420"\"Auxiliary Electrode For Electrospinning Process"\"10/02/2029" +"NASA Langley Research Center"\"Issued"\"LAR-17478-1"\7883052\"11/954,452"\"Integration Of A Turbo-Fan Engine Above An Aircraft's Wing Which Reduces Drag And Community Noise"\"09/24/2029" +"NASA Langley Research Center"\"Issued"\"LAR-17480-1"\7711509\"11/930,222"\"A Method To Calibrate Magnetic Response Fluid-Level Sensors Using Complete Sensor Immersion In Fluid"\"03/18/2028" +"NASA Langley Research Center"\"Issued"\"LAR-17485-1"\7851062\"12/124,273"\"Composition of and Method to Prepare Hybrid Laminates from Metal Plasma Coated Fibers and Polymer Matrix Resins"\"09/09/2028" +"NASA Langley Research Center"\"Issued"\"LAR-17485-2"\8017190\"12/906,633"\"Metal/Fiber Laminate and Fabrication Using A Porous Metal/Fiber Preform"\"05/21/2028" +"NASA Langley Research Center"\"Issued"\"LAR-17487-1"\8157207\"11/836,517"\"Jet Engine Nozzle Exit Configurations And Associated Systems And Methods"\"04/15/2029" +"NASA Langley Research Center"\"Issued"\"LAR-17488-1"\7814786\"12/015,626"\"Thin-Film Sensor For Measuring Liquid-Level And Temperature Having No Electrical Connections"\"08/26/2028" +"NASA Langley Research Center"\"Issued"\"LAR-17493-1"\8424200\"12/098,000"\"Conducting Nanotubes Or Nanostructures Based Composites, Method Of Making Them And Applications"\"05/16/2031" +"NASA Langley Research Center"\"Issued"\"LAR-17502-1"\8529249\"11/860,703"\"Quick Change Ceramic Flame Holder for High Output Torch"\"03/14/2030" +"NASA Langley Research Center"\"Application"\"LAR-17502-1-CON"\\"14/021,325"\"Flame Holder System"\"09/25/2027" +"NASA Langley Research Center"\"Issued"\"LAR-17514-1"\8196858\"12/721,833"\"Mars Airplane"\"02/15/2031" +"NASA Langley Research Center"\"Issued"\"LAR-17526-1"\7991595\"12/138,768"\"Adaptive Refinement Tools (ARTs) for Tetrahedral Unstructured Grids"\"06/07/2029" +"NASA Langley Research Center"\"Issued"\"LAR-17528-1"\7878348\"12/248,339"\"Lightweight Lunar Surface Remote Manipulator System (LSRMS)"\"10/09/2028" +"NASA Langley Research Center"\"Issued"\"LAR-17535-1"\8206674\"12/152,414"\"High Pressure Boron Vaporization Synthesis Of Few-Walled Boron Nitride Nanotube Fibers"\"04/13/2030" +"NASA Langley Research Center"\"Issued"\"LAR-17539-1"\8164328\"12/493,573"\"Development Of Eddy Current Techniques For The Detection Of Stress Corrosion Cracking In Space Shuttle Primary Reaction Control Thrusters"\"01/08/2030" +"NASA Langley Research Center"\"Issued"\"LAR-17547-1"\7848381\"12/366,722"\"Line Tunable Visible and Ultraviolet Laser"\"07/05/2029" +"NASA Langley Research Center"\"Issued"\"LAR-17553-1"\8257491\"12/288,379"\"NEW RHOMBOHEDRAL ALIGNMENT OF CUBIC SEMICONDUCTOR ON TRIGONAL SUBSTRATE AT A HIGH TEMPERATURE"\"07/06/2031" +"NASA Langley Research Center"\"Issued"\"LAR-17554-1"\7769135\"12/288,380"\"X-ray Diffraction Wafer Mapping Method for Rhombohedral Super-Hetero-Epitaxy"\"10/20/2028" +"NASA Langley Research Center"\"Application"\"LAR-17555-1"\0\"13/020,194"\"Front-Flight-Path Turbulence & Vortex Detection System"\ +"NASA Langley Research Center"\"Issued"\"LAR-17573-1"\7855368\"12/178,173"\"Air Coupled Acoustic Thermography Nondestructive Evaluation System And Method"\"10/09/2028" +"NASA Langley Research Center"\"Issued"\"LAR-17576-1"\7742663\"12/261,376"\"Innovative Structural Design And Materials For Transmission To And Protection Of Ultraviolet And Infrared Radiation Sensors"\"10/30/2028" +"NASA Langley Research Center"\"Issued"\"LAR-17579-1"\8673649\"12/463,475"\"Wireless Chemical Sensing Using Changes To An Electrically Conductive Reactant Within Sensor's Magnetic Field"\"01/04/2031" +"NASA Langley Research Center"\"Issued"\"LAR-17593-1"\8167204\"12/253,422"\"Open Circuit Damage Location Sensor Having No Electrical Connections"\"10/30/2030" +"NASA Langley Research Center"\"Issued"\"LAR-17608-1"\7901611\"12/274,652"\"Methodology for calculating fiber distribution during electrospinning"\"01/12/2029" +"NASA Langley Research Center"\"Issued"\"LAR-17609-1"\8255732\"12/429,603"\"A Self-Stabilizing Byzantine-Fault-Tolerant Clock Synchronization Protocol"\"12/30/2030" +"NASA Langley Research Center"\"Issued"\"LAR-17629-1"\7813599\"12/390,606"\"A Method for Shape Determination of Multi-Core Optical Fiber"\"02/23/2029" +"NASA Langley Research Center"\"Issued"\"LAR-17634-1"\7893602\"12/328,162"\"Distributed transducer capable of generating or sensing a transverse point load"\"03/14/2029" +"NASA Langley Research Center"\"Application"\"LAR-17636-1"\0\"13/752,495"\"PICA on Edge: Edgewise strips of PICA ablator to eliminate gaps in capsule heat shield"\"01/29/2033" +"NASA Langley Research Center"\"Issued"\"LAR-17638-1"\8508413\"13/082,839"\"Fractal Dielectric Microstrip Antenna using Patterned Substrate Material Geometries"\"03/02/2032" +"NASA Langley Research Center"\"Issued"\"LAR-17651-1"\8259104\"12/493,666"\"Domain Decomposition By the Advancing-Partition Method for Parallel Unstructured Grid Generation"\"03/09/2031" +"NASA Langley Research Center"\"Issued"\"LAR-17655-1"\8111832\"12/424,793"\"Local Intelligence Based Impedance Optimization Scheme for Adaptive Noise Reduction"\"06/25/2030" +"NASA Langley Research Center"\"Issued"\"LAR-17656-1"\8108178\"12/467,475"\"DIRECTED DESIGN OF EXPERIMENTS FOR VALIDATING PROBABILITY OF DETECTION CAPABILITY OF NDE SYSTEMS (DOEPOD)"\"05/05/2030" +"NASA Langley Research Center"\"Application"\"LAR-17668-1"\0\"12/322,591"\"Device for the Large-Scale synthesis of High-Quality Boron Nitride Nanotubes"\"02/04/2029" +"NASA Langley Research Center"\"Issued"\"LAR-17681-1"\8347479\"12/849,906"\"Thermally-Activated Crack Healing Mechanism for Metallic Materials"\"04/30/2031" +"NASA Langley Research Center"\"Application"\"LAR-17681-2"\\"13/719,740"\"System for Repairing Cracks in Structures"\"08/04/2030" +"NASA Langley Research Center"\"Issued"\"LAR-17681-3"\8679642\"14/037,850"\"System for Repairing Cracks in Structures"\"08/04/2030" +"NASA Langley Research Center"\"Application"\"LAR-17689-1"\0\"12/393,289"\"Negative Dielectric Constant Material Based on Ion Conducting Materials"\"08/20/2031" +"NASA Langley Research Center"\"Application"\"LAR-17694-1"\0\"12/974,359"\"A Synthetic Quadrature Phase Detector/Demodulator for Fourier Transform Spectrometers"\"03/09/2032" +"NASA Langley Research Center"\"Issued"\"LAR-17695-1"\8658004\"12/470,689"\"Vapor-Barrier Vacuum Isolation System"\"08/01/2032" +"NASA Langley Research Center"\"Application"\"LAR-17696-1"\0\"12/543,686"\"Asymmetric Dielectric Elastomer Composite Material"\"03/16/2031" +"NASA Langley Research Center"\"Issued"\"LAR-17705-1"\8672107\"13/042,655"\"Tunable damper capable of tailoring the structural damping for individual modes of vibration using minimal space and minimal impact on the system frequencies and mode shapes."\"11/28/2031" +"NASA Langley Research Center"\"Issued"\"LAR-17709-1"\7912101\"12/628,423"\"Increased Efficiency Nonlinear Optical Interactions"\"12/01/2029" +"NASA Langley Research Center"\"Issued"\"LAR-17711-1"\8179203\"12/569,984"\"Wireless Electrical Applications/Devices Using floating Electrodes Electromagnetically Coupled to Open-Circuit Devices"\"07/09/2030" +"NASA Langley Research Center"\"Application"\"LAR-17723-1"\0\"12/699,334"\"Novel material for wound healing applications."\ +"NASA Langley Research Center"\"Issued"\"LAR-17724-1"\8378659\"12/703,221"\"Electroactive polymer fibers for structural health monitoring."\"01/22/2031" +"NASA Langley Research Center"\"Issued"\"LAR-17735-1"\8490463\"12/881,431"\"Assessment and Calibration of Crimp Tool Equipped with Ultrasonic Analysis, including Phantom Construction"\"10/22/2031" +"NASA Langley Research Center"\"Issued"\"LAR-17736-1"\8147920\"12/370,755"\"Controlled Deposition And Alignment Of Carbon Nanotubes (Continuation of LAR 16499-1)"\"02/13/2029" +"NASA Langley Research Center"\"Application"\"LAR-17738-1"\0\"12/685,280"\"Sensory Metallic Materials"\ +"NASA Langley Research Center"\"Issued"\"LAR-17743-1"\8473663\"13/011,198"\"Reconfigurable Peripheral Component Interconnect local bus controller and target design."\"10/07/2031" +"NASA Langley Research Center"\"Issued"\"LAR-17745-1"\7906043\"12/550,431"\"Electrically Conductive, Optically Transparent Polymer/Carbon Nanotube Composites And Process For Preparation Thereof"\"11/01/2022" +"NASA Langley Research Center"\"Application"\"LAR-17877-1"\\"13/277,859"\"Autonomous Leading-Edge Slat Device for Reduction of Aeroacoustic Noise Associated with Aircraft Wings"\ +"NASA Langley Research Center"\"Application"\"LAR-17747-1"\0\"13/029,471"\"Temperature Sensing Using Temperature Sensitive Dielectric Material in Proximity to Open-Circuit Sensors Having No Electrical Connections"\ +"NASA Langley Research Center"\"Application"\"LAR-18090-1"\\"13/786,608"\"No Moving Part - Variable Frequency Fluidic Oscillator"\"03/06/2033" +"NASA Langley Research Center"\"Application"\"LAR-17747-1-CON"\\"14/193,861"\"Wireless Temperature Sensor Having No Electrical Connections and Sensing Method for Use Therewith"\"02/17/2031" +"NASA Langley Research Center"\"Issued"\"LAR-17748-1"\8303922\"12/546,185"\"Exfoliation of Hexagonal Boron Nitride"\"11/19/2030" +"NASA Langley Research Center"\"Issued"\"LAR-17759-1"\7935414\"12/406,315"\"Multilayer Electroactive Polymer Composite Material (Continuation of LAR 17112-1)"\"03/18/2029" +"NASA Langley Research Center"\"Issued"\"LAR-17766-1"\8452073\"12/750,991"\"Method for Closed Loop Process Control for Electron Beam Freeform Fabrication and Deposition Processes"\"10/02/2031" +"NASA Langley Research Center"\"Application"\"LAR-17769-1"\0\"12/894,279"\"Modifying Surface Energy via Laser Ablative Surface Patterning"\ +"NASA Langley Research Center"\"Application"\"LAR-17777-1"\\"13/443,940"\"Process to Fabricate Specific Sized Monodisperse Polystryene Microparticles"\ +"NASA Langley Research Center"\"Application"\"LAR-17780-1"\0\"12/387,703"\"Boron Nitride Nanotube Fibrils and Yarns (Filed by JLabs, their ref: ID 1248/Docket 2025(JSA)"\ +"NASA Langley Research Center"\"Application"\"LAR-17786-1"\0\"12/964,381"\"Smart Optics Material Characterization System"\ +"NASA Langley Research Center"\"Application"\"LAR-17789-1"\0\"12/969,076"\"Electroactive scaffold"\ +"NASA Langley Research Center"\"Application"\"LAR-17791-1"\0\"13/070,552"\"Apparatus and Method for Selective Enhancement of Surface Plasmon Polaritons to Initiate and Sustain Low Energy Nuclear Reactions in Metal Hydride Systems"\ +"NASA Langley Research Center"\"Issued"\"LAR-17799-1"\8655513\"13/046,030"\"Realtime 3-D Image Processing and Enhancement"\"05/25/2031" +"NASA Langley Research Center"\"Application"\"LAR-17800-1"\0\"13/527,638"\"Method for generating laser linear frequency modulation waveform"\ +"NASA Langley Research Center"\"Application"\"LAR-17801-1"\0\"13/566,077"\"Coherent Doppler lidar for measuring altitude, ground velocity, and air velocity of aircraft and spaceborne vehicles"\"08/03/2032" +"NASA Langley Research Center"\"Application"\"LAR-17813-1"\0\"13/198,817"\"Durable Joining Technology for Uniformly-Curved Composite Sandwich Structures"\"08/17/2032" +"NASA Langley Research Center"\"Application"\"LAR-17813-1-CON"\\"14/200,708"\"Systems, Apparatuses, and Methods for Using Durable Adhesively Bonded Joints for Sandwich Structures"\"08/05/2031" +"NASA Langley Research Center"\"Application"\"LAR-17830-1"\0\"12/925,047"\"Actuators and Sensors Fabricated with Boron Nitride Nanotubes (BNNTs) and BNNT Polymer Composites"\ +"NASA Langley Research Center"\"Issued"\"LAR-17831-1"\8651429\"13/214,453"\"Blended Cutout Flap Design for the Reduction of Jet-Flap Interaction Noise"\"08/22/2031" +"NASA Langley Research Center"\"Application"\"LAR-17832-1"\0\"13/214,469"\"Aircraft Engine Nozzle Systems for Jet Noise Reduction by Acoustic Shielding"\ +"NASA Langley Research Center"\"Application"\"LAR-17833-1"\0\"13/214,481"\"Active Aircraft Pylon Noise Control System"\ +"NASA Langley Research Center"\"Issued"\"LAR-17836-1"\8671763\"12/850,708"\"Sub-Surface Windscreen for Outdoor Measurement of Infrasound"\"02/18/2031" +"NASA Langley Research Center"\"Application"\"LAR-17841-1"\0\" 14/202,699"\"High Mobility Transport Layer Structures for Rhombohedral Si/Ge/SiGe Devices"\"03/10/2034" +"NASA Langley Research Center"\"Application"\"LAR-17848-1"\0\"13/796,626"\"Spectroscopy using Electric Permittivity, Magnetic Permeability and Electrical Conductivity Spatial Profiles"\"03/12/2033" +"NASA Langley Research Center"\"Issued"\"LAR-17856-1"\8198976\"12/688,309"\"Flexible Thin Metal Film Thermal Sensing System (CIP of LAR 17346-1)"\"09/20/2030" +"NASA Langley Research Center"\"Application"\"LAR-17857-1"\0\"12/967,690"\"A GPS-Based Pitot-Static Calibration Method Using Global Output-Error Optimization"\ +"NASA Langley Research Center"\"Application"\"LAR-17869-1"\\"13/166,226"\"Team Electronic Gameplay Combining Different Means of Control"\ +"NASA Langley Research Center"\"Application"\"LAR-17886-1"\\"13/324,527"\"Method and Apparatus to Detect Wire Pathologies Near Crimped Connector"\ +"NASA Langley Research Center"\"Application"\"LAR-17887-1"\\"13/743,750"\"Interrogations Leading to Recertification of Wire Crimps and Other Joining Technologies."\"01/17/2033" +"NASA Langley Research Center"\"Issued"\"LAR-17888-1"\8605262\"13/167,093"\"Time Shifted PN Codes for CW LIDAR, RADAR, and SONAR"\"12/28/2031" +"NASA Langley Research Center"\"Issued"\"LAR-17894-1"\8494687\"13/166,121"\"3-D Super Resolution Algorithm for Flash LIDAR Image Enhancement"\"12/11/2031" +"NASA Langley Research Center"\"Application"\"LAR-17895-1"\\"13/166,166"\"Method and System for Physiologically Modulating Videogames or Simulations Which Use Motion-Sensing Input Devices"\ +"NASA Langley Research Center"\"Application"\"LAR-17902-1"\\"13/068,329"\"Neutron and Ultraviolet Radiation Shielding Films Fabricated Using Boron Nitride Nanotubes and Boron Nitride Nanotube Composites"\ +"NASA Langley Research Center"\"Application"\"LAR-17906-1"\\"13/272,027"\"Abnormal Grain Growth Suppression in Aluminum Alloys"\ +"NASA Langley Research Center"\"Issued"\"LAR-17908-1"\8655094\"13/105,004"\"New Photogrammetry System to Measure Relative 6-Degree-of-Freedom Motion Between Two Bodies Using Heterogeneous Cameras Having Arbitrary Wide-Angle Lenses with Non-Overlapping Fields of View"\"04/23/2032" +"NASA Langley Research Center"\"Application"\"LAR-17918-1"\\"13/136,216"\"High Kinetic Energy Penetrator Shielding and High Wear Resistance Materials Fabricated with Boron Nitride Nanotubes (BNNTs) and BNNT Polymer Composites"\ +"NASA Langley Research Center"\"Issued"\"LAR-17919-1"\8661653\"13/191,882"\"Z-Shields from Fiber Metal Laminate"\"07/27/2031" +"NASA Langley Research Center"\"Application"\"LAR-17919-2"\\"13/963,484"\"Z-Shields from Fiber Metal Laminate"\"07/27/2031" +"NASA Langley Research Center"\"Application"\"LAR-18097-1"\\"13/591,320"\"Arbitrary Shape Initialization of Fiber Optic Shape Sensing Systems"\"08/22/2032" +"NASA Langley Research Center"\"Application"\"LAR-17923-1"\\"13/411,793"\"A Method of Creating Micro-scale Silver Telluride Grains Covered with Bismuth Nanospheres as Nano-bridges for Thermoelectric Application"\"11/14/2032" +"NASA Langley Research Center"\"Application"\"LAR-17947-1"\\"13/775,809"\"Linear Fresnel Spectrometer Chip with Gradient Line Grating"\"02/25/2033" +"NASA Langley Research Center"\"Application"\"LAR-17952-1"\\"13/411,891"\"Multi-Point Interferometric Phase Change Detection Algorithm"\ +"NASA Langley Research Center"\"Application"\"LAR-17958-1"\\"13/195,251"\"Wireless Open-Circuit In-Plane Strain and Displacement Sensors Having No Electrical Connections"\"07/16/2032" +"NASA Langley Research Center"\"Issued"\"LAR-17959-1"\8087494\"12/894,326"\"Method of Making a Composite Panel Having Subsonic Transverse Wave Speed Characteristics (Continuation of LAR 16535-1)"\"09/30/2030" +"NASA Langley Research Center"\"Application"\"LAR-17966-1"\\"13/457,687"\"Wide Bandwidth Magneto-Resistive Sensor Based Eddy Current Probe"\ +"NASA Langley Research Center"\"Application"\"LAR-17967-1"\\"13/293,846"\"Relaxor Piezoelectric Single Crystal Multilayer Stacks for Energy Harvesting Transducers (RPSEHT)"\ +"NASA Langley Research Center"\"Application"\"LAR-17972-1"\\"13/200,314"\"BxCyNz Nanotube Formation via the Pressurized Vapor/Condenser"\ +"NASA Langley Research Center"\"Application"\"LAR-17973-1"\\"13/200,316"\"Efficient Boron Nitride Nanotube (BNNT) and BxCyNz Nanotube Formation via Combined Laser-Gas Flow Levitation (JLab's ref: 2010-09-13-RRW)"\ +"NASA Langley Research Center"\"Application"\"LAR-17977-1"\\"13/447,513"\"Variable Stiffness Shape Adaptive Multi-Layered Polymer Composite"\ +"NASA Langley Research Center"\"Application"\"LAR-17980-1"\\"13/457,540"\"Space Utilization Optimization Tools"\ +"NASA Langley Research Center"\"Application"\"LAR-17984-1"\\"13/326,779"\"FLEXible Side Edge Link (FLEXSEL) for Trailing-Edge Flap Aeroacoustic Noise Reduction"\"12/15/2031" +"NASA Langley Research Center"\"Application"\"LAR-17985-1"\\"13/231,386"\"An Acoustic Beamforming Array Using Feedback-Controlled Microphones for Tuning and Self-Matching of Frequency Response (Michigan State University's ref: TEC2011-0045)"\ +"NASA Langley Research Center"\"Application"\"LAR-17987-1"\\"13/364,814"\"A Self-Stabilizing Distributed Clock Synchronization Protocol For Arbitrary Digraphs"\ +"NASA Langley Research Center"\"Application"\"LAR-17991-1"\\"13/200,315"\"Production Rig for the Synthesis of BNNTs via the PVC Method"\ +"NASA Langley Research Center"\"Issued"\"LAR-17993-1"\8662213\"13/342,264"\"Locomotion of Amorphous Surface Robots"\"05/06/2032" +"NASA Langley Research Center"\"Application"\"LAR-17993-2"\\"14/189,019"\"Locomotion of Amorphous Surface Robots"\"01/03/2033" +"NASA Langley Research Center"\"Application"\"LAR-17994-1"\\"13/273,516"\"Manufacturing of Low Mass, Large-Scale Hierarchical Thin Film Structural Systems"\ +"NASA Langley Research Center"\"Application"\"LAR-17996-1"\\"14/202,289"\"Nanostructure Neutron Converter Layer Development"\"03/10/2034" +"NASA Langley Research Center"\"Issued"\"LAR-18006-1"\8671551\"13/363,413"\"Crimp Quality Assessment from Jaw Position-Ultrasonic Transmission Analysis"\"02/01/2032" +"NASA Langley Research Center"\"Application"\"LAR-18006-2"\\"14/193,086"\"Crimp Quality Assessment from Jaw Position-Ultrasonic Transmission Analysis"\"02/01/2032" +"NASA Langley Research Center"\"Issued"\"LAR-18016-1"\8636407\"13/029,426"\"Wireless Temperature Sensor Having No Electrical Connections and Sensing Method For Use Therewith"\"11/23/2031" +"NASA Langley Research Center"\"Application"\"LAR-18021-1"\\"13/417,347"\"Flap Side Edge Liners for Airframe Noise Reduction"\"07/31/2032" +"NASA Langley Research Center"\"Application"\"LAR-18023-1"\\"13/417,349"\"Landing Gear Door Liners for Airframe Noise Reduction"\"03/12/2032" +"NASA Langley Research Center"\"Application"\"LAR-18024-1"\\"13/417,351"\"External Acoustic Liners for Multi-Functional Aircraft Noise Reduction"\ +"NASA Langley Research Center"\"Application"\"LAR-18026-1"\\"13/286,715"\"Synthesis of Novel Copoly(imide oxetane)s with Unique Surface Properties"\ +"NASA Langley Research Center"\"Application"\"LAR-18257-1"\\"14/105,757"\"A Structural Joint With Multi-Axis Load Carrying Capacity"\"12/13/2033" +"NASA Langley Research Center"\"Issued"\"LAR-18032-1"\8229716\"12/981,432"\"Fast Tracking Methods and Systems for Air Traffic Modeling Using a Monotonic Lagrangian Grid (US Naval Research Laboratory ref: 100148-US2)"\"12/29/2030" +"NASA Langley Research Center"\"Application"\"LAR-18034-1"\\"13/291,372"\"Compact Active Vibration Control System"\ +"NASA Langley Research Center"\"Application"\"LAR-18037-1"\\"13/453,717"\"A Multifunctional Lightning Protection and Detection System for Aerospace Vehicles"\ +"NASA Langley Research Center"\"Application"\"LAR-18040-1"\\"13/986,089"\"Multi-Functional BN-BN Composite"\"03/29/2033" +"NASA Langley Research Center"\"Application"\"LAR-18065-1"\\"13/860,697"\"Variable Acceleration Force Calibration System"\"04/11/2033" +"NASA Langley Research Center"\"Application"\"LAR-18070-1"\\"13/923,307"\"Transparent and Ubiquitous Sensing Technology"\"06/20/2033" +"NASA Langley Research Center"\"Application"\"LAR-18071-1"\\"13/923,312"\"Using Ubiquitous Conductor to Power and Interrogate Wireless Passive Sensors and Construct Sensor Network"\ +"NASA Langley Research Center"\"Application"\"LAR-18073-1"\\"13/941,441"\"Doped Chiral Polymer Negative Index Materials (DCPNIM)"\"07/12/2033" +"NASA Langley Research Center"\"Application"\"LAR-18077-1"\\"13/630,459"\"Flight Deck Technology and Procedure for Pilots to Generate Flight-Optimizing Trajectory Requests that Avoid Nearby Traffic"\"09/28/2032" +"NASA Langley Research Center"\"Application"\"LAR-18089-1"\\"13/786,713"\"Synchronized Sweeping Jet Actuators"\"03/06/2033" +"NASA Langley Research Center"\"Application"\"LAR-18127-1"\\"13/913,782"\"Synergistic Chemical and Topographical Surface Modifications and Articles of Manufacture for Dynamic Insect Adhesion Mitigation"\"06/10/2033" +"NASA Langley Research Center"\"Application"\"LAR-18131-1"\\"13/774,422"\"Puncture- healing Thermoplastic Resin Carbon Fiber Reinforced Composites towards More Damage/Impact Tolerant Systems"\ +"NASA Langley Research Center"\"Application"\"LAR-18132-1"\\"13/673,360"\"Modeling of Laser Ablation and Plume Chemistry in a Boron Nitride Nanotube Production Rig"\"11/09/2032" +"NASA Langley Research Center"\"Application"\"LAR-18143-1"\\"13/694,286"\"In-situ Mechanical Property Measurements of Amorphous Carbon-boron Nitride Nanotube"\"11/15/2032" +"NASA Langley Research Center"\"Application"\"LAR-18144-1"\\"13/836,609"\"Method and System for Physiologically Modulating Videogames and Simulations Which Use Gesture and Body Image Sensing Control Input Devices"\"03/15/2033" +"NASA Langley Research Center"\"Application"\"LAR-18160-1"\\"13/864,396"\"Tension Stiffened and Tendon Actuated Space Manipulators"\"04/17/2033" +"NASA Langley Research Center"\"Application"\"LAR-18166-1"\\"13/764,062"\"Reactive Orthotropic Lattice Diffuser (ROLD) for Reducing Aerodynamic Noise from Aircraft Flap Tips"\"03/12/2032" +"NASA Langley Research Center"\"Application"\"LAR-18179-1"\\"13/792,489"\"Extreme Reduced Instruction Set Computing (xRISC) for High Speed Execution of Computing Algorithms"\"03/11/2033" +"NASA Langley Research Center"\"Application"\"LAR-18183-1"\\"13/834,294"\"Height Control and Deposition Measurement for the Electron Beam Free Form Fabrication (EBF3) Process"\"03/15/2033" +"NASA Langley Research Center"\"Application"\"LAR-18184-1"\\"13/987,706"\"Conductive Polymer/Carbon Nanotube Structural Materials and Methods for Making Same"\"08/23/2033" +"NASA Langley Research Center"\"Application"\"LAR-18186-1"\\"12/482,503"\"Flexible Volumetric Structure"\ +"NASA Langley Research Center"\"Application"\"LAR-18202-1"\\"13/713,033"\"Ground-to-Space Laser Calibration System"\"12/13/2032" +"NASA Langley Research Center"\"Application"\"LAR-18204-1"\\"13/800,379"\"Quasi-Static Electric Field Generator"\"03/13/2033" +"NASA Langley Research Center"\"Application"\"LAR-18211-1"\\"13/781,918"\"A Statistically Based Approach to Broadband Liner Design and Assessment"\"03/01/2033" +"NASA Langley Research Center"\"Application"\"LAR-18217-1"\\"13/771,116"\"A Graphical Acoustic Liner Design and Analysis Tool"\"02/20/2033" +"NASA Langley Research Center"\"Application"\"LAR-18246-1"\\"13/765,714"\"Tethered Vehicle Control and Tracking System"\"02/13/2033" +"NASA Langley Research Center"\"Application"\"LAR-18266-1"\\"14/079,914"\"Airborne Wind Profiling Algorithm for Doppler Wind Lidar (APOLO)"\"11/14/2033" +"NASA Langley Research Center"\"Application"\"LAR-18267-1"\\"13/838,260"\"Method and System for Physiologically Modulating Action Role-playing Open World Video Games and Simulations Which Use Gesture and Body Image Sensing Control Input Devices"\ +"NASA Langley Research Center"\"Application"\"LAR-18270-1"\\"14/079,965"\"Airborne Doppler Wind Lidar Post Data Processing Software DAPS-LV"\"11/14/2033" +"NASA Langley Research Center"\"Application"\"LAR-18301-1"\\"13/838,163"\"Flap Edge Noise Reduction Fins (FENoRFins)"\"03/15/2033" +"NASA Langley Research Center"\"Application"\"LAR-18318-1"\\"14/191,898"\"In-Situ Load System (ILS) for Calibrating and Validating Aerodynamic Properties of Scaled Aircraft in Ground-based Aerospace Testing Applications"\"02/27/2034" +"NASA Langley Research Center"\"Application"\"LAR-18374-1"\\"14/072,019"\"Modulated Sine Waves for Differential Absorption Measurements Using a CW Laser System"\"06/23/2031" +"NASA Glenn Research Center"\"Issued"\"LEW-16183-1"\5866518\"08/786,360"\"PS300 - Self Lubricating Readily Polished High Temperature Composite"\"01/16/2017" +"NASA Glenn Research Center"\"Issued"\"LEW-16519-2"\6291838\"09/448,406"\"Gas Sensing Diode"\"11/15/2019" +"NASA Glenn Research Center"\"Issued"\"LEW-16901-1"\7190741\"10/274,756"\"A Real-Time Signal-To-Noise Ratio Estimation Technique For BPSK And QPSK Modulation Using The Active Communications Channel"\"10/21/2022" +"NASA Glenn Research Center"\"Issued"\"LEW-17153-1"\6550696\"09/794,794"\"Lean Direct Injection Combustor/Multi Point Integrate Module Fuel-Air Mixer"\"02/27/2021" +"NASA Glenn Research Center"\"Issued"\"LEW-17157-1"\6869480\"10/198,668"\"Method For Production Of Atomic Scale Step Height Reference Specimens With Atomically Flat Surfaces"\"07/17/2022" +"NASA Glenn Research Center"\"Issued"\"LEW-17166-1"\7497443\"11/121,850"\"Resilient, Flexible, Pressure-Activated Seal"\"05/03/2025" +"NASA Glenn Research Center"\"Issued"\"LEW-17167-1"\6667725\"10/196,391"\"Radio Frequency (RF) Telemetry System For Sensors And Actuators"\"07/11/2022" +"NASA Glenn Research Center"\"Issued"\"LEW-17170-1"\6706549\"10/124,689"\"Common-Layered Architecture For Semiconductor Silicon Carbide (CLASSiC) Bulk Fabrication"\"04/12/2022" +"NASA Glenn Research Center"\"Issued"\"LEW-17182-1"\7086648\"10/652,088"\"Acoustic Seal"\"08/22/2023" +"NASA Glenn Research Center"\"Issued"\"LEW-17240-1"\7427428\"10/601,657"\"Mechanically Improved Interphase Coating For Silicon-Carbide Fiber-Reinforced Silicon-Carbide Matrix Composites"\"06/24/2023" +"NASA Glenn Research Center"\"Issued"\"LEW-17256-1"\6845664\"10/263,980"\"MEMS Direct Chip Attach (MEMS-DCA) Packaging Methodologies For Harsh Environments"\"10/03/2022" +"NASA Glenn Research Center"\"Issued"\"LEW-17256-2"\7518234\"10/926,206"\"MEMS Direct Chip Attach Packaging Methodologies And Apparatus For Harsh Environments"\"08/25/2024" +"NASA Glenn Research Center"\"Issued"\"LEW-17269-2"\8212138\"11/696,441"\"Reverse-Bias Protected Solar Array With Integrated ByPass Battery"\"04/04/2027" +"NASA Glenn Research Center"\"Application"\"LEW-17269-3"\0\"13/482,493"\"Reverse-Bias Protected Solar Array With Integrated ByPass Battery"\ +"NASA Glenn Research Center"\"Issued"\"LEW-17291-1"\6784276\"10/202,643"\"Improved Processing For Polyimdes Via Concentrated Solid Monomer Reactants Approach"\"07/25/2022" +"NASA Glenn Research Center"\"Issued"\"LEW-17293-1"\7023118\"10/390,256"\"A Comprehensive C++ Controller For A Magnetically Supported Vertical Rotor: Version 1.0"\"03/12/2023" +"NASA Glenn Research Center"\"Issued"\"LEW-17293-2"\6809450\"10/729,580"\"Software For System For Controlling A Magnetically Levitated Rotor"\"12/04/2023" +"NASA Glenn Research Center"\"Issued"\"LEW-17299-1"\6881820\"10/147,477"\"Polyimide Rod-Coil Block Copolymers As Membrane Materials For Ion Conduction"\"05/13/2022" +"NASA Glenn Research Center"\"Issued"\"LEW-17317-1"\7687016\"10/777,630"\"Process For Improving Properties Of Silicon Carbide (SiC) Fibers And SiC Fiber-Reinforced Ceramic Matrix Composites"\"02/13/2024" +"NASA Glenn Research Center"\"Application"\"LEW-17317-2"\0\"12/709,086"\"Process For Improving Properties Of Silicon Carbide (SiC) Fibers And SiC Fiber-Reinforced Ceramic Matrix Composites"\ +"NASA Glenn Research Center"\"Issued"\"LEW-17345-2"\7813406\"11/402,997"\"Temporal Laser Pulse Manipulation Using Multiple Optical Ring Cavities"\"04/13/2026" +"NASA Glenn Research Center"\"Issued"\"LEW-17383-1"\6967462\"10/455,139"\"Wireless Consumer Power"\"06/05/2023" +"NASA Glenn Research Center"\"Application"\"LEW-17458-2"\0\"13/113,458"\"Compact Solid-state Entangled Photon Source"\ +"NASA Glenn Research Center"\"Issued"\"LEW-17483-1"\7191013\"10/983,230"\"Hand Held Device For Wireless Powering And Interrogation Of BioMEMS Sensors And Actuators"\"11/08/2024" +"NASA Glenn Research Center"\"Issued"\"LEW-17484-5"\7268939\"11/363,300"\"Tracking Of Cells With A Compact Microscope Imaging System Using Intelligent Controls"\"02/24/2026" +"NASA Glenn Research Center"\"Issued"\"LEW-17494-1"\7458221\"10/693,850"\"Self-Sealing, Smart, Variable Area Nozzle (S3VAN) For Dynamic Flow Control In Gas Turbine Engines"\"10/23/2023" +"NASA Glenn Research Center"\"Issued"\"LEW-17498-1"\7187835\"11/44,063"\"Selective Wavelength Filtering"\"01/28/2025" +"NASA Glenn Research Center"\"Issued"\"LEW-17510-1"\7416062\"10/693,853"\"Torsional Magnetorheological Fluid Resistant Device (TMRFRD)"\"10/23/2023" +"NASA Glenn Research Center"\"Issued"\"LEW-17517-1"\7326027\"10/856,361"\"Flow-Field Control-Rods To Stabilize Flow In A Centrifugal Compressor"\"05/25/2024" +"NASA Glenn Research Center"\"Issued"\"LEW-17520-1"\7259692\"10/931,205"\"Hybrid Power Management (HPM) Upgrade"\"09/01/2024" +"NASA Glenn Research Center"\"Issued"\"LEW-17551-1"\7410714\"10/891,599"\"Unitized Regenerative Fuel Cell System"\"07/15/2024" +"NASA Glenn Research Center"\"Issued"\"LEW-17561-1"\7400096\"10/894,225"\"Large Area Permanent Magnet ECR Plasma Source"\"07/19/2024" +"NASA Glenn Research Center"\"Issued"\"LEW-17589-1"\7305935\"10/925,499"\"Slotted Antenna Rectangular Waveguide Plasma Source For Ion Beam And Electron Beam Production"\"08/25/2024" +"NASA Glenn Research Center"\"Issued"\"LEW-17592-1"\7704622\"10/926,457"\"New Ion Conducting Organic/Inorganic Hybrid Polymers"\"08/26/2024" +"NASA Glenn Research Center"\"Application"\"LEW-17595-1"\0\"13/018,611"\"A Method Of Improving The Thermo-Mechanical Properties Of Fiber-Reinforced Silicon Carbide Matrix Composites"\ +"NASA Glenn Research Center"\"Issued"\"LEW-17605-1"\8394492\"10/974,991"\"Skin Modified Aerogel Monoliths For Improved Ruggedness And Lower Hydrophylicity"\"10/28/2024" +"NASA Glenn Research Center"\"Issued"\"LEW-17618-1"\7015304\"10/897,279"\"High Tg Polyimides For Resin Transfer Molding (RTM)"\"07/23/2024" +"NASA Glenn Research Center"\"Issued"\"LEW-17618-1-REIS"\"RE43,880"\"11/429,639"\"Solvent-Free Low Melt Viscosity Imide Oligomers and Thermosetting Polyimide Composites"\"05/08/2026" +"NASA Glenn Research Center"\"Application"\"LEW-17618-3"\\"13/952,872"\"High Tg Polyimides For Resin Transfer Molding (RTM)"\"07/29/2033" +"NASA Glenn Research Center"\"Issued"\"LEW-17630-1"\7534519\"11/228,185"\"Bi-Electrode Supported Cell For High Power Density Solid Oxide Fuel Cells"\"09/16/2025" +"NASA Glenn Research Center"\"Application"\"LEW-17634-1"\0\"11/228,184"\"Solid Oxide Fuel Cell Stack Design With Bi-Electrode Supported Cells"\ +"NASA Glenn Research Center"\"Application"\"LEW-17634-2"\0\"12/860,210"\"Solid Oxide Fuel Cell Stack Design With Bi-Electrode Supported Cells"\ +"NASA Glenn Research Center"\"Issued"\"LEW-17642-2"\7308164\"11/398,734"\"Energetic Atomic And Ionic Oxygen Textured Optical Surfaces For Blood Glucose Monitoring"\"03/23/2026" +"NASA Glenn Research Center"\"Issued"\"LEW-17642-4"\7305154\"11/483,887"\"Energetic Atomic And Ionic Oxygen Textured Optical Surfaces For Blood Glucose Monitoring"\"07/11/2026" +"NASA Glenn Research Center"\"Issued"\"LEW-17661-1 with LEW-17765-1"\7438030\"11/213,604"\"Method of Fabricating Silicon Carbide Corrugated Diaphragms and Modular Actuator"\"08/26/2025" +"NASA Glenn Research Center"\"Issued"\"LEW-17664-1"\7500350\"11/44,471"\"Elimination Of Lifetime Limiting Mechanism Of Hall Thrusters"\"01/28/2025" +"NASA Glenn Research Center"\"Issued"\"LEW-17671-1"\7493869\"11/311,183"\"Very Large Area/Volume Microwave ECR Plasma And Ion Source"\"12/16/2025" +"NASA Glenn Research Center"\"Issued"\"LEW-17672-1"\7261783\"10/946,286"\"Low Density High Creep Resistant Single Crystal Superalloy For Turbine Airfoils"\"09/22/2024" +"NASA Glenn Research Center"\"Issued"\"LEW-17678-1"\7624566\"11/40,304"\"Magnetic Circuit For Hall Effect Plasma Accelerator"\"01/18/2025" +"NASA Glenn Research Center"\"Issued"\"LEW-17694-1"\7397978\"11/180,990"\"Carrier Structure For Packaging Microphotonic Millimeter-Wave Receiver Based On Lithium Niobate Electro-Optic Resonator Disk Technology"\"07/13/2025" +"NASA Glenn Research Center"\"Issued"\"LEW-17704-1"\7250723\"11/16,735"\"Cathode Luminescence Light Source For Broad Band Application In The Visible"\"12/21/2024" +"NASA Glenn Research Center"\"Issued"\"LEW-17765-1 with LEW-17661-1"\7438030\"11/213,604"\"Side Sliding Microactuator"\"10/21/2025" +"NASA Glenn Research Center"\"Issued"\"LEW-17786-1"\8197249\"11/412,935"\"Fully-Premixed Low-Emissions High-Pressure Multi-fuel Burner"\"04/28/2026" +"NASA Glenn Research Center"\"Issued"\"LEW-17814-1"\7574137\"11/418,304"\"Multi-wavelength Time-coincident Optical Communications System"\"05/05/2026" +"NASA Glenn Research Center"\"Issued"\"LEW-17820-1"\7755292\"11/625,545"\"Method For Ultraminiature Fiber Light Source"\"01/22/2027" +"NASA Glenn Research Center"\"Issued"\"LEW-17820-2"\8264134\"12/795,356"\"Method For Ultraminiature Fiber Light Source"\"09/11/2032" +"NASA Glenn Research Center"\"Issued"\"LEW-17825-1"\8163243\"11/517,555"\"Zero G Condensing Heat Exchanger With Integral Disinfection"\"09/07/2026" +"NASA Glenn Research Center"\"Issued"\"LEW-17826-1"\7385692\"11/412,924"\"Method And System For Fiber Optic Determination Of Nitrogen And Oxygen Concentrations In Ullage Of Liquid Fuel Tanks"\"04/28/2026" +"NASA Glenn Research Center"\"Issued"\"LEW-17859-1"\7389675\"11/434,578"\"Miniaturized Metal (Metal Alloy)/PdOx/SiC Schottky Diode Gas Sensors For Hydrogen And Hydrocarbons Detection At High Temperatures"\"05/12/2026" +"NASA Glenn Research Center"\"Issued"\"LEW-17859-2"\8001828\"12/143,139"\"Miniaturized Metal (Metal Alloy) PdOx/Sic Hydrogen And Hydrocarbon Gas Sensors"\"06/20/2028" +"NASA Glenn Research Center"\"Issued"\"LEW-17877-1"\7876276\"11/499,982"\"Antenna Near-Field Probe Station Scanner"\"08/02/2026" +"NASA Glenn Research Center"\"Application"\"LEW-17877-2"\\"12/857,004"\"Antenna Near-Field Probe Station Scanner"\ +"NASA Glenn Research Center"\"Issued"\"LEW-17904-1"\7425650\"11/378,553"\"Syntheis Of Asymmetric Dianhydrides"\"03/15/2026" +"NASA Glenn Research Center"\"Issued"\"LEW-17904-2"\7381849\"11/890,104"\"Synthesis Of Asymmetrical Benzophenone Dianhydride And Asymmetrical 6F-Dianhydride And Polyimides Therefrom (ALSO See LEW 18236-1)"\"07/19/2027" +"NASA Glenn Research Center"\"Application"\"LEW-17915-1"\0\"12/536,969"\"Secure Optical Communications Using Quantum Two-Photon Transparency Modulation Spectroscopy"\ +"NASA Glenn Research Center"\"Issued"\"LEW-17916-1"\8052854\"11/754,255"\"Miniature Amperometric Solid Electrolyte Carbon Dioxide Sensor"\"05/25/2027" +"NASA Glenn Research Center"\"Application"\"LEW-17916-2"\\"13/267,978"\"Miniature Amperometric Solid Electrolyte Carbon Dioxide Sensor"\ +"NASA Glenn Research Center"\"Application"\"LEW-17945-1"\0\"11/677,654"\"Portable Unit For Metabolic Analysis PUMA"\ +"NASA Glenn Research Center"\"Issued"\"LEW-17951-1"\8545786\"10/621,752"\"Manufacture Of Porous Net-Shaped Materials Comprising Alpha Or Beta Tricalcium Phosphate Or Mixtures Thereof"\"07/16/2023" +"NASA Glenn Research Center"\"Issued"\"LEW-17954-1"\8016543\"11/695,435"\"Composite Case Armor"\"04/02/2027" +"NASA Glenn Research Center"\"Application"\"LEW-17963-1"\0\"11/860,661"\"Passive Gas/Liquid Separation Within a Fuel Cell or Electrolysis Cell Using A Conductive Porous Separator"\ +"NASA Glenn Research Center"\"Issued"\"LEW-17975-1"\7382944\"11/489,813"\"Aluminization And Hyperthermal Atomic Oxygen Texturing Of Polymethylmethacralate Optical Fibers For Blood Glucose Monitoring"\"07/14/2026" +"NASA Glenn Research Center"\"Issued"\"LEW-17991-1"\7390161\"/0"\"Toughened Composite Structures"\"06/24/2025" +"NASA Glenn Research Center"\"Issued"\"LEW-18003-1"\7583169\"11/689,770"\"RF MEMS Switches Utilizing Non-Metallic Thin Film Cantilevers/Bridges With Controlled Stress And Conductivity"\"03/22/2027" +"NASA Glenn Research Center"\"Issued"\"LEW-18042-1"\8067478\"11/582,693"\"A Method of Crosslinking Aerogels Using a One-pot Reaction Scheme"\"10/16/2026" +"NASA Glenn Research Center"\"Application"\"LEW-18042-2"\0\"13/242,425"\"A Method of Crosslinking Aerogels Using a One-pot Reaction Scheme"\ +"NASA Glenn Research Center"\"Application"\"LEW-18043-1"\7341040\"11/486,460"\"Supercharged Two-Cycle Engines Employing Novel Single Element Reciprocating Shuttle Inlet Valve Mechanisms And With A Variable Compression Ratio"\"07/14/2026" +"NASA Glenn Research Center"\"Application"\"LEW-18048-1"\0\"12/285,157"\"Two And Three Dimensional Near Infrared Subcutaneous Structure Imager Using Adaptive Nonlinear Video Processing"\ +"NASA Glenn Research Center"\"Issued"\"LEW-18049-1"\7909897\"11/946,079"\"Direct Fuel Impingement Planar-Array-Microreactor"\"11/28/2028" +"NASA Glenn Research Center"\"Issued"\"LEW-18054-1"\7501032\"11/364,283"\"High Work Output Ni-Ti-Pt High Temperature Shape Memory Alloys And Associated Processing Methods"\"02/28/2026" +"NASA Glenn Research Center"\"Issued"\"LEW-18059-1"\8242162\"11/956,848"\"Fluorescent On-Off Chemical Sensors"\"11/30/2019" +"NASA Glenn Research Center"\"Issued"\"LEW-18076-1"\7999173\"11/689,431"\"Dust removal from solar cells"\"03/21/2027" +"NASA Glenn Research Center"\"Application"\"LEW-18076-2"\\"13/198,896"\"Dust Removal from Solar Cells"\ +"NASA Glenn Research Center"\"Issued"\"LEW-18089-1"\8077103\"11/774,574"\"Cup Cylindrical Waveguide Antenna"\"07/06/2027" +"NASA Glenn Research Center"\"Issued"\"LEW-18138-1"\7904282\"11/689,874"\"In-Flight Fault Accommodation Through Automated Control Parameter Changes"\"03/22/2027" +"NASA Glenn Research Center"\"Application"\"LEW-18205-1"\0\"12/317,232"\"Branched Rod-Coil Polyimide-poly(ethylene Oxide) (PEO) Copolymers That Are Cured In The Solid State At Ambient Temperatures"\ +"NASA Glenn Research Center"\"Application"\"LEW-18207-1"\0\"11/759,570"\"Circuit For Communication Over DC Power Line Using High Temperature Electronics"\ +"NASA Glenn Research Center"\"Issued"\"LEW-18221-1"\7763325\"11/864,607"\"A Method For Thermal Spraying Of Coatings Using Resonant Pulsed Combustion"\"09/28/2027" +"NASA Glenn Research Center"\"Application"\"LEW-18221-2"\\"12/835,345"\"A Method For Thermal Spraying Of Coatings Using Resonant Pulsed Combustion"\ +"NASA Glenn Research Center"\"Issued"\"LEW-18236-1"\8093348\"11/894,290"\"Synthesis Of Asymmetrical Benzophenone Dianhydride And Asymmetrical 6F-Dianhydride And Polyimides Therefrom"\"08/22/2027" +"NASA Glenn Research Center"\"Application"\"LEW-18236-2"\0\"13/325,626"\"Synthesis Of Asymmetrical Benzophenone Dianhydride And Asymmetrical 6F-Dianhydride And Polyimides Therefrom"\ +"NASA Glenn Research Center"\"Issued"\"LEW-18248-1"\7791552\"11/871,237"\"Cellular Reflectarray Antenna"\"10/12/2027" +"NASA Glenn Research Center"\"Issued"\"LEW-18248-2"\7990327\"12/874,370"\"Cellular Reflectarray Antenna"\"09/02/2030" +"NASA Glenn Research Center"\"Issued"\"LEW-18253-1"\8191426\"12/133,743"\"Low TCR Nanocomposite Strain Gages"\"06/05/2028" +"NASA Glenn Research Center"\"Issued"\"LEW-18254-1"\7876423\"12/163,382"\"Simultaneous Non-Contact Precision Measurement Of Microstructual And Thickness Variation In Dielectric Materials Using Terahertz Energy"\"06/27/2028" +"NASA Glenn Research Center"\"Issued"\"LEW-18255-1"\7630736\"11/541,102"\"Autonomous Wireless Sensor Transceiver"\"05/09/2028" +"NASA Glenn Research Center"\"Issued"\"LEW-18256-1"\7688117\"12/081,762"\"An N Channel JFET Based Digital Logic Gate Structure Using Resistive Level Shifters And Having Direct Application To High Temperature Silicon Carbide Electronics"\"04/21/2028" +"NASA Glenn Research Center"\"Issued"\"LEW-18261-1"\7933027\"12/326,436"\"A Software Platform For Post-Processing Waveform-Based NDE"\"12/02/2028" +"NASA Glenn Research Center"\"Application"\"LEW-18291-1"\0\"12/214,114"\"Adaptive Morphological Feature-Based Object Classifier For A Color Imaging System"\ +"NASA Glenn Research Center"\"Application"\"LEW-18296-1"\0\"13/193,160"\"Modular Battery Charge Controller"\ +"NASA Glenn Research Center"\"Issued"\"LEW-18313-1"\7923715\"12/336,503"\"A Novel Nanoionics-based Switch For Radiofrequency (RF) Applications"\"12/06/2028" +"NASA Glenn Research Center"\"Issued"\"LEW-18313-2"\8410469\"13/050,229"\"A Novel Nanoionics-based Switch For Radiofrequency (RF) Applications"\"03/17/2031" +"NASA Glenn Research Center"\"Application"\"LEW-18324-1"\0\"12/195,358"\"Semiconductor Metal Oxide Modified Solid Electrolyte Carbon Dioxide Microsensors With Reduced Operation Temperature"\ +"NASA Glenn Research Center"\"Issued"\"LEW-18325-1"\8415839\"12/319,617"\"External Magnetic Field Reduction Techniquie For Advanced Stirling Radioisotope Generator"\"01/09/2029" +"NASA Glenn Research Center"\"Application"\"LEW-18325-2"\\"13/859,179"\"External Magnetic Field Reduction Techniquie For Advanced Stirling Radioisotope Generator"\"01/09/2029" +"NASA Glenn Research Center"\"Issued"\"LEW-18338-1"\8506787\"12/533/258"\"Advancd Lightweight, High-Strength Electrochemical Cell Design and Structures"\"07/31/2029" +"NASA Glenn Research Center"\"Issued"\"LEW-18340-1"\8091445\"12/431,456"\"Offset Compound Gear Inline Two-Speed Drive"\"04/28/2029" +"NASA Glenn Research Center"\"Issued"\"LEW-18340-2"\8668613\"13/346,959"\"Offset Compound Gear Inline Two-Speed Drive"\"01/10/2032" +"NASA Glenn Research Center"\"Issued"\"LEW-18356-1"\8220989\"12/571,215"\"Device for Measuring the Thermal Conductivity of Small, Highly Insulating Materials"\"09/30/2029" +"NASA Glenn Research Center"\"Issued"\"LEW-18356-2"\8573835\"13/492,181"\"Device for Measuring the Thermal Conductivity of Small, Highly Insulating Materials"\"06/08/2032" +"NASA Glenn Research Center"\"Issued"\"LEW-18362-1"\7872750\"12/285,173"\"Space Radiation Detector with Spherical Geometry"\"09/30/2028" +"NASA Glenn Research Center"\"Issued"\"LEW-18362-2"\8159669\"12/972,624"\"Space Radiation Detector with Spherical Geometry"\"12/20/2030" +"NASA Glenn Research Center"\"Issued"\"LEW-18373-1"\8353209\"12/570,841"\"A Radio Frequency Tank Eigenmode Sensor For Propellant Quantity Gauging"\"02/04/2031" +"NASA Glenn Research Center"\"Issued"\"LEW-18426-1"\8484980\"12/894,346"\"A Free-Jet Dual-Mode Combustor Concept for Wide Operating Range Ramjet Propulsion"\"09/30/2030" +"NASA Glenn Research Center"\"Application"\"LEW-18426-2"\0\"13/941,987"\"A Free-Jet Dual-Mode Combustor Concept for Wide Operating Range Ramjet Propulsion"\"07/15/2033" +"NASA Glenn Research Center"\"Issued"\"LEW-18432-1"\7935601\"12/584,497"\"Addendum of Self-Aligned Ion Implant to Design and Processing of SiC High Temperature Transistors for Durable Operation Above 400 C"\"09/04/2029" +"NASA Glenn Research Center"\"Application"\"LEW-18432-2"\0\"13/078,510"\"Addendum of Self-Aligned Ion Implant to Design and Processing of SiC High Temperature Transistors for Durable Operation Above 400 C"\ +"NASA Glenn Research Center"\"Issued"\"LEW-18458-1"\8386121\"12/791,907"\"Optimal Tuner Selection For Kalman Filter-Based Aircraft Engine Performance Estimation"\"06/02/2030" +"NASA Glenn Research Center"\"Issued"\"LEW-18461-1"\8159238\"12/570,742"\"Method and Circuit for In-Situ Health Monitoring of Solar Cells in Space"\"09/30/2029" +"NASA Glenn Research Center"\"Application"\"LEW-18461-2"\\"13/448,801"\"Method and Circuit for In-Situ Health Monitoring of Solar Cells in Space"\ +"NASA Glenn Research Center"\"Application"\"LEW-18466-1"\0\"12/616,952"\"Spring Tire"\ +"NASA Glenn Research Center"\"Application"\"LEW-18473-1"\0\"12/879,713"\"Ka-Band Waveguide 2-Way Hybrid Combiner for MMIC Amplifiers With Unequal and Arbitrary Power Output Ratio"\ +"NASA Glenn Research Center"\"Issued"\"LEW-18474-1"\8609750\"12/792,380"\"Selective Clay Placement Within A Silicate Clay-Epoxy Blend Nanocomposite"\"06/02/2030" +"NASA Glenn Research Center"\"Issued"\"LEW-18476-1"\8182741\"12/544,742"\"Ball Bearings Comprising Nickel-Titanium And Methods Of Manufacture Thereof"\"08/20/2029" +"NASA Glenn Research Center"\"Application"\"LEW-18476-2"\0\"12/544,674"\"Ball Bearings Comprising Nickel-Titanium And Methods Of Manufacture Thereof"\ +"NASA Glenn Research Center"\"Application"\"LEW-18477-1"\0\"13/242,300"\"Graphene Based Reversible Nano-Switch/Sensor Schottky Diode (nanoSSSD) Device"\ +"NASA Glenn Research Center"\"Issued"\"LEW-18483-1"\8310671\"12/893,627"\"Frame-Transfer Gating (FTG) Raman Spectroscopy for Time-Resolved Multiscalar Combustion Diagnostics"\"09/29/2030" +"NASA Glenn Research Center"\"Application"\"LEW-18486-2"\0\"14/168,830"\"Polyimide Aerogels With Three Dimensional Cross-Linked Structure"\"01/30/2034" +"NASA Glenn Research Center"\"Issued"\"LEW-18491-1"\8209976\"12/323,091"\"Shape Memory Based Actuators and Release Mechanisms"\"11/25/2028" +"NASA Glenn Research Center"\"Application"\"LEW-18492-1"\0\"13/036,887"\"Synthesis Methods, Microscopy Characterization and Device Integration of Nanoscale Metal Oxide Semiconductors for Gas Sensing in Aerospace Applications"\ +"NASA Glenn Research Center"\"Issued"\"LEW-18496-1"\8283172\"12/711,465"\"Process to Produce Iron Nanoparticles - Lunar Dust Simulant Composite"\"02/24/2030" +"NASA Glenn Research Center"\"Application"\"LEW-18500-1"\0\"12/848,903"\"Precision Time Protocol Base Trilateration for Planetary Navigation"\ +"NASA Glenn Research Center"\"Application"\"LEW-18516-1"\0\"13/542,163"\"Hybrid Gear"\ +"NASA Glenn Research Center"\"Issued"\"LEW-18538-1"\8373175\"12/791,276"\"Ohmic Contact to N- and P-type Silicon Carbide"\"06/01/2030" +"NASA Glenn Research Center"\"Application"\"LEW-18542-1"\0\"12/870,475"\"Functionalization of Single Wall Carbon Nanotubes (SWCNTs) by Photooxidation"\ +"NASA Glenn Research Center"\"Application"\"LEW-18554-1"\0\"12/845,998"\"Internal Limit Sensor (ILS)"\ +"NASA Glenn Research Center"\"Application"\"LEW-18561-1"\0\"12/726,926"\"NASA PS400: A New High Temperature Solid Lubricant Coating for High Temperature Wear Applications"\ +"NASA Glenn Research Center"\"Application"\"LEW-18565-1"\0\"13/646,100"\"Catalytic Microtube Rocket Igniter"\"10/05/2032" +"NASA Glenn Research Center"\"Application"\"LEW-18566-1"\0\"12/829,663"\"Low Density, High Creep Resistant Single Crystal Superalloy with Lower Manufacturing Cost"\ +"NASA Glenn Research Center"\"Application"\"LEW-18586-1"\\"13/030,342"\"Shock Sensing Apparatus"\ +"NASA Glenn Research Center"\"Issued"\"LEW-18593-1"\8653693\"13/014,849"\"Integrated Exciter/Igniter"\"01/27/2031" +"NASA Glenn Research Center"\"Issued"\"LEW-18594-1"\8409372\"12/874,523"\"Thermomechanical Methodology for Stabilizing Shape Memory Alloy (SMA) Response"\"09/02/2030" +"NASA Glenn Research Center"\"Application"\"LEW-18594-2"\\"13/845,526"\"Thermomechanical Methodology for Stabilizing Shape Memory Alloy (SMA) Response"\ +"NASA Glenn Research Center"\"Issued"\"LEW-18601-1"\8577504\"12/954,009"\"Inductive Power Device (IDP)"\"11/24/2030" +"NASA Glenn Research Center"\"Application"\"LEW-18604-1"\\"12/894,444"\"Shock Resistant, Debris Tolerant, Lightweight, Corrosion Proof Bearings, Mechanical Components and Mechanisms Made From Hard, Highly Elastic Materials"\ +"NASA Glenn Research Center"\"Issued"\"LEW-18605-1"\8468794\"12/894,565"\"Dual-Mode Hybrid-Engine (DMH-Engine): A Next-Generation Electric Propulsion Thruster"\"09/30/2030" +"NASA Glenn Research Center"\"Application"\"LEW-18605-2"\\"13/713,907"\"Dual-Mode Hybrid-Engine (DMH-Engine): A Next-Generation Electric Propulsion Thruster"\ +"NASA Glenn Research Center"\"Application"\"LEW-18605-3"\\"14/152,125"\"Dual-Mode Hybrid-Engine (DMH-Engine): A Next-Generation Electric Propulsion Thruster"\ +"NASA Glenn Research Center"\"Application"\"LEW-18608-1"\\"12/892,339"\"Liquid Tin Electrodes for Directo Conversion of JP-8 Fuel using the NASA BSC Solid Oxide Fuel Cell"\ +"NASA Glenn Research Center"\"Application"\"LEW-18614-1"\\"13/303,292"\"High-Temperature Thermometer Using Cr-Doped GdAlO3 Broadband Luminescence"\ +"NASA Glenn Research Center"\"Application"\"LEW-18615-1"\\"12/892,278"\"Purify Nanomaterials By Dissolving Excess Reactants And Catalysts In Ferric Chloride"\ +"NASA Glenn Research Center"\"Application"\"LEW-18629-1"\\"13/731,314"\"Electrospray Collection of Lunar Dust"\ +"NASA Glenn Research Center"\"Application"\"LEW-18631-1"\\"13/218,847"\"Circuit for Communication Over Power Lines"\ +"NASA Glenn Research Center"\"Application"\"LEW-18632-1"\\"13/311,987"\"Method For Fabricating Diamond-Dispersed Fiber-Reinforced Composite Coating On Low Temperature Sliding Thrust Bearing Interfaces"\ +"NASA Glenn Research Center"\"Application"\"LEW-18634-1"\\"13/134,959"\"Multi-Parameter Aerosol Scattering Sensor"\ +"NASA Glenn Research Center"\"Issued"\"LEW-18636-1"\8416007\"13/098,918"\"A Source Coupled N Channel JFET Based Digital Logic Gate Structure Using Resistive Level Shifters and Having Direct Application to High Temperature Silicon Carbide Electronics"\"05/02/2031" +"NASA Glenn Research Center"\"Application"\"LEW-18639-1"\\"13/112,293"\"Atomic Oxygen Fluence Monitor"\ +"NASA Glenn Research Center"\"Application"\"LEW-18649-1"\\"12/870,443"\"Ultracapacitor Based Uninterruptible Power Supply (UPS) System"\ +"NASA Glenn Research Center"\"Application"\"LEW-18652-1"\\"13/476,470"\"Polarization Dependent Whispering Gallery Modes in Microspheres"\ +"NASA Glenn Research Center"\"Application"\"LEW-18658-1"\\"13/250,300"\"Levitated Ducted Fan (LDF) Aircraft Auxiliary Generator"\ +"NASA Glenn Research Center"\"Application"\"LEW-18674-1"\\"13/552,760"\"Polymer Electrolyte Based Ambient Temperature Oxygen Microsensors with Extremely Low Power Consumption for Enviromental Monitoring Applications"\ +"NASA Johnson Space Center"\"Application"\"MSC-25349-1"\0\"13/922036"\"Robonaut Teleoperation System"\ +"NASA Glenn Research Center"\"Issued"\"LEW-18691-1"\7588746\"11/431,815"\"Process and Apparatus for Hydrogen and Carbon Production via Carbon Aerosol-Catalyzed Dissociation of Hydrocarbons"\"05/10/2026" +"NASA Glenn Research Center"\"Issued"\"LEW-18692-1"\7332146\"11/148,778"\"Method For Zero Emission Liquid Hydrogen Production From Methane & Landfill Gas"\"06/08/2025" +"NASA Glenn Research Center"\"Application"\"LEW-18693-1"\\"/"\"Process For Hydrogen Production via Integrated Processing of Landfill Gas and Biomass"\ +"NASA Glenn Research Center"\"Application"\"LEW-18694-1"\\"13/075,879"\"Discrete Data Qualification System and Method Comprising Noise Series Fault Detection"\ +"NASA Glenn Research Center"\"Application"\"LEW-18704-1"\\"13/531,763"\"A Hybrid Power Management (HPM) Based Vehicle Architecture"\ +"NASA Glenn Research Center"\"Application"\"LEW-18714-1"\\"13/361,220"\"High Strength Nanocomposite Glass Fibers"\ +"NASA Glenn Research Center"\"Issued"\"LEW-18717-1"\8476979\"13/178,101"\"A Novel Wideband GaN MMIC Distributed Amplifier Based Microwave Power Module for Space Communications, Navigation, and Radar"\"07/07/2031" +"NASA Glenn Research Center"\"Application"\"LEW-18717-2"\\"13/847,779"\"A Novel Wideband GaN MMIC Distributed Amplifier Based Microwave Power Module for Space Communications, Navigation, and Radar"\ +"NASA Glenn Research Center"\"Application"\"LEW-18724-1"\\"13/339,521"\"VESGEN Software for Mapping and Quantification of Vascular Remodeling in Botanical Plant Leaves"\ +"NASA Glenn Research Center"\"Application"\"LEW-18732-1"\\"13/514,582"\"Water Purification by High Voltage, Nanosecond, Non-Equilibrium Plasma: Applications to Human Spaceflight and Terrestrial Point-of-Use"\"08/16/2032" +"NASA Glenn Research Center"\"Application"\"LEW-18736-1"\\"13/534,745"\"Iridium Interfacial Stack (IrIS) Final"\ +"NASA Glenn Research Center"\"Application"\"LEW-18738-1"\\"13/474,948"\"Atmospheric Turbulence Modeling for Aero Vehicles"\ +"NASA Glenn Research Center"\"Application"\"LEW-18752-1"\\"13/686,000"\"Large Strain Transparent Magneto-active Polymer Nanocomposites"\"11/28/2031" +"NASA Glenn Research Center"\"Application"\"LEW-18754-1"\\"13/534,870"\"Method For Making Measurements Of The Post-Combustion Residence Time In A Gas Turbine Engine"\ +"NASA Glenn Research Center"\"Application"\"LEW-18761-1"\\"13/247,601"\"Temperature Sensitive Coating Sensor Based On Hematite"\ +"NASA Glenn Research Center"\"Application"\"LEW-18762-1"\\"13/364691"\"Selenium Interlayer for High-efficiency Multijunction Solar Cell"\ +"NASA Glenn Research Center"\"Application"\"LEW-18768-1"\\"13/788,041"\"Processing of Nanosensors Using a Sacrificial Template Approach"\"03/23/2032" +"NASA Glenn Research Center"\"Application"\"LEW-18769-1"\\"13/537,816"\"Compact, Lightweight, CMC (Ceramic Matrix Composite)-Based Acoustic Liner for Subsonic Jet Aircraft Engines--Offering High Temperature Capability, Weight Reduction, and Broadband Acoustic Treatment"\ +"NASA Glenn Research Center"\"Application"\"LEW-18771-1"\\"13/301,249"\"Integrated Temperature and Capacitive Ablation Recession Rate Sensors"\ +"NASA Glenn Research Center"\"Application"\"LEW-18785-1"\\"13/246,440"\"Method to Pre-Stress Shock Resistant Mechanical Components and Mechanisms made from Hard, Highly Elastic Materials"\ +"NASA Glenn Research Center"\"Application"\"LEW-18789-1"\\"13/771,833"\"Method to Increase Performance of Foil Bearings Through Passive Thermal Management"\"02/27/2032" +"NASA Glenn Research Center"\"Application"\"LEW-18797-1"\\"13/714,906"\"High Speed, Compliant, Planetary Flywheel Touchdown Bearing"\"12/16/2031" +"NASA Glenn Research Center"\"Application"\"LEW-18802-1"\\"13/534,804"\"Alpha-STREAM Convertor - A Stirling Engine with no moving parts, eliminated streaming losses, high efficiency, low cost fabrication, and electronic wave modulation."\ +"NASA Glenn Research Center"\"Application"\"LEW-18809-1"\\"13/410,663"\"Sampling and Control Circuit Board for an Inertial Measurement Unit"\"08/03/2032" +"NASA Glenn Research Center"\"Application"\"LEW-18816-1"\\"13/749,773"\"High Speed Edge Detecting Circuit For Use With Linear Image Sensor"\"06/01/2032" +"NASA Glenn Research Center"\"Application"\"LEW-18821-1"\\"13/561,359"\"Dopant Selective Reactive Ion Etching of Silicon Carbide"\"07/30/2032" +"NASA Glenn Research Center"\"Application"\"LEW-18822-1"\\"13/524,327"\"Planar Modular Package"\ +"NASA Glenn Research Center"\"Application"\"LEW-18825-1"\0\"13/804,546"\"Porous Cross-Linked Polyimide-UREA Networks"\"03/14/2033" +"NASA Glenn Research Center"\"Application"\"LEW-18837-1"\\"13/527,181"\"In-Situ Solid Particle Generator"\ +"NASA Glenn Research Center"\"Application"\"LEW-18844-1"\\"13/918,333"\"Electrospun Nanofiber Coating Of Fiber Materials: A Composite Toughening Approach"\"06/14/2033" +"NASA Glenn Research Center"\"Application"\"LEW-18849-1"\\"13/906,521"\"Paired Threaded Film Cooling Holes for Improved Turbine Film Cooling"\"05/31/2033" +"NASA Glenn Research Center"\"Application"\"LEW-18858-1"\\"13/904,513"\"V-Cess: A Novel Flow Control Method Using A Shaped Recess"\"05/29/2033" +"NASA Glenn Research Center"\"Application"\"LEW-18862-1"\\"13/474,972"\"Cascading TESLA oscillating flow diode for Stirling Engine Gas Bearings"\ +"NASA Glenn Research Center"\"Application"\"LEW-18864-1"\\"13/756,855"\"Polyimide Aerogel Thin Films"\"02/03/2032" +"NASA Glenn Research Center"\"Application"\"LEW-18873-1"\\"13/968,000"\"High Temperature Single Crystal Preloader"\"08/15/2033" +"NASA Glenn Research Center"\"Application"\"LEW-18887-1"\\"13/756,604"\"Fuzzy Neuron: Method and Hardware Realization"\"02/01/2033" +"NASA Glenn Research Center"\"Application"\"LEW-18889-1"\\"13/713,846"\"High Speed Idle Engine Control Mode"\"12/13/2032" +"NASA Glenn Research Center"\"Application"\"LEW-18890-1"\\"13/871,114"\"Suppression Of Unwanted Noise And Howl In A Test Configuration Where A Jet Exhaust Is Discharged Into A Duct"\ +"NASA Glenn Research Center"\"Application"\"LEW-18891-1 with LEW-18611-1 and LEW-18895-1"\\"13/723,598"\"G6 Flywheel Design"\"12/23/2031" +"NASA Glenn Research Center"\"Application"\"LEW-18893-1"\\"13/653,027"\"Novel Aerogel-Based Antennas (ABA) for Aerospace Applications"\ +"NASA Glenn Research Center"\"Application"\"LEW-18900-1"\\\"High Efficiency, High Temperature Titanium Heat Pipe Radiator for Space Power and Propulsion Systems"\ +"NASA Glenn Research Center"\"Application"\"LEW-18902-1"\\"14/094,006"\"Analog Correlator Based on One Bit Digital Correlator"\"12/02/2033" +"NASA Glenn Research Center"\"Application"\"LEW-18903-1"\\"13/923,441"\"Modeling and Simulation of a Solar Electric Propulsion Vehicle in Near-Earth Vicinity Including Solar Array Degradation"\"06/21/2033" +"NASA Glenn Research Center"\"Application"\"LEW-18919-1"\\"13/645,799"\"Wireless Controlled Chalcogenide Nanoionic Radio Frequency Switch"\"04/04/2032" +"NASA Glenn Research Center"\"Application"\"LEW-18923-1"\\"13/963,060"\"New Power Source For Deep Space Missions- Utilizing The Doubly Exothermic Reaction Between Deuterium And Palladium To Produce Electrical Power"\"08/09/2033" +"NASA Glenn Research Center"\"Application"\"LEW-18928-1"\\\"Pt-Ti-Si Simultaneous Ohmic Contacts to N- and P-Type Silicon Carbide"\ +"NASA Glenn Research Center"\"Application"\"LEW-18934-1"\\"13/900,642"\"Conditionally Active Min-Max Limit Regulators"\"05/23/2033" +"NASA Glenn Research Center"\"Application"\"LEW-18939-1"\\"13/916,797"\"Magnetostrictive Alternator - Low cost, No moving part, High Efficiency, Oscillating Acoustic Pressure Wave to Electric Power Transducer"\"06/13/2033" +"NASA Glenn Research Center"\"Application"\"LEW-18942-1"\\"13/771,920"\"Adaptive Phase Delay Generator"\"02/20/2033" +"NASA Glenn Research Center"\"Application"\"LEW-18949-1"\\"13/923,450"\"Advanced High Temperature and Fatigue Resistant Environmental Barrier Coating Bond Coat Systems for SiC/SiC Ceramic Matrix Composites"\"06/21/2033" +"NASA Glenn Research Center"\"Application"\"LEW-18952-1"\\\"A Novel Real Time Adaptive Filter For The Reduction Of Artifacts In Functional Near Infrared Spectroscopy Signals"\ +"NASA Glenn Research Center"\"Application"\"LEW-18957-1"\\"14/048,895"\"Dynamic Range Enhancement Of High-Speed Data Acquisition Systems By Reversible Non-Linear Amplitude Compression"\"10/08/2033" +"NASA Glenn Research Center"\"Application"\"LEW-18960-1"\\"13/891,461"\"Dry Snorkel Cold Immersion Suit for Hypothermia Prevention"\"05/11/2032" +"NASA Glenn Research Center"\"Application"\"LEW-18963-1"\\"13/853,308"\"Flywheel Pulse & Glide System for Vehicles"\ +"NASA Glenn Research Center"\"Application"\"LEW-18964-1"\\"13/905,333"\"High Temperature Lightweight Self-Healing Ceramic Composites for Aircraft Engine Applications"\"05/30/2033" +"NASA Glenn Research Center"\"Application"\"LEW-18970-1"\\"14/158,080"\"Methods for Intercalating and Exfoliating Hexagonal Boron Nitride"\"01/17/2034" +"NASA Glenn Research Center"\"Application"\"LEW-18986-1"\\\"Generation Of High Pressure Oxygen Via Electrochemical Pumping In A Multi-Stage Electrolysis Stack"\ +"NASA Glenn Research Center"\"Application"\"LEW-19013-1"\\"14/095,442"\"Spoked Wheel Assembly With Two Rotational Modes"\"12/03/2033" +"NASA Glenn Research Center"\"Application"\"LEW-19029-1"\\"14/191,708"\"Superelastic Ternary Ordered Intermetallic Compounds"\"02/27/2034" +"NASA Glenn Research Center"\"Application"\"LEW-19040-1"\\"14/193,024"\"Fast, Large Area, Wide Band Gap UV Photodetector for Cherenkov Light Detection"\"02/28/2034" +"NASA Glenn Research Center"\"Application"\"LEW-19045-1"\\"13/968,531"\"Multimode Directional Coupler for Measurement and Utilization of Harmonic Frequencies from Traveling Wave Tube Amplifiers"\"08/16/2033" +"NASA Glenn Research Center"\"Application"\"LEW-19053-1"\\"14/193,719"\"Process for Preparing Aerogels from Polyamides"\"02/28/2034" +"NASA Glenn Research Center"\"Application"\"LEW-19067-1"\\\"Plasma Spray-Physical Vapor Deposition (PS-PVD) of Advanced Environmental Barrier Coatings"\ +"NASA Glenn Research Center"\"Application"\"LEW-19077-1"\\\"Improved Composite Damage Tolerance and Through Thickness Conductivity By Interleaving Carbon Fiber Veil Nanocomposites"\ +"NASA Glenn Research Center"\"Application"\"LEW-19080-1"\\\"Crosslinked Polyethylene Aerogels from Low Density Polyethylene, Linear Low Density Polyethylene, and Repurposed Polyethylene"\ +"NASA Glenn Research Center"\"Application"\"LEW-19098-1"\\"61/866,585"\"High Temperature, Flexible Composite Seals for Aeronautics and Space Environments Incorporating Aerogel Insulation"\ +"NASA Glenn Research Center"\"Application"\"LEW-19171-1"\\"61/931,189"\"Low Power Charged Particle Counter for Space Radiation Monitoring"\ +"NASA Marshall Space Flight Center"\"Issued"\"MFS-28402-2"\5780594\"08/448,196"\"Biologically Active Protein Fragments Containing Specific Binding Regions Of Serum Albumin Or Related Proteins"\"07/14/2015" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-28985-1"\5641681\"08/422,963"\"Device And Method For Screening Crystallization Conditions In Solution Crystal Growth"\"04/17/2015" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-31175-2-CIP"\6578851\"09/693,098"\"Gasket Assembly For Sealing Mating Surfaces"\"10/16/2020" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-31243-1"\6459822\" 09/364,919"\"Video Image Stabilization And Registration (VISAR)"\"07/26/2019" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-31243-2-CON"\6560375\"10/143,539"\"Video Image Stabilization And Registration"\"05/10/2022" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-31258-1"\6135255\"09/207,710"\"Releasable Conical Roller Clutch"\"12/09/2018" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-31294-2-CIP2"\6592687\"10/196,389"\"Aluminum Alloy And Article Cast Therefrom"\"07/11/2022" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-31294-5-CIP"\6399020\"09/688,729"\"Aluminum-Silicon Alloy Having Improved Properties At Elevated Temperatures And Articles Cast Therefrom"\"10/11/2020" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-31294-6-CIP"\6419769\"09/749,503"\"Aluminum-Silicon Alloy Having Improved Properties At Elevated Temperatures And Process For Producing Cast Articles Therefrom"\"12/22/2020" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-31294-7-CIP"\6669792\"09/800,312"\"Process For Producing A Cast Article From A Hypereutectic Aluminum-Silicon Alloy"\"03/02/2021" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-31303-1"\6748349\"09/313,576"\"Generalized Fluid System Simulation Program (GFSSP) Version 2.01c"\"05/07/2019" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-31387-1"\6361961\"09/560,532"\"GRAVITY RESPONSIVE NADH OXIDASE OF THE PLASMA MEMBRANE"\"04/25/2020" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-31399-1"\6658329\"10/138,887"\"Addition Of Rangefinder To The Video Guidance Sensor"\"06/05/2022" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-31413-1"\6497355\"09/690,035"\"Precision Penetration Control System For The Friction Stir Welding (FSW) Retractable Pin Tool"\"10/19/2020" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-31475-1"\6424470\"09/616,624"\"Panoramic Refracting Optic (PRO)"\"07/28/2020" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-31475-2-DIV"\6580567\"10/173,410"\"Panoramic Refracting Conical Optic"\"06/17/2022" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-31488-1"\6028693\"09/7,124"\"Microresonator And Associated Method For Producing And Controlling Photonic Signals With A Photonic Bandgap Delay Apparatus"\"01/14/2018" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-31490-1"\7118074\"10/690,161"\"Electrodynamic Tether System Design For Spacecraft Deorbit"\"10/17/2023" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-31529-1"\7081730\"10/857,375"\"Micro-Commanding Servo Motor Controller With Greater Than Fifty Million To One Dynamic Rate Range"\"06/19/2024" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-31559-1-CON"\8127977\"13/157,895"\"Phase/Matrix Transformation Weld Process And Apparatus"\"11/27/2021" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-31559-1-DIV"\7980449\"10/385,168"\"Phase/Matrix Transformation Weld Process And Apparatus"\"11/27/2021" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-31559-2-DIV"\8225984\"13/157988"\"Phase/Matrix Transformation Weld Process And Apparatus"\"11/27/2021" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-31565-1"\6885779\"09/877,801"\"Full-Cycle, Low Loss, Low Distortion Phase Modulation From Multi-Layered Dielectric Stack With Terahertz Optical Bandwidth"\"08/17/2022" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-31584-1"\6497091\"09/877,800"\"Hypergolic Ignitor Assembly"\"06/06/2021" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-31584-1-CIP"\6845605\"10/288,800"\"Hypergolic Ignitor"\"01/26/2023" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-31593-1"\6939610\"10/212,564"\"Smart Thermal Management Coating"\"09/20/2022" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-31596-1"\6873762\"10/118,626"\"Fabrication Of Fiber-Optic Gratings Over A Wide Range Of Bragg Wavelength And Bandwidth Using A Single Phase Mask"\"10/12/2022" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-31616-1"\6540426\"09/949,408"\"Passive Ball Capture Latch Docking Mechanism"\"09/04/2021" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-31646-1"\6860099\"10/263,297"\"Liquid Propellant Tracing Impingement Injector"\"05/24/2023" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-31649-1"\7446860\"11/527,648"\"Nonintrusive, Remote, Micron Accuracy, Laser Fresnel Ranging System"\"10/19/2026" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-31698-1"\6802999\"10/173,536"\"Method Of Fabricating A Protective Crucible Wall Coating Incorporating Designed Multi-Use Channels"\"05/02/2023" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-31706-1"\6886392\"10/622,174"\"Single Ball Bearing Lubricant And Material Evaluator"\"07/17/2023" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-31727-1"\6953129\"10/231,428"\"Impact And Fire Resistant Coating For Pressure Vessels"\"11/07/2022" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-31761-1"\6802488\"10/232,974"\"Electro-Mechanically Actuated Propellant Valve"\"01/29/2023" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-31768-1"\6745942\"10/214,482"\"Magnetic Symbology Reader"\"08/05/2022" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-31776-1"\7735265\"11/780,610"\"Foam-Rigidized Inflatable Tubular Space Booms"\"07/20/2027" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-31785-1"\7006203\"10/646,000"\"Integrated Rangefinding Measurement In Video Guidance Sensor"\"08/21/2023" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-31789-1"\7265476\"10/975,121"\"MEMS- Micro-Translation Stage With Indefinite Linear Travel Capability"\"11/01/2025" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-31807-1"\7050161\"10/637,085"\"Global Radius Of Curvature Estimation And Control System For Segmented Mirrors (GRoCECS)"\"01/07/2025" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-31813-1"\7802799\"11/527,653"\"Joining Metallic To Composite Components"\"07/29/2029" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-31815-1"\7325749\"10/738,352"\"Distributed Solid State Programmable Thermostat / Power Controller"\"01/29/2026" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-31817-1"\7515257\"11/14,455"\"Short-Range / Long-Range Integrated Target (SLIT) For Video Guidance Sensor Rendezvous And Docking"\"06/07/2027" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-31823-1-DIV"\7095000\"10/943,827"\"Radio-Frequency Driven Dielectric Heaters For Non-Nuclear Testing In Nuclear Core Development"\"11/27/2024" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-31828-1"\6918970\"10/120,226"\"High Strength Aluminum Alloy For High Temperature Applications"\"04/12/2023" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-31838-1"\7641949\"10/857,379"\"Improved Pressure Vessel Impact Resistance Utilizing Filament Wound Hybrid Fibers"\"10/15/2025" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-31842-1"\7347089\"11/215,749"\"Gas Volume Contents Within A Container, Smart Volume Instrument"\"11/26/2025" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-31843-1"\7174077\"10/631,220"\"Fiber-Coupled Laser Diodes With Even Illumination Pattern"\"07/30/2023" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-31852-1"\7106457\"10/857,372"\"Achromatic Shearing Phase Sensor For Phase Alignment Of A Segmented Telescope"\"01/21/2025" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-31865-1"\6888476\"10/615,369"\"Advanced Video Guidance Sensor Software"\"07/21/2023" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-31886-1"\6850592\"10/321,873"\"Digital Equivalent System (DEDS) For X-Ray Flourescent Spectral Output"\"01/08/2023" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-31891-1"\7375801\"11/108,140"\"Video Sensor With Range Measurement Capability"\"11/06/2025" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-31918-1"\7275675\"10/928,876"\"Optimal Design Geometry For All Friction Stir Weld Tools"\"01/15/2025" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-31944-1"\7017812\"10/730,191"\"Variable Distance Angular Symbology Reader"\"11/26/2023" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32024-1"\8297468\"10/857,380"\"Liquefied Natural Gas Fuel Tank"\"07/13/2021" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32031-1"\7738084\"11/543,284"\"Fiber Optic Liquid Mass Flow Sensor - Improved Prototype Design"\"09/29/2026" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32099-1-CON"\8561829\"13/544,066"\"Composite Pressure Vessel Including Crack Arresting Barrier"\"10/23/2029" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32102-1"\7540143\"11/172,665"\"Heated Pressure Balls Monopropellant Thermal Rocket Engine Cycle"\"12/12/2026" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32105-1-DIV"\7568608\"11/700,972"\"Ultrasonic Stir Welding Process And Apparatus"\"01/29/2027" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32115-1"\7686202\"11/543,287"\"Gimbling Shoulder For Friction Stir Welding"\"06/18/2027" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32136-1"\7595841\"11/174,210"\"Video Image Stabilization And Registration - Plus (VISAR+)"\"12/03/2027" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32137-1"\7177164\"11/376,632"\"Multi-loop High Voltage Power Supply with Fast Rise/Fall Time"\"03/10/2026" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32175-1"\7228241\"11/152,810"\"An Extended Lee-Kesler Equation-of-State (ELK-EoS) For The Volumetric And Thermodynamic Properties Of Propellant Fluids, Including The Non-Polar Quantum And Polar Fluids"\"06/13/2025" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32192-1"\7116098\"11/357,454"\"Absolute Limit Sensor (ALS)"\"02/16/2026" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32208-1"\7259981\"11/296,719"\"Analog Nonvolatile Computer Memory"\"12/14/2025" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32214-1"\7418814\"11/172,666"\"Dual Expander Cycle Rocket Engine Cycle with an Intermediate Brayton Cycle Heat Exchanger"\"12/19/2026" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32228-1"\8290435\"12/241,322"\"Short Range Antenna / Close Proximity Transmitter and Receiver"\"08/17/2031" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32253-1"\7469878\"11/518,733"\"Magnetorestrictive Valves"\"10/17/2026" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32307-1"\7908079\"11/527,658"\"Portable Runway Intersection Display And Monitoring System"\"01/13/2030" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32311-1"\7623621\"12/47,686"\"Identification And Authentication System Using Integrated Optical And X-ray Fluorescene Spectral Methods"\"03/13/2028" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32318-1"\8098060\"12/173,318"\"SCAPS(Single Coil Absolute Position Sensor) GAPSYN (Inductive Gap Sensor) Digital Signal Conditioning Electronics"\"09/29/2030" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32323-1"\8169620\"12/563,819"\"Sub-Pixel Spatial Resolution Interferometry With Interlaced Stitching"\"10/15/2030" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32324-1"\7594530\"11/942,322"\"Orbital Foamed Metal Extruder"\"06/09/2028" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32341-1"\8550468\"12/210,843"\"High Load Fully Retained Dynamic Cryogenic Seal"\"01/09/2032" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32364-1"\7808353\"11/513,433"\"Plasmoid Thruster for Electrode-less, High Specific Impulse Propulsion"\"07/22/2029" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32390-1"\7867589\"11/780,561"\"Hybrid composite cryogenic tank structure"\"10/14/2029" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32400-1"\7900436\"11/780,626"\"Gas Generator Augmented Expander Cycle Rocket Engine"\"01/04/2030" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32402-1"\7911174\"12/39,506"\"Inexpensive, Rate Insensitive, Linear, Load Compensating System for Hybrid Stepper Motors"\"01/25/2029" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32429-1"\7807097\"12/123,170"\"Orbital Batch Process Foamed Aluminum Facility"\"07/11/2028" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32438-1"\8004364\"11/828,563"\"16-Kilowatt (KW) 2-30MHz Solid State Power Amplifier using innovative combining methods"\"11/03/2028" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32439-1"\7831225\"11/828,590"\"H2O-NaCl based radio frequency power load"\"04/07/2029" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32497-1"\7848606\"12/047,805"\"Reprocessing Non-Oxide Optical Fiber Preforms Utilizing an Axial Magnetic Field"\"05/26/2029" +"NASA Marshall Space Flight Center"\"Application"\"MFS-32518-1-CIP"\\"13/452,303"\"Liquid Propellant Injection Elements with Self-Adjusted Inlet Area for Rocket and Other Combustor-Type Engines Applications"\"10/03/2028" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32521-1"\7804600\"12/44,740"\"Dispersive Filter For Enhancement Of Laser Gyroscopes"\"06/10/2029" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32548-1"\7409875\"11/862,793"\"Optical Hotspot Conductive Fluid Flow Sensor"\"09/27/2027" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32558-1"\8490470\"12/569,555"\"True Shear Parallel Plate Viscometer"\"12/04/2031" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32584-1"\7929144\"12/336,260"\"Local Leak Detection and Health Monitoring of Pressurized Tanks in a Space Environment"\"11/17/2029" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32588-1"\8052860\"11/957,051"\"ELECTROCHEMICALLY-ENHANCED MECHANICAL POLISHING OF OPTICS"\"09/06/2030" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32605-1"\8309944\"12/240,626"\"Grazing Incidence Optics for Neutron Analysis and Imaging"\"12/07/2030" +"NASA Marshall Space Flight Center"\"Application"\"MFS-32605-1-CIP"\0\"12/717,450"\"Novel Grazing Incidence Neutron Optics"\"09/29/2028" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32605-1-DIV"\8575577\"13/534,951"\"Novel Grazing Incidence Neutron Optics"\"09/29/2028" +"NASA Marshall Space Flight Center"\"Application"\"MFS-32612-1-CIP"\\"13/796,693"\"Protective Safety Cover for Pool and Spa Drains"\"03/24/2029" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32614-1"\464750\"12/826,887"\"Magnetostrictive Regulator"\"04/03/2031" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32615-1"\8132772\"12/567,451"\"Avionics/Electronics Box Rail Mount System"\"11/27/2030" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32638-1"\8291776\"12/827,515"\"Magnetostrictive Force-to-Angle Sensor"\"03/12/2031" +"NASA Marshall Space Flight Center"\"Application"\"MFS-32642-1"\0\"12/827,598"\"Cryogenic and Non-Cryogenic Optical Liquid Level Instrument for Stratified Conditions"\"04/05/2031" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32651-1"\8090484\"12/403,096"\"A Planar Translation Device for Solar Sail Spacecraft Attitude Control and Maneuvering"\"07/03/2030" +"NASA Marshall Space Flight Center"\"Application"\"MFS-32655-1"\0\"12/862,510"\"AEROSPACE LASER IGNITION/ABLATION VARIABLE, HIGH PRECISION THRUSTER"\ +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32667-1"\8357884\"12/839,848"\"Extraction of Water from the Soil of Space Bodies Using Microwave processes"\"04/22/2031" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32697-1"\8252734\"12/634,502"\"Multi Layered or Mixed Element Aqueous Ionic Fluids As Fuel or Lubrication Friction Modifiers"\"08/26/2030" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32697-1-CIP"\8563487\"13/525,623"\"Multi Layered or Mixed Element Aqueous Ionic Fluids As Fuel or Lubrication Friction Modifiers"\"12/09/2029" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32715-1"\8535440\"12/758169"\"Improvement of Crystalline Quality during Melt Growth of Semiconductors by Mechanically Induced Nucleation"\"07/18/2032" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32719-1"\8564770\"13/150832"\"Field-Deployable Spectral Estimator of Trichloroacetic Acid (TCAA) in Plants"\"05/18/2032" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32733-1"\7621670\"12/392,867"\"Unbalanced Flow Distribution Mixer with Flow Metering Capability"\"02/25/2029" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32737-1"\8448498\"12/870,468"\"Hermetic Seal Leak Detection Apparatus"\"06/06/2031" +"NASA Marshall Space Flight Center"\"Application"\"MFS-32737-1-CIP"\\"13/874182"\"Hermetic Seal Leak Detection Apparatus"\"08/27/2030" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32748-1"\8132961\"12/397,973"\"Optimized Length-to-Diameter Ratio Flow Meter"\"08/16/2030" +"NASA Marshall Space Flight Center"\"Application"\"MFS-32757-1"\0\"13/118086"\"Compliant Mechanical Motor"\ +"NASA Marshall Space Flight Center"\"Application"\"MFS-32761-1-CIP"\\"13/673,309"\"Multi-Channel Flow Plug with Eddy Current Minimization for Metering, Mixing, and Conditioning"\"07/23/2029" +"NASA Marshall Space Flight Center"\"Application"\"MFS-32761-1-CON"\\"13/729,861"\"Multi-Channel Flow Plug with Eddy Current Minimization for Meeting, Mixing, and Conditioning"\"07/23/2029" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32777-1"\8425751\"13/020144"\"Electrodeposited Nickel-Cobalt Alloy Development"\"05/31/2031" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32797-1"\8330961\"12/837,173"\"A compact sensor for in-situ measurements of gas leaks"\"08/24/2031" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32803-1"\8133768\"12/560,371"\"Method of Manufacturing Light Emmitting, Photovoltaic or other Electronic Apparatus"\"05/31/2027" +"NASA Marshall Space Flight Center"\"Application"\"MFS-32809-1"\0\"13/369,704"\"Telemetry encoder/decoder"\ +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32817-1"\8290006\"13/281,025"\"Variable Power Handheld Laser Torch for Joining Processes"\"10/25/2031" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32826-1"\8316884\"12/846,429"\"Drain System for Pools, Spas, and Tanks. (Reference MFS 32612-1)"\"03/23/2031" +"NASA Marshall Space Flight Center"\"Application"\"MFS-33054-1"\\"14/020,326"\"Multi-spacecraft Autonomous Positioning System / Network-Based Navigation"\"09/06/2033" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32830-1"\8420582\"13/027472"\"FRICTION MANAGEMENT USING SOLVENT PARTITIONING OF SINGLE ELEMENT AND MULTI-ELEMENT HYDROPHILIC SURFACE-INTERACTIVE CHEMICALS CONTAINED IN HYDROPHILIC TARGETED EMULSIONS"\"02/15/2031" +"NASA Marshall Space Flight Center"\"Application"\"MFS-32830-1-CIP"\\"13/900,452"\"Friction and Wear Management Using Solvent Partioning of Hydrophilic Surface-Interactive Chemicals contains in Boundary Layer-Targeted Emulsions"\"03/07/2033" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32840-1"\8322685\"12/842,218"\"Non-collinear Valve Actuator"\"04/02/2031" +"NASA Marshall Space Flight Center"\"Application"\"MFS-32841-1"\\"13/424,754"\"DUPLICATE of Telemetry encoder/decoder"\ +"NASA Marshall Space Flight Center"\"Application"\"MFS-32853-1"\\"14/196,203"\"Particle Damping for Vibration Mitigation of Circuit Cards"\"03/04/2034" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32857-1"\8668168\"13/326,513"\"Rocket Vent Design with Variable Flow Control and Rain Protection"\"01/21/2032" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32859-1"\8393520\"13/240,075"\"Variably Pulsed High Power Ultrasonic (HPU) Energy for Ultrasonic Stir Welding (USW)"\"11/07/2031" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32859-1-DIV"\8393523\"13/523,310"\"Pulsed Ultrasonic Stir Welding Method"\"09/22/2031" +"NASA Marshall Space Flight Center"\"Application"\"MFS-32865-1"\\"13/302,734"\"Easily Installed, In-situ Adaptable Flow Measurement Device and Method."\ +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32865-2"\8555731\"13/302,773"\"Easily Installed, In-situ Adaptable Flow Measurement Device and Method."\"06/04/2032" +"NASA Marshall Space Flight Center"\"Application"\"MFS-32865-3"\\"13/302,817"\"Easily Installed, In-situ Adaptable Flow Measurement Device and Method."\ +"NASA Marshall Space Flight Center"\"Application"\"MFS-32865-4"\\"13/302,845"\"Easily Installed, In-situ Adaptable Flow Measurement Device and Method."\"08/23/2032" +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32871-1"\8577519\"13/424,898"\"Low Cost Telemetry System for Small/micro satellites"\"06/13/2032" +"NASA Marshall Space Flight Center"\"Application"\"MFS-32873-1"\\"13/523210"\"High-current, high-voltage switch using non-hazardous liquid metals"\"11/29/2032" +"NASA Marshall Space Flight Center"\"Application"\"MFS-32889-1"\\"13/174,084"\"Pyrotechnic Pipe Plug and Variable Area Flow Meter"\ +"NASA Marshall Space Flight Center"\"Application"\"MFS-32895-1"\\"13/242,734"\"High Powered Ultrasonically Assisted Thermal Stir Welding"\ +"NASA Marshall Space Flight Center"\"Application"\"MFS-32912-1"\\"13/299,930"\"Salt Water Power Load - Part II"\ +"NASA Marshall Space Flight Center"\"Application"\"MFS-32916-1"\\"13/333283"\"Improved Impact Toughness and Heat Treatment for Cast Aluminum Wheels"\ +"NASA Marshall Space Flight Center"\"Application"\"MFS-32924-1"\\"13/312,481"\"Partial Automated Alignment & Integration System"\"07/09/2032" +"NASA Marshall Space Flight Center"\"Application"\"MFS-32934-1"\\"12/833,894"\"Methods, Devices, and Systems Relating to a Sensing Device"\ +"NASA Marshall Space Flight Center"\"Issued"\"MFS-32940-1"\8657179\"13/430,268"\"Closed Loop Temperature Control for the Thermal Stir Welding Process"\"03/26/2032" +"NASA Marshall Space Flight Center"\"Application"\"MFS-32944-1"\\"13/896,137"\"Mitigation of Sonic Boom from Supersonic Vehicles by means of Long Penetration Mode (LPM) Counter-Flowing Cold Gas Jets"\"05/16/2033" +"NASA Marshall Space Flight Center"\"Application"\"MFS-32945-1"\\"14/082,956"\"Piezoelectric Gravity Gradient and Multiple Purpose Sensor Detection System"\"11/18/2033" +"NASA Marshall Space Flight Center"\"Application"\"MFS-32986-1"\\"13/961,573"\"Non-Explosively-Actuated Pressurization Start Valve"\"08/07/2033" +"NASA Marshall Space Flight Center"\"Application"\"MFS-33007-1"\\"14/192,350"\"Carbon Nanotube Tape Vibrating Gyroscope Update"\"02/27/2034" +"NASA Marshall Space Flight Center"\"Application"\"MFS-33022-1"\\"14/192,395"\"A Design Technology to Eliminate Dribble Volume in Rocket Engine Manifolds for Swirl-Coaxial Injectors"\"02/27/2034" +"NASA Marshall Space Flight Center"\"Application"\"MFS-33031-1"\\"13/949,361"\"An aerodynamic design concept for rocket nozzle side load reduction"\"07/24/2033" +"NASA Marshall Space Flight Center"\"Application"\"MFS-33060-1"\\"14/104,881"\"Carbon Nanotube Tape Single Axis Accelerometer"\"12/12/2033" +"NASA Johnson Space Center"\"Issued"\"MSC-21715-2"\5869238\"08/390,904"\"Quantitative Method Of Measuring Cancer Cell Urokinase And Metastatic Potential"\"02/09/2016" +"NASA Johnson Space Center"\"Issued"\"MSC-21947-1"\7541159\"10/828,531"\"MOLECULAR SPECIFIC ANTIBODIES AGAINST UROKINASE"\"08/28/2025" +"NASA Johnson Space Center"\"Issued"\"MSC-22119-1"\5851816\"08/172,962"\"A PROCESS FOR DEVELOPING HIGH-FIDELITY THREE-DIMENSIONAL TUMOR MODELS OF HUMAN PROSTATE CARCINOMA"\"12/22/2015" +"NASA Johnson Space Center"\"Issued"\"MSC-22122-1"\6117674\"08/366,065"\"HORIZONTAL ROTATING-WALL VESSEL PROPAGATION IN IN VITRO HUMAN TISSUE MODELS"\"09/12/2017" +"NASA Johnson Space Center"\"Issued"\"MSC-22489-1"\5827531\"08/349,169"\"Multi-Lamellar, Immiscible-Phase Microencapsulation of Drugs"\"10/27/2015" +"NASA Johnson Space Center"\"Issued"\"MSC-22616-2"\6133036\"09/7,239"\"Preservation Of Liquid Biological Samples"\"12/12/2015" +"NASA Johnson Space Center"\"Issued"\"MSC-22616-3"\6716392\"09/630,979"\"Preservation Of Liquid Biological Samples"\"01/14/2018" +"NASA Johnson Space Center"\"Issued"\"MSC-22633-1"\6485963\"09/587,028"\"Electrically Potentiated Growth Of Mammalian Neuronal Tissue Facilitated By Rotating Wall Vessel Culture"\"06/02/2020" +"NASA Johnson Space Center"\"Issued"\"MSC-22633-2"\6673597\"09/798,854"\"Growth Stimulation Of Biological Cells And Tissue By Electromagnetic Fields And Uses Thereof"\"02/28/2021" +"NASA Johnson Space Center"\"Issued"\"MSC-22695-1"\6261844\"09/213,988"\"A Unique Urine Preservative With Combined Antibacterial And Antioxidant Properties"\"12/17/2018" +"NASA Johnson Space Center"\"Issued"\"MSC-22721-2"\6254359\"09/354,915"\"Blood Pump Bearing System"\"07/09/2019" +"NASA Johnson Space Center"\"Issued"\"MSC-22724-1"\6047216\"09/129,832"\"Millimeter Wave/Microwave Ablation For Treatment Of Atherosclerotic Lesions"\"08/05/2018" +"NASA Johnson Space Center"\"Issued"\"MSC-22724-2"\6226553\"09/501,150"\"Endothelium Preserving Microwave Treatment For Atherosclerosis"\"02/09/2020" +"NASA Johnson Space Center"\"Issued"\"MSC-22724-3"\6223086\"09/504,768"\"Endothelium Preserving Microwave Treatment For Atherosclerosis"\"02/09/2020" +"NASA Johnson Space Center"\"Issued"\"MSC-22724-5"\6496736\"09/500,538"\"Endothelium Preserving Microwave Treatment For Atherosclerosis"\"02/09/2020" +"NASA Johnson Space Center"\"Issued"\"MSC-22757-1"\5879079\"08/917,581"\"Automated Propellant Blending Machine"\"08/20/2017" +"NASA Johnson Space Center"\"Issued"\"MSC-22797-1"\6312398\"08/786,842"\"A Method Of Applying External Power To Assist In The Operation Of Joints In Pressure Suits And Inflatable Structures2283"\"12/19/2016" +"NASA Johnson Space Center"\"Issued"\"MSC-22839-1"\6501414\"09/826,402"\"Locating Concealed Objects Using Spectral Signatures"\"04/02/2021" +"NASA Johnson Space Center"\"Issued"\"MSC-22859-1"\6730498\"09/56,363"\"Production Of 1-25diOH Vitamin D3, Erythropoietin And Other Products By Epithelial And Interstitial Cells In Response To Shear Stress"\"04/08/2017" +"NASA Johnson Space Center"\"Issued"\"MSC-22859-2"\6946246\"09/532,001"\"Production Of Functional Proteins: Balance Of Shear Stress And Gravity"\"03/21/2020" +"NASA Johnson Space Center"\"Issued"\"MSC-22859-3"\7198947\"10/734,759"\"Production Of Functional Proteins: Balance Of Shear Stress And Gravity"\"12/22/2023" +"NASA Johnson Space Center"\"Issued"\"MSC-22859-5"\7972821\"12/174,221"\"Production of Functional Proteins: Balance of Shear Stress and Gravity"\"02/11/2029" +"NASA Johnson Space Center"\"Issued"\"MSC-22863-1"\7122071\"10/263,280"\"Centrifugal Adsorption Cartridge System (CACS)"\"12/21/2022" +"NASA Johnson Space Center"\"Issued"\"MSC-22866-1"\6099864\"09/79,741"\"INSITU Activation Of Microcapsules"\"05/15/2018" +"NASA Johnson Space Center"\"Issued"\"MSC-22900-1"\6231010\"09/236,785"\"Advanced Structural/Inflatable Hybrid Spacecraft Habitation Module"\"01/25/2019" +"NASA Johnson Space Center"\"Issued"\"MSC-23563-2"\8039099\"11/848,332"\"Nanoencapsulated Aerogels Produced By Monomer Vapor Deposition And Polymerization"\"08/13/2028" +"NASA Johnson Space Center"\"Issued"\"MSC-22931-1"\6354540\"09/405,301"\"Electro-Mechanically Actuated Magnetic Ring With Load Sensing Feedback And Closed Loop Control Docking/Berthing System For Alignment And Mating Of Multiple Vehicles, Structures, And/or Assemblies"\"09/20/2019" +"NASA Johnson Space Center"\"Issued"\"MSC-22936-1"\6387399\"09/79,766"\"Protein Crystal Encapsulation Process"\"05/15/2018" +"NASA Johnson Space Center"\"Issued"\"MSC-22936-2"\6558698\"09/733,391"\"Microencapsulated Bioactive Agents And Method Of Making"\"12/06/2020" +"NASA Johnson Space Center"\"Issued"\"MSC-22936-3"\6676964\"09/774,168"\"Method For Determining The Three-Dimensional Structure Of A Protein"\"01/26/2021" +"NASA Johnson Space Center"\"Issued"\"MSC-22936-4"\6599449\"09/774,169"\"X-Ray Crystallography Reagent"\"01/24/2021" +"NASA Johnson Space Center"\"Issued"\"MSC-22937-1"\6214300\"09/79,833"\"Microencapsulation And Electrostatic Processing Device (MEPS)"\"05/15/2018" +"NASA Johnson Space Center"\"Issued"\"MSC-22938-1"\6103271\"09/79,770"\"Low-Shear Microencapsulation & Electrostatic Coating Process"\"05/15/2018" +"NASA Johnson Space Center"\"Issued"\"MSC-22939-4"\7968117\"12/100,009"\"Externally Triggered Microcapsules"\"07/09/2029" +"NASA Johnson Space Center"\"Issued"\"MSC-22970-1"\6253563\"09/337,208"\"Solar-Powered Refrigeration System"\"06/03/2019" +"NASA Johnson Space Center"\"Issued"\"MSC-22970-2"\6469487\"09/838,679"\"Solar Powered Refrigeration System"\"06/03/2019" +"NASA Johnson Space Center"\"Issued"\"MSC-22970-3"\6453693\"09/838,680"\"Solar Powered Refrigeration System"\"06/03/2019" +"NASA Johnson Space Center"\"Issued"\"MSC-23029-1"\6651739\"09/793,817"\"Medium Frequency Pseudo Noise Geological Radar"\"07/20/2021" +"NASA Johnson Space Center"\"Issued"\"MSC-23037-1"\6864473\"09/988,855"\"Variable Shadow Screen For Optical Devices"\"11/14/2021" +"NASA Johnson Space Center"\"Issued"\"MSC-23041-1"\6334302\"09/351,152"\"Variable Specific Impulse Magnetoplasma Rocket (VASIMR)"\"06/28/2019" +"NASA Johnson Space Center"\"Issued"\"MSC-23049-3"\6592579\"09/746,542"\"Method For Selective Thermal Ablation"\"06/28/2021" +"NASA Johnson Space Center"\"Issued"\"MSC-23049-4"\6675050\"09/746,533"\"Computer Program For Microwave Antenna"\"05/07/2021" +"NASA Johnson Space Center"\"Issued"\"MSC-23076-1"\6321746\"09/574,758"\"Collapsable, Light, Portable Human Hyperbaric Chamber/Airlock System"\"05/17/2020" +"NASA Johnson Space Center"\"Issued"\"MSC-23092-1"\6547189\"09/826,403"\"Advanced, Large Volume, Highly Loaded, Hybrid Inflatable Pressure Vessel"\"05/26/2021" +"NASA Johnson Space Center"\"Issued"\"MSC-23153-1"\6995572\"09/803,613"\"Coplanar Waveguide Ice Detection Sensor"\"11/04/2023" +"NASA Johnson Space Center"\"Issued"\"MSC-23154-1"\7113820\"09/906,013"\"A Real-Time, High Frequency QRS Electrocardiograph."\"05/03/2023" +"NASA Johnson Space Center"\"Issued"\"MSC-23154-2"\7539535\"11/345,687"\"A Real-Time, High Frequency QRS Electrocardiograph"\"07/13/2027" +"NASA Johnson Space Center"\"Issued"\"MSC-23178-1"\6997637\"10/5,820"\"Deceleration Limiting Safety Crash Wall"\"05/19/2022" +"NASA Johnson Space Center"\"Issued"\"MSC-23193-1"\6618010\"09/994,989"\"Passive Noncoherent Tracking Of A Data-Modulated Signal"\"11/14/2021" +"NASA Johnson Space Center"\"Issued"\"MSC-23277-1"\7295309\"10/734,753"\"Microcapsule Flow Sensor"\"11/12/2024" +"NASA Johnson Space Center"\"Issued"\"MSC-23303-1"\7397774\"10/446,283"\"Downlink Data Multiplexer"\"01/16/2026" +"NASA Johnson Space Center"\"Issued"\"MSC-23307-1"\6559645\"10/28,962"\"Detection Of Subterranean Metal Objects Using Differential Spectral Processing"\"11/17/2020" +"NASA Johnson Space Center"\"Issued"\"MSC-23309-1"\7040319\"10/87,866"\"Oxygen Partial Pressure Monitoring Device For Aircraft Oxygen Masks."\"04/27/2022" +"NASA Johnson Space Center"\"Issued"\"MSC-23311-1"\6650280\"09/953,612"\"Mass Measurement During Fluid Flow Using An Integrated Sonic/Microwave Detector."\"09/14/2021" +"NASA Johnson Space Center"\"Issued"\"MSC-23314-1"\6899009\"09/892,355"\"Flexshield (Flexible Multi-Shock Shield Technology)"\"06/26/2021" +"NASA Johnson Space Center"\"Issued"\"MSC-23349-1"\7415005\"10/283,354"\"MCC Voice Over Internet Protocol (VOIP)"\"08/08/2026" +"NASA Johnson Space Center"\"Application"\"MSC-23349-2-SB"\0\"12/170,614"\"Ad Hoc Selection of Voice Over Internet Streams"\ +"NASA Johnson Space Center"\"Issued"\"MSC-23424-1"\6985606\"10/212,579"\"Global Distribution Of Large Fluvial Fans/Potential Hydrocarbon Exploration Guide"\"06/12/2024" +"NASA Johnson Space Center"\"Issued"\"MSC-23427-1"\6944504\"10/302,323"\"Microwave Ablation Of Prostatic Cells Using A Separated Antenna Array"\"07/23/2023" +"NASA Johnson Space Center"\"Issued"\"MSC-23436-1"\7126553\"10/679,688"\"Tri-Sector Deployable Array Antenna"\"08/11/2024" +"NASA Johnson Space Center"\"Issued"\"MSC-23443-1"\6647855\"10/263,293"\"Method And Apparatus For Deploying A Hypervelocity Shield"\"09/30/2022" +"NASA Johnson Space Center"\"Issued"\"MSC-23444-1"\6932090\"10/361,046"\"A Simple Countermeasure For Management Of Motion Sickness And Vestibular/Sensory-Motor Problems Associated With Space Flight And Terrestial Motion Sickness"\"07/01/2023" +"NASA Johnson Space Center"\"Issued"\"MSC-23449-1"\7386340\"10/402,866"\"Method For Diagnosis Of Coronary Artery Disease And Related Conditions Using 12-Lead High Frequency QRS Electrocardiography"\"12/30/2025" +"NASA Johnson Space Center"\"Issued"\"MSC-23510-1"\6851647\"10/417,377"\"Portable Catapult Launcher For Small Aircraft"\"04/03/2023" +"NASA Johnson Space Center"\"Issued"\"MSC-23518-1"\7168935\"10/637,086"\"Low Voltage Electron Beam Solid Freeform Fabrication System"\"09/29/2024" +"NASA Johnson Space Center"\"Issued"\"MSC-23538-1"\6943619\"10/443,233"\"Practical Active Capacitor Filter"\"05/21/2023" +"NASA Johnson Space Center"\"Issued"\"MSC-23539-1"\6943621\"10/443,234"\"Auto-Routable, Configurable, Daisy Chainable Data Acquisition System"\"08/16/2023" +"NASA Johnson Space Center"\"Issued"\"MSC-23563-1"\7270851\"10/985,081"\"Nano-Encapsulated Aerogel"\"05/14/2025" +"NASA Johnson Space Center"\"Issued"\"MSC-23594-1"\7125370\"10/845,608"\"Articulating Subject Support For Resistive Exercise In The Horizontal Position"\"02/22/2025" +"NASA Johnson Space Center"\"Issued"\"MSC-23623-1"\7212934\"11/370,379"\"String Resistance Detector Concept"\"03/06/2026" +"NASA Johnson Space Center"\"Issued"\"MSC-23659-1"\7094045\"10/734,754"\"Pulse-Flow Microencapsulation System"\"06/09/2024" +"NASA Johnson Space Center"\"Issued"\"MSC-23659-2"\7588703\"11/428,465"\"Microencapsulation System And Method"\"03/14/2027" +"NASA Johnson Space Center"\"Issued"\"MSC-23668-1"\7250075\"10/874,004"\"Water Outlet Control Mechanism For Fuel Cell System Operation In Variable Gravity Environments"\"11/04/2025" +"NASA Johnson Space Center"\"Issued"\"MSC-23695-1"\7249540\"11/177,652"\"Torquing Tool Attachment For Round Connectors With Attached Cables"\"08/27/2025" +"NASA Johnson Space Center"\"Issued"\"MSC-23781-1"\7410485\"11/40,613"\"Directional Microwave Applicator/Antenna"\"10/16/2026" +"NASA Johnson Space Center"\"Issued"\"MSC-23805-1"\7462141\"11/31,942"\"Advanced Resistive Exercise Device (ARED)"\"01/10/2027" +"NASA Johnson Space Center"\"Issued"\"MSC-23881-1"\7686529\"11/958,908"\"Low Friction, Low Profile, High Moment Two-Axis Joint"\"12/18/2027" +"NASA Johnson Space Center"\"Application"\"MSC-23882-1"\0\"12/899654"\"Analog Strain Gage Conditioning System for Space Environment"\ +"NASA Johnson Space Center"\"Issued"\"MSC-23906-1"\7295884\"11/158,354"\"Method for the Design and Analysis of the Primary Load Bearing Layer of an Inflatable Vessel"\"07/20/2026" +"NASA Johnson Space Center"\"Issued"\"MSC-23933-1"\7543779\"11/625,066"\"Low Impact Docking System (LIDS) A.k.a, International Berthing Docking Mechanism (IBDM)"\"02/22/2028" +"NASA Johnson Space Center"\"Issued"\"MSC-23954-1"\7357606\"11/357,461"\"Self-Advancing Step-Tap Drill"\"08/14/2026" +"NASA Johnson Space Center"\"Issued"\"MSC-23988-1"\8343740\"12/58,227"\"Micro-Organ Device"\"10/31/2031" +"NASA Johnson Space Center"\"Issued"\"MSC-23988-2"\8580546\"13/688982"\"Micro-Organ Device"\"11/29/2032" +"NASA Johnson Space Center"\"Issued"\"MSC-23997-2"\7815149\"12/388,345"\"Magnetic Capture Docking Mechanism"\"04/01/2025" +"NASA Johnson Space Center"\"Issued"\"MSC-24000-1"\8076136\"/0"\"Development And Characterization Of A Three-Dimensional Tissue Culture Model Of Bone"\"10/31/2021" +"NASA Johnson Space Center"\"Issued"\"MSC-24042-1"\7411198\"11/421,174"\"New Architecture for Space Radiation Detection"\"02/01/2027" +"NASA Johnson Space Center"\"Issued"\"MSC-24106-1"\7577482\"11/683,770"\"Network System Plug And Play Through Positional And Functional Connectivity Identification"\"04/21/2028" +"NASA Johnson Space Center"\"Issued"\"MSC-24115-1"\8022307\"11/772,999"\"Method and Apparatus for Fabric Circuits and Antennas"\"06/19/2030" +"NASA Johnson Space Center"\"Issued"\"MSC-24149-1"\8122646\"12/402,986"\"A Description Of An Improved Method For Folding, Assembling, And Weight Relief Of An Inflatable Shell"\"02/04/2030" +"NASA Johnson Space Center"\"Issued"\"MSC-24149-2"\8266866\"13/346137"\"A Description Of An Improved Method For Folding, Assembling, And Weight Relief Of An Inflatable Shell"\"03/12/2029" +"NASA Johnson Space Center"\"Issued"\"MSC-24164-1"\8338114\"11/789,117"\"Methods For Growing Tissue-Like 3D Assemblies (TLA) Of Human Broncho-Epithelial Cells"\"05/04/2030" +"NASA Johnson Space Center"\"Issued"\"MSC-24169-1"\7862946\"11/671,210"\"Self-Regulating Control of Parasitic Electric Loads in Fuel Cell Power Systems"\"11/05/2029" +"NASA Johnson Space Center"\"Issued"\"MSC-24180-1"\7935259\"12/167,332"\"Water Filtering Device, 100% Effective"\"09/14/2029" +"NASA Johnson Space Center"\"Issued"\"MSC-24184-1"\8116350\"12/353,755"\"Ultra-Wideband (UWB) Two-Cluster Angle Of Arrival (AOA) Passive Tracking System Design"\"07/22/2030" +"NASA Johnson Space Center"\"Issued"\"MSC-24201-1"\7509774\"11/610,295"\"A Description Of An Improved Method For Attaching An Inflatable Shell To A Rigid Interface"\"06/13/2027" +"NASA Johnson Space Center"\"Issued"\"MSC-24207-1"\7604782\"11/625,670"\"X-38 Advanced Sublimator"\"04/12/2028" +"NASA Johnson Space Center"\"Issued"\"MSC-24215-1"\8070105\"11/956,826"\"A Description Of A Concentric Nested Torroidal Inflatable Habitat"\"10/04/2030" +"NASA Johnson Space Center"\"Issued"\"MSC-24216-1"\8047473\"12/240,537"\"A Description Of An Octonode Connecting Node Concept And Method"\"01/10/2030" +"NASA Johnson Space Center"\"Issued"\"MSC-24228-1"\7521682\"11/421,196"\"New Architecture For Space Radiation Detection"\"03/07/2027" +"NASA Johnson Space Center"\"Issued"\"MSC-24238-1"\8388613\"12/757657"\"Microwave Tissue Welding For Wound Closure"\"11/17/2031" +"NASA Johnson Space Center"\"Issued"\"MSC-24263-1"\7805276\"11/958,937"\"Impact Detection System"\"02/12/2029" +"NASA Johnson Space Center"\"Issued"\"MSC-24273-1"\7840387\"11/778,858"\"Method For The Design And Analysis Of The Primary Load Bearing Layer That Interfaces To The Structural Pass-through Of An Inflatable Vessel"\"07/31/2029" +"NASA Johnson Space Center"\"Application"\"MSC-24314-1"\0\"12/880602"\"HDSS - High Density Spot Seeding"\ +"NASA Johnson Space Center"\"Issued"\"MSC-24346-1"\8466776\"12/828558"\"Extended Range RFID and Sensor Tag"\"09/05/2031" +"NASA Johnson Space Center"\"Issued"\"MSC-24387-1"\8011229\"12/323,912"\"Artificial Intelligence Algorithm For Assessing Postural Stability During Normal Daily Activities Using Shoe Insert Pressure Sensors"\"11/26/2028" +"NASA Johnson Space Center"\"Issued"\"MSC-24441-1"\7905946\"12/190,364"\"A Capillary-based Static Phase Separator For Highly Variable Wetting Conditions"\"07/02/2029" +"NASA Johnson Space Center"\"Issued"\"MSC-24444-1"\8577120\"12/900644"\"Flash Infrared (IR) Thermography Contrast Computer Simulation And Data Analysis Software"\"04/22/2031" +"NASA Johnson Space Center"\"Application"\"MSC-24451-1"\0\"13/057399"\"Rapid Detection Of The Varicella Zoster Virus (VZV) In Saliva Samples"\ +"NASA Johnson Space Center"\"Issued"\"MSC-24464-1"\7859292\"12/502,575"\"Reconfigurable SEU/SET Tolerance for FPGAs"\"07/14/2029" +"NASA Johnson Space Center"\"Issued"\"MSC-24466-1"\8183870\"12/370,021"\"Battery cell voltage sensing and balancing using addressable transformers with electrical isolation and minimal additional connector pins and circuitry."\"07/01/2030" +"NASA Johnson Space Center"\"Application"\"MSC-24490-1"\0\"12/612,171"\"High Altitude Hydration System"\ +"NASA Johnson Space Center"\"Application"\"MSC-24506-1"\0\"12/971919"\"A Method to Measure and Estimate Normalized contrast In Infrared Flash Thermography"\"01/08/2030" +"NASA Johnson Space Center"\"Issued"\"MSC-24508-1"\8343403\"12/174,380"\"METHOD FOR MAKING A MICROPOROUS MEMBRANE"\"12/31/2030" +"NASA Johnson Space Center"\"Issued"\"MSC-24509-1"\8570047\"12/855384"\"Battery Fault Detection with Saturating Transformers"\"02/02/2032" +"NASA Johnson Space Center"\"Issued"\"MSC-24525-1"\8384614\"12/894749"\"Deployable Fresnel Rings"\"10/11/2031" +"NASA Johnson Space Center"\"Application"\"MSC-24541-1"\0\"12/899815"\"Electromagnetic Time-Variance Magnetic Fields (TVMF) to generate, and re-grow Cartilage Cells by a Noninvasive Method"\ +"NASA Johnson Space Center"\"Issued"\"MSC-24569-1"\8176809\"12/331844"\"Planar Torsion Spring"\ +"NASA Johnson Space Center"\"Issued"\"MSC-24570-1"\8276958\"12/269579"\"Bidirectional Tendon Terminator"\ +"NASA Johnson Space Center"\"Issued"\"MSC-24571-1"\8371177\"12/241309"\"Tendon Tension Sensor"\ +"NASA Johnson Space Center"\"Application"\"MSC-24685-1"\8056423\"12/269,552"\"Sensing the Tendon Tension through the Conduit Reaction Forces"\"11/12/2028" +"NASA Johnson Space Center"\"Application"\"MSC-24686-1"\8060250\"12/335,153"\"Joint Space Impedance Control for Tendon-Driven Manipulators"\"12/15/2028" +"NASA Johnson Space Center"\"Issued"\"MSC-24687-1"\8170718\"12/338697"\"Multiple Priority Operational Space Impedance Control"\ +"NASA Johnson Space Center"\"Issued"\"MSC-24688-1"\8280837\"12/474068"\"CONTACT STATE ESTIMATION FOR MULTI-FINGER ROBOT HANDS USING PARTICLE FILTERS"\ +"NASA Johnson Space Center"\"Issued"\"MSC-24689-1"\7784363\"12/241320"\"PHALANGE TACTILE LOAD CELL"\"09/30/2028" +"NASA Johnson Space Center"\"Issued"\"MSC-24732-1"\8364314\"12/624445"\"METHOD AND APPARATUS FOR AUTOMATIC CONTROL OF A HUMANOID ROBOT"\ +"NASA Johnson Space Center"\"Application"\"MSC-24733-1"\0\"13/349265"\"Pyrometer"\ +"NASA Johnson Space Center"\"Application"\"MSC-24734-1"\8498741\"12/564088"\"Dexterous Humanoid Robotic Wrist"\ +"NASA Johnson Space Center"\"Application"\"MSC-24735-1"\8467903\"12/564086"\"Tendon Driven Finger Actuation System"\ +"NASA Johnson Space Center"\"Issued"\"MSC-24736-1"\8291788\"12/564090"\"Rotary Series Elastic Actuator"\ +"NASA Johnson Space Center"\"Issued"\"MSC-24737-1"\8401700\"12/564124"\"ACTUATOR AND ELECTRONICS PACKAGING FOR EXTRINSIC HUMANOID HAND"\ +"NASA Johnson Space Center"\"Application"\"MSC-24738-1"\0\"12/564094"\"FRAMEWORK AND METHOD FOR CONTROLLING A ROBOTIC SYSTEM USING A DISTRIBUTED COMPUTER NETWORK"\ +"NASA Johnson Space Center"\"Application"\"MSC-24739-1"\8511964\"12/564084"\"Dexterous Humanoid Robot"\ +"NASA Johnson Space Center"\"Application"\"MSC-24740-1"\0\"12/564078"\"Dexterous Humanoid Robotic Finger"\ +"NASA Johnson Space Center"\"Issued"\"MSC-24741-1"\8255079\"12/564095"\"Human Grasp Assist"\"09/23/2029" +"NASA Johnson Space Center"\"Application"\"MSC-24742-1"\8442684\"12/564076"\"Integrated High Speed FPGA Based Torque Controller"\ +"NASA Johnson Space Center"\"Application"\"MSC-24743-1"\8250901\"12/564092"\"Rotary Absolute Position Sensor Calibration"\ +"NASA Johnson Space Center"\"Application"\"MSC-24744-1"\8369992\"12/564083"\"Diagnostics, prognostics & health management for humanoid robotics and method thereof"\ +"NASA Johnson Space Center"\"GM"\"MSC-24745-1"\8424941\"12/564085"\"ROBOTIC THUMB ASSEMBLY"\ +"NASA Johnson Space Center"\"Application"\"MSC-24746-1"\8260460\"12/564096"\"Interactive Robot Control System"\ +"NASA Johnson Space Center"\"Issued"\"MSC-24747-1"\8244402\"12/564074"\"VISUAL PERCEPTION SYSTEM AND METHOD FOR A HUMANOID ROBOT"\ +"NASA Johnson Space Center"\"Issued"\"MSC-24750-1"\8483882\"12/686512"\"HIERARCHICAL ROBOT CONTROL SYSTEM AND METHOD FOR CONTROLLING SELECT DEGREES OF FREEDOM OF AN OBJECT USING MULTIPLE MANIPULATORS"\ +"NASA Johnson Space Center"\"Issued"\"MSC-24751-1"\8412376\"12/720725"\"TENSION DISTRIBUTION IN A TENDON-DRIVEN ROBOTIC FINGER"\ +"NASA Johnson Space Center"\"Issued"\"MSC-24752-1"\8033876\"12/706744"\"CONNECTOR PIN AND METHOD"\ +"NASA Johnson Space Center"\"Application"\"MSC-24753-1"\0\"12/720727"\"UNDERACTUATED DESIGN AND CONTROL OF A TENDON-DRIVEN FINGER"\ +"NASA Johnson Space Center"\"Application"\"MSC-24755-1"\0\"12/698832"\"Architecture For Robust Force and Impedance Control Of Series Elastic Actuators"\ +"NASA Johnson Space Center"\"Application"\"MSC-24758-1"\0\"14/184278"\"RFID Cavity"\"03/11/2033" +"NASA Johnson Space Center"\"Application"\"MSC-24798-1"\0\"13/789903"\"Soft Decision Analyzer (SDA)"\"03/08/2033" +"NASA Johnson Space Center"\"Application"\"MSC-24811-1"\0\"13/461,487"\"Self-enclosed and pipette free DNA/RNA Isolation device"\ +"NASA Johnson Space Center"\"Application"\"MSC-24813-1"\0\"13/791290"\"Pre-Polymerase Chain Reaction Preparation Kit"\"08/06/2032" +"NASA Johnson Space Center"\"Application"\"MSC-24817-1"\8265792\"12/760954"\"Method and Apparatus for Calibrating Multi-Axis Load Cells in a Dexterous Robot"\ +"NASA Johnson Space Center"\"Application"\"MSC-24837-1"\0\"12/787479"\"Applying Workspace Limitations in a Velocity-Controlled Robotic Mechanism"\ +"NASA Johnson Space Center"\"Application"\"MSC-24919-1"\0\"13/790591"\"RFID Waveguide, Antenna, and Cavity Sensors"\"07/13/2032" +"NASA Johnson Space Center"\"Issued"\"MSC-24926-1"\8412378\"12/629637"\"IN-VIVO TENSION CALIBRATION IN TENDON-DRIVEN MANIPULATORS"\ +"NASA Johnson Space Center"\"Issued"\"MSC-24930-1"\8489239\"12/916803"\"ROBUST OPERATION OF TENDON-DRIVEN ROBOT FINGERS USING FORCE AND POSITION-BASED CONTROL LAWS"\ +"NASA Johnson Space Center"\"Application"\"MSC-25026-1"\0\"13/354552"\"Battery Charge Equalizer with transformer array"\ +"NASA Johnson Space Center"\"Issued"\"MSC-25053-1"\"D628,609"\"29/359105"\"ROBOT"\"04/06/2030" +"NASA Johnson Space Center"\"Application"\"MSC-25056-1"\0\"13/014901"\"SYSTEM AND METHOD FOR TENSIONING A ROBOTICALLY ACTUATED TENDON"\ +"NASA Johnson Space Center"\"Issued"\"MSC-25084-1"\8067909\"12/474430"\"METHOD AND APPARATUS FOR ELECTROMAGNETICALLY BRAKING A MOTOR"\"05/29/2029" +"NASA Johnson Space Center"\"Application"\"MSC-25084-DE"\0\"12/474430"\"Method and Apparatus for Electromagnetically Braking a Motor"\ +"NASA Johnson Space Center"\"Application"\"MSC-25084-JP"\0\"12/474430"\"Method and Apparatus for Electromagnetically Braking a Motor"\ +"NASA Johnson Space Center"\"Application"\"MSC-25091-1"\0\"13/199484"\"FRET-Aptamer Assays for C-Telopeptide, Creatinine and Vitamin D"\"08/31/2031" +"NASA Johnson Space Center"\"Issued"\"MSC-25121-1"\8483877\"12/875254"\"WORKSPACE SAFE OPERATION OF A FORCE- OR IMPEDANCE-CONTROLLED ROBOT"\ +"NASA Johnson Space Center"\"Application"\"MSC-25149-1"\0\"13/196252"\"Controlling Execution Sequence Using Tactile-Classification during manipulation by a humanoid robot"\ +"NASA Johnson Space Center"\"Application"\"MSC-25216-1"\0\"13/439,546"\"METHOD AND COMPOSITION FOR AMELIORATING THE EFFECTS FOR A SUBJECT EXPOSED TO RADIATION OR OTHER SOURCES OF OXIDATIVE STRESS"\ +"NASA Johnson Space Center"\"Application"\"MSC-25217-1"\0\"13/272442"\"METHOD FOR DYNAMIC OPTIMIZATION OF A ROBOT CONTROL INTERFACE"\ +"NASA Johnson Space Center"\"Application"\"MSC-25219"\0\"13/207911"\"FAST GRASP CONTACT COMPUTATION FOR A SERIAL ROBOT"\ +"NASA Johnson Space Center"\"Application"\"MSC-25265-1"\0\"13/851778"\"New method and device for digital to analog transformations and reconstructions of multichannel electrocardiograms"\"10/30/2032" +"NASA Johnson Space Center"\"Application"\"MSC-25286-1"\0\"14/252660"\"A chemical formulation to stabilize urine and minimize the precipitation potential of minerals during distillation of urine"\"03/11/2033" +"NASA Johnson Space Center"\"Application"\"MSC-25313-1"\0\"13/774835"\"Hydrostatic Hyperbaric Chamber"\"02/22/2033" +"NASA Johnson Space Center"\"Application"\"MSC-25318"\0\"13/408668"\"HUMAN GRASP ASSIST SOFT"\ +"NASA Johnson Space Center"\"Application"\"MSC-25319"\0\"13/408656"\"HUMAN GRASP ASSIST "\ +"NASA Johnson Space Center"\"Application"\"MSC-25320"\0\"13/408675"\"HUMAN GRASP ASSIST CONTROLS"\ +"NASA Johnson Space Center"\"Application"\"MSC-25327-1"\0\"13/459557"\"COMMUNICATION SYSTEM AND METHOD"\ +"NASA Johnson Space Center"\"Application"\"MSC-25386-1"\0\"13/951671"\"Active Response Gravity Offload System - Vertical Software Release"\"07/26/2033" +"NASA Johnson Space Center"\"Application"\"MSC-25590-1"\0\"13/790927"\"Systems and Methods for RFID-Enabled Information Collection"\ +"NASA Johnson Space Center"\"Application"\"MSC-25604-1"\0\"13/791584"\"Systems and Methods for RFID-Enabled Dispenser"\ +"NASA Johnson Space Center"\"Application"\"MSC-25605-1"\0\"13/790721"\"Switch Using Radio Frequency Identification"\ +"NASA Johnson Space Center"\"Application"\"MSC-25626-1"\0\"14/200,122"\"RFID Torque-Sensing Tag System for Fasteners"\"03/07/2034" +"NASA Johnson Space Center"\"Application"\"MSC-25632-1"\0\"13/803017"\"ROBOT TASK COMMANDER WITH EXTENSIBLE PROGRAMMING ENVIRONMENT +"\"03/14/2033" +"NASA Johnson Space Center"\"Application"\"MSC-25758-1"\0\"14/184303"\"Methods, Systems and Apparatuses for Radio Frequency Identification"\"03/11/2033" +"NASA Johnson Space Center"\"Application"\"MSC-25759-1"\0\"14/184337"\"Methods, Systems and Apparatuses for Radio Frequency Identification"\"03/11/2033" +"NASA Johnson Space Center"\"Application"\"MSC-25760-1"\0\"14/184365"\"Methods, Systems and Apparatuses for Radio Frequency Identification"\"03/11/2033" +"NASA Jet Propulsion Laboratory"\"Application"\"NPO-17734-1"\0\"07/700,830"\"Formation Of Self-Aligned Guard Ring For Silicide Schottky-Barrier Diodes Used For Infrared Detection"\ +"NASA Jet Propulsion Laboratory"\"Issued"\"NPO-19289-1"\6513023\"09/412,199"\"On-Chip Learning In VLSI Hardware"\"10/01/2019" +"NASA Jet Propulsion Laboratory"\"Application"\"NPO-19769-1"\0\"08/868,175"\"Automated Cargo Inventory Identification Transponder"\ +"NASA Jet Propulsion Laboratory"\"Issued"\"NPO-19855-1"\6374630\"09/853,931"\"Champagne Heat Pump"\"05/09/2021" +"NASA Jet Propulsion Laboratory"\"Issued"\"NPO-20031-1"\6828935\"10/176,761"\"Receiver Controlled Phased Array Antenna"\"07/19/2022" +"NASA Jet Propulsion Laboratory"\"Issued"\"NPO-20837-1"\6526556\"09/591,386"\"MORPHING TECHNIQUE FOR ACCELERATED EVOLUTIONARY SYNTHESIS OF ELECTRONIC CIRCUITS"\"06/07/2020" +"NASA Jet Propulsion Laboratory"\"Application"\"NPO-21136-1"\0\"10/219,384"\"A CMOS ACTIVE PIXEL SENSOR (APS) FOR READING COMPACT DISCS"\ +"NASA Jet Propulsion Laboratory"\"Issued"\"NPO-30703-1"\7240208\"10/424,287"\"ENCRYPTING DIGITAL CAMERA"\"04/23/2023" +"NASA Jet Propulsion Laboratory"\"Issued"\"NPO-40040-1"\7480984\"40/863,835"\"A Concept For Suppressing Sublimation In Advanced Thermoelectric Devices"\"06/07/2024" +"NASA Jet Propulsion Laboratory"\"Issued"\"NPO-40407-1"\7592747\"11/056,633"\"Piezoelectrically Enhanced PhotoCathode (PEPC)"\"02/09/2025" +"NASA Jet Propulsion Laboratory"\"Issued"\"NPO-40827-1"\7156189\"11/1,465"\"SELF-MOUNTABLE AND EXTRACTABLE ULTRASONIC/SONIC ANCHOR (U/S-Anchor)"\"12/01/2024" +"NASA Jet Propulsion Laboratory"\"Issued"\"NPO-41446-1"\8358723\"11/602,440"\"Architecture Of An Autonomous Radio"\"09/12/2031" +"NASA Jet Propulsion Laboratory"\"Issued"\"NPO-41506-2"\8492160\"12/720,103"\"BIOMARKER SENSOR SYSTEM AND METHOD FOR MULTI-COLOR IMAGING AND PROCESSING OF SINGLE-MOLECULE LIFE SIGNATURES"\"04/09/2031" +"NASA Jet Propulsion Laboratory"\"Issued"\"NPO-41511-1"\7385462\"11/376,638"\"Wideband (31 To 36 GHz) 24-Way Radial Power Combiner/Divider Fed By A Marie Transducer"\"03/14/2026" +"NASA Jet Propulsion Laboratory"\"Issued"\"NPO-41982-1"\8078309\"12/415,206"\"Inverse Tomographic Approach To Create Arbitrary Sidewall Geometries In 3D Using LiGA Technologies"\"03/03/2021" +"NASA Jet Propulsion Laboratory"\"Issued"\"NPO-42131-1"\7824247\"11/756,819"\"PORTABLE RAPID AND QUIET DRILL (PRAQD)"\"11/02/2027" +"NASA Jet Propulsion Laboratory"\"Issued"\"NPO-42312-1"\7184624\"11/422,147"\"Slow light in chains of vertically coupled whispering gallery mode resonators"\"06/05/2026" +"NASA Jet Propulsion Laboratory"\"Issued"\"NPO-42466-1"\7764384\"11/924,766"\"Swept frequency laser metrology system"\"10/26/2027" +"NASA Jet Propulsion Laboratory"\"Issued"\"NPO-42563-1"\7353768\"11/456,441"\"Submersible Vehicle Propulsion and Power Generation"\"07/10/2026" +"NASA Jet Propulsion Laboratory"\"Issued"\"NPO-42672-1"\7996112\"11/756,793"\"Micro Robot Explorer (SpiderBot) Mesh Crawler"\"06/08/2030" +"NASA Jet Propulsion Laboratory"\"Issued"\"NPO-43213-1"\7850861\"11/764,359"\"Patterning packing materials for Fluidic Channels"\"10/13/2029" +"NASA Jet Propulsion Laboratory"\"Issued"\"NPO-43348-1"\7809521\"12/40,459"\"Precise delay measurement circuit on FPGAs"\"01/31/2029" +"NASA Jet Propulsion Laboratory"\"Issued"\"NPO-43361-1"\7773121\"11/741,213"\"High Resolution, Continuous Field of View, Non-Rotating Imaging Sensor Head"\"10/15/2028" +"NASA Jet Propulsion Laboratory"\"Issued"\"NPO-43524-1"\7773362\"11/683,007"\"Dusty Plasma Thruster"\"01/03/2029" +"NASA Jet Propulsion Laboratory"\"Issued"\"NPO-44079-1"\8022860\"11/781,022"\"Enhanced Interference Cancellation and Telemetry Reception with a Single Parabolic Dish Antenna using a Focal Plane Array"\"04/30/2030" +"NASA Jet Propulsion Laboratory"\"Issued"\"NPO-44765-1"\7740088\"11/928,069"\"Ultrasonic/Sonic Rotary-Hammer Drill (USRoHD)"\"04/15/2028" +"NASA Jet Propulsion Laboratory"\"Issued"\"NPO-44914-1"\8407979\"11/926,279"\"Magnetically-Conformed, Variable Area Discharge Chamber for Hall Thruster Plasma Accelerators"\"06/08/2031" +"NASA Jet Propulsion Laboratory"\"Issued"\"NPO-45053-1"\8057283\"12/119,989"\"The process of significant improving of optical quality factor of whispering gallery mode resonator."\"09/15/2030" +"NASA Jet Propulsion Laboratory"\"Issued"\"NPO-45911-1"\8163094\"12/508,006"\"Method to Improve Indium Bump Bonding Via Indium Oxide Removal Using a Two Step Plasma Process"\"08/16/2030" +"NASA Jet Propulsion Laboratory"\"Issued"\"NPO-45948-1"\7843650\"12/490,422"\"Monolithic Afocal Telescope"\"06/24/2029" +"NASA Jet Propulsion Laboratory"\"Application"\"NPO-46253-1"\0\"12/237,159"\"Generation of optical combs in a whispering gallery mode resonator from a bichromatic pump"\ +"NASA Jet Propulsion Laboratory"\"Issued"\"NPO-46843-1"\8169371\"12/541,725"\"A single-layer, all-metal patch antenna element with wide bandwidth"\"09/25/2030" +"NASA Jet Propulsion Laboratory"\"Issued"\"NPO-46938-1"\8026768\"12/691,070"\"A 201Hg+ co-magnetometer for 199Hg+ trapped ion space atomic clocks"\"04/03/2030" +"NASA Jet Propulsion Laboratory"\"Application"\"NPO-47300-1"\0\"13/017,174"\"Textured Si Anode for High Capacity, Rapid Charge Rate Li Ion Batteries"\ +"NASA Jet Propulsion Laboratory"\"Application"\"NPO-47300-2"\0\"13/895,499"\"Textured Si Anode for High Capacity, Rapid Charge Rate Li Ion Batteries"\"01/31/2031" +"NASA Jet Propulsion Laboratory"\"Issued"\"NPO-47310-1"\8502987\"13/018,672"\"Coherent Detector for Near-Angle Scattering and Polarization Characterization of Telescope Mirror Coatings"\"03/24/2032" +"NASA Jet Propulsion Laboratory"\"Issued"\"NPO-47604-1"\8649000\"13/277,954"\"Surface Enhanced Raman Scattering using Silica Whispering-Gallery Mode Resonators"\"07/10/2032" +"NASA Jet Propulsion Laboratory"\"Application"\"NPO-47717-1"\\"13/281,683"\"360-Degree Camera Head for Unmanned Surface Sea Vehicles"\ +"NASA Jet Propulsion Laboratory"\"Issued"\"NPO-47869-1"\8649609\"13/071,299"\"FPGA Vision Data Architecture"\"04/17/2032" +"NASA Jet Propulsion Laboratory"\"Application"\"NPO-47881-1"\\"14/151,684"\"Pulsed Plasma Lubricator (PPL) Technology for the In Situ Replenishment of Dry Lubricants in Extreme Environments"\ +"NASA Jet Propulsion Laboratory"\"Application"\"NPO-48140-1"\\"13/456,451"\"Probabilistic Surface Characterization for Safe Landing Hazard Detection and Avoidance"\ +"NASA Jet Propulsion Laboratory"\"Application"\"NPO-48413-1"\\"13/757,929"\"Simple Laser-Communications Terminal for Downlink from Earth-Orbit at Rates Exceeding 10 Gb/s"\"02/04/2033" +"NASA Jet Propulsion Laboratory"\"Application"\"NPO-48539-1"\\"13/858,267"\"Neutral mounting of whispering gallery mode resonators for suppression of acceleration-induced frequency fluctuations"\"04/08/2033" +"NASA Jet Propulsion Laboratory"\"Application"\"NPO-49086-1"\\"14/101,547"\"Electride Mediated Surface Enhanced Raman Spectroscopy"\"12/10/2033" +"NASA Stennis Space Center"\"Issued"\"SSC-00040"\5726632\"08/622,178"\"HANDHELD HYDROGEN FIRE IMAGER"\"03/14/2016" +"NASA Stennis Space Center"\"Issued"\"SSC-00050"\6020587\"09/3,212"\"A HAND HELD PLANT STRESS DETECTION SYSTEM"\"01/06/2018" +"NASA Stennis Space Center"\"Issued"\"SSC-00247"\8618933\"11/866,042"\"Valve Health Monitoring System Utilizing Smart Instrumentation for Real Time and Historical Data Tracking"\"05/03/2032" +"NASA Stennis Space Center"\"Issued"\"SSC-00264"\8336849\"12/704193"\"Conical Seat Shut Off Valve"\"01/13/2031" +"NASA Stennis Space Center"\"Issued"\"SSC-00327"\8401820\"12/566,111"\"IN SITU HEALTH MONITORING OF PIEZOELECTRIC SENSORS"\"07/31/2030" From a5692f8d6e502dbaa11cb461d3781a5c9c7f7161 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Thu, 30 Mar 2023 12:58:16 +0200 Subject: [PATCH 187/553] Update ubuntu-manual.md --- docs/docs/installation/ubuntu-manual.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/docs/docs/installation/ubuntu-manual.md b/docs/docs/installation/ubuntu-manual.md index e736f8f233..fff49f6928 100644 --- a/docs/docs/installation/ubuntu-manual.md +++ b/docs/docs/installation/ubuntu-manual.md @@ -468,5 +468,23 @@ You may be required to update / install additional packages and you can go ahead ```sh npm run build --max_old_space_size=4096 ``` +Collect the static files +```sh +python /var/www/manathesar.exmaple.com/mathesear/manage.py collectstatic +``` +Create media directory and set permissions to be writable by gunicorn +```sh +mkdir /var/www/mathesar.example.com/.media +chgrp gunicorn /var/www/mathesar.example.com/.media +chown -R gunicorn /var/www/mathesar.examplecom/.media +chmod 0744 /var/www/mathesar.example.com/.media +``` +Install the NPM packages: +```sh +/var/www/mathesar.example.com/mathesar/mathesar_ui/npm install +``` +Now we will run install: +```sh +cd /var/www/mathesar.example.com/mathesar && install.py --skip-confirm >> /tmp/install.py.log From 8c091f61290707d35dda67de4071d8adfec967ea Mon Sep 17 00:00:00 2001 From: Ziad-I <68874104+Ziad-I@users.noreply.github.com> Date: Fri, 31 Mar 2023 01:26:32 +0200 Subject: [PATCH 188/553] Update AbstractTypeSelector.svelte added a filter to allowedTypeConversions in order to prevent user from changing column type to json or map --- .../abstract-type-control/AbstractTypeSelector.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mathesar_ui/src/components/abstract-type-control/AbstractTypeSelector.svelte b/mathesar_ui/src/components/abstract-type-control/AbstractTypeSelector.svelte index 9ec43b57fa..b041989088 100644 --- a/mathesar_ui/src/components/abstract-type-control/AbstractTypeSelector.svelte +++ b/mathesar_ui/src/components/abstract-type-control/AbstractTypeSelector.svelte @@ -25,7 +25,7 @@ column.type, column.valid_target_types ?? [], $currentDbAbstractTypes.data, - ); + ).filter((item) => !['jsonlist', 'map'].includes(item.identifier)); function selectAbstractType( newAbstractType: ColumnWithAbstractType['abstractType'] | undefined, From 6f2a222f56db11e89234c658833bc2ed1ff0e004 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Fri, 31 Mar 2023 10:01:00 +0200 Subject: [PATCH 189/553] Update ubuntu.md --- docs/docs/installation/ubuntu.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/docs/installation/ubuntu.md b/docs/docs/installation/ubuntu.md index 6563993b83..13593340aa 100644 --- a/docs/docs/installation/ubuntu.md +++ b/docs/docs/installation/ubuntu.md @@ -33,11 +33,14 @@ sudo apt install apt-transport-https ca-certificates curl software-properties-co ``` The next step is to add Docker's official GPG key to the keyring. This is to ensure the validity of downloaded Docker packages from it's repository. ```sh -curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - +curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg ``` Now that the key is added, we can add the stable repo for Docker. ```sh -sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable" +echo \ + "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ + "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \ + sudo tee /etc/apt/sources.list.d/docker.list > /dev/null ``` We have to update the system: ```sh From b84136790389f99de4931a84ea988b860c340cc6 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Fri, 31 Mar 2023 11:04:50 +0200 Subject: [PATCH 190/553] Update centos.md --- docs/docs/installation/centos.md | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/docs/docs/installation/centos.md b/docs/docs/installation/centos.md index 63f0c67d40..e4f3536724 100644 --- a/docs/docs/installation/centos.md +++ b/docs/docs/installation/centos.md @@ -1,4 +1,4 @@ -# Install on CentOS 7+ +# Install on CentOS Stream 9 Installation should only take a few minutes. @@ -11,19 +11,27 @@ Installation should only take a few minutes. ## Preparing our server. - Prerequisites - - CentOS 7 with at least `60 GB` disk space and `4GB` of RAM. + - CentOS Stream 9 with at least `60 GB` disk space and `4GB` of RAM. - Root privileges - - A domain name for your Mathesar installation, pointing to your server. This is however not a necesity. + - A domain name for your Mathesar installation, pointing to your server. This is however not a necesity, as you can use a IP address as well. ### Step one -First, we need to update the software repository and upgrade all packages using the apt command below. SSH to your server and elevate to the `root` user. +First, we need to update the software repository and upgrade all packages using the apt command below. Then we will install the `centos-extras` (EPEL) repository. SSH to your server and elevate to the `root` user. ```sh yum update && yum upgrade +sudo yum install epel-release ``` ### Step two Clean the system of any potential pre-installed Docker packages. ```sh -sudo yum remove docker docker-engine docker.io +sudo yum remove docker \ + docker-client \ + docker-client-latest \ + docker-common \ + docker-latest \ + docker-latest-logrotate \ + docker-logrotate \ + docker-engine ``` ### Step three: Installing Docker We wil now install Docker on this system. @@ -31,9 +39,12 @@ Firstly, we have to install the required Docker dependencies on the system: ```sh yum install -y yum-utils device-mapper-persistent-data lvm2 curl ``` -The next step is to add the stable repo for Docker. +Install the yum-utils package (which provides the yum-config-manager utility) and set up the repository. ```sh -yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo +sudo yum install -y yum-utils +sudo yum-config-manager \ + --add-repo \ + https://download.docker.com/linux/centos/docker-ce.repo ``` We have to update the system: ```sh @@ -41,7 +52,7 @@ yum update ``` We can now install Docker using the following command: ```sh -sudo yum install docker-ce docker-ce-cli +sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin ``` Once installation is completed, you can run the following commands to make sure that Docker is running, and that it will start with the system. ```sh From 76b4c7169601004a88ff1383afb5b0261c2690f9 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Fri, 31 Mar 2023 11:06:03 +0200 Subject: [PATCH 191/553] Update centos.md --- docs/docs/installation/centos.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/docs/installation/centos.md b/docs/docs/installation/centos.md index e4f3536724..f50373727a 100644 --- a/docs/docs/installation/centos.md +++ b/docs/docs/installation/centos.md @@ -39,9 +39,8 @@ Firstly, we have to install the required Docker dependencies on the system: ```sh yum install -y yum-utils device-mapper-persistent-data lvm2 curl ``` -Install the yum-utils package (which provides the yum-config-manager utility) and set up the repository. +Now we will set up the Docker repository: ```sh -sudo yum install -y yum-utils sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo From f3f4e4aa89b6cfa8fdfa1268a8b2d66fb7e9df48 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Fri, 31 Mar 2023 12:30:21 +0200 Subject: [PATCH 192/553] Update ubuntu.md --- docs/docs/installation/ubuntu.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/installation/ubuntu.md b/docs/docs/installation/ubuntu.md index 13593340aa..eecd0b12fe 100644 --- a/docs/docs/installation/ubuntu.md +++ b/docs/docs/installation/ubuntu.md @@ -13,7 +13,7 @@ Installation should only take a few minutes. - Prerequisites - Ubuntu 20.04 with at least `60 GB` disk space and `4GB` of RAM. - Root privileges - - A domain name for your Mathesar installation, pointing to your server. This is however not a necesity. + - A domain name for your Mathesar installation, pointing to your server. This is however not a necesity, as you can use a IP address as well. ### Step one First, we need to update the software repository and upgrade all packages using the apt command below. SSH to your server and elevate to the `root` user. From ea101906b60abf6832f968eab62708e6fb2ba2ef Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Fri, 31 Mar 2023 12:35:24 +0200 Subject: [PATCH 193/553] Update debian.md --- docs/docs/installation/debian.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/installation/debian.md b/docs/docs/installation/debian.md index 8146e3bad0..d48733420c 100644 --- a/docs/docs/installation/debian.md +++ b/docs/docs/installation/debian.md @@ -13,7 +13,7 @@ Installation should only take a few minutes. - Prerequisites - Debian 11 with at least `60 GB` disk space and `4GB` of RAM. - Root privileges - - A domain name for your Mathesar installation, pointing to your server. This is however not a necesity. + - A domain name for your Mathesar installation, pointing to your server. This is however not a necesity, as you can use a IP address as well. ### Step one First, we need to update the software repository and upgrade all packages using the apt command below. SSH to your server and elevate to the `root` user. From 78ba0ca88a6a0d2a439258037bb8711f8de67478 Mon Sep 17 00:00:00 2001 From: Sean Colsen Date: Fri, 31 Mar 2023 10:32:19 -0400 Subject: [PATCH 194/553] Improve CellComponentFactory getDisplayFormatter - Make it required - Make `value` unknown instead of generic --- .../cell-fabric/data-types/arrayFactory.ts | 93 +++++++++++-------- .../cell-fabric/data-types/boolean.ts | 11 ++- .../data-types/components/typeDefinitions.ts | 4 +- .../components/cell-fabric/data-types/date.ts | 9 +- .../cell-fabric/data-types/datetime.ts | 16 ++-- .../cell-fabric/data-types/duration.ts | 9 +- .../cell-fabric/data-types/money.ts | 9 +- .../cell-fabric/data-types/number.ts | 24 ++--- .../cell-fabric/data-types/string.ts | 1 + .../components/cell-fabric/data-types/time.ts | 10 +- .../cell-fabric/data-types/typeDefinitions.ts | 6 +- .../components/cell-fabric/data-types/uri.ts | 1 + 12 files changed, 98 insertions(+), 95 deletions(-) diff --git a/mathesar_ui/src/components/cell-fabric/data-types/arrayFactory.ts b/mathesar_ui/src/components/cell-fabric/data-types/arrayFactory.ts index 82010d375e..98d6813421 100644 --- a/mathesar_ui/src/components/cell-fabric/data-types/arrayFactory.ts +++ b/mathesar_ui/src/components/cell-fabric/data-types/arrayFactory.ts @@ -17,45 +17,60 @@ export interface ArrayLikeColumn extends CellColumnLike { display_options: Record | null; } -const arrayType: ( - simpleDataTypeComponentFactories: Record< - SimpleCellDataTypes, - CellComponentFactory - >, -) => CellComponentFactory = (simpleDataTypeComponentFactories) => ({ - get: (column: ArrayLikeColumn): ComponentAndProps => { - const itemDbType = column.type_options?.item_type ?? 'string'; - const cellInfo = getCellInfo(itemDbType); - const config = getCellConfiguration(itemDbType, cellInfo); - const elementDataType = - !cellInfo || cellInfo.type === 'array' ? 'string' : cellInfo.type; - const elementCellFactory = - simpleDataTypeComponentFactories[elementDataType]; - return { +type ComponentFactoryMap = Record; + +function makeDisplayFormatter( + componentFactoryMap: ComponentFactoryMap, + column: ArrayLikeColumn, +) { + const itemDbType = column.type_options?.item_type ?? 'string'; + const cellInfo = getCellInfo(itemDbType); + const config = getCellConfiguration(itemDbType, cellInfo); + const elementDataType = + !cellInfo || cellInfo.type === 'array' ? 'string' : cellInfo.type; + const elementCellFactory = componentFactoryMap[elementDataType]; + return (cellValue: unknown) => { + if (!isDefinedNonNullable(cellValue)) { + return String(cellValue); + } + if (elementCellFactory.getDisplayFormatter) { + return elementCellFactory.getDisplayFormatter( + { + type: itemDbType, + type_options: null, + display_options: column.display_options, + }, + config, + )(cellValue); + } + return String(cellValue); + }; +} + +export default function arrayType( + componentFactoryMap: ComponentFactoryMap, +): CellComponentFactory { + return { + get: ( + column: ArrayLikeColumn, + ): ComponentAndProps => ({ component: ArrayCell, props: { - formatElementForDisplay: ( - v: never | null | undefined, - ): string | null | undefined => { - if (!isDefinedNonNullable(v)) { - return v; - } - if (elementCellFactory.getDisplayFormatter) { - return elementCellFactory.getDisplayFormatter( - { - type: itemDbType, - type_options: null, - display_options: column.display_options, - }, - config, - )(v); - } - return String(v); - }, + formatElementForDisplay: makeDisplayFormatter( + componentFactoryMap, + column, + ), }, - }; - }, - getInput: (): ComponentAndProps => ({ component: TextInput }), -}); - -export default arrayType; + }), + getInput: (): ComponentAndProps => ({ component: TextInput }), + getDisplayFormatter: (column: ArrayLikeColumn) => { + const formatOneValue = makeDisplayFormatter(componentFactoryMap, column); + return (cellValue: unknown) => { + if (Array.isArray(cellValue)) { + return cellValue.map(formatOneValue).join(', '); + } + return formatOneValue(cellValue); + }; + }, + }; +} diff --git a/mathesar_ui/src/components/cell-fabric/data-types/boolean.ts b/mathesar_ui/src/components/cell-fabric/data-types/boolean.ts index d51d160e50..bb11b277ab 100644 --- a/mathesar_ui/src/components/cell-fabric/data-types/boolean.ts +++ b/mathesar_ui/src/components/cell-fabric/data-types/boolean.ts @@ -9,7 +9,6 @@ import SingleSelectCell from './components/select/SingleSelectCell.svelte'; import type { CheckBoxCellExternalProps, SingleSelectCellExternalProps, - CellValueFormatter, } from './components/typeDefinitions'; import type { CellComponentFactory, CellColumnLike } from './typeDefinitions'; @@ -66,10 +65,14 @@ const booleanType: CellComponentFactory = { component: Select, props: getProps(column), }), - getDisplayFormatter(column: BooleanLikeColumn): CellValueFormatter { + getDisplayFormatter(column: BooleanLikeColumn) { const labels = getLabels(column.display_options); - return (value: boolean | null | undefined) => - getFormattedValue(labels, value); + return (value: unknown) => { + if (value === null || value === undefined || typeof value === 'boolean') { + return getFormattedValue(labels, value); + } + return ''; + }; }, }; diff --git a/mathesar_ui/src/components/cell-fabric/data-types/components/typeDefinitions.ts b/mathesar_ui/src/components/cell-fabric/data-types/components/typeDefinitions.ts index 04c42dfd59..78522f830e 100644 --- a/mathesar_ui/src/components/cell-fabric/data-types/components/typeDefinitions.ts +++ b/mathesar_ui/src/components/cell-fabric/data-types/components/typeDefinitions.ts @@ -137,11 +137,11 @@ export interface DateTimeCellProps // Array export interface ArrayCellExternalProps { - formatElementForDisplay: CellValueFormatter; + formatElementForDisplay: CellValueFormatter; } export interface ArrayCellProps - extends CellTypeProps, + extends CellTypeProps, ArrayCellExternalProps {} // Common diff --git a/mathesar_ui/src/components/cell-fabric/data-types/date.ts b/mathesar_ui/src/components/cell-fabric/data-types/date.ts index 97d52b2b25..83a3f433ab 100644 --- a/mathesar_ui/src/components/cell-fabric/data-types/date.ts +++ b/mathesar_ui/src/components/cell-fabric/data-types/date.ts @@ -5,10 +5,7 @@ import { DateTimeFormatter, DateTimeSpecification, } from '@mathesar/utils/date-time'; -import type { - DateTimeCellExternalProps, - CellValueFormatter, -} from './components/typeDefinitions'; +import type { DateTimeCellExternalProps } from './components/typeDefinitions'; import type { CellComponentFactory, CellColumnLike } from './typeDefinitions'; import DateTimeCell from './components/date-time/DateTimeCell.svelte'; import DateTimeInput from './components/date-time/DateTimeInput.svelte'; @@ -58,8 +55,8 @@ const stringType: CellComponentFactory = { allowRelativePresets: true, }, }), - getDisplayFormatter(column: DateLikeColumn): CellValueFormatter { - return getProps(column).formatForDisplay; + getDisplayFormatter(column: DateLikeColumn) { + return (v) => getProps(column).formatForDisplay(String(v)); }, }; diff --git a/mathesar_ui/src/components/cell-fabric/data-types/datetime.ts b/mathesar_ui/src/components/cell-fabric/data-types/datetime.ts index 8a0d957722..637e9a3c0d 100644 --- a/mathesar_ui/src/components/cell-fabric/data-types/datetime.ts +++ b/mathesar_ui/src/components/cell-fabric/data-types/datetime.ts @@ -5,10 +5,7 @@ import { DateTimeFormatter, DateTimeSpecification, } from '@mathesar/utils/date-time'; -import type { - DateTimeCellExternalProps, - CellValueFormatter, -} from './components/typeDefinitions'; +import type { DateTimeCellExternalProps } from './components/typeDefinitions'; import type { CellComponentFactory, CellColumnLike } from './typeDefinitions'; import DateTimeCell from './components/date-time/DateTimeCell.svelte'; import DateTimeInput from './components/date-time/DateTimeInput.svelte'; @@ -47,7 +44,7 @@ function getProps( }; } -const stringType: CellComponentFactory = { +const datetimeType: CellComponentFactory = { get: ( column: DateLikeColumn, config?: { supportTimeZone?: boolean }, @@ -70,9 +67,12 @@ const stringType: CellComponentFactory = { getDisplayFormatter( column: DateLikeColumn, config?: { supportTimeZone?: boolean }, - ): CellValueFormatter { - return getProps(column, config?.supportTimeZone ?? false).formatForDisplay; + ) { + return (v) => + getProps(column, config?.supportTimeZone ?? false).formatForDisplay( + String(v), + ); }, }; -export default stringType; +export default datetimeType; diff --git a/mathesar_ui/src/components/cell-fabric/data-types/duration.ts b/mathesar_ui/src/components/cell-fabric/data-types/duration.ts index 5c0d609127..e774a5c8d1 100644 --- a/mathesar_ui/src/components/cell-fabric/data-types/duration.ts +++ b/mathesar_ui/src/components/cell-fabric/data-types/duration.ts @@ -12,10 +12,7 @@ import { DurationSpecification, } from '@mathesar/utils/duration'; import FormattedInputCell from './components/formatted-input/FormattedInputCell.svelte'; -import type { - FormattedInputCellExternalProps, - CellValueFormatter, -} from './components/typeDefinitions'; +import type { FormattedInputCellExternalProps } from './components/typeDefinitions'; import type { CellComponentFactory, CellColumnLike } from './typeDefinitions'; export interface DurationLikeColumn extends CellColumnLike { @@ -55,8 +52,8 @@ const durationType: CellComponentFactory = { component: FormattedInput, props: getProps(column), }), - getDisplayFormatter(column: DurationLikeColumn): CellValueFormatter { - return getProps(column).formatForDisplay; + getDisplayFormatter(column: DurationLikeColumn) { + return (v) => getProps(column).formatForDisplay(String(v)); }, }; diff --git a/mathesar_ui/src/components/cell-fabric/data-types/money.ts b/mathesar_ui/src/components/cell-fabric/data-types/money.ts index 12935de5ed..579bde82f6 100644 --- a/mathesar_ui/src/components/cell-fabric/data-types/money.ts +++ b/mathesar_ui/src/components/cell-fabric/data-types/money.ts @@ -9,10 +9,7 @@ import type { import type { ComponentAndProps } from '@mathesar-component-library/types'; import MoneyCell from './components/money/MoneyCell.svelte'; import MoneyCellInput from './components/money/MoneyCellInput.svelte'; -import type { - MoneyCellExternalProps, - CellValueFormatter, -} from './components/typeDefinitions'; +import type { MoneyCellExternalProps } from './components/typeDefinitions'; import type { CellComponentFactory } from './typeDefinitions'; import { getUseGrouping } from './number'; @@ -99,8 +96,8 @@ const moneyType: CellComponentFactory = { }; }, - getDisplayFormatter(column: MoneyColumn): CellValueFormatter { - return getProps(column).formatForDisplay; + getDisplayFormatter(column: MoneyColumn) { + return (v) => getProps(column).formatForDisplay(String(v)); }, }; diff --git a/mathesar_ui/src/components/cell-fabric/data-types/number.ts b/mathesar_ui/src/components/cell-fabric/data-types/number.ts index 0968100d0e..061ec97a9e 100644 --- a/mathesar_ui/src/components/cell-fabric/data-types/number.ts +++ b/mathesar_ui/src/components/cell-fabric/data-types/number.ts @@ -1,19 +1,16 @@ +import { + isDefinedNonNullable, + StringifiedNumberFormatter, +} from '@mathesar-component-library'; +import type { ComponentAndProps } from '@mathesar-component-library/types'; import type { NumberColumn, NumberDisplayOptions, NumberFormat, } from '@mathesar/api/types/tables/columns'; -import { - StringifiedNumberFormatter, - isDefinedNonNullable, -} from '@mathesar-component-library'; -import type { ComponentAndProps } from '@mathesar-component-library/types'; import NumberCell from './components/number/NumberCell.svelte'; import NumberCellInput from './components/number/NumberCellInput.svelte'; -import type { - CellValueFormatter, - NumberCellExternalProps, -} from './components/typeDefinitions'; +import type { NumberCellExternalProps } from './components/typeDefinitions'; import type { CellComponentFactory } from './typeDefinitions'; // prettier-ignore @@ -109,7 +106,7 @@ function getProps( }; } -const numberType: CellComponentFactory = { +const numberType: CellComponentFactory = { get( column: NumberColumn, config?: Config, @@ -130,11 +127,8 @@ const numberType: CellComponentFactory = { }; }, - getDisplayFormatter( - column: NumberColumn, - config?: Config, - ): CellValueFormatter { - return getProps(column, config).formatForDisplay; + getDisplayFormatter(column: NumberColumn, config?: Config) { + return (v) => getProps(column, config).formatForDisplay(String(v)); }, }; diff --git a/mathesar_ui/src/components/cell-fabric/data-types/string.ts b/mathesar_ui/src/components/cell-fabric/data-types/string.ts index 310e87b61d..584fcb23aa 100644 --- a/mathesar_ui/src/components/cell-fabric/data-types/string.ts +++ b/mathesar_ui/src/components/cell-fabric/data-types/string.ts @@ -44,6 +44,7 @@ const stringType: CellComponentFactory = { }, }; }, + getDisplayFormatter: () => String, }; export default stringType; diff --git a/mathesar_ui/src/components/cell-fabric/data-types/time.ts b/mathesar_ui/src/components/cell-fabric/data-types/time.ts index 1e1b34fa79..ff5b62d0c4 100644 --- a/mathesar_ui/src/components/cell-fabric/data-types/time.ts +++ b/mathesar_ui/src/components/cell-fabric/data-types/time.ts @@ -5,10 +5,7 @@ import { DateTimeFormatter, DateTimeSpecification, } from '@mathesar/utils/date-time'; -import type { - DateTimeCellExternalProps, - CellValueFormatter, -} from './components/typeDefinitions'; +import type { DateTimeCellExternalProps } from './components/typeDefinitions'; import type { CellComponentFactory, CellColumnLike } from './typeDefinitions'; import DateTimeCell from './components/date-time/DateTimeCell.svelte'; import DateTimeInput from './components/date-time/DateTimeInput.svelte'; @@ -68,8 +65,9 @@ const timeType: CellComponentFactory = { getDisplayFormatter( column: TimeLikeColumn, config?: { supportTimeZone?: boolean }, - ): CellValueFormatter { - return getProps(column, config?.supportTimeZone ?? false).formatForDisplay; + ) { + const supportTimeZone = config?.supportTimeZone ?? false; + return (v) => getProps(column, supportTimeZone).formatForDisplay(String(v)); }, }; diff --git a/mathesar_ui/src/components/cell-fabric/data-types/typeDefinitions.ts b/mathesar_ui/src/components/cell-fabric/data-types/typeDefinitions.ts index 825a6e39d2..b3b07b7b54 100644 --- a/mathesar_ui/src/components/cell-fabric/data-types/typeDefinitions.ts +++ b/mathesar_ui/src/components/cell-fabric/data-types/typeDefinitions.ts @@ -25,7 +25,7 @@ export type CellColumnLike = Pick< 'type' | 'type_options' | 'display_options' >; -export interface CellComponentFactory { +export interface CellComponentFactory { initialInputValue?: unknown; get( column: CellColumnLike, @@ -35,8 +35,8 @@ export interface CellComponentFactory { column: CellColumnLike, config?: Record, ): ComponentAndProps; - getDisplayFormatter?( + getDisplayFormatter( column: CellColumnLike, config?: Record, - ): CellValueFormatter; + ): CellValueFormatter; } diff --git a/mathesar_ui/src/components/cell-fabric/data-types/uri.ts b/mathesar_ui/src/components/cell-fabric/data-types/uri.ts index 53a3ffa1a3..39442c4958 100644 --- a/mathesar_ui/src/components/cell-fabric/data-types/uri.ts +++ b/mathesar_ui/src/components/cell-fabric/data-types/uri.ts @@ -7,6 +7,7 @@ const uriType: CellComponentFactory = { initialInputValue: '', get: (): ComponentAndProps => ({ component: UriCell }), getInput: (): ComponentAndProps => ({ component: TextInput }), + getDisplayFormatter: () => String, }; export default uriType; From 8a3c5a263bd311d1b1b11ba6df4b0c679a3b7153 Mon Sep 17 00:00:00 2001 From: Sean Colsen Date: Fri, 31 Mar 2023 11:02:55 -0400 Subject: [PATCH 195/553] Add formatCellValue fn to processedColumn types --- .../src/components/cell-fabric/utils.ts | 37 ++++++++++++++--- .../src/stores/table-data/processedColumns.ts | 40 +++++++++++-------- .../src/systems/data-explorer/utils.ts | 3 ++ 3 files changed, 59 insertions(+), 21 deletions(-) diff --git a/mathesar_ui/src/components/cell-fabric/utils.ts b/mathesar_ui/src/components/cell-fabric/utils.ts index 11beea2d87..7c59438599 100644 --- a/mathesar_ui/src/components/cell-fabric/utils.ts +++ b/mathesar_ui/src/components/cell-fabric/utils.ts @@ -1,13 +1,15 @@ -import type { CellInfo } from '@mathesar/stores/abstract-types/types'; import type { ComponentAndProps } from '@mathesar-component-library/types'; import type { TableEntry } from '@mathesar/api/types/tables'; -import { getCellInfo, getCellConfiguration } from './data-types/utils'; +import type { Column } from '@mathesar/api/types/tables/columns'; +import type { CellInfo } from '@mathesar/stores/abstract-types/types'; +import type { RecordSummariesForSheet } from '@mathesar/stores/table-data/record-summaries/recordSummaryUtils'; import DataTypes from './data-types'; -import type { CellColumnLike } from './data-types/typeDefinitions'; -import type { LinkedRecordCellExternalProps } from './data-types/components/typeDefinitions'; import LinkedRecordCell from './data-types/components/linked-record/LinkedRecordCell.svelte'; -import PrimaryKeyCell from './data-types/components/primary-key/PrimaryKeyCell.svelte'; import LinkedRecordInput from './data-types/components/linked-record/LinkedRecordInput.svelte'; +import PrimaryKeyCell from './data-types/components/primary-key/PrimaryKeyCell.svelte'; +import type { LinkedRecordCellExternalProps } from './data-types/components/typeDefinitions'; +import type { CellColumnLike } from './data-types/typeDefinitions'; +import { getCellConfiguration, getCellInfo } from './data-types/utils'; export function getCellCap({ cellInfo, @@ -77,3 +79,28 @@ export function getInitialInputValue( const cellInfo = optionalCellInfo ?? getCellInfo(column.type); return DataTypes[cellInfo?.type ?? 'string'].initialInputValue; } + +export function getDisplayFormatter( + column: CellColumnLike, + columnId?: Column['id'], +): ( + value: unknown, + recordSummaries?: RecordSummariesForSheet, +) => string | null | undefined { + const cellInfo = getCellInfo(column.type); + const config = getCellConfiguration(column.type, cellInfo); + const dataType = cellInfo?.type ?? 'string'; + const format = DataTypes[dataType].getDisplayFormatter(column, config); + return (cellValue: unknown, recordSummaries?: RecordSummariesForSheet) => { + if (!recordSummaries || columnId === undefined) { + return format(cellValue); + } + const recordSummary = recordSummaries + .get(String(columnId)) + ?.get(String(cellValue)); + if (recordSummary) { + return recordSummary; + } + return format(cellValue); + }; +} diff --git a/mathesar_ui/src/stores/table-data/processedColumns.ts b/mathesar_ui/src/stores/table-data/processedColumns.ts index fa72fb91f4..3a8b3f57b1 100644 --- a/mathesar_ui/src/stores/table-data/processedColumns.ts +++ b/mathesar_ui/src/stores/table-data/processedColumns.ts @@ -1,29 +1,31 @@ -import type { Readable } from 'svelte/store'; +import type { ComponentAndProps } from '@mathesar-component-library/types'; +import type { TableEntry } from '@mathesar/api/types/tables'; import type { Column } from '@mathesar/api/types/tables/columns'; import type { Constraint, FkConstraint, } from '@mathesar/api/types/tables/constraints'; -import type { ComponentAndProps } from '@mathesar-component-library/types'; -import type { - AbstractType, - AbstractTypesMap, - AbstractTypePreprocFunctionDefinition, -} from '@mathesar/stores/abstract-types/types'; -import { - getFiltersForAbstractType, - getAbstractTypeForDbType, - getPreprocFunctionsForAbstractType, -} from '@mathesar/stores/abstract-types'; +import type { CellColumnFabric } from '@mathesar/components/cell-fabric/types'; import { getCellCap, getDbTypeBasedInputCap, + getDisplayFormatter, getInitialInputValue, } from '@mathesar/components/cell-fabric/utils'; -import type { CellColumnFabric } from '@mathesar/components/cell-fabric/types'; -import type { TableEntry } from '@mathesar/api/types/tables'; import { retrieveFilters } from '@mathesar/components/filter-entry/utils'; +import { + getAbstractTypeForDbType, + getFiltersForAbstractType, + getPreprocFunctionsForAbstractType, +} from '@mathesar/stores/abstract-types'; +import type { + AbstractType, + AbstractTypePreprocFunctionDefinition, + AbstractTypesMap, +} from '@mathesar/stores/abstract-types/types'; +import type { Readable } from 'svelte/store'; import { findFkConstraintsForColumn } from './constraintsUtils'; +import type { RecordSummariesForSheet } from './record-summaries/recordSummaryUtils'; export interface ProcessedColumn extends CellColumnFabric { /** @@ -48,6 +50,10 @@ export interface ProcessedColumn extends CellColumnFabric { inputComponentAndProps: ComponentAndProps; allowedFiltersMap: ReturnType; preprocFunctions: AbstractTypePreprocFunctionDefinition[]; + formatCellValue: ( + cellValue: unknown, + recordSummaries?: RecordSummariesForSheet, + ) => string | null | undefined; } /** Maps column ids to processed columns */ @@ -87,6 +93,7 @@ export function processColumn({ ); const linkFk = findFkConstraintsForColumn(exclusiveConstraints, column.id)[0]; const isPk = (hasEnhancedPrimaryKeyCell ?? true) && column.primary_key; + const fkTargetTableId = linkFk ? linkFk.referent_table : undefined; return { id: column.id, column, @@ -103,17 +110,18 @@ export function processColumn({ cellComponentAndProps: getCellCap({ cellInfo: abstractType.cellInfo, column, - fkTargetTableId: linkFk ? linkFk.referent_table : undefined, + fkTargetTableId, pkTargetTableId: isPk ? tableId : undefined, }), inputComponentAndProps: getDbTypeBasedInputCap( column, - linkFk ? linkFk.referent_table : undefined, + fkTargetTableId, abstractType.cellInfo, ), allowedFiltersMap: retrieveFilters(abstractType.identifier, linkFk), preprocFunctions: getPreprocFunctionsForAbstractType( abstractType.identifier, ), + formatCellValue: getDisplayFormatter(column, column.id), }; } diff --git a/mathesar_ui/src/systems/data-explorer/utils.ts b/mathesar_ui/src/systems/data-explorer/utils.ts index aa6a7c4b38..e6876d0e37 100644 --- a/mathesar_ui/src/systems/data-explorer/utils.ts +++ b/mathesar_ui/src/systems/data-explorer/utils.ts @@ -20,6 +20,7 @@ import type { import { getCellCap, getDbTypeBasedInputCap, + getDisplayFormatter, getInitialInputValue, } from '@mathesar/components/cell-fabric/utils'; import type { CellColumnFabric } from '@mathesar/components/cell-fabric/types'; @@ -45,6 +46,7 @@ export interface ProcessedQueryResultColumn extends CellColumnFabric { allowedFiltersMap: ReturnType; preprocFunctions: AbstractTypePreprocFunctionDefinition[]; source: ProcessedQueryResultColumnSource; + formatCellValue: (cellValue: unknown) => string | null | undefined; } export interface ProcessedQueryOutputColumn extends ProcessedQueryResultColumn { @@ -332,6 +334,7 @@ function processColumn( abstractType.identifier, ), source, + formatCellValue: getDisplayFormatter(column), }; } From 945cda43fc83e1bc1668934a87eb7104837496c9 Mon Sep 17 00:00:00 2001 From: Sean Colsen Date: Fri, 31 Mar 2023 11:06:11 -0400 Subject: [PATCH 196/553] Expose ClipboardControllers to table and query --- .../sheet/SheetClipboardController.ts | 123 ++++++++++++++++++ .../src/components/sheet/SheetSelection.ts | 4 +- mathesar_ui/src/stores/clipboard.ts | 28 ++++ mathesar_ui/src/stores/table-data/index.ts | 1 + .../data-explorer/result-pane/Results.svelte | 30 +++-- .../src/systems/table-view/TableView.svelte | 25 +++- 6 files changed, 197 insertions(+), 14 deletions(-) create mode 100644 mathesar_ui/src/components/sheet/SheetClipboardController.ts create mode 100644 mathesar_ui/src/stores/clipboard.ts diff --git a/mathesar_ui/src/components/sheet/SheetClipboardController.ts b/mathesar_ui/src/components/sheet/SheetClipboardController.ts new file mode 100644 index 0000000000..9c0f070b17 --- /dev/null +++ b/mathesar_ui/src/components/sheet/SheetClipboardController.ts @@ -0,0 +1,123 @@ +import { get } from 'svelte/store'; + +import { ImmutableSet } from '@mathesar/component-library'; +import SheetSelection, { + isCellSelected, +} from '@mathesar/components/sheet/SheetSelection'; +import type { + ClipboardController, + CopyingStrategy, +} from '@mathesar/stores/clipboard'; +import type { + ProcessedColumn, + RecordRow, + RecordSummariesForSheet, +} from '@mathesar/stores/table-data'; +import type { QueryRow } from '@mathesar/systems/data-explorer/QueryRunner'; +import type { ProcessedQueryOutputColumn } from '@mathesar/systems/data-explorer/utils'; +import type { ReadableMapLike } from '@mathesar/typeUtils'; + +/** Keys are row ids, values are records */ +type IndexedRecords = Map>; + +function getCellText< + Column extends ProcessedQueryOutputColumn | ProcessedColumn, +>( + indexedRecords: IndexedRecords, + columnsMap: ReadableMapLike, + rowId: number, + columnId: Column['id'], + strategy: CopyingStrategy, + recordSummaries: RecordSummariesForSheet, +): string { + const record = indexedRecords.get(rowId); + if (!record) { + return ''; + } + const rawCellValue: unknown = record[String(columnId)]; + if (rawCellValue === undefined || rawCellValue === null) { + return ''; + } + const stringifiedRawCellValue = String(rawCellValue); + if (strategy === 'raw') { + return stringifiedRawCellValue; + } + const processedColumn = columnsMap.get(columnId); + if (!processedColumn) { + return stringifiedRawCellValue; + } + const formattedValue = processedColumn.formatCellValue( + rawCellValue, + recordSummaries, + ); + if (formattedValue === undefined || formattedValue === null) { + return ''; + } + return formattedValue; +} + +interface SheetClipboardControllerDeps< + Row extends QueryRow | RecordRow, + Column extends ProcessedQueryOutputColumn | ProcessedColumn, +> { + selection: SheetSelection; + getRows(): Row[]; + getColumnsMap(): ReadableMapLike; + getRecordSummaries(): RecordSummariesForSheet; +} + +export class SheetClipboardController< + Row extends QueryRow | RecordRow, + Column extends ProcessedQueryOutputColumn | ProcessedColumn, +> implements ClipboardController +{ + private readonly deps: SheetClipboardControllerDeps; + + constructor(deps: SheetClipboardControllerDeps) { + this.deps = deps; + } + + private getColumnIds(cells: ImmutableSet) { + return this.deps.selection.getSelectedUniqueColumnsId( + cells, + // We don't care about the columns selected when the table is empty, + // because we only care about cells selected that have content. + new ImmutableSet(), + ); + } + + private getRowIds(cells: ImmutableSet) { + return this.deps.selection.getSelectedUniqueRowsId(cells); + } + + private getCopyContent(strategy: CopyingStrategy): string { + const cells = get(this.deps.selection.selectedCells); + let result = ''; + const indexedRecords = new Map( + this.deps.getRows().map((r) => [r.rowIndex, r.record]), + ); + const processedColumns = this.deps.getColumnsMap(); + const recordSummaries = this.deps.getRecordSummaries(); + for (const rowId of this.getRowIds(cells)) { + for (const columnId of this.getColumnIds(cells)) { + if (isCellSelected(cells, { rowIndex: rowId }, { id: columnId })) { + result += getCellText( + indexedRecords, + processedColumns, + rowId, + columnId, + strategy, + recordSummaries, + ); + } + result += '\t'; + } + result += '\n'; + } + return result; + } + + copy(strategy: CopyingStrategy): Promise { + return navigator.clipboard.writeText(this.getCopyContent(strategy)); + } +} diff --git a/mathesar_ui/src/components/sheet/SheetSelection.ts b/mathesar_ui/src/components/sheet/SheetSelection.ts index 0d2c24c725..df417e140d 100644 --- a/mathesar_ui/src/components/sheet/SheetSelection.ts +++ b/mathesar_ui/src/components/sheet/SheetSelection.ts @@ -1,12 +1,12 @@ import { ImmutableSet, WritableSet } from '@mathesar-component-library'; import { get, writable, type Unsubscriber, type Writable } from 'svelte/store'; -interface SelectionColumn { +export interface SelectionColumn { id: number | string; columnIndex: number; } -interface SelectionRow { +export interface SelectionRow { rowIndex: number; } diff --git a/mathesar_ui/src/stores/clipboard.ts b/mathesar_ui/src/stores/clipboard.ts new file mode 100644 index 0000000000..5dd18e81d8 --- /dev/null +++ b/mathesar_ui/src/stores/clipboard.ts @@ -0,0 +1,28 @@ +import { getContext, setContext } from 'svelte'; +import { writable, type Readable, type Writable } from 'svelte/store'; + +import { ensureReadable } from '@mathesar/component-library'; + +export type CopyingStrategy = 'raw' | 'formatted'; + +export interface ClipboardController { + copy: (strategy: CopyingStrategy) => Promise; +} + +const contextKey = Symbol('ClipboardController'); + +export function setNewClipboardControllerStoreInContext(): Writable< + ClipboardController | undefined +> { + const controller = writable(undefined); + setContext(contextKey, controller); + return controller; +} + +export function getClipboardControllerStoreFromContext(): Readable< + ClipboardController | undefined +> { + return ensureReadable( + getContext | undefined>(contextKey), + ); +} diff --git a/mathesar_ui/src/stores/table-data/index.ts b/mathesar_ui/src/stores/table-data/index.ts index d3b24a2608..0e91395014 100644 --- a/mathesar_ui/src/stores/table-data/index.ts +++ b/mathesar_ui/src/stores/table-data/index.ts @@ -56,3 +56,4 @@ export { export { TableStructure } from './TableStructure'; export { SearchFuzzy } from './searchFuzzy'; export { constraintIsFk, findFkConstraintsForColumn } from './constraintsUtils'; +export { type RecordSummariesForSheet } from './record-summaries/recordSummaryUtils'; diff --git a/mathesar_ui/src/systems/data-explorer/result-pane/Results.svelte b/mathesar_ui/src/systems/data-explorer/result-pane/Results.svelte index 823c30bb5f..aafb65c174 100644 --- a/mathesar_ui/src/systems/data-explorer/result-pane/Results.svelte +++ b/mathesar_ui/src/systems/data-explorer/result-pane/Results.svelte @@ -1,22 +1,28 @@
import { tick } from 'svelte'; + import { - ContextMenu, ButtonMenuItem, + ContextMenu, LinkMenuItem, WritableMap, } from '@mathesar-component-library'; + import type { RequestStatus } from '@mathesar/api/utils/requestUtils'; + import { States } from '@mathesar/api/utils/requestUtils'; + import CellFabric from '@mathesar/components/cell-fabric/CellFabric.svelte'; + import CellBackground from '@mathesar/components/CellBackground.svelte'; + import Null from '@mathesar/components/Null.svelte'; + import RowCellBackgrounds from '@mathesar/components/RowCellBackgrounds.svelte'; + import { + isCellActive, + isCellSelected, + scrollBasedOnActiveCell, + SheetCell, + } from '@mathesar/components/sheet'; + import { + iconCopyFormattedContent, + iconCopyRawContent, + iconLinkToRecordPage, + iconSetToNull, + } from '@mathesar/icons'; + import { getClipboardControllerStoreFromContext } from '@mathesar/stores/clipboard'; + import { currentDatabase } from '@mathesar/stores/databases'; + import { currentSchema } from '@mathesar/stores/schemas'; + import { storeToGetRecordPageUrl } from '@mathesar/stores/storeBasedUrls'; import { rowHasNewRecord, - type RecordRow, - type RecordsData, type CellKey, type ProcessedColumn, + type RecordRow, + type RecordsData, type TabularDataSelection, } from '@mathesar/stores/table-data'; - import { - isCellActive, - scrollBasedOnActiveCell, - isCellSelected, - } from '@mathesar/components/sheet'; - import CellFabric from '@mathesar/components/cell-fabric/CellFabric.svelte'; - import Null from '@mathesar/components/Null.svelte'; - import type { RequestStatus } from '@mathesar/api/utils/requestUtils'; - import { States } from '@mathesar/api/utils/requestUtils'; - import { SheetCell } from '@mathesar/components/sheet'; - import { iconLinkToRecordPage, iconSetToNull } from '@mathesar/icons'; - import { storeToGetRecordPageUrl } from '@mathesar/stores/storeBasedUrls'; - import CellBackground from '@mathesar/components/CellBackground.svelte'; - import RowCellBackgrounds from '@mathesar/components/RowCellBackgrounds.svelte'; import { getUserProfileStoreFromContext } from '@mathesar/stores/userProfile'; - import { currentDatabase } from '@mathesar/stores/databases'; - import { currentSchema } from '@mathesar/stores/schemas'; import CellErrors from './CellErrors.svelte'; + const clipboardControllerStore = getClipboardControllerStoreFromContext(); + export let recordsData: RecordsData; export let selection: TabularDataSelection; export let row: RecordRow; @@ -51,7 +60,7 @@ { database, schema }, 'canEditTableRecords', ); - + $: clipboardController = $clipboardControllerStore; $: recordsDataState = recordsData.state; $: ({ recordSummaries } = recordsData); $: ({ column, linkFk } = processedColumn); @@ -195,6 +204,20 @@ Go To Linked Record {/if} + clipboardController?.copy('raw')} + > + Copy as Raw Values + + clipboardController?.copy('formatted')} + > + Copy as Formatted Values + {#if errors.length} From 8fd4c9f2c208eaecc4892c02625ef3e73135d330 Mon Sep 17 00:00:00 2001 From: Sean Colsen Date: Fri, 31 Mar 2023 17:55:35 -0400 Subject: [PATCH 198/553] Improve copy triggering behavior - Use DOM `copy` event. - Default to copying formatted values. --- .../components/cell-fabric/CellFabric.svelte | 17 ----------------- mathesar_ui/src/components/sheet/Sheet.svelte | 12 +++++++++++- mathesar_ui/src/icons/index.ts | 4 ++-- .../src/systems/table-view/row/RowCell.svelte | 12 ++++++------ 4 files changed, 19 insertions(+), 26 deletions(-) diff --git a/mathesar_ui/src/components/cell-fabric/CellFabric.svelte b/mathesar_ui/src/components/cell-fabric/CellFabric.svelte index 2c0992e082..d64b0cc156 100644 --- a/mathesar_ui/src/components/cell-fabric/CellFabric.svelte +++ b/mathesar_ui/src/components/cell-fabric/CellFabric.svelte @@ -4,7 +4,6 @@ This component is meant to be common for tables, queries, and for import preview -->
import { writable } from 'svelte/store'; + import { ImmutableMap } from '@mathesar-component-library/types'; + import { getClipboardControllerStoreFromContext } from '@mathesar/stores/clipboard'; import { - setSheetContext, calculateColumnStyleMapAndRowWidth, DEFAULT_COLUMN_WIDTH, + setSheetContext, } from './utils'; type SheetColumnType = $$Generic; type SheetColumnIdentifierKey = $$Generic; + const clipboardControllerStore = getClipboardControllerStoreFromContext(); + export let columns: SheetColumnType[]; export let usesVirtualList = false; export let restrictWidthToRowWidth = false; @@ -27,6 +31,7 @@ export let columnWidths: ImmutableMap = new ImmutableMap(); + $: clipboardController = $clipboardControllerStore; $: ({ columnStyleMap, rowWidth } = calculateColumnStyleMapAndRowWidth( columns, getColumnIdentifier, @@ -84,6 +89,10 @@ setSheetContext({ stores, api }); $: style = restrictWidthToRowWidth ? `width:${rowWidth}px;` : undefined; + + function handleCopy() { + clipboardController?.copy('formatted'); + }
{#if columns.length} diff --git a/mathesar_ui/src/icons/index.ts b/mathesar_ui/src/icons/index.ts index f4d82cfefe..ef7b17e2e4 100644 --- a/mathesar_ui/src/icons/index.ts +++ b/mathesar_ui/src/icons/index.ts @@ -63,7 +63,6 @@ import { faUpRightFromSquare, faCircleInfo, faUserGear, - faPaintBrush, } from '@fortawesome/free-solid-svg-icons'; import type { IconProps } from '@mathesar-component-library/types'; import { @@ -92,8 +91,9 @@ import { export const iconAddNew: IconProps = { data: faPlus }; export const iconAddUser: IconProps = { data: faUserPlus }; export const iconConfigure: IconProps = { data: faCogs }; +/** TODO: use faBinary once it's available (via newer FontAwesome version) */ export const iconCopyRawContent: IconProps = { data: faCopy }; -export const iconCopyFormattedContent: IconProps = { data: faPaintBrush }; +export const iconCopyFormattedContent: IconProps = { data: faCopy }; /** When you're deleting something significant or difficult to recover */ export const iconDeleteMajor: IconProps = { data: faTrashAlt }; /** When you're deleting something smaller or more ephemeral */ diff --git a/mathesar_ui/src/systems/table-view/row/RowCell.svelte b/mathesar_ui/src/systems/table-view/row/RowCell.svelte index 55cd3b9cc4..21847878e9 100644 --- a/mathesar_ui/src/systems/table-view/row/RowCell.svelte +++ b/mathesar_ui/src/systems/table-view/row/RowCell.svelte @@ -205,18 +205,18 @@ {/if} clipboardController?.copy('raw')} + on:click={() => clipboardController?.copy('formatted')} > - Copy as Raw Values + Copy clipboardController?.copy('formatted')} + on:click={() => clipboardController?.copy('raw')} > - Copy as Formatted Values + Copy as Raw Values {#if errors.length} From a3aa31403d7f8139469f025851963367143e8817 Mon Sep 17 00:00:00 2001 From: Sean Colsen Date: Fri, 31 Mar 2023 21:29:48 -0400 Subject: [PATCH 199/553] Remove "copy" context menu entries --- .../src/systems/table-view/row/RowCell.svelte | 25 +------------------ 1 file changed, 1 insertion(+), 24 deletions(-) diff --git a/mathesar_ui/src/systems/table-view/row/RowCell.svelte b/mathesar_ui/src/systems/table-view/row/RowCell.svelte index 21847878e9..82b6bedd62 100644 --- a/mathesar_ui/src/systems/table-view/row/RowCell.svelte +++ b/mathesar_ui/src/systems/table-view/row/RowCell.svelte @@ -19,13 +19,7 @@ scrollBasedOnActiveCell, SheetCell, } from '@mathesar/components/sheet'; - import { - iconCopyFormattedContent, - iconCopyRawContent, - iconLinkToRecordPage, - iconSetToNull, - } from '@mathesar/icons'; - import { getClipboardControllerStoreFromContext } from '@mathesar/stores/clipboard'; + import { iconLinkToRecordPage, iconSetToNull } from '@mathesar/icons'; import { currentDatabase } from '@mathesar/stores/databases'; import { currentSchema } from '@mathesar/stores/schemas'; import { storeToGetRecordPageUrl } from '@mathesar/stores/storeBasedUrls'; @@ -40,8 +34,6 @@ import { getUserProfileStoreFromContext } from '@mathesar/stores/userProfile'; import CellErrors from './CellErrors.svelte'; - const clipboardControllerStore = getClipboardControllerStoreFromContext(); - export let recordsData: RecordsData; export let selection: TabularDataSelection; export let row: RecordRow; @@ -60,7 +52,6 @@ { database, schema }, 'canEditTableRecords', ); - $: clipboardController = $clipboardControllerStore; $: recordsDataState = recordsData.state; $: ({ recordSummaries } = recordsData); $: ({ column, linkFk } = processedColumn); @@ -204,20 +195,6 @@ Go To Linked Record {/if} - clipboardController?.copy('formatted')} - > - Copy - - clipboardController?.copy('raw')} - > - Copy as Raw Values - {#if errors.length} From 46be241eea6610ff81462f5dd2850fd452166d9d Mon Sep 17 00:00:00 2001 From: Sean Colsen Date: Fri, 31 Mar 2023 21:45:49 -0400 Subject: [PATCH 200/553] Use sync clipboard API instead of async With the async API, Firefox still only supports `writeText` (not `write`), which means we wouldn't be able to add custom MIME types. Using the sync API lets us write multi-part data to store custom Mathesar-specific metadata when copying. --- mathesar_ui/src/components/sheet/Sheet.svelte | 12 +++---- ...Controller.ts => SheetClipboardHandler.ts} | 35 ++++++++++++------- mathesar_ui/src/stores/clipboard.ts | 20 +++++------ .../data-explorer/result-pane/Results.svelte | 10 +++--- .../src/systems/table-view/TableView.svelte | 10 +++--- 5 files changed, 45 insertions(+), 42 deletions(-) rename mathesar_ui/src/components/sheet/{SheetClipboardController.ts => SheetClipboardHandler.ts} (78%) diff --git a/mathesar_ui/src/components/sheet/Sheet.svelte b/mathesar_ui/src/components/sheet/Sheet.svelte index 7a68de2c9e..55d311e300 100644 --- a/mathesar_ui/src/components/sheet/Sheet.svelte +++ b/mathesar_ui/src/components/sheet/Sheet.svelte @@ -2,7 +2,7 @@ import { writable } from 'svelte/store'; import { ImmutableMap } from '@mathesar-component-library/types'; - import { getClipboardControllerStoreFromContext } from '@mathesar/stores/clipboard'; + import { getClipboardHandlerStoreFromContext } from '@mathesar/stores/clipboard'; import { calculateColumnStyleMapAndRowWidth, DEFAULT_COLUMN_WIDTH, @@ -12,7 +12,7 @@ type SheetColumnType = $$Generic; type SheetColumnIdentifierKey = $$Generic; - const clipboardControllerStore = getClipboardControllerStoreFromContext(); + const clipboardHandlerStore = getClipboardHandlerStoreFromContext(); export let columns: SheetColumnType[]; export let usesVirtualList = false; @@ -31,7 +31,7 @@ export let columnWidths: ImmutableMap = new ImmutableMap(); - $: clipboardController = $clipboardControllerStore; + $: clipboardHandler = $clipboardHandlerStore; $: ({ columnStyleMap, rowWidth } = calculateColumnStyleMapAndRowWidth( columns, getColumnIdentifier, @@ -89,10 +89,6 @@ setSheetContext({ stores, api }); $: style = restrictWidthToRowWidth ? `width:${rowWidth}px;` : undefined; - - function handleCopy() { - clipboardController?.copy('formatted'); - }
clipboardHandler?.handleCopy(e)} > {#if columns.length} diff --git a/mathesar_ui/src/components/sheet/SheetClipboardController.ts b/mathesar_ui/src/components/sheet/SheetClipboardHandler.ts similarity index 78% rename from mathesar_ui/src/components/sheet/SheetClipboardController.ts rename to mathesar_ui/src/components/sheet/SheetClipboardHandler.ts index 9c0f070b17..4f6b7ffe18 100644 --- a/mathesar_ui/src/components/sheet/SheetClipboardController.ts +++ b/mathesar_ui/src/components/sheet/SheetClipboardHandler.ts @@ -4,10 +4,7 @@ import { ImmutableSet } from '@mathesar/component-library'; import SheetSelection, { isCellSelected, } from '@mathesar/components/sheet/SheetSelection'; -import type { - ClipboardController, - CopyingStrategy, -} from '@mathesar/stores/clipboard'; +import type { ClipboardHandler } from '@mathesar/stores/clipboard'; import type { ProcessedColumn, RecordRow, @@ -17,6 +14,12 @@ import type { QueryRow } from '@mathesar/systems/data-explorer/QueryRunner'; import type { ProcessedQueryOutputColumn } from '@mathesar/systems/data-explorer/utils'; import type { ReadableMapLike } from '@mathesar/typeUtils'; +const MIME_PLAIN_TEXT = 'text/plain'; +const MIME_MATHESAR_SHEET_CLIPBOARD = + 'application/x-vnd.mathesar-sheet-clipboard'; + +type CopyingStrategy = 'raw' | 'formatted'; + /** Keys are row ids, values are records */ type IndexedRecords = Map>; @@ -56,7 +59,7 @@ function getCellText< return formattedValue; } -interface SheetClipboardControllerDeps< +interface SheetClipboardHandlerDeps< Row extends QueryRow | RecordRow, Column extends ProcessedQueryOutputColumn | ProcessedColumn, > { @@ -66,14 +69,14 @@ interface SheetClipboardControllerDeps< getRecordSummaries(): RecordSummariesForSheet; } -export class SheetClipboardController< +export class SheetClipboardHandler< Row extends QueryRow | RecordRow, Column extends ProcessedQueryOutputColumn | ProcessedColumn, -> implements ClipboardController +> implements ClipboardHandler { - private readonly deps: SheetClipboardControllerDeps; + private readonly deps: SheetClipboardHandlerDeps; - constructor(deps: SheetClipboardControllerDeps) { + constructor(deps: SheetClipboardHandlerDeps) { this.deps = deps; } @@ -90,7 +93,7 @@ export class SheetClipboardController< return this.deps.selection.getSelectedUniqueRowsId(cells); } - private getCopyContent(strategy: CopyingStrategy): string { + private getCopyContent(): string { const cells = get(this.deps.selection.selectedCells); let result = ''; const indexedRecords = new Map( @@ -106,7 +109,7 @@ export class SheetClipboardController< processedColumns, rowId, columnId, - strategy, + 'formatted', recordSummaries, ); } @@ -117,7 +120,13 @@ export class SheetClipboardController< return result; } - copy(strategy: CopyingStrategy): Promise { - return navigator.clipboard.writeText(this.getCopyContent(strategy)); + handleCopy(event: ClipboardEvent): void { + if (event.clipboardData == null) { + return; + } + const text = this.getCopyContent(); + event.clipboardData.setData(MIME_PLAIN_TEXT, text); + // TODO put Mathesar-specific representation of raw data in JSON below + event.clipboardData.setData(MIME_MATHESAR_SHEET_CLIPBOARD, ''); } } diff --git a/mathesar_ui/src/stores/clipboard.ts b/mathesar_ui/src/stores/clipboard.ts index 5dd18e81d8..4ad6f65f37 100644 --- a/mathesar_ui/src/stores/clipboard.ts +++ b/mathesar_ui/src/stores/clipboard.ts @@ -3,26 +3,24 @@ import { writable, type Readable, type Writable } from 'svelte/store'; import { ensureReadable } from '@mathesar/component-library'; -export type CopyingStrategy = 'raw' | 'formatted'; - -export interface ClipboardController { - copy: (strategy: CopyingStrategy) => Promise; +export interface ClipboardHandler { + handleCopy: (event: ClipboardEvent) => void; } -const contextKey = Symbol('ClipboardController'); +const contextKey = Symbol('ClipboardHandlerStore'); -export function setNewClipboardControllerStoreInContext(): Writable< - ClipboardController | undefined +export function setNewClipboardHandlerStoreInContext(): Writable< + ClipboardHandler | undefined > { - const controller = writable(undefined); + const controller = writable(undefined); setContext(contextKey, controller); return controller; } -export function getClipboardControllerStoreFromContext(): Readable< - ClipboardController | undefined +export function getClipboardHandlerStoreFromContext(): Readable< + ClipboardHandler | undefined > { return ensureReadable( - getContext | undefined>(contextKey), + getContext | undefined>(contextKey), ); } diff --git a/mathesar_ui/src/systems/data-explorer/result-pane/Results.svelte b/mathesar_ui/src/systems/data-explorer/result-pane/Results.svelte index aafb65c174..08f6557390 100644 --- a/mathesar_ui/src/systems/data-explorer/result-pane/Results.svelte +++ b/mathesar_ui/src/systems/data-explorer/result-pane/Results.svelte @@ -12,9 +12,9 @@ SheetRow, SheetVirtualRows, } from '@mathesar/components/sheet'; - import { SheetClipboardController } from '@mathesar/components/sheet/SheetClipboardController'; + import { SheetClipboardHandler } from '@mathesar/components/sheet/SheetClipboardHandler'; import { rowHeaderWidthPx, rowHeightPx } from '@mathesar/geometry'; - import { setNewClipboardControllerStoreInContext } from '@mathesar/stores/clipboard'; + import { setNewClipboardHandlerStoreInContext } from '@mathesar/stores/clipboard'; import type QueryManager from '../QueryManager'; import type QueryRunner from '../QueryRunner'; import QueryRefreshButton from './QueryRefreshButton.svelte'; @@ -22,7 +22,7 @@ import ResultHeaderCell from './ResultHeaderCell.svelte'; import ResultRowCell from './ResultRowCell.svelte'; - const clipboardController = setNewClipboardControllerStoreInContext(); + const clipboardHandlerStore = setNewClipboardHandlerStoreInContext(); export let queryHandler: QueryRunner | QueryManager; export let isExplorationPage = false; @@ -39,8 +39,8 @@ inspector, } = queryHandler); $: ({ initial_columns } = $query); - $: clipboardController.set( - new SheetClipboardController({ + $: clipboardHandlerStore.set( + new SheetClipboardHandler({ selection, getRows: () => get(rowsData).rows, getColumnsMap: () => get(processedColumns), diff --git a/mathesar_ui/src/systems/table-view/TableView.svelte b/mathesar_ui/src/systems/table-view/TableView.svelte index ea7952adec..4e9bb1eecf 100644 --- a/mathesar_ui/src/systems/table-view/TableView.svelte +++ b/mathesar_ui/src/systems/table-view/TableView.svelte @@ -3,9 +3,9 @@ import { ImmutableMap } from '@mathesar-component-library'; import { Sheet } from '@mathesar/components/sheet'; - import { SheetClipboardController } from '@mathesar/components/sheet/SheetClipboardController'; + import { SheetClipboardHandler } from '@mathesar/components/sheet/SheetClipboardHandler'; import { rowHeaderWidthPx } from '@mathesar/geometry'; - import { setNewClipboardControllerStoreInContext } from '@mathesar/stores/clipboard'; + import { setNewClipboardHandlerStoreInContext } from '@mathesar/stores/clipboard'; import { currentDatabase } from '@mathesar/stores/databases'; import { currentSchema } from '@mathesar/stores/schemas'; import { @@ -24,7 +24,7 @@ const tabularData = getTabularDataStoreFromContext(); const userProfile = getUserProfileStoreFromContext(); - const clipboardControllerStore = setNewClipboardControllerStoreInContext(); + const clipboardHandlerStore = setNewClipboardHandlerStoreInContext(); $: database = $currentDatabase; $: schema = $currentSchema; @@ -40,8 +40,8 @@ $: sheetHasBorder = context === 'widget'; $: ({ processedColumns, display, isLoading, selection, recordsData } = $tabularData); - $: clipboardControllerStore.set( - new SheetClipboardController({ + $: clipboardHandlerStore.set( + new SheetClipboardHandler({ selection, getRows: () => [ ...get(recordsData.savedRecords), From c1a59968fa62078608fdb60d61035d8a87dc61a3 Mon Sep 17 00:00:00 2001 From: Sean Colsen Date: Fri, 31 Mar 2023 21:55:22 -0400 Subject: [PATCH 201/553] Remove spurious tab char at end of copied lines --- mathesar_ui/src/components/sheet/SheetClipboardHandler.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/mathesar_ui/src/components/sheet/SheetClipboardHandler.ts b/mathesar_ui/src/components/sheet/SheetClipboardHandler.ts index 4f6b7ffe18..e891045399 100644 --- a/mathesar_ui/src/components/sheet/SheetClipboardHandler.ts +++ b/mathesar_ui/src/components/sheet/SheetClipboardHandler.ts @@ -102,7 +102,11 @@ export class SheetClipboardHandler< const processedColumns = this.deps.getColumnsMap(); const recordSummaries = this.deps.getRecordSummaries(); for (const rowId of this.getRowIds(cells)) { + let isFirstColumn = true; for (const columnId of this.getColumnIds(cells)) { + if (!isFirstColumn) { + result += '\t'; + } if (isCellSelected(cells, { rowIndex: rowId }, { id: columnId })) { result += getCellText( indexedRecords, @@ -113,7 +117,7 @@ export class SheetClipboardHandler< recordSummaries, ); } - result += '\t'; + isFirstColumn = false; } result += '\n'; } From 53d7d9ad461c992cd617343a508a95d80d7856c5 Mon Sep 17 00:00:00 2001 From: Sean Colsen Date: Fri, 31 Mar 2023 22:16:04 -0400 Subject: [PATCH 202/553] Sort word map --- mathesar_ui/src/utils/languageUtils.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/mathesar_ui/src/utils/languageUtils.ts b/mathesar_ui/src/utils/languageUtils.ts index 789bedfb94..2b3d085aac 100644 --- a/mathesar_ui/src/utils/languageUtils.ts +++ b/mathesar_ui/src/utils/languageUtils.ts @@ -84,15 +84,15 @@ function makePluralFormsFromEnglish(one: string, many: string): PluralForms { } const wordMap = { - schemas: makePluralFormsFromEnglish('schema', 'schemas'), - tables: makePluralFormsFromEnglish('table', 'tables'), - explorations: makePluralFormsFromEnglish('exploration', 'explorations'), columns: makePluralFormsFromEnglish('column', 'columns'), - records: makePluralFormsFromEnglish('record', 'records'), + explorations: makePluralFormsFromEnglish('exploration', 'explorations'), matches: makePluralFormsFromEnglish('match', 'matches'), + records: makePluralFormsFromEnglish('record', 'records'), results: makePluralFormsFromEnglish('result', 'results'), - values: makePluralFormsFromEnglish('value', 'values'), + schemas: makePluralFormsFromEnglish('schema', 'schemas'), + tables: makePluralFormsFromEnglish('table', 'tables'), times: makePluralFormsFromEnglish('time', 'times'), + values: makePluralFormsFromEnglish('value', 'values'), } as const; type Word = keyof typeof wordMap; From b59a242a3b2b58bee1aff0e2ed8d376bf63403ca Mon Sep 17 00:00:00 2001 From: Sean Colsen Date: Fri, 31 Mar 2023 22:21:09 -0400 Subject: [PATCH 203/553] Show toast message after copy --- .../src/component-library/toast/ToastController.ts | 2 +- .../src/components/sheet/SheetClipboardHandler.ts | 9 ++++++++- .../src/systems/data-explorer/result-pane/Results.svelte | 2 ++ mathesar_ui/src/systems/table-view/TableView.svelte | 2 ++ mathesar_ui/src/utils/languageUtils.ts | 1 + 5 files changed, 14 insertions(+), 2 deletions(-) diff --git a/mathesar_ui/src/component-library/toast/ToastController.ts b/mathesar_ui/src/component-library/toast/ToastController.ts index 338ea4fca9..892ea23ea1 100644 --- a/mathesar_ui/src/component-library/toast/ToastController.ts +++ b/mathesar_ui/src/component-library/toast/ToastController.ts @@ -175,7 +175,7 @@ export class ToastController { export type ToastDetail = Partial | string; export type ToastShowFn = (d: ToastDetail) => ToastEntryController; -interface MakeToast { +export interface MakeToast { entries: Readable; info: ToastShowFn; success: ToastShowFn; diff --git a/mathesar_ui/src/components/sheet/SheetClipboardHandler.ts b/mathesar_ui/src/components/sheet/SheetClipboardHandler.ts index e891045399..a7fd1928c7 100644 --- a/mathesar_ui/src/components/sheet/SheetClipboardHandler.ts +++ b/mathesar_ui/src/components/sheet/SheetClipboardHandler.ts @@ -1,6 +1,6 @@ import { get } from 'svelte/store'; -import { ImmutableSet } from '@mathesar/component-library'; +import { ImmutableSet, type MakeToast } from '@mathesar-component-library'; import SheetSelection, { isCellSelected, } from '@mathesar/components/sheet/SheetSelection'; @@ -13,6 +13,7 @@ import type { import type { QueryRow } from '@mathesar/systems/data-explorer/QueryRunner'; import type { ProcessedQueryOutputColumn } from '@mathesar/systems/data-explorer/utils'; import type { ReadableMapLike } from '@mathesar/typeUtils'; +import { labeledCount } from '@mathesar/utils/languageUtils'; const MIME_PLAIN_TEXT = 'text/plain'; const MIME_MATHESAR_SHEET_CLIPBOARD = @@ -59,11 +60,16 @@ function getCellText< return formattedValue; } +export interface SheetClipboardStats { + cellCount: number; +} + interface SheetClipboardHandlerDeps< Row extends QueryRow | RecordRow, Column extends ProcessedQueryOutputColumn | ProcessedColumn, > { selection: SheetSelection; + toast: MakeToast; getRows(): Row[]; getColumnsMap(): ReadableMapLike; getRecordSummaries(): RecordSummariesForSheet; @@ -121,6 +127,7 @@ export class SheetClipboardHandler< } result += '\n'; } + this.deps.toast.info(`Copied ${labeledCount(cells.size, 'cells')}.`); return result; } diff --git a/mathesar_ui/src/systems/data-explorer/result-pane/Results.svelte b/mathesar_ui/src/systems/data-explorer/result-pane/Results.svelte index 08f6557390..4fbde38911 100644 --- a/mathesar_ui/src/systems/data-explorer/result-pane/Results.svelte +++ b/mathesar_ui/src/systems/data-explorer/result-pane/Results.svelte @@ -15,6 +15,7 @@ import { SheetClipboardHandler } from '@mathesar/components/sheet/SheetClipboardHandler'; import { rowHeaderWidthPx, rowHeightPx } from '@mathesar/geometry'; import { setNewClipboardHandlerStoreInContext } from '@mathesar/stores/clipboard'; + import { toast } from '@mathesar/stores/toast'; import type QueryManager from '../QueryManager'; import type QueryRunner from '../QueryRunner'; import QueryRefreshButton from './QueryRefreshButton.svelte'; @@ -42,6 +43,7 @@ $: clipboardHandlerStore.set( new SheetClipboardHandler({ selection, + toast, getRows: () => get(rowsData).rows, getColumnsMap: () => get(processedColumns), getRecordSummaries: () => new ImmutableMap(), diff --git a/mathesar_ui/src/systems/table-view/TableView.svelte b/mathesar_ui/src/systems/table-view/TableView.svelte index 4e9bb1eecf..a8c4b095b2 100644 --- a/mathesar_ui/src/systems/table-view/TableView.svelte +++ b/mathesar_ui/src/systems/table-view/TableView.svelte @@ -14,6 +14,7 @@ ID_ROW_CONTROL_COLUMN, type TabularDataSelection, } from '@mathesar/stores/table-data'; + import { toast } from '@mathesar/stores/toast'; import { getUserProfileStoreFromContext } from '@mathesar/stores/userProfile'; import Body from './Body.svelte'; import Header from './header/Header.svelte'; @@ -43,6 +44,7 @@ $: clipboardHandlerStore.set( new SheetClipboardHandler({ selection, + toast, getRows: () => [ ...get(recordsData.savedRecords), ...get(recordsData.newRecords), diff --git a/mathesar_ui/src/utils/languageUtils.ts b/mathesar_ui/src/utils/languageUtils.ts index 2b3d085aac..d975b34695 100644 --- a/mathesar_ui/src/utils/languageUtils.ts +++ b/mathesar_ui/src/utils/languageUtils.ts @@ -84,6 +84,7 @@ function makePluralFormsFromEnglish(one: string, many: string): PluralForms { } const wordMap = { + cells: makePluralFormsFromEnglish('cell', 'cells'), columns: makePluralFormsFromEnglish('column', 'columns'), explorations: makePluralFormsFromEnglish('exploration', 'explorations'), matches: makePluralFormsFromEnglish('match', 'matches'), From 22749edc93862cf69414294f011826b12b085011 Mon Sep 17 00:00:00 2001 From: Sean Colsen Date: Mon, 3 Apr 2023 13:16:36 -0400 Subject: [PATCH 204/553] Allow text within cell inputs to be copied --- .../data-types/components/CellWrapper.svelte | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/mathesar_ui/src/components/cell-fabric/data-types/components/CellWrapper.svelte b/mathesar_ui/src/components/cell-fabric/data-types/components/CellWrapper.svelte index 99460fb606..4f3d4768ad 100644 --- a/mathesar_ui/src/components/cell-fabric/data-types/components/CellWrapper.svelte +++ b/mathesar_ui/src/components/cell-fabric/data-types/components/CellWrapper.svelte @@ -34,6 +34,18 @@ } $: void focusCell(isActive, mode); + + function handleCopy(e: ClipboardEvent) { + if (e.target !== element) { + // When the user copies text _within_ a cell (e.g. from within an input + // element) we need to stop propagation so that the copy event doesn't + // reach the sheet where it is handled by the SheetClipboardHandler to + // copy _cells_. If we don't stop propagation, the entire cell value will + // be copied instead of copying only the text within the input that the + // user selected. + e.stopPropagation(); + } + }
From 58ff78f469df848213e281649b3f9628012b4fd2 Mon Sep 17 00:00:00 2001 From: Aritra8438 Date: Tue, 4 Apr 2023 19:06:08 +0530 Subject: [PATCH 205/553] Update PATCH request to handle dynamic_default alteration for unique columns. --- mathesar/api/db/viewsets/columns.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/mathesar/api/db/viewsets/columns.py b/mathesar/api/db/viewsets/columns.py index bfcaeab406..44515991ee 100644 --- a/mathesar/api/db/viewsets/columns.py +++ b/mathesar/api/db/viewsets/columns.py @@ -23,6 +23,7 @@ from mathesar.api.pagination import DefaultLimitOffsetPagination from mathesar.api.serializers.columns import ColumnSerializer from mathesar.api.utils import get_table_or_404 +from mathesar.utils.columns import uniqueness_constraint_column from mathesar.models.base import Column from mathesar.state import get_cached_metadata @@ -117,6 +118,14 @@ def create(self, request, table_pk=None): def partial_update(self, request, pk=None, table_pk=None): column_instance = self.get_object() table = column_instance.table + column_has_uniqueness_constraint = uniqueness_constraint_column(column_id=column_instance.id, table=table) + if column_has_uniqueness_constraint: + try: + dynamic_default = request.data["default"]["is_dynamic"] + if dynamic_default == False: + return Response("Can not assign default value for column with unique constraint", status=405) + except: + pass serializer = ColumnSerializer(instance=column_instance, data=request.data, partial=True) serializer.is_valid(raise_exception=True) with warnings.catch_warnings(): From 64151ac31f0ca6ded5de258f958028bfb642844b Mon Sep 17 00:00:00 2001 From: Aritra8438 Date: Tue, 4 Apr 2023 19:06:37 +0530 Subject: [PATCH 206/553] Check if a column has unique constraint. --- mathesar/utils/columns.py | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 mathesar/utils/columns.py diff --git a/mathesar/utils/columns.py b/mathesar/utils/columns.py new file mode 100644 index 0000000000..74b984498b --- /dev/null +++ b/mathesar/utils/columns.py @@ -0,0 +1,11 @@ +from mathesar.models.base import Column, Constraint +from mathesar.api.serializers.constraints import ConstraintSerializer + + +def uniqueness_constraint_column(column_id, table): + constraints = Constraint.objects.filter(table=table) + for constraint in constraints: + constraint_serializer_data = ConstraintSerializer(constraint).data + if column_id in constraint_serializer_data['columns'] and constraint_serializer_data['type'] == 'unique': + return True + return False From f2c41f3aeb0c808cc0f8cf8ea43713065b589c40 Mon Sep 17 00:00:00 2001 From: Aritra8438 Date: Tue, 4 Apr 2023 19:37:03 +0530 Subject: [PATCH 207/553] Fix linting issues --- mathesar/api/db/viewsets/columns.py | 4 ++-- mathesar/utils/columns.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/mathesar/api/db/viewsets/columns.py b/mathesar/api/db/viewsets/columns.py index 44515991ee..f93a5936e7 100644 --- a/mathesar/api/db/viewsets/columns.py +++ b/mathesar/api/db/viewsets/columns.py @@ -122,9 +122,9 @@ def partial_update(self, request, pk=None, table_pk=None): if column_has_uniqueness_constraint: try: dynamic_default = request.data["default"]["is_dynamic"] - if dynamic_default == False: + if dynamic_default is False: return Response("Can not assign default value for column with unique constraint", status=405) - except: + except KeyError: pass serializer = ColumnSerializer(instance=column_instance, data=request.data, partial=True) serializer.is_valid(raise_exception=True) diff --git a/mathesar/utils/columns.py b/mathesar/utils/columns.py index 74b984498b..5777f1481f 100644 --- a/mathesar/utils/columns.py +++ b/mathesar/utils/columns.py @@ -1,4 +1,4 @@ -from mathesar.models.base import Column, Constraint +from mathesar.models.base import Constraint from mathesar.api.serializers.constraints import ConstraintSerializer From efe50fd14533a34724f1feb6087fedcb3f8c19fa Mon Sep 17 00:00:00 2001 From: Aritra8438 Date: Tue, 4 Apr 2023 20:49:58 +0530 Subject: [PATCH 208/553] Add support for primary_key constraint --- mathesar/api/db/viewsets/columns.py | 2 +- mathesar/utils/columns.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mathesar/api/db/viewsets/columns.py b/mathesar/api/db/viewsets/columns.py index f93a5936e7..f001b90c64 100644 --- a/mathesar/api/db/viewsets/columns.py +++ b/mathesar/api/db/viewsets/columns.py @@ -123,7 +123,7 @@ def partial_update(self, request, pk=None, table_pk=None): try: dynamic_default = request.data["default"]["is_dynamic"] if dynamic_default is False: - return Response("Can not assign default value for column with unique constraint", status=405) + return Response("Can not assign default value for column with unique or primary constraint", status=405) except KeyError: pass serializer = ColumnSerializer(instance=column_instance, data=request.data, partial=True) diff --git a/mathesar/utils/columns.py b/mathesar/utils/columns.py index 5777f1481f..dfa1a0d1ed 100644 --- a/mathesar/utils/columns.py +++ b/mathesar/utils/columns.py @@ -6,6 +6,6 @@ def uniqueness_constraint_column(column_id, table): constraints = Constraint.objects.filter(table=table) for constraint in constraints: constraint_serializer_data = ConstraintSerializer(constraint).data - if column_id in constraint_serializer_data['columns'] and constraint_serializer_data['type'] == 'unique': + if column_id in constraint_serializer_data['columns'] and constraint_serializer_data['type'] in ['unique', 'primary']: return True return False From a332e0ee80e548ef19395f24ca9903b0c5f86353 Mon Sep 17 00:00:00 2001 From: Aritra8438 Date: Tue, 4 Apr 2023 22:34:44 +0530 Subject: [PATCH 209/553] Fix python test issues --- mathesar/api/db/viewsets/columns.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/mathesar/api/db/viewsets/columns.py b/mathesar/api/db/viewsets/columns.py index f001b90c64..e7fa0f2b76 100644 --- a/mathesar/api/db/viewsets/columns.py +++ b/mathesar/api/db/viewsets/columns.py @@ -120,12 +120,12 @@ def partial_update(self, request, pk=None, table_pk=None): table = column_instance.table column_has_uniqueness_constraint = uniqueness_constraint_column(column_id=column_instance.id, table=table) if column_has_uniqueness_constraint: - try: - dynamic_default = request.data["default"]["is_dynamic"] - if dynamic_default is False: - return Response("Can not assign default value for column with unique or primary constraint", status=405) - except KeyError: - pass + if "default" in request.data.keys(): + default = request.data["default"] + if default is not None and "is_dynamic" in default.keys(): + dynamic_default = default["is_dynamic"] + if dynamic_default is False: + return Response("Can not assign default value for column with unique or primary constraint", status=405) serializer = ColumnSerializer(instance=column_instance, data=request.data, partial=True) serializer.is_valid(raise_exception=True) with warnings.catch_warnings(): From c5d1ed198000e850d85060ee3f56ff1c2c24f4d2 Mon Sep 17 00:00:00 2001 From: Sean Colsen Date: Tue, 4 Apr 2023 13:26:54 -0400 Subject: [PATCH 210/553] Sort wordMap --- mathesar_ui/src/utils/languageUtils.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/mathesar_ui/src/utils/languageUtils.ts b/mathesar_ui/src/utils/languageUtils.ts index 789bedfb94..2b3d085aac 100644 --- a/mathesar_ui/src/utils/languageUtils.ts +++ b/mathesar_ui/src/utils/languageUtils.ts @@ -84,15 +84,15 @@ function makePluralFormsFromEnglish(one: string, many: string): PluralForms { } const wordMap = { - schemas: makePluralFormsFromEnglish('schema', 'schemas'), - tables: makePluralFormsFromEnglish('table', 'tables'), - explorations: makePluralFormsFromEnglish('exploration', 'explorations'), columns: makePluralFormsFromEnglish('column', 'columns'), - records: makePluralFormsFromEnglish('record', 'records'), + explorations: makePluralFormsFromEnglish('exploration', 'explorations'), matches: makePluralFormsFromEnglish('match', 'matches'), + records: makePluralFormsFromEnglish('record', 'records'), results: makePluralFormsFromEnglish('result', 'results'), - values: makePluralFormsFromEnglish('value', 'values'), + schemas: makePluralFormsFromEnglish('schema', 'schemas'), + tables: makePluralFormsFromEnglish('table', 'tables'), times: makePluralFormsFromEnglish('time', 'times'), + values: makePluralFormsFromEnglish('value', 'values'), } as const; type Word = keyof typeof wordMap; From c0ec7de71288d5dca0ce9e0d4dc75c6ec4110b92 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Wed, 5 Apr 2023 10:53:06 +0200 Subject: [PATCH 211/553] Update debian.md --- docs/docs/installation/debian.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/installation/debian.md b/docs/docs/installation/debian.md index d48733420c..7fb9a70597 100644 --- a/docs/docs/installation/debian.md +++ b/docs/docs/installation/debian.md @@ -23,7 +23,7 @@ apt update && apt upgrade ### Step two Clean the system of any potential pre-installed Docker packages. ```sh -apt-get remove docker docker-engien docker.io +apt-get remove docker docker-engine docker.io ``` ### Step three: Installing Docker We wil now install Docker on this system. From fc0964d9f5ffc485291848a441aa8c19754738f1 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Wed, 5 Apr 2023 10:53:38 +0200 Subject: [PATCH 212/553] Update debian.md --- docs/docs/installation/debian.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/docs/installation/debian.md b/docs/docs/installation/debian.md index 7fb9a70597..c853220dfc 100644 --- a/docs/docs/installation/debian.md +++ b/docs/docs/installation/debian.md @@ -29,11 +29,11 @@ apt-get remove docker docker-engine docker.io We wil now install Docker on this system. Firstly, we have to install the required Docker dependencies on the system: ```sh -udo apt -y install apt-transport-https ca-certificates curl gnupg2 software-properties-common +sudo apt -y install apt-transport-https ca-certificates curl gnupg2 software-properties-common ``` The next step is to add Docker's official GPG key to the keyring. This is to ensure the validity of downloaded Docker packages from it's repository. ```sh -ccurl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg +curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg ``` Now that the key is added, we can add the stable repo for Docker. ```sh From 5ddd637bcecdbb84182593bb5f911332c2007605 Mon Sep 17 00:00:00 2001 From: Marius de Beer <53187487+mariusdebeer@users.noreply.github.com> Date: Wed, 5 Apr 2023 10:57:14 +0200 Subject: [PATCH 213/553] Update debian.md --- docs/docs/installation/debian.md | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/docs/docs/installation/debian.md b/docs/docs/installation/debian.md index c853220dfc..07af4accf3 100644 --- a/docs/docs/installation/debian.md +++ b/docs/docs/installation/debian.md @@ -23,21 +23,29 @@ apt update && apt upgrade ### Step two Clean the system of any potential pre-installed Docker packages. ```sh -apt-get remove docker docker-engine docker.io +sudo apt-get remove docker docker-engine docker.io containerd runc ``` ### Step three: Installing Docker We wil now install Docker on this system. Firstly, we have to install the required Docker dependencies on the system: ```sh -sudo apt -y install apt-transport-https ca-certificates curl gnupg2 software-properties-common +sudo apt-get update +sudo apt-get install \ + ca-certificates \ + curl \ + gnupg ``` The next step is to add Docker's official GPG key to the keyring. This is to ensure the validity of downloaded Docker packages from it's repository. ```sh -curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg +sudo mkdir -m 0755 -p /etc/apt/keyrings +curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg ``` Now that the key is added, we can add the stable repo for Docker. ```sh -echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list +echo \ + "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \ + "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \ + sudo tee /etc/apt/sources.list.d/docker.list > /dev/null ``` We have to update the system: ```sh @@ -45,7 +53,7 @@ apt update ``` We can now install Docker using the following command: ```sh -apt-get install docker-ce docker-ce-cli containerd.io +sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin ``` Once installation is completed, you can run the following commands to make sure that Docker is running, and that it will start with the system. ```sh From a2c3f3cd0af317498ab1085cc6cc4bc82d3987c1 Mon Sep 17 00:00:00 2001 From: hemant-hc Date: Wed, 5 Apr 2023 21:55:56 +0530 Subject: [PATCH 214/553] primaryKey precedence changes to getColumnConstraintTypeByColumnId --- .../record-summary/AppendColumn.svelte | 26 ++++++++++--------- mathesar_ui/src/utils/columnUtils.ts | 14 ++++++++-- 2 files changed, 26 insertions(+), 14 deletions(-) diff --git a/mathesar_ui/src/systems/table-view/table-inspector/record-summary/AppendColumn.svelte b/mathesar_ui/src/systems/table-view/table-inspector/record-summary/AppendColumn.svelte index 8dfbcdd180..7a01876f97 100644 --- a/mathesar_ui/src/systems/table-view/table-inspector/record-summary/AppendColumn.svelte +++ b/mathesar_ui/src/systems/table-view/table-inspector/record-summary/AppendColumn.svelte @@ -2,8 +2,11 @@ import { ButtonMenuItem, DropdownMenu } from '@mathesar-component-library'; import { getTabularDataStoreFromContext } from '@mathesar/stores/table-data'; import type { Column } from '@mathesar/api/types/tables/columns'; - import { iconAddNew, iconTableLink } from '@mathesar/icons'; - import { getColumnIconProps } from '@mathesar/utils/columnUtils'; + import { iconAddNew, iconConstraint, iconTableLink } from '@mathesar/icons'; + import { + getColumnIconProps, + getColumnConstraintTypeByColumnId, + } from '@mathesar/utils/columnUtils'; const tabularData = getTabularDataStoreFromContext(); $: ({ processedColumns } = $tabularData); @@ -11,19 +14,18 @@ export let columns: Column[]; export let onSelect: (column: Column) => void; - function checkForForeignKey(column: Column) { - const linkFkType = $processedColumns.get(column.id)?.linkFk?.type; - if (linkFkType) { - return true; - } - return false; - } - function getIcon(column: Column) { - const isForeignKey = checkForForeignKey(column); - if (isForeignKey) { + const constraintsType = getColumnConstraintTypeByColumnId( + column.id, + $processedColumns, + ); + if (constraintsType?.includes('primary')) { + return iconConstraint; + } + if (constraintsType?.includes('foreignkey')) { return iconTableLink; } + const icon = getColumnIconProps(column); return Array.isArray(icon) ? icon[0] : icon; } diff --git a/mathesar_ui/src/utils/columnUtils.ts b/mathesar_ui/src/utils/columnUtils.ts index c95ee8bccb..16ce6fdb7e 100644 --- a/mathesar_ui/src/utils/columnUtils.ts +++ b/mathesar_ui/src/utils/columnUtils.ts @@ -57,6 +57,16 @@ export function getColumnConstraintTypeByColumnId( columnId: number, processedColumns: Map, ) { - const linkFkType = processedColumns.get(columnId)?.linkFk?.type; - return linkFkType ? [linkFkType] : undefined; + const processedColumn = processedColumns.get(columnId); + const constraintsType = Array.from( + new Set( + [ + ...(processedColumn?.exclusiveConstraints ?? []), + ...(processedColumn?.sharedConstraints ?? []), + ] + .filter((constraintType) => !!constraintType) + .map((constraintType) => constraintType.type), + ), + ); + return constraintsType; } From ae8ef339b1fb85b4103e401b0a6b2593ecc18941 Mon Sep 17 00:00:00 2001 From: Sean Colsen Date: Wed, 5 Apr 2023 12:30:22 -0400 Subject: [PATCH 215/553] Allow LinkedRecordInput to be opened from the DOM --- .../linked-record/LinkedRecordInput.svelte | 14 ++++++++++---- .../components/linked-record/LinkedRecordUtils.ts | 3 +++ 2 files changed, 13 insertions(+), 4 deletions(-) create mode 100644 mathesar_ui/src/components/cell-fabric/data-types/components/linked-record/LinkedRecordUtils.ts diff --git a/mathesar_ui/src/components/cell-fabric/data-types/components/linked-record/LinkedRecordInput.svelte b/mathesar_ui/src/components/cell-fabric/data-types/components/linked-record/LinkedRecordInput.svelte index 8a911b7394..1cbbf10429 100644 --- a/mathesar_ui/src/components/cell-fabric/data-types/components/linked-record/LinkedRecordInput.svelte +++ b/mathesar_ui/src/components/cell-fabric/data-types/components/linked-record/LinkedRecordInput.svelte @@ -1,5 +1,5 @@ diff --git a/mathesar_ui/src/components/cell-fabric/data-types/components/linked-record/LinkedRecordUtils.ts b/mathesar_ui/src/components/cell-fabric/data-types/components/linked-record/LinkedRecordUtils.ts new file mode 100644 index 0000000000..61013d6769 --- /dev/null +++ b/mathesar_ui/src/components/cell-fabric/data-types/components/linked-record/LinkedRecordUtils.ts @@ -0,0 +1,3 @@ +export interface LinkedRecordInputElement extends HTMLElement { + launchRecordSelector: () => Promise; +} From 0bade2baf9b2a2e7b9fdc6cbd662c458f68718d9 Mon Sep 17 00:00:00 2001 From: Sean Colsen Date: Wed, 5 Apr 2023 12:38:22 -0400 Subject: [PATCH 216/553] Add/remove filters via column header context menu --- .../filter-entry/FilterEntry.svelte | 4 +- .../src/components/filter-entry/utils.ts | 2 + mathesar_ui/src/icons/index.ts | 3 + .../pages/table/ImperativeFilterController.ts | 50 ++++++++++++++++ mathesar_ui/src/pages/table/TablePage.svelte | 2 + .../record-operations/filter/Filter.svelte | 59 +++++++++++++++---- .../filter/FilterDropdown.svelte | 14 ++++- .../ColumnHeaderContextMenu.svelte | 34 ++++++++++- mathesar_ui/src/utils/MessageBus.ts | 39 ++++++++++++ mathesar_ui/src/utils/languageUtils.ts | 1 + 10 files changed, 191 insertions(+), 17 deletions(-) create mode 100644 mathesar_ui/src/pages/table/ImperativeFilterController.ts create mode 100644 mathesar_ui/src/utils/MessageBus.ts diff --git a/mathesar_ui/src/components/filter-entry/FilterEntry.svelte b/mathesar_ui/src/components/filter-entry/FilterEntry.svelte index 2dd7a27a9a..daaee02223 100644 --- a/mathesar_ui/src/components/filter-entry/FilterEntry.svelte +++ b/mathesar_ui/src/components/filter-entry/FilterEntry.svelte @@ -22,7 +22,7 @@ import type { ReadableMapLike } from '@mathesar/typeUtils'; import type { ConstraintType } from '@mathesar/api/types/tables/constraints'; import type { FilterEntryColumnLike } from './types'; - import { validateFilterEntry } from './utils'; + import { FILTER_INPUT_CLASS, validateFilterEntry } from './utils'; type T = $$Generic; type ColumnLikeType = FilterEntryColumnLike & T; @@ -242,7 +242,7 @@ showError = true; }} on:change={onValueChangeFromUser} - class="filter-input" + class={FILTER_INPUT_CLASS} hasError={showError && !isValid} recordSummary={recordSummaries .get(String(columnIdentifier)) diff --git a/mathesar_ui/src/components/filter-entry/utils.ts b/mathesar_ui/src/components/filter-entry/utils.ts index 75571fd60d..6d1b7b1818 100644 --- a/mathesar_ui/src/components/filter-entry/utils.ts +++ b/mathesar_ui/src/components/filter-entry/utils.ts @@ -10,6 +10,8 @@ import type { AbstractTypeLimitedFilterInformation, } from '@mathesar/stores/abstract-types/types'; +export const FILTER_INPUT_CLASS = 'filter-input'; + export function validateFilterEntry( filterCondition: | AbstractTypeFilterDefinition diff --git a/mathesar_ui/src/icons/index.ts b/mathesar_ui/src/icons/index.ts index ee5a40cd3c..edbb17cd7d 100644 --- a/mathesar_ui/src/icons/index.ts +++ b/mathesar_ui/src/icons/index.ts @@ -63,6 +63,7 @@ import { faUpRightFromSquare, faCircleInfo, faUserGear, + faFilterCircleXmark, } from '@fortawesome/free-solid-svg-icons'; import type { IconProps } from '@mathesar-component-library/types'; import { @@ -88,6 +89,7 @@ import { // // (These names should all be verbs) +export const iconAddFilter: IconProps = { data: faFilter }; export const iconAddNew: IconProps = { data: faPlus }; export const iconAddUser: IconProps = { data: faUserPlus }; export const iconConfigure: IconProps = { data: faCogs }; @@ -110,6 +112,7 @@ export const iconNextStep = { data: faArrowRight }; export const iconPickRecord: IconProps = { data: faCheck }; export const iconRedo: IconProps = { data: faRedo }; export const iconRefresh: IconProps = { data: faSync }; +export const iconRemoveFilter: IconProps = { data: faFilterCircleXmark }; export const iconRename: IconProps = { data: faICursor }; export const iconSave: IconProps = { data: faSave }; /** Open the record selector */ diff --git a/mathesar_ui/src/pages/table/ImperativeFilterController.ts b/mathesar_ui/src/pages/table/ImperativeFilterController.ts new file mode 100644 index 0000000000..4daf25b241 --- /dev/null +++ b/mathesar_ui/src/pages/table/ImperativeFilterController.ts @@ -0,0 +1,50 @@ +import MessageBus from '@mathesar/utils/MessageBus'; +import { getContext, setContext, tick } from 'svelte'; + +export default class ImperativeFilterController { + private openDropdown: MessageBus; + + private addFilter: MessageBus; + + private activateLastFilterInput: MessageBus; + + constructor() { + this.openDropdown = new MessageBus(); + this.addFilter = new MessageBus(); + this.activateLastFilterInput = new MessageBus(); + } + + async beginAddingNewFilteringEntry(columnId: number) { + this.openDropdown.send(); + await tick(); + this.addFilter.send(columnId); + await tick(); + this.activateLastFilterInput.send(); + } + + onOpenDropdown(fn: () => void): () => void { + return this.openDropdown.listen(fn); + } + + onAddFilter(fn: (columnId: number) => void): () => void { + return this.addFilter.listen(fn); + } + + onActivateLastFilterInput(fn: () => void): () => void { + return this.activateLastFilterInput.listen(fn); + } +} + +const key = Symbol('ImperativeFilterController'); + +export function setNewImperativeFilterControllerInContext(): ImperativeFilterController { + const bus = new ImperativeFilterController(); + setContext(key, bus); + return bus; +} + +export function getImperativeFilterControllerFromContext(): + | ImperativeFilterController + | undefined { + return getContext(key); +} diff --git a/mathesar_ui/src/pages/table/TablePage.svelte b/mathesar_ui/src/pages/table/TablePage.svelte index 4c333eace5..25e0c895fd 100644 --- a/mathesar_ui/src/pages/table/TablePage.svelte +++ b/mathesar_ui/src/pages/table/TablePage.svelte @@ -12,6 +12,7 @@ import ActionsPane from '@mathesar/systems/table-view/actions-pane/ActionsPane.svelte'; import { makeSimplePageTitle } from '@mathesar/pages/pageTitleUtils'; import LayoutWithHeader from '@mathesar/layouts/LayoutWithHeader.svelte'; + import { setNewImperativeFilterControllerInContext } from './ImperativeFilterController'; const metaSerializationQueryKey = 'q'; @@ -20,6 +21,7 @@ // below. undefined as unknown as TabularData, ); + setNewImperativeFilterControllerInContext(); export let table: TableEntry; diff --git a/mathesar_ui/src/systems/table-view/actions-pane/record-operations/filter/Filter.svelte b/mathesar_ui/src/systems/table-view/actions-pane/record-operations/filter/Filter.svelte index f4e4ac1b1f..403198cc4e 100644 --- a/mathesar_ui/src/systems/table-view/actions-pane/record-operations/filter/Filter.svelte +++ b/mathesar_ui/src/systems/table-view/actions-pane/record-operations/filter/Filter.svelte @@ -1,18 +1,24 @@ -
+
Filter records
{#if filterCount} @@ -96,7 +129,7 @@
{#if $processedColumns.size}