Skip to content

Commit

Permalink
Merge branch 'main' into #246-unified-external-file-handling
Browse files Browse the repository at this point in the history
  • Loading branch information
arjxn-py authored Dec 31, 2024
2 parents c61a2c1 + 84de41d commit ca98b29
Show file tree
Hide file tree
Showing 24 changed files with 449 additions and 131 deletions.
10 changes: 5 additions & 5 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ jobs:
yarn build:packages
- name: Upload extension packages
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: extension-artifacts
path: |
Expand Down Expand Up @@ -113,7 +113,7 @@ jobs:
runs-on: ubuntu-latest

steps:
- uses: actions/download-artifact@v3
- uses: actions/download-artifact@v4
with:
name: extension-artifacts

Expand Down Expand Up @@ -158,7 +158,7 @@ jobs:
qgis
- name: Download extension package
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4
with:
name: extension-artifacts

Expand Down Expand Up @@ -196,7 +196,7 @@ jobs:
- name: Upload Playwright Test report
id: upload-galata-artifact
if: always()
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: jupytergis-playwright-tests
path: |
Expand Down Expand Up @@ -269,7 +269,7 @@ jobs:
sphinx-autodoc-typehints
- name: Download extension package
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4
with:
name: extension-artifacts

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,14 +42,14 @@ const AnnotationFloater = ({
>
<Annotation itemId={itemId} annotationModel={model}>
<div
className="jGIS-Annotation-Topbar"
className="jGIS-Popup-Topbar"
onClick={() => {
setOpenOrDelete(false);
}}
>
<FontAwesomeIcon
icon={faWindowMinimize}
className="jGIS-Annotation-TopBarIcon"
className="jGIS-Popup-TopBarIcon"
/>
</div>
</Annotation>
Expand Down
87 changes: 87 additions & 0 deletions packages/base/src/mainview/CollaboratorPointers.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
import {
faArrowPointer,
faWindowMinimize
} from '@fortawesome/free-solid-svg-icons';
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
import { IDict, JgisCoordinates } from '@jupytergis/schema';
import React, { useState } from 'react';

interface ICollaboratorPointersProps {
clients: IDict<ClientPointer>;
}

export type ClientPointer = {
username: string;
displayName: string;
color: string;
coordinates: JgisCoordinates;
lonLat: { latitude: number; longitude: number };
};

const CollaboratorPointers = ({ clients }: ICollaboratorPointersProps) => {
const [isOpen, setIsOpen] = useState(false);

return (
<>
{clients &&
Object.values(clients).map(client => (
<div
className="jGIS-Popup-Wrapper"
style={{
left: `${client.coordinates.x}px`,
top: `${client.coordinates.y}px`
}}
>
<div
key={client.username}
className="jGIS-Remote-Pointer"
style={{
color: client.color,
cursor: 'pointer'
}}
onClick={() => {
setIsOpen(!isOpen);
}}
>
<FontAwesomeIcon
icon={faArrowPointer}
className="jGIS-Remote-Pointer-Icon"
/>
</div>
<div
style={{
visibility: isOpen ? 'visible' : 'hidden',
background: client.color
}}
className="jGIS-Remote-Pointer-Popup jGIS-Floating-Pointer-Popup"
>
<div
className="jGIS-Popup-Topbar"
onClick={() => {
setIsOpen(false);
}}
>
<FontAwesomeIcon
icon={faWindowMinimize}
className="jGIS-Popup-TopBarIcon"
/>
</div>
<div className="jGIS-Remote-Pointer-Popup-Name">
{client.displayName}
</div>
<div className="jGIS-Remote-Pointer-Popup-Coordinates">
<br />
Pointer Location:
<br />
Longitude: {client.lonLat.longitude.toFixed(2)}
<br />
Latitude: {client.lonLat.latitude.toFixed(2)}
</div>
</div>
</div>
))}
</>
);
};

export default CollaboratorPointers;
21 changes: 21 additions & 0 deletions packages/base/src/mainview/FollowIndicator.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import React from 'react';
import { User } from '@jupyterlab/services';

interface IFollowIndicatorProps {
remoteUser: User.IIdentity | null | undefined;
}

export function FollowIndicator({ remoteUser }: IFollowIndicatorProps) {
return remoteUser?.display_name ? (
<div
style={{
position: 'absolute',
top: 1,
right: 3,
background: remoteUser.color
}}
>
{`Following ${remoteUser.display_name}`}
</div>
) : null;
}
Loading

0 comments on commit ca98b29

Please sign in to comment.