diff --git a/estela-api/api/serializers/job.py b/estela-api/api/serializers/job.py index d1389d24..db56c633 100644 --- a/estela-api/api/serializers/job.py +++ b/estela-api/api/serializers/job.py @@ -55,7 +55,11 @@ class Meta: ) def get_spider(self, instance): - return {"sid": instance.spider.sid, "name": instance.spider.name} + return { + "sid": instance.spider.sid, + "name": instance.spider.name, + "deleted": instance.spider.deleted + } class SpiderJobCreateSerializer(serializers.ModelSerializer): diff --git a/estela-web/src/pages/JobDetailPage/index.tsx b/estela-web/src/pages/JobDetailPage/index.tsx index b60654c8..5b4b780f 100644 --- a/estela-web/src/pages/JobDetailPage/index.tsx +++ b/estela-web/src/pages/JobDetailPage/index.tsx @@ -119,6 +119,7 @@ interface JobDetailPageState { spiders: Spider[]; loadedSpiders: boolean; spiderName: string; + isDeleted: boolean; newSpiderId: string; newDataExpireDays: number; newDataStatus: string; @@ -148,6 +149,12 @@ interface MetadataField { type: string; } +interface SpiderField { + sid: number; + name: string; + deleted: boolean; +} + class ItemsMetadata extends Component { item = this.props.item; metadata: MetadataField[] = []; @@ -250,6 +257,7 @@ export class JobDetailPage extends Component, J spiders: [], loadedSpiders: false, spiderName: "", + isDeleted: false, newSpiderId: "", newDataExpireDays: 1, newDataStatus: "PENDING", @@ -293,6 +301,8 @@ export class JobDetailPage extends Component, J const tags = response.tags || []; const lifespan = parseDuration(response.lifespan); this.setState({ + spiderName: (response.spider as unknown as SpiderField).name, + isDeleted: (response.spider as unknown as SpiderField).deleted, name: response.name, lifespan: lifespan, totalResponseBytes: response.totalResponseBytes, @@ -307,6 +317,8 @@ export class JobDetailPage extends Component, J dataStatus: response.dataStatus, dataExpiryDays: response.dataExpiryDays == null ? 1 : response.dataExpiryDays, }); + const _spiderId = (response.spider as unknown as SpiderField).sid; + history.replace(`/projects/${this.projectId}/spiders/${_spiderId}/jobs/${this.jobId}`); }, (error: unknown) => { error; @@ -325,12 +337,8 @@ export class JobDetailPage extends Component, J if (results.results.length == 0 || results.results == undefined) { this.setState({ spiders: [], loadedSpiders: true }); } else { - const spiderName = results.results.find( - (spider: Spider) => String(spider?.sid) === this.spiderId, - )?.name; this.setState({ spiders: [...results.results], - spiderName: spiderName || "", newSpiderId: String(results.results[0].sid), loadedSpiders: true, }); @@ -354,12 +362,8 @@ export class JobDetailPage extends Component, J if (results.results.length == 0 || results.results == undefined) { this.setState({ spiders: [], loadedSpiders: true }); } else { - const spiderName = results.results.find( - (spider: Spider) => String(spider?.sid) === this.spiderId, - )?.name; this.setState({ spiders: [...results.results], - spiderName: spiderName || "", newSpiderId: String(results.results[0].sid), loadedSpiders: true, }); @@ -657,6 +661,7 @@ export class JobDetailPage extends Component, J dataStatus, dataExpiryDays, spiderName, + isDeleted, totalResponseBytes, items, status, @@ -727,12 +732,18 @@ export class JobDetailPage extends Component, J Spider - - {spiderName} - + {isDeleted ? ( + + {spiderName} DELETED + + ) : ( + + {spiderName} + + )}