From bfc759f7ea0b007536abb1d3a2e7f405eb2a08e5 Mon Sep 17 00:00:00 2001 From: Jake Turner Date: Mon, 12 Aug 2024 16:14:01 -0700 Subject: [PATCH] feat(Projects): advanced source material license info --- .../src/components/FilesManager/EditFile.tsx | 6 +- .../projects/ProjectPropertiesModal.tsx | 118 +++++++++++++----- .../src/components/projects/ProjectView.jsx | 14 +-- client/src/components/util/ProjectHelpers.ts | 5 +- client/src/screens/commons/Book/index.tsx | 4 +- client/src/types/LicenseReport.ts | 13 +- client/src/types/Misc.ts | 9 ++ client/src/types/Project.ts | 17 +-- client/src/types/index.ts | 8 +- server/api/harvestingrequests.js | 2 +- server/api/projects.js | 37 +++++- server/models/project.ts | 20 +-- server/models/projectfile.ts | 12 +- server/types/Misc.ts | 9 ++ server/types/index.ts | 3 +- 15 files changed, 184 insertions(+), 93 deletions(-) diff --git a/client/src/components/FilesManager/EditFile.tsx b/client/src/components/FilesManager/EditFile.tsx index 5bffbfc8..08fad8d9 100644 --- a/client/src/components/FilesManager/EditFile.tsx +++ b/client/src/components/FilesManager/EditFile.tsx @@ -17,6 +17,7 @@ import { AssetTagFramework, Author, CentralIdentityLicense, + License, ProjectFile, } from "../../types"; import CtlTextInput from "../ControlledInputs/CtlTextInput"; @@ -44,7 +45,6 @@ import AuthorsForm from "./AuthorsForm"; import FilePreview from "./FilePreview"; import ManageCaptionsModal from "./ManageCaptionsModal"; import { useQuery } from "@tanstack/react-query"; -import { ProjectFileLicense } from "../../types/Project"; const FilesUploader = React.lazy(() => import("./FilesUploader")); const FileRenderer = React.lazy(() => import("./FileRenderer")); @@ -143,7 +143,7 @@ const EditFile: React.FC = ({ const { data: projectLicenseSettings, isFetching: projectLicenseSettingsLoading, - } = useQuery({ + } = useQuery({ queryKey: ["projectLicenseSettings", projectID], queryFn: loadProjectLicenseSettings, staleTime: Infinity, @@ -265,7 +265,7 @@ const EditFile: React.FC = ({ res.data.project.defaultFileLicense && typeof res.data.project.defaultFileLicense === "object" ) { - return res.data.project.defaultFileLicense as ProjectFileLicense; + return res.data.project.defaultFileLicense as License } return null; } catch (err) { diff --git a/client/src/components/projects/ProjectPropertiesModal.tsx b/client/src/components/projects/ProjectPropertiesModal.tsx index 5fcfb4a6..dc56b533 100644 --- a/client/src/components/projects/ProjectPropertiesModal.tsx +++ b/client/src/components/projects/ProjectPropertiesModal.tsx @@ -91,8 +91,14 @@ const ProjectPropertiesModal: React.FC = ({ adaptURL: "", author: "", authorEmail: "", - license: "", - resourceURL: "", + license: { + name: "", + version: "", + url: "", + sourceURL: "", + modifiedFromSource: false, + additionalTerms: "", + }, notes: "", associatedOrgs: [], thumbnail: "", @@ -204,7 +210,15 @@ const ProjectPropertiesModal: React.FC = ({ }, [watch("defaultFileLicense.name")]); // Return new license version options when license name changes - const selectedLicenseVersions = useCallback(() => { + const selectedSourceLicenseVersions = useCallback(() => { + const license = licenseOptions.find( + (l) => l.name === getValues("license.name") + ); + if (!license) return []; + return license.versions ?? []; + }, [watch("license.name"), licenseOptions]); + + const selectedFileLicenseVersions = useCallback(() => { const license = licenseOptions.find( (l) => l.name === getValues("defaultFileLicense.name") ); @@ -1095,7 +1109,7 @@ const ProjectPropertiesModal: React.FC = ({ or tool.

-
+
= ({ className="basis-1/2" />
-
-
-