Skip to content

Commit 9f3b70e

Browse files
committed
Fixing webview icon issue
Finishing up target size indication
1 parent 8a5626b commit 9f3b70e

4 files changed

Lines changed: 139 additions & 23 deletions

File tree

src/renderer/index.scss

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8405,6 +8405,42 @@ html:has(.drawer-open.drawer-open) {
84058405
top: 5px;
84068406
}
84078407

8408+
.left-0 {
8409+
left: 0px;
8410+
}
8411+
8412+
.left-\[5px\] {
8413+
left: 5px;
8414+
}
8415+
8416+
.left-\[10px\] {
8417+
left: 10px;
8418+
}
8419+
8420+
.left-\[15px\] {
8421+
left: 15px;
8422+
}
8423+
8424+
.left-\[16px\] {
8425+
left: 16px;
8426+
}
8427+
8428+
.left-\[12px\] {
8429+
left: 12px;
8430+
}
8431+
8432+
.left-\[8px\] {
8433+
left: 8px;
8434+
}
8435+
8436+
.left-\[6px\] {
8437+
left: 6px;
8438+
}
8439+
8440+
.left-\[4px\] {
8441+
left: 4px;
8442+
}
8443+
84088444
.isolate {
84098445
isolation: isolate;
84108446
}
@@ -8507,6 +8543,10 @@ html:has(.drawer-open.drawer-open) {
85078543
display: flex;
85088544
}
85098545

8546+
.\!flex {
8547+
display: flex !important;
8548+
}
8549+
85108550
.inline-flex {
85118551
display: inline-flex;
85128552
}
@@ -8631,6 +8671,18 @@ html:has(.drawer-open.drawer-open) {
86318671
height: 100vh;
86328672
}
86338673

8674+
.h-1 {
8675+
height: 0.25rem;
8676+
}
8677+
8678+
.h-2 {
8679+
height: 0.5rem;
8680+
}
8681+
8682+
.h-8 {
8683+
height: 2rem;
8684+
}
8685+
86348686
.max-h-\[calc\(100vh-150px\)\] {
86358687
max-height: calc(100vh - 150px);
86368688
}
@@ -9155,6 +9207,14 @@ html:has(.drawer-open.drawer-open) {
91559207
stroke: #fff;
91569208
}
91579209

9210+
.stroke-1 {
9211+
stroke-width: 1;
9212+
}
9213+
9214+
.stroke-2 {
9215+
stroke-width: 2;
9216+
}
9217+
91589218
.p-2 {
91599219
padding: 0.5rem;
91609220
}

src/renderer/views/basic-tree-view.tsx

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,11 @@ import TreeView, {
88
} from 'react-accessible-treeview';
99
import { ChevronDownIcon, ChevronRightIcon } from '@heroicons/react/16/solid';
1010
import { useCallback, useEffect, useState } from 'react';
11-
import { GlobeAltIcon } from '@heroicons/react/24/outline';
11+
import {
12+
GlobeAltIcon,
13+
MagnifyingGlassIcon,
14+
ViewfinderCircleIcon,
15+
} from '@heroicons/react/24/outline';
1216
import { IFlatMetadata } from 'react-accessible-treeview/dist/TreeView/utils';
1317

1418
function ArrowIcon({ isOpen, ...props }: any) {
@@ -25,6 +29,8 @@ const BasicTreeView = function BasicTreeView({
2529
onViewHovered,
2630
selectedView,
2731
searchTerm,
32+
showTargetSize,
33+
overlappingViews,
2834
}: any) {
2935
const [key, setKey] = useState(0);
3036
const [expandedIds, setExpandedIds] = useState(
@@ -171,13 +177,19 @@ const BasicTreeView = function BasicTreeView({
171177
})
172178
? 'search-term'
173179
: ''
174-
}`}
180+
} ${element.name.includes('WebView') && 'webview'}`}
175181
>
176-
<span className="indicator-item badge badge-warning badge-sm top-[5px]" />
182+
<span
183+
aria-hidden="true"
184+
title="search term found"
185+
className="indicator-item badge badge-warning badge-sm top-[5px]"
186+
>
187+
<MagnifyingGlassIcon className="h-4 text-warning-content stroke-2" />
188+
</span>
177189
<div
178190
// eslint-disable-next-line react/jsx-props-no-spreading
179191
{...getNodeProps({})}
180-
className={`${!isBranch ? 'ml-1' : ''} pl-[10px] my-1 ${element.name.includes('WebView') && 'webview'}`}
192+
className={`${!isBranch ? 'ml-1' : ''} pl-[10px] my-1`}
181193
onMouseOver={() => {
182194
viewHovered(element);
183195
}}
@@ -193,6 +205,20 @@ const BasicTreeView = function BasicTreeView({
193205
aria-label="search term found"
194206
className="search-term-label"
195207
/>
208+
209+
{showTargetSize &&
210+
overlappingViews.find((item: any) => {
211+
return item.id === element.id;
212+
}) ? (
213+
<span
214+
role="img"
215+
aria-label="possible target size overlap"
216+
title="possible target size overlap"
217+
className="indicator indicator-item badge badge-error badge-sm top-[5px] left-[4px] !flex"
218+
>
219+
<ViewfinderCircleIcon className="h-4 text-error-content stroke-2" />
220+
</span>
221+
) : null}
196222
{isBranch && (
197223
<ArrowIcon
198224
isOpen={isExpanded}

src/renderer/views/main-view.tsx

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,11 @@ import {
66
INode,
77
ITreeViewOnSelectProps,
88
} from 'react-accessible-treeview';
9-
import { Navbar } from 'react-daisyui';
9+
import { Button, Navbar } from 'react-daisyui';
1010
import {
1111
DevicePhoneMobileIcon,
1212
MagnifyingGlassIcon,
13+
ViewfinderCircleIcon,
1314
} from '@heroicons/react/24/outline';
1415
import { IDevice } from 'adb-ts/lib/util';
1516
import { ToastContainer, toast } from 'react-toastify';
@@ -33,6 +34,7 @@ function MainView(): React.JSX.Element {
3334
const [screencap, setScreencap] = useState<string | null>(null);
3435
const [deviceExpanded, setDeviceExpanded] = useState(false);
3536
const [searchExpanded, setSearchExpanded] = useState(false);
37+
const [showTargetSize, setShowTargetSize] = useState(true);
3638
const [logMessages, setLogMessages] = useState<
3739
{ time: string; type: string; message: string; id: number }[]
3840
>([]);
@@ -130,8 +132,13 @@ function MainView(): React.JSX.Element {
130132
return clickable;
131133
});
132134
centers.forEach((item1, index) => {
133-
centers.slice(index + 1).forEach(item2 => {
134-
if (Math.sqrt(Math.pow(item2.center.left - item1.center.left, 2) + Math.pow(item2.center.top - item1.center.top, 2)) < 24) {
135+
centers.slice(index + 1).forEach((item2) => {
136+
if (
137+
Math.sqrt(
138+
(item2.center.left - item1.center.left) ** 2 +
139+
(item2.center.top - item1.center.top) ** 2,
140+
) < 24
141+
) {
135142
overlaps.push(item1.element);
136143
overlaps.push(item2.element);
137144
}
@@ -216,6 +223,10 @@ function MainView(): React.JSX.Element {
216223
});
217224
};
218225

226+
const toggleTargetSize = () => {
227+
setShowTargetSize(!showTargetSize);
228+
};
229+
219230
return (
220231
<div className="flex w-screen h-screen flex-column bg-base-200">
221232
<Navbar
@@ -229,6 +240,18 @@ function MainView(): React.JSX.Element {
229240
onScreencapReceived={screencapReceived}
230241
onDisconnected={onDisconnected}
231242
/>
243+
<Button
244+
className={`ml-2 ${showTargetSize ? 'btn-primary' : 'btn-accent'} btn-outline`}
245+
aria-pressed={showTargetSize}
246+
active={showTargetSize}
247+
onClick={toggleTargetSize}
248+
aria-label="show target size issues"
249+
>
250+
<ViewfinderCircleIcon
251+
className="h-[24px]"
252+
title="show target size issues"
253+
/>
254+
</Button>
232255
</Navbar.Start>
233256
<Navbar.Center>
234257
<h1 className="text-xl">
@@ -317,6 +340,7 @@ function MainView(): React.JSX.Element {
317340
dataTree={viewHierarchy}
318341
onViewSelected={onHoveredViewSelected}
319342
overlappingViews={overlappingViews}
343+
showTargetSize={showTargetSize}
320344
/>
321345
</div>
322346
<Splitter
@@ -336,6 +360,8 @@ function MainView(): React.JSX.Element {
336360
onViewHovered={viewHovered}
337361
selectedView={selectedView}
338362
searchTerm={searchTerm}
363+
showTargetSize={showTargetSize}
364+
overlappingViews={overlappingViews}
339365
/>
340366
</div>
341367
<Splitter

src/renderer/views/screenshot.tsx

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ const Screenshot = function Screenshot({
1515
dataTree,
1616
onViewSelected,
1717
overlappingViews,
18+
showTargetSize,
1819
}: any) {
1920
const [screencapHeight, setScreencapHeight] = useState(0);
2021
const [screencapWidth, setScreencapWidth] = useState(0);
@@ -154,22 +155,25 @@ const Screenshot = function Screenshot({
154155
onClick={svgClick}
155156
>
156157
<image href={`data:image/png;base64,${screencap}`} />
157-
{overlappingViews.map((overlappingView: any) => (
158-
<circle
159-
r={((screencapWidth / width) * 10).toFixed(0)}
160-
cx={
161-
(overlappingView.metadata.x2 +
162-
overlappingView.metadata.x1) /
163-
2
164-
}
165-
cy={
166-
(overlappingView.metadata.y2 +
167-
overlappingView.metadata.y1) /
168-
2
169-
}
170-
fill="rgba(255, 0, 0, 0.3)"
171-
/>
172-
))}
158+
{showTargetSize
159+
? overlappingViews.map((overlappingView: any) => (
160+
<circle
161+
r={((screencapWidth / width) * 10).toFixed(0)}
162+
cx={
163+
(overlappingView.metadata.x2 +
164+
overlappingView.metadata.x1) /
165+
2
166+
}
167+
cy={
168+
(overlappingView.metadata.y2 +
169+
overlappingView.metadata.y1) /
170+
2
171+
}
172+
fill="rgba(255, 0, 0, 0.3)"
173+
/>
174+
))
175+
: null}
176+
173177
{hoverCoord.x !== 0 ||
174178
hoverCoord.y !== 0 ||
175179
hoverCoord.width !== 0 ||

0 commit comments

Comments
 (0)