Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/develop' into wip/jtulach/Equali…
Browse files Browse the repository at this point in the history
…tyWithConversion_8855
  • Loading branch information
JaroslavTulach committed Feb 19, 2024
2 parents 8c88cc1 + f1d4e54 commit 8b48232
Show file tree
Hide file tree
Showing 166 changed files with 919 additions and 686 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -616,6 +616,7 @@
- [Added `Table.to_xml`.][8979]
- [Implemented Write support for `S3_File`.][8921]
- [Separate `Group_By` from `columns` into new argument on `aggregate`.][9027]
- [Allow `copy_to` and `move_to` to work between local and S3 files.][9054]

[debug-shortcuts]:
https://github.com/enso-org/enso/blob/develop/app/gui/docs/product/shortcuts.md#debug
Expand Down Expand Up @@ -888,6 +889,7 @@
[8979]: https://github.com/enso-org/enso/pull/8979
[8921]: https://github.com/enso-org/enso/pull/8921
[9027]: https://github.com/enso-org/enso/pull/9027
[9054]: https://github.com/enso-org/enso/pull/9054

#### Enso Compiler

Expand Down
4 changes: 2 additions & 2 deletions app/gui2/src/components/GraphEditor.vue
Original file line number Diff line number Diff line change
Expand Up @@ -90,12 +90,12 @@ projectStore.lsRpcConnection.then(
})
},
(err) => {
toast.error(`Connection to language server failed: ${err}`)
toast.error(`Connection to language server failed: ${JSON.stringify(err)}`)
},
)
projectStore.executionContext.on('executionFailed', (err) => {
toast.error(`Execution Failed: ${err}`, {})
toast.error(`Execution Failed: ${JSON.stringify(err)}`, {})
})
onMounted(() => {
Expand Down
7 changes: 2 additions & 5 deletions app/gui2/src/stores/graph/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -210,15 +210,12 @@ export const useGraphStore = defineStore('graph', () => {
metadata: NodeMetadataFields = {},
withImports: RequiredImport[] | undefined = undefined,
): Opt<NodeId> {
const mod = proj.module
if (!mod) return
const ident = generateUniqueIdent()
const currentFunc = 'main'
const method = Ast.findModuleMethod(topLevel.value!, currentFunc)
const method = syncModule.value ? methodAstInModule(syncModule.value) : undefined
if (!method) {
console.error(`BUG: Cannot add node: No current function.`)
return
}
const ident = generateUniqueIdent()
metadata.position = { x: position.x, y: position.y }
return edit((edit) => {
if (withImports) addMissingImports(edit, withImports)
Expand Down
11 changes: 11 additions & 0 deletions app/ide-desktop/lib/dashboard/e2e/actions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -589,6 +589,17 @@ export function getAssetRowLeftPx(locator: test.Locator) {
return locator.evaluate(el => el.children[0]?.children[0]?.getBoundingClientRect().left ?? 0)
}

// ===================================
// === expect functions for themes ===
// ===================================

/** A test assertion to confirm that the element has the class `selected`. */
export async function expectClassSelected(locator: test.Locator) {
await test.test.step('Expect `selected`', async () => {
await test.expect(locator).toHaveClass(/(?:^| )selected(?: |$)/)
})
}

// ============================
// === expectPlaceholderRow ===
// ============================
Expand Down
11 changes: 8 additions & 3 deletions app/ide-desktop/lib/dashboard/e2e/copy.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -137,9 +137,14 @@ test.test('cut (keyboard)', async ({ page }) => {
await actions.locateNewFolderIcon(page).click()
await assetRows.nth(0).click()
await actions.press(page, 'Mod+X')
test
.expect(await assetRows.nth(0).evaluate(el => Number(getComputedStyle(el).opacity)))
.toBeLessThan(1)
// This action is not a builtin `expect` action, so it needs to be manually retried.
await test
.expect(async () => {
test
.expect(await assetRows.nth(0).evaluate(el => Number(getComputedStyle(el).opacity)))
.toBeLessThan(1)
})
.toPass()
})

test.test('duplicate', async ({ page }) => {
Expand Down
1 change: 1 addition & 0 deletions app/ide-desktop/lib/dashboard/playwright.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ export default test.defineConfig({
toHaveScreenshot: { threshold: 0 },
timeout: 30_000,
},
timeout: 30_000,
use: {
baseURL: 'http://localhost:8080',
launchOptions: {
Expand Down
12 changes: 6 additions & 6 deletions app/ide-desktop/lib/dashboard/src/components/DragModal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -56,14 +56,14 @@ export default function DragModal(props: DragModalProps) {
unsetModal()
}
// Update position (non-FF)
document.addEventListener('drag', onDrag)
document.addEventListener('drag', onDrag, { capture: true })
// Update position (FF)
document.addEventListener('dragover', onDrag)
document.addEventListener('dragend', onDragEnd)
document.addEventListener('dragover', onDrag, { capture: true })
document.addEventListener('dragend', onDragEnd, { capture: true })
return () => {
document.removeEventListener('drag', onDrag)
document.removeEventListener('dragover', onDrag)
document.removeEventListener('dragend', onDragEnd)
document.removeEventListener('drag', onDrag, { capture: true })
document.removeEventListener('dragover', onDrag, { capture: true })
document.removeEventListener('dragend', onDragEnd, { capture: true })
}
// `doCleanup` is a callback, not a dependency.
// eslint-disable-next-line react-hooks/exhaustive-deps
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ export interface DirectoryNameColumnProps extends column.AssetColumnProps {}
* This should never happen. */
export default function DirectoryNameColumn(props: DirectoryNameColumnProps) {
const { item, setItem, selected, state, rowState, setRowState } = props
const { numberOfSelectedItems, assetEvents, dispatchAssetListEvent, nodeMap } = state
const { selectedKeys, assetEvents, dispatchAssetListEvent, nodeMap } = state
const { doToggleDirectoryExpansion } = state
const toastAndLog = toastAndLogHooks.useToastAndLog()
const { backend } = backendProvider.useBackend()
Expand Down Expand Up @@ -137,7 +137,7 @@ export default function DirectoryNameColumn(props: DirectoryNameColumnProps) {
onClick={event => {
if (
eventModule.isSingleClick(event) &&
((selected && numberOfSelectedItems === 1) ||
((selected && selectedKeys.current.size === 1) ||
shortcutManager.matchesMouseAction(shortcutManagerModule.MouseAction.editName, event))
) {
event.stopPropagation()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ export interface ProjectNameColumnProps extends column.AssetColumnProps {}
* This should never happen. */
export default function ProjectNameColumn(props: ProjectNameColumnProps) {
const { item, setItem, selected, rowState, setRowState, state } = props
const { numberOfSelectedItems, assetEvents, dispatchAssetEvent, dispatchAssetListEvent } = state
const { selectedKeys, assetEvents, dispatchAssetEvent, dispatchAssetListEvent } = state
const { nodeMap, doOpenManually, doOpenIde, doCloseIde } = state
const toastAndLog = toastAndLogHooks.useToastAndLog()
const { backend } = backendProvider.useBackend()
Expand Down Expand Up @@ -277,7 +277,7 @@ export default function ProjectNameColumn(props: ProjectNameColumnProps) {
} else if (
!isRunning &&
eventModule.isSingleClick(event) &&
((selected && numberOfSelectedItems === 1) ||
((selected && selectedKeys.current.size === 1) ||
shortcutManager.matchesMouseAction(shortcutManagerModule.MouseAction.editName, event))
) {
setRowState(object.merger({ isEditingName: true }))
Expand Down
26 changes: 13 additions & 13 deletions app/ide-desktop/lib/dashboard/src/events/assetEvent.ts
Original file line number Diff line number Diff line change
Expand Up @@ -73,12 +73,12 @@ export interface AssetNewFolderEvent extends AssetBaseEvent<AssetEventType.newFo

/** A signal to upload files. */
export interface AssetUploadFilesEvent extends AssetBaseEvent<AssetEventType.uploadFiles> {
readonly files: Map<backendModule.AssetId, File>
readonly files: ReadonlyMap<backendModule.AssetId, File>
}

/** A signal to update files with new versions. */
export interface AssetUpdateFilesEvent extends AssetBaseEvent<AssetEventType.updateFiles> {
readonly files: Map<backendModule.AssetId, File>
readonly files: ReadonlyMap<backendModule.AssetId, File>
}

/** A signal to create a Data Link. */
Expand Down Expand Up @@ -112,41 +112,41 @@ export interface AssetCancelOpeningAllProjectsEvent
/** A signal that multiple assets should be copied. `ids` are the `Id`s of the newly created
* placeholder items. */
export interface AssetCopyEvent extends AssetBaseEvent<AssetEventType.copy> {
readonly ids: Set<backendModule.AssetId>
readonly ids: ReadonlySet<backendModule.AssetId>
readonly newParentKey: backendModule.AssetId
readonly newParentId: backendModule.DirectoryId
}

/** A signal to cut multiple assets. */
export interface AssetCutEvent extends AssetBaseEvent<AssetEventType.cut> {
readonly ids: Set<backendModule.AssetId>
readonly ids: ReadonlySet<backendModule.AssetId>
}

/** A signal that a cut operation has been cancelled. */
export interface AssetCancelCutEvent extends AssetBaseEvent<AssetEventType.cancelCut> {
readonly ids: Set<backendModule.AssetId>
readonly ids: ReadonlySet<backendModule.AssetId>
}

/** A signal to move multiple assets. */
export interface AssetMoveEvent extends AssetBaseEvent<AssetEventType.move> {
readonly ids: Set<backendModule.AssetId>
readonly ids: ReadonlySet<backendModule.AssetId>
readonly newParentKey: backendModule.AssetId
readonly newParentId: backendModule.DirectoryId
}

/** A signal to delete assets. */
export interface AssetDeleteEvent extends AssetBaseEvent<AssetEventType.delete> {
readonly ids: Set<backendModule.AssetId>
readonly ids: ReadonlySet<backendModule.AssetId>
}

/** A signal to restore assets from trash. */
export interface AssetRestoreEvent extends AssetBaseEvent<AssetEventType.restore> {
readonly ids: Set<backendModule.AssetId>
readonly ids: ReadonlySet<backendModule.AssetId>
}

/** A signal to download assets. */
export interface AssetDownloadEvent extends AssetBaseEvent<AssetEventType.download> {
readonly ids: Set<backendModule.AssetId>
readonly ids: ReadonlySet<backendModule.AssetId>
}

/** A signal to download the currently selected assets. */
Expand All @@ -161,26 +161,26 @@ export interface AssetRemoveSelfEvent extends AssetBaseEvent<AssetEventType.remo
/** A signal to temporarily add labels to the selected assetss. */
export interface AssetTemporarilyAddLabelsEvent
extends AssetBaseEvent<AssetEventType.temporarilyAddLabels> {
readonly ids: Set<backendModule.AssetId>
readonly ids: ReadonlySet<backendModule.AssetId>
readonly labelNames: ReadonlySet<backendModule.LabelName>
}

/** A signal to temporarily remove labels from the selected assetss. */
export interface AssetTemporarilyRemoveLabelsEvent
extends AssetBaseEvent<AssetEventType.temporarilyRemoveLabels> {
readonly ids: Set<backendModule.AssetId>
readonly ids: ReadonlySet<backendModule.AssetId>
readonly labelNames: ReadonlySet<backendModule.LabelName>
}

/** A signal to add labels to the selected assetss. */
export interface AssetAddLabelsEvent extends AssetBaseEvent<AssetEventType.addLabels> {
readonly ids: Set<backendModule.AssetId>
readonly ids: ReadonlySet<backendModule.AssetId>
readonly labelNames: ReadonlySet<backendModule.LabelName>
}

/** A signal to remove labels from the selected assetss. */
export interface AssetRemoveLabelsEvent extends AssetBaseEvent<AssetEventType.removeLabels> {
readonly ids: Set<backendModule.AssetId>
readonly ids: ReadonlySet<backendModule.AssetId>
readonly labelNames: ReadonlySet<backendModule.LabelName>
}

Expand Down
Loading

0 comments on commit 8b48232

Please sign in to comment.