Skip to content

Commit 2823c0e

Browse files
committed
Add button to get applet into view
1 parent 323e066 commit 2823c0e

File tree

3 files changed

+139
-2
lines changed

3 files changed

+139
-2
lines changed

src/index.css

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,54 @@ code {
218218
left: 0.8rem;
219219
top: 0.5rem;
220220
color: white;
221-
}
221+
}
222+
223+
.appletAbove {
224+
cursor: auto;
225+
background-color: #003d5ee5;
226+
width: 2.357rem;
227+
height: 2.357rem;
228+
border-radius: 0rem 2rem 2rem 2rem;
229+
transform: translate(0rem, 0rem) rotate(45deg);
230+
transition: transform 0.5s ease;
231+
}
232+
233+
.appletAbove.appletAboveHidden{
234+
transform: translate(0rem, -10rem) rotate(45deg);
235+
}
236+
237+
238+
.appletAboveContent {
239+
transform: rotate(-45deg);
240+
position: absolute;
241+
left: 0.8rem;
242+
top: 0.5rem;
243+
color: white;
244+
}
245+
246+
.appletBelow{
247+
cursor: auto;
248+
background-color: #003d5ee5;
249+
left: 0.7rem;
250+
width: 2.357rem;
251+
height: 2.357rem;
252+
border-radius: 0rem 2rem 2rem 2rem;
253+
transform: translate(0rem, -0rem) rotate(225deg);
254+
transition: transform 0.5s ease;
255+
}
256+
257+
.appletBelowContent {
258+
transform: rotate(-225deg);
259+
position: absolute;
260+
left: 0.8rem;
261+
top: 0.5rem;
262+
color: white;
263+
}
264+
265+
.appletBelow.appletBelowHidden{
266+
transform: translate(0rem, 10rem) rotate(225deg);
267+
}
268+
222269

223270

224271
@keyframes fadeInAppletMain {

src/ui/blackboard/blackboard.jsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1054,6 +1054,8 @@ export class Blackboard extends Component {
10541054
{this.props.experimental && this.state.appon && (
10551055
<JupyterHublet
10561056
pos={this.state.apppos}
1057+
scrollpos={this.state.curscrollpos + this.state.scrolloffset}
1058+
scrollheight={this.scrollheight()}
10571059
deactivated={this.state.appdeactivated}
10581060
isnotepad={this.props.isnotepad}
10591061
bbwidth={this.props.bbwidth}

src/ui/blackboard/jupyterhublet.jsx

Lines changed: 89 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@ import {
2525
faCamera,
2626
faChevronLeft,
2727
faChevronRight,
28-
faArrowsLeftRight
28+
faChevronDown,
29+
faArrowsLeftRight,
30+
faChevronUp
2931
} from '@fortawesome/free-solid-svg-icons'
3032
import { fiSteer } from '../icons/icons.jsx'
3133
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
@@ -1111,6 +1113,14 @@ export class JupyterHublet extends Component {
11111113
let className = 'appletMain'
11121114
if (this.state.movepos || this.state.resize) className += ' appletMainMove'
11131115
if (this.props.laserPointerOn) className += ' appletMainLaserPointer'
1116+
console.log(
1117+
'check below',
1118+
this.props.pos.y > (this.props.scrollpos ?? 0) + this.props.scrollheight,
1119+
this.props.pos.y,
1120+
this.props.scrollpos ?? 0,
1121+
this.props.scrollheight
1122+
)
1123+
11141124
return (
11151125
<Fragment>
11161126
<div
@@ -1412,6 +1422,84 @@ export class JupyterHublet extends Component {
14121422
<FontAwesomeIcon icon={faChevronRight} />
14131423
</div>
14141424
</div>
1425+
1426+
<div
1427+
className={
1428+
this.props.pos.y + this.props.pos.height <
1429+
(this.props.scrollpos ?? 0)
1430+
? 'appletAbove'
1431+
: 'appletAbove appletAboveHidden'
1432+
}
1433+
key='appletAbove'
1434+
onPointerDown={stopProp}
1435+
onPointerMove={stopProp}
1436+
onPointerUp={stopProp}
1437+
onClick={(event) =>
1438+
this.props.submitAppPosition(
1439+
this.props.pos.x,
1440+
this.props.scrollpos + 0.1,
1441+
this.props.pos.width,
1442+
this.props.pos.height,
1443+
false
1444+
)
1445+
}
1446+
style={{
1447+
position: 'absolute',
1448+
left:
1449+
(this.props.pos.x + this.props.pos.width * 0.5) *
1450+
this.props.bbwidth -
1451+
0.5 * buttonHSize +
1452+
'px',
1453+
top: this.props.scrollpos * this.props.bbwidth + 5 + 'px',
1454+
zIndex: this.props.zIndex
1455+
}}
1456+
>
1457+
<div className='appletAboveContent'>
1458+
<FontAwesomeIcon icon={faChevronDown} />
1459+
</div>
1460+
</div>
1461+
1462+
<div
1463+
className={
1464+
this.props.pos.y >
1465+
(this.props.scrollpos ?? 0) + this.props.scrollheight
1466+
? 'appletBelow'
1467+
: 'appletBelow appletBelowHidden'
1468+
}
1469+
key='appletBelow'
1470+
onPointerDown={stopProp}
1471+
onPointerMove={stopProp}
1472+
onPointerUp={stopProp}
1473+
onClick={(event) =>
1474+
this.props.submitAppPosition(
1475+
this.props.pos.x,
1476+
this.props.scrollpos + 0.1,
1477+
this.props.pos.width,
1478+
this.props.pos.height,
1479+
false
1480+
)
1481+
}
1482+
style={{
1483+
position: 'absolute',
1484+
left:
1485+
(this.props.pos.x + this.props.pos.width * 0.5) *
1486+
this.props.bbwidth -
1487+
0.5 * buttonHSize +
1488+
'px',
1489+
top:
1490+
(this.props.scrollpos + this.props.scrollheight) *
1491+
this.props.bbwidth -
1492+
buttonVSize +
1493+
5 +
1494+
'px',
1495+
zIndex: this.props.zIndex
1496+
}}
1497+
>
1498+
<div className='appletBelowContent'>
1499+
<FontAwesomeIcon icon={faChevronUp} />
1500+
</div>
1501+
</div>
1502+
14151503
<OverlayPanel className='tbChild' ref={this.jupyterinfo} showCloseIcon>
14161504
<h3>
14171505
<div style={{ display: 'flex', alignItems: 'center' }}>

0 commit comments

Comments
 (0)