inspector cleanup

This commit is contained in:
Brandon Liu
2022-12-02 01:36:31 +08:00
parent 988a3b2132
commit 94e5bc7154
2 changed files with 31 additions and 16 deletions

View File

@@ -43,7 +43,7 @@ const TileRow = (props: {
entry: Entry; entry: Entry;
setSelectedEntry: Dispatch<SetStateAction<Entry | null>>; setSelectedEntry: Dispatch<SetStateAction<Entry | null>>;
}) => { }) => {
let [z,x,y] = tileIdToZxy(props.entry.tileId); let [z, x, y] = tileIdToZxy(props.entry.tileId);
return ( return (
<TableRow <TableRow
onClick={() => { onClick={() => {
@@ -179,14 +179,10 @@ const VectorPreview = (props: {
useEffect(() => { useEffect(() => {
let fn = async (entry: Entry) => { let fn = async (entry: Entry) => {
let [z,x,y] = tileIdToZxy(entry.tileId); let [z, x, y] = tileIdToZxy(entry.tileId);
let resp = await props.file.getZxy(z,x,y); let resp = await props.file.getZxy(z, x, y);
let tile = new VectorTile( let tile = new VectorTile(new Protobuf(new Uint8Array(resp!.data)));
new Protobuf(
new Uint8Array(resp!.data)
)
);
let newLayers = []; let newLayers = [];
for (let [name, layer] of Object.entries(tile.layers)) { for (let [name, layer] of Object.entries(tile.layers)) {
let features: Feature[] = []; let features: Feature[] = [];
@@ -256,8 +252,8 @@ const RasterPreview = (props: { file: PMTiles; entry: Entry }) => {
useEffect(() => { useEffect(() => {
let fn = async (entry: Entry) => { let fn = async (entry: Entry) => {
// TODO 0,0,0 is broken // TODO 0,0,0 is broken
let [z,x,y] = tileIdToZxy(entry.tileId); let [z, x, y] = tileIdToZxy(entry.tileId);
let resp = await props.file.getZxy(z,x,y); let resp = await props.file.getZxy(z, x, y);
let blob = new Blob([resp!.data]); let blob = new Blob([resp!.data]);
var imageUrl = window.URL.createObjectURL(blob); var imageUrl = window.URL.createObjectURL(blob);
setImageSrc(imageUrl); setImageSrc(imageUrl);
@@ -279,13 +275,30 @@ function Inspector(props: { file: PMTiles }) {
useEffect(() => { useEffect(() => {
let fn = async () => { let fn = async () => {
let header = await props.file.getHeader(); let header = await props.file.getHeader();
let entries = await props.file.root_entries();
setEntryRows(entries);
setHeader(header); setHeader(header);
if (header.specVersion < 3) {
setEntryRows([]);
} else if (selectedEntry !== null && selectedEntry.runLength === 0) {
let entries = await props.file.cache.getDirectory(
props.file.source,
header.leafDirectoryOffset + selectedEntry.offset,
selectedEntry.length,
header
);
setEntryRows(entries);
} else if (selectedEntry === null) {
let entries = await props.file.cache.getDirectory(
props.file.source,
header.rootDirectoryOffset,
header.rootDirectoryLength,
header
);
setEntryRows(entries);
}
}; };
fn(); fn();
}, [props.file]); }, [props.file, selectedEntry]);
let rows = entryRows.map((e, i) => ( let rows = entryRows.map((e, i) => (
<TileRow key={i} entry={e} setSelectedEntry={setSelectedEntry}></TileRow> <TileRow key={i} entry={e} setSelectedEntry={setSelectedEntry}></TileRow>
@@ -293,7 +306,9 @@ function Inspector(props: { file: PMTiles }) {
let tilePreview = <div></div>; let tilePreview = <div></div>;
if (selectedEntry && header?.tileType) { if (selectedEntry && header?.tileType) {
if (header.tileType === TileType.Mvt) { if (selectedEntry.runLength === 0) {
console.log("Display leaf dir view");
} else if (header.tileType === TileType.Mvt) {
tilePreview = ( tilePreview = (
<VectorPreview <VectorPreview
file={props.file} file={props.file}
@@ -308,7 +323,7 @@ function Inspector(props: { file: PMTiles }) {
let warning = ""; let warning = "";
if (header && header.specVersion < 3) { if (header && header.specVersion < 3) {
warning = "Directory listing supported only for PMTiles v3 archives." warning = "Directory listing supported only for PMTiles v3 archives.";
} }
return ( return (

View File

@@ -163,7 +163,7 @@ function Loader(props: { file: PMTiles }) {
<MagnifyingGlassIcon /> Tile Inspector <MagnifyingGlassIcon /> Tile Inspector
</ToolbarToggleItem> </ToolbarToggleItem>
</ToolbarToggleGroup> </ToolbarToggleGroup>
<ToolbarLink href="#" target="_blank" css={{ marginRight: 10 }}> <ToolbarLink css={{ marginRight: 10 }}>
{props.file.source.getKey()} {props.file.source.getKey()}
</ToolbarLink> </ToolbarLink>
<DialogPrimitive.Root open={modalOpen}> <DialogPrimitive.Root open={modalOpen}>