From 310bd86a46b7d9cf1a2b0c63f76513757fd13939 Mon Sep 17 00:00:00 2001 From: Alex Ramsdell Date: Tue, 24 Oct 2023 17:46:55 -0400 Subject: [PATCH 1/9] lint --- src/components/shared/webide/FileBrowser.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/components/shared/webide/FileBrowser.js b/src/components/shared/webide/FileBrowser.js index 77fc8dc3c..cace6c9f9 100644 --- a/src/components/shared/webide/FileBrowser.js +++ b/src/components/shared/webide/FileBrowser.js @@ -36,7 +36,7 @@ const isFolder = (entry) => Boolean(entry.entries); function ProjectIcon() { return ; } -function FolderIcon({ isOpen, toggleClosed }) { +function FolderIcon({ toggleClosed }) { return ; } @@ -164,10 +164,6 @@ function Folder({ directoryEntry, userOnSelect, onFolderSelect, onDeployProject, const entries = [...(directoryEntry.entries || [])].sort(directorySortComparator); const fileExtension = parseFileExtension(directoryEntry.name); - if (directoryEntry.path.endsWith('asdf')) { - console.log('directoryEntry: ', directoryEntry.path); - console.log('open: ', open); - } let Icon; // top-level dir === package // FolderIcon/PackageIcon is func so we can give it open args now, but instantiate it later. From f87f3ec6b2136aab8f0addce49616be3236d560c Mon Sep 17 00:00:00 2001 From: Alex Ramsdell Date: Tue, 24 Oct 2023 20:06:10 -0400 Subject: [PATCH 2/9] add RO prop to file tree for packages. --- src/functions/api/instance/getComponents.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/functions/api/instance/getComponents.js b/src/functions/api/instance/getComponents.js index a72fb5c58..71675b50d 100644 --- a/src/functions/api/instance/getComponents.js +++ b/src/functions/api/instance/getComponents.js @@ -3,7 +3,7 @@ import queryInstance from '../queryInstance'; // this 'addMetadata' logic probably belongs in src/functions/instance // by convention -function addMetadata(fileTree, path, rootDir) { +function addMetadata(fileTree, path, rootDir, readOnly=false) { if (!fileTree || !fileTree.entries) { return; @@ -28,8 +28,10 @@ function addMetadata(fileTree, path, rootDir) { entry.project = project; entry.path = newPath; entry.key = uuid(); + entry.readOnly = readOnly || !!entry.package; - addMetadata(entry, newPath, rootDir); + const isPackage = Boolean(entry.package); + addMetadata(entry, newPath, rootDir, entry.readOnly); }; @@ -43,7 +45,8 @@ export default async ({ auth, url }) => { url, }); - addMetadata(fileTree, fileTree.name, fileTree.name); + addMetadata(fileTree, fileTree.name, fileTree.name, false); + console.log('filetree: ', fileTree) return fileTree; From f1ed96279f393afe8640e3c5335e173827214fee Mon Sep 17 00:00:00 2001 From: Alex Ramsdell Date: Tue, 24 Oct 2023 20:12:55 -0400 Subject: [PATCH 3/9] set editor to read only when selected file has a readOnly attr that's true --- src/components/shared/webide/Editor.js | 1 + src/components/shared/webide/index.js | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/shared/webide/Editor.js b/src/components/shared/webide/Editor.js index 07fa8f816..67a08411c 100644 --- a/src/components/shared/webide/Editor.js +++ b/src/components/shared/webide/Editor.js @@ -54,6 +54,7 @@ function Editor({ active, file, onChange, theme }) { theme={editorTheme} onChange={ onChange } options={{ + readOnly: file.readOnly, automaticLayout: true, minimap: { enabled: false diff --git a/src/components/shared/webide/index.js b/src/components/shared/webide/index.js index e2aae5e59..4ed5fb56a 100644 --- a/src/components/shared/webide/index.js +++ b/src/components/shared/webide/index.js @@ -64,7 +64,6 @@ function WebIDE({ const canDeleteFolder = Boolean(hasProjects && (selectedFolder || selectedPackage)); // can only delete a folder if a target folder is selected const canAddProjectFolder = Boolean(selectedFolder); // can only add a folder toa project if a target folder is selected - function updateActiveEditorWindow(to, from) { // TODO: figure out correct logic here. setActiveEditorWindow(to); From 00c871312cb604fc7abc8398599ffd62b2ede581 Mon Sep 17 00:00:00 2001 From: Alex Ramsdell Date: Tue, 24 Oct 2023 20:14:38 -0400 Subject: [PATCH 4/9] remove idea files. --- .gitignore | 1 + .idea/workspace.xml | 51 --------------------------------------------- 2 files changed, 1 insertion(+), 51 deletions(-) delete mode 100644 .idea/workspace.xml diff --git a/.gitignore b/.gitignore index 095b8f392..934e75f19 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. +.idea /src/config/index.js # dependencies diff --git a/.idea/workspace.xml b/.idea/workspace.xml deleted file mode 100644 index 957ce7305..000000000 --- a/.idea/workspace.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - 1698179374556 - - - - - - \ No newline at end of file From d7304f3b0a86ac0a9e130b6bec4cbc2731693338 Mon Sep 17 00:00:00 2001 From: Alex Ramsdell Date: Tue, 24 Oct 2023 20:27:17 -0400 Subject: [PATCH 5/9] make invalid name input consistent style-wise. --- src/assets/styles/components/_web-ide.scss | 35 ++++++++++++++++++++-- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/src/assets/styles/components/_web-ide.scss b/src/assets/styles/components/_web-ide.scss index aad5e4b2e..f90865bf3 100644 --- a/src/assets/styles/components/_web-ide.scss +++ b/src/assets/styles/components/_web-ide.scss @@ -90,21 +90,30 @@ color: white; .name-input { + .name-input-container { + input.invalid:focus { + border: 1px solid #ea4c89 !important; + outline-color: #ea4c89 !important; + } + } .validation-message { margin-top: 8px; + color: $color-danger; } & > input.invalid { - border: 1px solid red !important; - outline-color: 1px solid red !important; + border: 1px solid $color-danger !important; + outline-color: $color-danger !important; } + + .invalid-text { color: red !important; } .invalid-project-name { - color: purple; + color: $color-danger; } } @@ -182,6 +191,26 @@ .light { + + .name-input { + + .validation-message { + color: $color-danger; + } + + .name-input-container { + input.invalid { + border: 1px solid $color-danger !important; + outline-color: $color-danger !important; + } + + .invalid-project-name { + color: $color-danger; + } + } + } + + .no-projects { color: rgb(105, 105, 105); } From 823a689b2c3b08f9128ff0854ae77e8ed4a9c2cd Mon Sep 17 00:00:00 2001 From: Alex Ramsdell Date: Tue, 24 Oct 2023 20:27:26 -0400 Subject: [PATCH 6/9] remove redundant fn. --- src/components/instance/functions/manage/index.js | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/src/components/instance/functions/manage/index.js b/src/components/instance/functions/manage/index.js index 503658eb1..d4cf61130 100644 --- a/src/components/instance/functions/manage/index.js +++ b/src/components/instance/functions/manage/index.js @@ -91,20 +91,6 @@ function ManageIndex({ refreshCustomFunctions, loading }) { } - - async function restartWithLoadingState({ auth: instanceAuth, url: instanceUrl }) { - - setRestartingInstance(true); - - setTimeout(async () => { - await restartInstance({ auth: instanceAuth, url: instanceUrl }); - setRestartingInstance(false); - }, 100); - - - } - - // save file to instance async function saveCodeToInstance(selectedFile, restartRequired) { From fcf2ae25fe47f27dd3aa71625c3a78dd2596d40c Mon Sep 17 00:00:00 2001 From: Alex Ramsdell Date: Tue, 24 Oct 2023 20:39:36 -0400 Subject: [PATCH 7/9] condense github package install window. --- src/assets/styles/components/_web-ide.scss | 4 +++- .../shared/webide/windows/PackageInstallWindow.js | 6 +++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/assets/styles/components/_web-ide.scss b/src/assets/styles/components/_web-ide.scss index f90865bf3..d9b44cbac 100644 --- a/src/assets/styles/components/_web-ide.scss +++ b/src/assets/styles/components/_web-ide.scss @@ -126,7 +126,6 @@ .package-install-window { background: white; - } .editor.current-file-path { @@ -733,6 +732,9 @@ } .package-install-window { + &.github { + line-height:0.5em; + } display: flex; flex-direction: column; height: 100%; diff --git a/src/components/shared/webide/windows/PackageInstallWindow.js b/src/components/shared/webide/windows/PackageInstallWindow.js index 67577fe59..dead988bb 100644 --- a/src/components/shared/webide/windows/PackageInstallWindow.js +++ b/src/components/shared/webide/windows/PackageInstallWindow.js @@ -50,7 +50,11 @@ export default function PackageInstallWindow({ selectedPackage, onConfirm, onCan useEffect(validateProjectName, [ projectName ]); return ( - +
Package Install
{ From d9ee46cf59a8d55adf09a2683647a603aef2414a Mon Sep 17 00:00:00 2001 From: Alex Ramsdell Date: Tue, 24 Oct 2023 21:02:04 -0400 Subject: [PATCH 8/9] add loading state icon for package installation. --- src/assets/styles/components/_web-ide.scss | 10 ++++++++ .../instance/functions/manage/index.js | 1 - .../webide/windows/PackageInstallWindow.js | 25 +++++++++++++------ 3 files changed, 27 insertions(+), 9 deletions(-) diff --git a/src/assets/styles/components/_web-ide.scss b/src/assets/styles/components/_web-ide.scss index d9b44cbac..4ca091ec3 100644 --- a/src/assets/styles/components/_web-ide.scss +++ b/src/assets/styles/components/_web-ide.scss @@ -732,6 +732,16 @@ } .package-install-window { + + .install-package-button { + width: 105px; + display: inline-flex; + align-items: center; + justify-content: center; + + .install-package-status-icon { + } + } &.github { line-height:0.5em; } diff --git a/src/components/instance/functions/manage/index.js b/src/components/instance/functions/manage/index.js index d4cf61130..5c5ca5889 100644 --- a/src/components/instance/functions/manage/index.js +++ b/src/components/instance/functions/manage/index.js @@ -314,7 +314,6 @@ function ManageIndex({ refreshCustomFunctions, loading }) { alert.error(message); } - // TODO: what do we actually want to do about an invalid package? // change to restartService({ auth, url, service: 'http_worker' }); await restartInstance({ auth: t.auth, url: t.instance.url }); diff --git a/src/components/shared/webide/windows/PackageInstallWindow.js b/src/components/shared/webide/windows/PackageInstallWindow.js index dead988bb..714b66685 100644 --- a/src/components/shared/webide/windows/PackageInstallWindow.js +++ b/src/components/shared/webide/windows/PackageInstallWindow.js @@ -22,6 +22,7 @@ export default function PackageInstallWindow({ selectedPackage, onConfirm, onCan const [ projectNameIsValid, setProjectNameIsValid ] = useState(true); const [ packageSpec, setPackageSpec ] = useState(''); + const [ loading, setLoading ] = useState(false); // result: 'packageSpec' gets sent to harperdb and installed by npm @@ -113,7 +114,6 @@ export default function PackageInstallWindow({ selectedPackage, onConfirm, onCan { packageType === 'npm' && { - await onConfirm(projectName, packageSpec, deployTargets); + setLoading(true); + + try { + await onConfirm(projectName, packageSpec, deployTargets); + } catch(e) { + setLoading(false); + } + + setLoading(false); + } } className={ - cn("get-package-button", { - 'btn-success': true - // 'loading': loadingTags + cn("install-package-button", { + 'btn-success': true, + 'loading': loading }) } disabled={ !isValidProjectName(projectName) || !packageSpec || !deployTargets.length }> - Deploy Package + { + loading ? : 'Install Package' + }