Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 0 additions & 5 deletions src/common/models/raster-job.ts

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { ICellRendererParams } from 'ag-grid-community';
import { get } from 'lodash';
import React, { useCallback, useEffect, useState } from 'react';
import React, { useCallback, useEffect, useMemo, useState } from 'react';
import { useIntl } from 'react-intl';
import { Box } from '@map-colonies/react-components';
import {
Expand All @@ -13,15 +13,16 @@ import {
import { AutoDirectionBox } from '../../../../../common/components/auto-direction-box/auto-direction-box.component';
import { DETAILS_ROW_ID_SUFFIX } from '../../../../../common/components/grid';
import { Hyperlink } from '../../../../../common/components/hyperlink/hyperlink';
import { useEnums } from '../../../../../common/hooks/useEnum.hook';
import { Domain } from '../../../../../common/models/domain';
import { RasterErrorsSummary } from '../../../../../common/models/job-errors-summary.raster';
import { RasterIngestionJobType } from '../../../../../common/models/raster-job';
import { JobModelType, Status, TaskModelType, useStore } from '../../../../models';
import useZoomLevelsTable from '../../../export-layer/hooks/useZoomLevelsTable';
import {
getRasterErrorCount,
JobErrorsSummary,
} from '../../../job-errors-summary/job-errors-summary';
import { getEnumWithRealValues } from '../../../layer-details/utils';

import './info-area.css';
import './job-details.raster-job-data.css';
Expand All @@ -32,19 +33,24 @@ const MAX_ERRORS_SHOWN = 99;

export const JobDetailsRasterJobData: React.FC<JobDetailsRasterJobDataProps> = ({ data }) => {
const jobData = data as JobModelType;
const store = useStore();
const intl = useIntl();
const theme = useTheme();
const store = useStore();
const ENUMS = useEnums();
const ZOOM_LEVELS_TABLE = useZoomLevelsTable();
const [task, setTask] = useState<TaskModelType>();
const [errorsCount, setErrorsCount] = useState(0);
const [zoomLevel, setZoomLevel] = useState<number | undefined>(undefined);
const [isLoading, setIsLoading] = useState(true);

const rasterIngestionJobTypeRealValues = useMemo(() => {
return Object.values(getEnumWithRealValues(ENUMS, 'RasterIngestionJobType'));
}, []);

const isRasterJob =
jobData.domain === Domain.RASTER &&
jobData.type &&
Object.values(RasterIngestionJobType).includes(jobData.type as RasterIngestionJobType);
rasterIngestionJobTypeRealValues.includes(jobData.type as string);

const calculateErrorsCount = (errors: RasterErrorsSummary): number => {
let count = 0;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ import { Dialog, DialogTitle, IconButton } from '@map-colonies/react-core';
import CONFIG from '../../../../common/config';
import { emphasizeByHTML } from '../../../../common/helpers/formatters';
import { getTextStyle } from '../../../../common/helpers/style';
import { useEnums } from '../../../../common/hooks/useEnum.hook';
import { Mode } from '../../../../common/models/mode.enum';
import { RasterIngestionJobType } from '../../../../common/models/raster-job';
import {
EntityDescriptorModelType,
FieldConfigModelType,
Expand All @@ -35,6 +35,7 @@ import {
clearSyncWarnings,
filterModeDescriptors,
getFlatEntityDescriptors,
getUpdateJobTypes,
getValidationType,
getYupFieldConfig,
getBasicType,
Expand Down Expand Up @@ -108,13 +109,15 @@ export const buildRasterRecord = (descriptors: EntityDescriptorModelType[]): ILa
export const EntityRasterDialog: React.FC<EntityRasterDialogProps> = observer(
(props: EntityRasterDialogProps) => {
const store = useStore();
const ENUMS = useEnums();

const { job } = props;

const isUpdateMode = (jobRecord: JobModelType | undefined): boolean => {
if (jobRecord) {
const type = jobRecord.type || RasterIngestionJobType.NEW;
return jobType2Mode[type] === Mode.UPDATE;
return (
jobType2Mode(ENUMS, 'RasterIngestionJobType', jobRecord.type as string) === Mode.UPDATE
);
}

return store.discreteLayersStore.selectedLayerOperationMode === Mode.UPDATE;
Expand Down Expand Up @@ -170,6 +173,7 @@ export const EntityRasterDialog: React.FC<EntityRasterDialogProps> = observer(
const EntityRasterDialogInner: React.FC<EntityRasterInnerProps> = observer(
(props: EntityRasterInnerProps) => {
//#region STATE MACHINE
const ENUMS = useEnums();
const actorRef = RasterWorkflowContext.useActorRef();

// Subscribe to state using a selector
Expand All @@ -184,10 +188,11 @@ const EntityRasterDialogInner: React.FC<EntityRasterInnerProps> = observer(
actorRef.send({
type: 'RESTORE',
job: { jobId: job.id },
updatedLayer:
job.type === RasterIngestionJobType.UPDATE
? (layerRecord as LayerRasterRecordModelType)
: undefined,
updatedLayer: getUpdateJobTypes(ENUMS, 'RasterIngestionJobType').includes(
job.type as string
)
? (layerRecord as LayerRasterRecordModelType)
: undefined,
} satisfies Events);
} else if (mode === Mode.UPDATE) {
actorRef.send({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ import path from 'path';
import { get, merge } from 'lodash';
import shp from 'shpjs';
import { FileData } from '@map-colonies/react-components';
import { RasterIngestionJobType } from '../../../../../common/models/raster-job';
import CONFIG from '../../../../../common/config';
import { IEnumsMapType } from '../../../../../common/contexts/enumsMap.context';
import { dateFormatter, relativeDateFormatter } from '../../../../../common/helpers/formatters';
import {
JobModelType,
Expand Down Expand Up @@ -196,8 +196,13 @@ export const getRestoreData = async (context: IContext): Promise<IPartialContext

const job = await getJob(context);
try {
const enumsMap = context.store.discreteLayersStore.enumsMap as IEnumsMapType;
return {
flowType: jobType2Mode[job.type || RasterIngestionJobType.NEW] as IPartialContext['flowType'],
flowType: jobType2Mode(
enumsMap,
'RasterIngestionJobType',
job.type as string
) as IPartialContext['flowType'],
selectionMode: 'restore',
files: {
data: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,7 @@ export const InnerRasterForm = (
const ppConfig = CONFIG.POLYGON_PARTS;

const intl = useIntl();
const enumsMap = useEnums();
const ENUMS = useEnums();
const ZOOM_LEVELS = useZoomLevels();
const [graphQLError, setGraphQLError] = useState<unknown>(mutationQueryError);
const [isSelectedFiles, setIsSelectedFiles] = useState<boolean>(false);
Expand Down Expand Up @@ -573,7 +573,7 @@ export const InnerRasterForm = (
}, [firstPhaseErrors, vestValidationResults, graphQLPayloadObjectErrors]);

const shapeFileProviders = useMemo(() => {
return getEnumKeys(enumsMap, 'ProviderType').map((key) => {
return getEnumKeys(ENUMS, 'ProviderType').map((key) => {
const value = key as keyof typeof ProviderType;
return {
label: intl.formatMessage({
Expand Down
29 changes: 24 additions & 5 deletions src/discrete-layer/components/layer-details/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ import { IEnumsMapType } from '../../../common/contexts/enumsMap.context';
import { emphasizeByHTML } from '../../../common/helpers/formatters';
import { sessionStore } from '../../../common/helpers/storage';
import { Mode } from '../../../common/models/mode.enum';
import { RasterIngestionJobType } from '../../../common/models/raster-job';
import { ValidationTypeName } from '../../../common/models/validation.enum';
import { UiDescriptorsType, UiDescriptorsTypeName } from '../../../common/ui-descriptors/type';
import {
Expand Down Expand Up @@ -46,6 +45,7 @@ import {
ProductType,
ProviderType,
QuantizedMeshBestRecordModel,
RasterIngestionJobType,
RecordType,
UpdateRulesModelType,
UpdateRulesOperationModelType,
Expand Down Expand Up @@ -1026,6 +1026,18 @@ export const getEnumKeys = (
});
};

export const getEnumWithRealValues = (
enumsMap: IEnumsMapType,
enumName: string
): Record<string, string> => {
return Object.keys(enumsMap).reduce((acc, key) => {
if (enumsMap[key].enumName === enumName) {
acc[key] = enumsMap[key].realValue as string;
}
return acc;
}, {} as Record<string, string>);
};

export const getProductDomain = (productType: ProductType, enumsMap?: IEnumsMapType): string => {
return enumsMap?.[productType as string]?.parentDomain as string;
};
Expand Down Expand Up @@ -1072,8 +1084,15 @@ export const filterModeDescriptors = (
});
};

export const jobType2Mode: { [key: string]: Mode } = {
[RasterIngestionJobType.NEW]: Mode.NEW,
[RasterIngestionJobType.UPDATE]: Mode.UPDATE,
[RasterIngestionJobType.SWAP_UPDATE]: Mode.UPDATE,
export const jobType2Mode = (enumsMap: IEnumsMapType, enumName: string, jobType: string): Mode => {
const enumWithRealValues = getEnumWithRealValues(enumsMap, enumName);
const enumKey = Object.keys(enumWithRealValues).find((k) => enumWithRealValues[k] === jobType);
return enumKey === RasterIngestionJobType.NEW ? Mode.NEW : Mode.UPDATE;
};

export const getUpdateJobTypes = (enumsMap: IEnumsMapType, enumName: string): string[] => {
const enumWithRealValues = getEnumWithRealValues(enumsMap, enumName);
return Object.entries(enumWithRealValues)
.filter(([key]) => key !== RasterIngestionJobType.NEW)
.map(([_, realValue]) => realValue);
};
38 changes: 38 additions & 0 deletions src/discrete-layer/models/DummyForTypesOnClientModel.base.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
/* This is a mst-gql generated file, don't modify it manually */
/* eslint-disable */
/* tslint:disable */

import { types } from "mobx-state-tree"
import { QueryBuilder } from "mst-gql"
import { ModelBase } from "./ModelBase"
import { RasterIngestionJobTypeEnumType } from "./RasterIngestionJobTypeEnum"
import { RasterJobTypeEnumType } from "./RasterJobTypeEnum"
import { RootStoreType } from "./index"


/**
* DummyForTypesOnClientBase
* auto generated base class for the model DummyForTypesOnClientModel.
*/
export const DummyForTypesOnClientModelBase = ModelBase
.named('DummyForTypesOnClient')
.props({
__typename: types.optional(types.literal("DummyForTypesOnClient"), "DummyForTypesOnClient"),
dummy1: types.union(types.undefined, types.null, RasterIngestionJobTypeEnumType),
dummy2: types.union(types.undefined, types.null, RasterJobTypeEnumType),
})
.views(self => ({
get store() {
return self.__getStore<RootStoreType>()
}
}))

export class DummyForTypesOnClientModelSelector extends QueryBuilder {
get dummy1() { return this.__attr(`dummy1`) }
get dummy2() { return this.__attr(`dummy2`) }
}
export function selectFromDummyForTypesOnClient() {
return new DummyForTypesOnClientModelSelector()
}

export const dummyForTypesOnClientModelPrimitives = selectFromDummyForTypesOnClient().dummy1.dummy2
20 changes: 20 additions & 0 deletions src/discrete-layer/models/DummyForTypesOnClientModel.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import { Instance } from "mobx-state-tree"
import { DummyForTypesOnClientModelBase } from "./DummyForTypesOnClientModel.base"

/* The TypeScript type of an instance of DummyForTypesOnClientModel */
export interface DummyForTypesOnClientModelType extends Instance<typeof DummyForTypesOnClientModel.Type> {}

/* A graphql query fragment builders for DummyForTypesOnClientModel */
export { selectFromDummyForTypesOnClient, dummyForTypesOnClientModelPrimitives, DummyForTypesOnClientModelSelector } from "./DummyForTypesOnClientModel.base"

/**
* DummyForTypesOnClientModel
*/
// eslint-disable-next-line @typescript-eslint/naming-convention
export const DummyForTypesOnClientModel = DummyForTypesOnClientModelBase
.actions(self => ({
// This is an auto-generated example action.
log(): void {
console.log(JSON.stringify(self))
}
}))
23 changes: 23 additions & 0 deletions src/discrete-layer/models/RasterIngestionJobTypeEnum.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
/* This is a mst-gql generated file, don't modify it manually */
/* eslint-disable */
/* tslint:disable */
import { types } from "mobx-state-tree"

/**
* Typescript enum
*/

export enum RasterIngestionJobType {
NEW="NEW",
UPDATE="UPDATE",
SWAP_UPDATE="SWAP_UPDATE"
}

/**
* RasterIngestionJobType
*/
export const RasterIngestionJobTypeEnumType = types.enumeration("RasterIngestionJobType", [
"NEW",
"UPDATE",
"SWAP_UPDATE",
])
27 changes: 27 additions & 0 deletions src/discrete-layer/models/RasterJobTypeEnum.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
/* This is a mst-gql generated file, don't modify it manually */
/* eslint-disable */
/* tslint:disable */
import { types } from "mobx-state-tree"

/**
* Typescript enum
*/

export enum RasterJobType {
NEW="NEW",
UPDATE="UPDATE",
SWAP_UPDATE="SWAP_UPDATE",
TILES_SEEDING="TILES_SEEDING",
EXPORT="EXPORT"
}

/**
* RasterJobType
*/
export const RasterJobTypeEnumType = types.enumeration("RasterJobType", [
"NEW",
"UPDATE",
"SWAP_UPDATE",
"TILES_SEEDING",
"EXPORT",
])
Loading
Loading