@bpd-library/utilities 1.4.0 → 1.4.1-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,7 +3,7 @@ import { INCLUDED_PROPERTIES } from '../extended-api-models/included-properties'
3
3
  import { ApartmentBuildingModel, AreaProjectModel, AreaStatus, ConstructionNumberModel, DistrictModel, ProjectPhaseModel, ProjectPhaseStatus, PropertyTypeModel } from '../generated';
4
4
  declare type PropertyTypeStatus = 'InPreparation' | 'SaleSoon' | 'SaleStarted' | 'AssigningOn' | 'AmountAvailable' | 'InOption' | 'Sold' | 'UnderConstruction' | 'ForRent' | 'Rented';
5
5
  declare type ApartmentBuildingStatus = 'InPreparation' | 'SaleSoon' | 'SaleStarted' | 'AssigningOn' | 'AmountAvailable' | 'Available' | 'ForRent' | 'InOption' | 'Sold' | 'Rented' | 'UnderConstruction';
6
- declare type GeneratedConstructionNumberStatus = 'InPreparation' | 'InOption' | 'Available' | 'Sold' | 'Rented' | 'Reserved' | 'UnderConstruction';
6
+ declare type GeneratedConstructionNumberStatus = 'InPreparation' | 'InOption' | 'Available' | 'AssigningOn' | 'Sold' | 'Rented' | 'Reserved' | 'UnderConstruction';
7
7
  interface ExtendedConstructionNumber extends Pick<ConstructionNumberModel, 'id' | typeof INCLUDED_PROPERTIES.constructionNumber[number]> {
8
8
  areaProject?: ExtendedAreaProject;
9
9
  propertyType?: ExtendedPropertyType;
@@ -1 +1 @@
1
- {"version":3,"file":"api-utilities.types.js","sourceRoot":"","sources":["../../src/api-utilities/api-utilities.types.ts"],"names":[],"mappings":"","sourcesContent":["import { MapDataItem } from '@bpd-library/types';\n\nimport { INCLUDED_PROPERTIES } from '../extended-api-models/included-properties';\nimport {\n ApartmentBuildingModel,\n AreaProjectModel,\n AreaStatus,\n ConstructionNumberModel,\n DistrictModel,\n ProjectPhaseModel,\n ProjectPhaseStatus,\n PropertyTypeModel,\n} from '../generated';\n\ntype PropertyTypeStatus =\n | 'InPreparation'\n | 'SaleSoon'\n | 'SaleStarted'\n | 'AssigningOn'\n | 'AmountAvailable'\n | 'InOption'\n | 'Sold'\n | 'UnderConstruction'\n | 'ForRent'\n | 'Rented';\n\ntype ApartmentBuildingStatus =\n | 'InPreparation'\n | 'SaleSoon'\n | 'SaleStarted'\n | 'AssigningOn'\n | 'AmountAvailable'\n | 'Available'\n | 'ForRent'\n | 'InOption'\n | 'Sold'\n | 'Rented'\n | 'UnderConstruction';\n\ntype GeneratedConstructionNumberStatus =\n | 'InPreparation'\n | 'InOption'\n | 'Available'\n | 'Sold'\n | 'Rented'\n | 'Reserved'\n | 'UnderConstruction';\n\ninterface ExtendedConstructionNumber\n extends Pick<\n ConstructionNumberModel,\n 'id' | typeof INCLUDED_PROPERTIES.constructionNumber[number]\n > {\n areaProject?: ExtendedAreaProject;\n propertyType?: ExtendedPropertyType;\n projectPhase?: ExtendedProjectPhase;\n mapDataItems?: MapDataItem[];\n apartmentBuilding?: ExtendedApartmentBuilding;\n status?: GeneratedConstructionNumberStatus;\n objectType: 'constructionNumber';\n}\n\ninterface ExtendedPropertyType\n extends Pick<PropertyTypeModel, 'id' | typeof INCLUDED_PROPERTIES.propertyType[number]> {\n constructionNumbers?: ExtendedConstructionNumber[];\n projectPhase?: ExtendedProjectPhase;\n mapDataItems?: MapDataItem[];\n status?: PropertyTypeStatus;\n apartmentBuildings?: ExtendedApartmentBuilding[];\n objectType: 'propertyType';\n}\n\ninterface ExtendedProjectPhase\n extends Pick<ProjectPhaseModel, 'id' | typeof INCLUDED_PROPERTIES.projectPhase[number]> {\n constructionNumbers?: ExtendedConstructionNumber[];\n propertyTypes?: ExtendedPropertyType[];\n mapDataItems?: MapDataItem[];\n objectType: 'projectPhase';\n}\n\ninterface ExtendedApartmentBuilding\n extends Pick<\n ApartmentBuildingModel,\n 'id' | typeof INCLUDED_PROPERTIES.apartmentBuilding[number]\n > {\n constructionNumbers?: ExtendedConstructionNumber[];\n propertyTypes?: ExtendedPropertyType[];\n projectPhase?: ExtendedProjectPhase;\n mapDataItems?: MapDataItem[];\n status?: ApartmentBuildingStatus;\n objectType: 'apartmentBuilding';\n}\n\ninterface ExtendedDistrict\n extends Pick<DistrictModel, 'id' | typeof INCLUDED_PROPERTIES.district[number]> {\n status?: ProjectPhaseStatus;\n mapDataItems?: MapDataItem[];\n objectType: 'district';\n}\n\ninterface ExtendedAreaProject\n extends Pick<AreaProjectModel, 'id' | typeof INCLUDED_PROPERTIES.areaProject[number]> {\n status?: AreaStatus;\n mapDataItems?: MapDataItem[];\n objectType: 'areaProject';\n}\n\ntype ExtendedApiObject =\n | ExtendedConstructionNumber\n | ExtendedApartmentBuilding\n | ExtendedPropertyType\n | ExtendedProjectPhase\n | ExtendedDistrict\n | ExtendedAreaProject;\n\nexport {\n ExtendedConstructionNumber,\n ExtendedPropertyType,\n ExtendedApartmentBuilding,\n ExtendedProjectPhase,\n ExtendedDistrict,\n ExtendedAreaProject,\n ExtendedApiObject,\n PropertyTypeStatus,\n ApartmentBuildingStatus,\n GeneratedConstructionNumberStatus,\n};\n"]}
1
+ {"version":3,"file":"api-utilities.types.js","sourceRoot":"","sources":["../../src/api-utilities/api-utilities.types.ts"],"names":[],"mappings":"","sourcesContent":["import { MapDataItem } from '@bpd-library/types';\n\nimport { INCLUDED_PROPERTIES } from '../extended-api-models/included-properties';\nimport {\n ApartmentBuildingModel,\n AreaProjectModel,\n AreaStatus,\n ConstructionNumberModel,\n DistrictModel,\n ProjectPhaseModel,\n ProjectPhaseStatus,\n PropertyTypeModel,\n} from '../generated';\n\ntype PropertyTypeStatus =\n | 'InPreparation'\n | 'SaleSoon'\n | 'SaleStarted'\n | 'AssigningOn'\n | 'AmountAvailable'\n | 'InOption'\n | 'Sold'\n | 'UnderConstruction'\n | 'ForRent'\n | 'Rented';\n\ntype ApartmentBuildingStatus =\n | 'InPreparation'\n | 'SaleSoon'\n | 'SaleStarted'\n | 'AssigningOn'\n | 'AmountAvailable'\n | 'Available'\n | 'ForRent'\n | 'InOption'\n | 'Sold'\n | 'Rented'\n | 'UnderConstruction';\n\ntype GeneratedConstructionNumberStatus =\n | 'InPreparation'\n | 'InOption'\n | 'Available'\n | 'AssigningOn'\n | 'Sold'\n | 'Rented'\n | 'Reserved'\n | 'UnderConstruction';\n\ninterface ExtendedConstructionNumber\n extends Pick<\n ConstructionNumberModel,\n 'id' | typeof INCLUDED_PROPERTIES.constructionNumber[number]\n > {\n areaProject?: ExtendedAreaProject;\n propertyType?: ExtendedPropertyType;\n projectPhase?: ExtendedProjectPhase;\n mapDataItems?: MapDataItem[];\n apartmentBuilding?: ExtendedApartmentBuilding;\n status?: GeneratedConstructionNumberStatus;\n objectType: 'constructionNumber';\n}\n\ninterface ExtendedPropertyType\n extends Pick<PropertyTypeModel, 'id' | typeof INCLUDED_PROPERTIES.propertyType[number]> {\n constructionNumbers?: ExtendedConstructionNumber[];\n projectPhase?: ExtendedProjectPhase;\n mapDataItems?: MapDataItem[];\n status?: PropertyTypeStatus;\n apartmentBuildings?: ExtendedApartmentBuilding[];\n objectType: 'propertyType';\n}\n\ninterface ExtendedProjectPhase\n extends Pick<ProjectPhaseModel, 'id' | typeof INCLUDED_PROPERTIES.projectPhase[number]> {\n constructionNumbers?: ExtendedConstructionNumber[];\n propertyTypes?: ExtendedPropertyType[];\n mapDataItems?: MapDataItem[];\n objectType: 'projectPhase';\n}\n\ninterface ExtendedApartmentBuilding\n extends Pick<\n ApartmentBuildingModel,\n 'id' | typeof INCLUDED_PROPERTIES.apartmentBuilding[number]\n > {\n constructionNumbers?: ExtendedConstructionNumber[];\n propertyTypes?: ExtendedPropertyType[];\n projectPhase?: ExtendedProjectPhase;\n mapDataItems?: MapDataItem[];\n status?: ApartmentBuildingStatus;\n objectType: 'apartmentBuilding';\n}\n\ninterface ExtendedDistrict\n extends Pick<DistrictModel, 'id' | typeof INCLUDED_PROPERTIES.district[number]> {\n status?: ProjectPhaseStatus;\n mapDataItems?: MapDataItem[];\n objectType: 'district';\n}\n\ninterface ExtendedAreaProject\n extends Pick<AreaProjectModel, 'id' | typeof INCLUDED_PROPERTIES.areaProject[number]> {\n status?: AreaStatus;\n mapDataItems?: MapDataItem[];\n objectType: 'areaProject';\n}\n\ntype ExtendedApiObject =\n | ExtendedConstructionNumber\n | ExtendedApartmentBuilding\n | ExtendedPropertyType\n | ExtendedProjectPhase\n | ExtendedDistrict\n | ExtendedAreaProject;\n\nexport {\n ExtendedConstructionNumber,\n ExtendedPropertyType,\n ExtendedApartmentBuilding,\n ExtendedProjectPhase,\n ExtendedDistrict,\n ExtendedAreaProject,\n ExtendedApiObject,\n PropertyTypeStatus,\n ApartmentBuildingStatus,\n GeneratedConstructionNumberStatus,\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"extended-area.js","sourceRoot":"","sources":["../../src/extended-api-models/extended-area.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ExtendedApartmentBuilding,\n ExtendedAreaProject,\n ExtendedConstructionNumber,\n ExtendedDistrict,\n ExtendedProjectPhase,\n ExtendedPropertyType,\n filterConstructionNumbers,\n filterPropertyTypes,\n findProjectPhase,\n findPropertyType,\n getDistrictStatus,\n} from '../api-utilities';\nimport { environmentDetails } from '../environment';\nimport {\n ApartmentBuildingModel,\n apartmentBuildingQuery,\n areaProjectGetById,\n AreaProjectModel,\n ConstructionNumberModel,\n constructionNumberQuery,\n DistrictModel,\n districtQuery,\n ProjectPhaseModel,\n projectPhaseQuery,\n PropertyTypeModel,\n propertyTypeQuery,\n} from '../generated';\nimport { COMPOSED_INCLUDE_STRINGS } from './included-properties';\nimport { getApartmentBuildingStatus } from './status/apartment-building-status';\nimport { constructionNumberStatus } from './status/construction-number-status';\nimport { getPropertyTypeStatus } from './status/property-type-status';\n\ninterface OriginalAreaModels {\n constructionNumbers: ConstructionNumberModel[];\n propertyTypes: PropertyTypeModel[];\n apartmentBuildings: ApartmentBuildingModel[];\n projectPhases: ProjectPhaseModel[];\n districts: DistrictModel[];\n areaProject: AreaProjectModel;\n}\n\ninterface ExtendedAreaModels {\n constructionNumbers: ExtendedConstructionNumber[];\n propertyTypes: ExtendedPropertyType[];\n apartmentBuildings: ExtendedApartmentBuilding[];\n projectPhases: ExtendedProjectPhase[];\n districts: ExtendedDistrict[];\n areaProject: ExtendedAreaProject;\n}\n\ninterface FilterFunctions {\n constructionNumber?: (constructionNumber: ConstructionNumberModel) => boolean;\n propertyType?: (propertyType: PropertyTypeModel) => boolean;\n apartmentBuilding?: (apartmentBuilding: ApartmentBuildingModel) => boolean;\n projectPhase?: (projectPhase: ProjectPhaseModel) => boolean;\n district?: (district: DistrictModel) => boolean;\n}\n\nconst ExtendedAreaModelsUtility = () => {\n const areaState: {\n [areaId: string]: {\n extendedData?: ExtendedAreaModels;\n resolveArray: Function[];\n filterFunctions?: FilterFunctions;\n };\n } = {};\n\n async function controller(areaId: string) {\n let originalData: OriginalAreaModels;\n\n if (hasSessionStorageData(areaId)) {\n originalData = fetchSessionStorageData(areaId)!;\n } else {\n originalData = await fetchData(areaId);\n setSessionStorageData(areaId, originalData);\n }\n\n // Objects without images, should not be shown on the website\n originalData = filterObjectsWithImages(originalData);\n\n areaState[areaId].extendedData = extendModels(originalData);\n\n setLoaded(areaId);\n }\n\n async function getData(areaId: string): Promise<ExtendedAreaModels> {\n if (!areaState[areaId]) {\n areaState[areaId] = {\n resolveArray: [],\n };\n\n // Controller handles fetching + extending of data\n controller(areaId);\n }\n\n const state = areaState[areaId];\n\n if (!state.extendedData) {\n /*\n if no extendedData is found, it means it's being fetched.\n Promises will be resolved after data is loaded\n */\n return new Promise((res) => {\n state.resolveArray.push(res);\n });\n } else {\n // if no extendedData is found, it comes from sessionStorage\n return state.extendedData;\n }\n }\n\n async function getCurrentAreaData(): Promise<ExtendedAreaModels> {\n return getData(environmentDetails.areaId!);\n }\n\n function setLoaded(areaId: string) {\n areaState[areaId].resolveArray.forEach((res) => {\n res(areaState[areaId].extendedData);\n });\n }\n\n function filterObjectsWithImages(data: OriginalAreaModels): OriginalAreaModels {\n return {\n ...data,\n constructionNumbers: data.constructionNumbers.filter(\n ({ mainImage }) => !!mainImage?.url,\n ),\n propertyTypes: data.propertyTypes.filter(({ mainImage }) => !!mainImage?.url),\n apartmentBuildings: data.apartmentBuildings.filter(({ image }) => !!image?.url),\n };\n }\n\n function sessionStorageId(areaId: string) {\n return `AreaObjects::${areaId}`;\n }\n\n function sessionStorageData(areaId: string) {\n return sessionStorage.getItem(sessionStorageId(areaId));\n }\n\n function hasSessionStorageData(areaId: string) {\n return !!sessionStorageData(areaId);\n }\n\n function fetchSessionStorageData(areaId: string) {\n if (hasSessionStorageData(areaId)) {\n return JSON.parse(sessionStorageData(areaId)!) as OriginalAreaModels;\n } else {\n return;\n }\n }\n\n function setSessionStorageData(areaId: string, originalData: OriginalAreaModels) {\n sessionStorage.setItem(sessionStorageId(areaId), JSON.stringify(originalData));\n }\n\n async function fetchData(areaId: string) {\n const propertyTypes = propertyTypeQuery({\n AreaProjectId: areaId,\n include: COMPOSED_INCLUDE_STRINGS.propertyType,\n });\n const constructionNumbers = constructionNumberQuery({\n AreaProjectId: areaId,\n include: COMPOSED_INCLUDE_STRINGS.constructionNumber,\n });\n const projectPhases = projectPhaseQuery({\n AreaProjectId: areaId,\n include: COMPOSED_INCLUDE_STRINGS.projectPhase,\n });\n const apartmentBuildings = apartmentBuildingQuery({\n AreaProjectId: areaId,\n include: COMPOSED_INCLUDE_STRINGS.apartmentBuilding,\n });\n const districts = districtQuery({\n AreaProjectId: areaId,\n include: COMPOSED_INCLUDE_STRINGS.district,\n });\n const areaProject = areaProjectGetById(areaId, {\n include: COMPOSED_INCLUDE_STRINGS.areaProject,\n });\n\n return {\n propertyTypes: await propertyTypes,\n constructionNumbers: await constructionNumbers,\n projectPhases: await projectPhases,\n apartmentBuildings: await apartmentBuildings,\n districts: await districts,\n areaProject: await areaProject,\n };\n }\n\n function extendModels(data: OriginalAreaModels): ExtendedAreaModels {\n const {\n constructionNumbers,\n propertyTypes,\n apartmentBuildings,\n projectPhases,\n districts,\n areaProject,\n } = data as ExtendedAreaModels;\n\n /*\n Extend constructionNumbers object\n */\n constructionNumbers.forEach((constructionNumber) => {\n const { propertyTypeId, projectPhaseId } = constructionNumber;\n\n constructionNumber.areaProject = areaProject;\n\n if (propertyTypeId) {\n constructionNumber.propertyType = findPropertyType(propertyTypes, {\n id: propertyTypeId,\n });\n }\n\n if (projectPhaseId) {\n constructionNumber.projectPhase = findProjectPhase(projectPhases, {\n id: projectPhaseId,\n });\n }\n\n constructionNumber.apartmentBuilding = apartmentBuildings.find((s) =>\n s.constructionNumberIds?.includes(constructionNumber.id),\n );\n\n constructionNumber.status = constructionNumberStatus(constructionNumber);\n\n constructionNumber.objectType = 'constructionNumber';\n });\n\n /*\n Extend propertTypes object\n */\n propertyTypes.forEach((propertyType) => {\n const { projectPhaseId, id } = propertyType;\n\n if (projectPhaseId) {\n propertyType.projectPhase = findProjectPhase(projectPhases, {\n id: projectPhaseId,\n });\n }\n\n propertyType.constructionNumbers = filterConstructionNumbers(constructionNumbers, {\n propertyTypeId: id,\n });\n\n if (propertyType.projectPhase) {\n propertyType.status = getPropertyTypeStatus(\n propertyType.projectPhase,\n propertyType.constructionNumbers,\n );\n }\n\n propertyType.apartmentBuildings = apartmentBuildings.filter((s) =>\n s.propertyTypeIds?.includes(propertyType.id),\n );\n\n propertyType.objectType = 'propertyType';\n });\n\n /*\n Extend projectPhase object\n */\n projectPhases.forEach((projectPhase) => {\n const { id } = projectPhase;\n\n projectPhase.propertyTypes = filterPropertyTypes(propertyTypes, {\n projectPhaseId: id,\n });\n projectPhase.constructionNumbers = filterConstructionNumbers(constructionNumbers, {\n projectPhaseId: id,\n });\n\n projectPhase.objectType = 'projectPhase';\n });\n\n /*\n Extend apartmentBuilding object\n */\n apartmentBuildings.forEach((apartmentBuilding) => {\n const { propertyTypeIds, constructionNumberIds, projectPhaseId } = apartmentBuilding;\n\n if (propertyTypeIds) {\n apartmentBuilding.propertyTypes = propertyTypes.filter(({ id }) =>\n propertyTypeIds?.includes(id),\n );\n }\n\n if (constructionNumberIds) {\n apartmentBuilding.constructionNumbers = constructionNumbers.filter(({ id }) =>\n constructionNumberIds?.includes(id),\n );\n }\n\n if (projectPhaseId) {\n apartmentBuilding.projectPhase = findProjectPhase(projectPhases, {\n id: projectPhaseId,\n });\n }\n\n if (apartmentBuilding.projectPhase) {\n apartmentBuilding.status = getApartmentBuildingStatus(\n apartmentBuilding.projectPhase,\n apartmentBuilding.constructionNumbers,\n );\n }\n\n apartmentBuilding.objectType = 'apartmentBuilding';\n });\n\n /*\n Extend district object\n */\n districts.forEach((district) => {\n district.status = getDistrictStatus(district, projectPhases);\n district.objectType = 'district';\n });\n\n areaProject.objectType = 'areaProject';\n\n return {\n constructionNumbers,\n propertyTypes,\n apartmentBuildings,\n projectPhases,\n districts,\n areaProject,\n };\n }\n\n return {\n getData,\n getCurrentAreaData,\n };\n};\n\nconst extendedArea = ExtendedAreaModelsUtility();\n\nexport { extendedArea, ExtendedAreaModels };\n"]}
1
+ {"version":3,"file":"extended-area.js","sourceRoot":"","sources":["../../src/extended-api-models/extended-area.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ExtendedApartmentBuilding,\n ExtendedAreaProject,\n ExtendedConstructionNumber,\n ExtendedDistrict,\n ExtendedProjectPhase,\n ExtendedPropertyType,\n filterConstructionNumbers,\n filterPropertyTypes,\n findProjectPhase,\n findPropertyType,\n getDistrictStatus,\n} from '../api-utilities';\nimport { environmentDetails } from '../environment';\nimport {\n ApartmentBuildingModel,\n apartmentBuildingQuery,\n areaProjectGetById,\n AreaProjectModel,\n ConstructionNumberModel,\n constructionNumberQuery,\n DistrictModel,\n districtQuery,\n ProjectPhaseModel,\n projectPhaseQuery,\n PropertyTypeModel,\n propertyTypeQuery,\n} from '../generated';\nimport { COMPOSED_INCLUDE_STRINGS } from './included-properties';\nimport { getApartmentBuildingStatus } from './status/apartment-building-status';\nimport { constructionNumberStatus } from './status/construction-number-status';\nimport { getPropertyTypeStatus } from './status/property-type-status';\n\ninterface OriginalAreaModels {\n constructionNumbers: ConstructionNumberModel[];\n propertyTypes: PropertyTypeModel[];\n apartmentBuildings: ApartmentBuildingModel[];\n projectPhases: ProjectPhaseModel[];\n districts: DistrictModel[];\n areaProject: AreaProjectModel;\n}\n\ninterface ExtendedAreaModels {\n constructionNumbers: ExtendedConstructionNumber[];\n propertyTypes: ExtendedPropertyType[];\n apartmentBuildings: ExtendedApartmentBuilding[];\n projectPhases: ExtendedProjectPhase[];\n districts: ExtendedDistrict[];\n areaProject: ExtendedAreaProject;\n}\n\ninterface FilterFunctions {\n constructionNumber?: (constructionNumber: ConstructionNumberModel) => boolean;\n propertyType?: (propertyType: PropertyTypeModel) => boolean;\n apartmentBuilding?: (apartmentBuilding: ApartmentBuildingModel) => boolean;\n projectPhase?: (projectPhase: ProjectPhaseModel) => boolean;\n district?: (district: DistrictModel) => boolean;\n}\n\nconst ExtendedAreaModelsUtility = () => {\n const areaState: {\n [areaId: string]: {\n extendedData?: ExtendedAreaModels;\n resolveArray: Function[];\n filterFunctions?: FilterFunctions;\n };\n } = {};\n\n async function controller(areaId: string) {\n let originalData: OriginalAreaModels;\n\n if (hasSessionStorageData(areaId)) {\n originalData = fetchSessionStorageData(areaId)!;\n } else {\n originalData = await fetchData(areaId);\n setSessionStorageData(areaId, originalData);\n }\n // Objects without images, should not be shown on the website\n originalData = filterObjectsWithImages(originalData);\n\n areaState[areaId].extendedData = extendModels(originalData);\n\n setLoaded(areaId);\n }\n\n async function getData(areaId: string): Promise<ExtendedAreaModels> {\n if (!areaState[areaId]) {\n areaState[areaId] = {\n resolveArray: [],\n };\n\n // Controller handles fetching + extending of data\n controller(areaId);\n }\n\n const state = areaState[areaId];\n\n if (!state.extendedData) {\n /*\n if no extendedData is found, it means it's being fetched.\n Promises will be resolved after data is loaded\n */\n return new Promise((res) => {\n state.resolveArray.push(res);\n });\n } else {\n // if no extendedData is found, it comes from sessionStorage\n return state.extendedData;\n }\n }\n\n async function getCurrentAreaData(): Promise<ExtendedAreaModels> {\n return getData(environmentDetails.areaId!);\n }\n\n function setLoaded(areaId: string) {\n areaState[areaId].resolveArray.forEach((res) => {\n res(areaState[areaId].extendedData);\n });\n }\n\n function filterObjectsWithImages(data: OriginalAreaModels): OriginalAreaModels {\n return {\n ...data,\n constructionNumbers: data.constructionNumbers.filter(\n ({ mainImage }) => !!mainImage?.url,\n ),\n propertyTypes: data.propertyTypes.filter(({ mainImage }) => !!mainImage?.url),\n apartmentBuildings: data.apartmentBuildings.filter(({ image }) => !!image?.url),\n };\n }\n\n function sessionStorageId(areaId: string) {\n return `AreaObjects::${areaId}`;\n }\n\n function sessionStorageData(areaId: string) {\n return sessionStorage.getItem(sessionStorageId(areaId));\n }\n\n function hasSessionStorageData(areaId: string) {\n return !!sessionStorageData(areaId);\n }\n\n function fetchSessionStorageData(areaId: string) {\n if (hasSessionStorageData(areaId)) {\n return JSON.parse(sessionStorageData(areaId)!) as OriginalAreaModels;\n } else {\n return;\n }\n }\n\n function setSessionStorageData(areaId: string, originalData: OriginalAreaModels) {\n sessionStorage.setItem(sessionStorageId(areaId), JSON.stringify(originalData));\n }\n\n async function fetchData(areaId: string) {\n const propertyTypes = propertyTypeQuery({\n AreaProjectId: areaId,\n include: COMPOSED_INCLUDE_STRINGS.propertyType,\n });\n const constructionNumbers = constructionNumberQuery({\n AreaProjectId: areaId,\n include: COMPOSED_INCLUDE_STRINGS.constructionNumber,\n });\n const projectPhases = projectPhaseQuery({\n AreaProjectId: areaId,\n include: COMPOSED_INCLUDE_STRINGS.projectPhase,\n });\n const apartmentBuildings = apartmentBuildingQuery({\n AreaProjectId: areaId,\n include: COMPOSED_INCLUDE_STRINGS.apartmentBuilding,\n });\n const districts = districtQuery({\n AreaProjectId: areaId,\n include: COMPOSED_INCLUDE_STRINGS.district,\n });\n const areaProject = areaProjectGetById(areaId, {\n include: COMPOSED_INCLUDE_STRINGS.areaProject,\n });\n\n return {\n propertyTypes: await propertyTypes,\n constructionNumbers: await constructionNumbers,\n projectPhases: await projectPhases,\n apartmentBuildings: await apartmentBuildings,\n districts: await districts,\n areaProject: await areaProject,\n };\n }\n\n function extendModels(data: OriginalAreaModels): ExtendedAreaModels {\n const {\n constructionNumbers,\n propertyTypes,\n apartmentBuildings,\n projectPhases,\n districts,\n areaProject,\n } = data as ExtendedAreaModels;\n\n /*\n Extend constructionNumbers object\n */\n constructionNumbers.forEach((constructionNumber) => {\n const { propertyTypeId, projectPhaseId } = constructionNumber;\n\n constructionNumber.areaProject = areaProject;\n\n if (propertyTypeId) {\n constructionNumber.propertyType = findPropertyType(propertyTypes, {\n id: propertyTypeId,\n });\n }\n\n if (projectPhaseId) {\n constructionNumber.projectPhase = findProjectPhase(projectPhases, {\n id: projectPhaseId,\n });\n }\n\n constructionNumber.apartmentBuilding = apartmentBuildings.find((s) =>\n s.constructionNumberIds?.includes(constructionNumber.id),\n );\n\n constructionNumber.status = constructionNumberStatus(constructionNumber);\n\n constructionNumber.objectType = 'constructionNumber';\n });\n\n /*\n Extend propertTypes object\n */\n propertyTypes.forEach((propertyType) => {\n const { projectPhaseId, id } = propertyType;\n\n if (projectPhaseId) {\n propertyType.projectPhase = findProjectPhase(projectPhases, {\n id: projectPhaseId,\n });\n }\n\n propertyType.constructionNumbers = filterConstructionNumbers(constructionNumbers, {\n propertyTypeId: id,\n });\n\n if (propertyType.projectPhase) {\n propertyType.status = getPropertyTypeStatus(\n propertyType.projectPhase,\n propertyType.constructionNumbers,\n );\n }\n\n propertyType.apartmentBuildings = apartmentBuildings.filter((s) =>\n s.propertyTypeIds?.includes(propertyType.id),\n );\n\n propertyType.objectType = 'propertyType';\n });\n\n /*\n Extend projectPhase object\n */\n projectPhases.forEach((projectPhase) => {\n const { id } = projectPhase;\n\n projectPhase.propertyTypes = filterPropertyTypes(propertyTypes, {\n projectPhaseId: id,\n });\n projectPhase.constructionNumbers = filterConstructionNumbers(constructionNumbers, {\n projectPhaseId: id,\n });\n\n projectPhase.objectType = 'projectPhase';\n });\n\n /*\n Extend apartmentBuilding object\n */\n apartmentBuildings.forEach((apartmentBuilding) => {\n const { propertyTypeIds, constructionNumberIds, projectPhaseId } = apartmentBuilding;\n\n if (propertyTypeIds) {\n apartmentBuilding.propertyTypes = propertyTypes.filter(({ id }) =>\n propertyTypeIds?.includes(id),\n );\n }\n\n if (constructionNumberIds) {\n apartmentBuilding.constructionNumbers = constructionNumbers.filter(({ id }) =>\n constructionNumberIds?.includes(id),\n );\n }\n\n if (projectPhaseId) {\n apartmentBuilding.projectPhase = findProjectPhase(projectPhases, {\n id: projectPhaseId,\n });\n }\n\n if (apartmentBuilding.projectPhase) {\n apartmentBuilding.status = getApartmentBuildingStatus(\n apartmentBuilding.projectPhase,\n apartmentBuilding.constructionNumbers,\n );\n }\n\n apartmentBuilding.objectType = 'apartmentBuilding';\n });\n\n /*\n Extend district object\n */\n districts.forEach((district) => {\n district.status = getDistrictStatus(district, projectPhases);\n district.objectType = 'district';\n });\n\n areaProject.objectType = 'areaProject';\n\n return {\n constructionNumbers,\n propertyTypes,\n apartmentBuildings,\n projectPhases,\n districts,\n areaProject,\n };\n }\n\n return {\n getData,\n getCurrentAreaData,\n };\n};\n\nconst extendedArea = ExtendedAreaModelsUtility();\n\nexport { extendedArea, ExtendedAreaModels };\n"]}
@@ -1,6 +1,12 @@
1
1
  import { hasDatePassed } from '../../date';
2
2
  const constructionNumberStatus = (constructionNumber) => {
3
- const { projectPhase, availabilityStatus } = constructionNumber;
3
+ const { projectPhase, availabilityStatus, propertyType, apartmentBuilding } = constructionNumber;
4
+ const { status: propertyTypeStatus } = propertyType || {};
5
+ if (propertyTypeStatus === 'AssigningOn')
6
+ return 'AssigningOn';
7
+ const { status: apartmentBuildingStatus } = apartmentBuilding || {};
8
+ if (apartmentBuildingStatus === 'AssigningOn')
9
+ return 'AssigningOn';
4
10
  const { isRental, status: projectPhaseStatus } = projectPhase || {};
5
11
  if (projectPhaseStatus === 'InPreparation')
6
12
  return availabilityStatus === 'Reserved' ? 'Reserved' : 'InPreparation';
@@ -1 +1 @@
1
- {"version":3,"file":"construction-number-status.js","sourceRoot":"","sources":["../../../src/extended-api-models/status/construction-number-status.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,wBAAwB,GAAG,CAC7B,kBAA8C,EACD,EAAE;IAC/C,MAAM,EAAE,YAAY,EAAE,kBAAkB,EAAE,GAAG,kBAAkB,CAAC;IAEhE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,kBAAkB,EAAE,GAAG,YAAY,IAAI,EAAE,CAAC;IAEpE,IAAI,kBAAkB,KAAK,eAAe;QACtC,OAAO,kBAAkB,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC;IAC5E,IAAI,kBAAkB,KAAK,MAAM;QAAE,OAAO,mBAAmB,CAAC;IAE9D,QAAQ,kBAAkB,EAAE;QACxB,KAAK,UAAU;YACX,IACI,kBAAkB,KAAK,QAAQ,KAC/B,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,cAAc,CAAA;gBAC5B,aAAa,CAAC,YAAY,CAAC,cAAc,CAAC,EAC5C;gBACE,OAAO,UAAU,CAAC;aACrB;YACD,OAAO,UAAU,CAAC;QACtB,KAAK,UAAU;YACX,OAAO,UAAU,CAAC;QACtB,KAAK,WAAW;YACZ,OAAO,WAAW,CAAC;QACvB,KAAK,MAAM;YACP,OAAO,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;KAC3C;IAED,OAAO;AACX,CAAC,CAAC;AAEF,OAAO,EAAE,wBAAwB,EAAE,CAAC","sourcesContent":["import {\n ExtendedConstructionNumber,\n GeneratedConstructionNumberStatus,\n} from '../../api-utilities/api-utilities.types';\nimport { hasDatePassed } from '../../date';\n\nconst constructionNumberStatus = (\n constructionNumber: ExtendedConstructionNumber,\n): GeneratedConstructionNumberStatus | undefined => {\n const { projectPhase, availabilityStatus } = constructionNumber;\n\n const { isRental, status: projectPhaseStatus } = projectPhase || {};\n\n if (projectPhaseStatus === 'InPreparation')\n return availabilityStatus === 'Reserved' ? 'Reserved' : 'InPreparation';\n if (projectPhaseStatus === 'Sold') return 'UnderConstruction';\n\n switch (availabilityStatus) {\n case 'Reserved':\n if (\n projectPhaseStatus === 'OnSale' &&\n projectPhase?.allocationDate &&\n hasDatePassed(projectPhase.allocationDate)\n ) {\n return 'InOption';\n }\n return 'Reserved';\n case 'InOption':\n return 'InOption';\n case 'Available':\n return 'Available';\n case 'Sold':\n return isRental ? 'Rented' : 'Sold';\n }\n\n return;\n};\n\nexport { constructionNumberStatus };\n"]}
1
+ {"version":3,"file":"construction-number-status.js","sourceRoot":"","sources":["../../../src/extended-api-models/status/construction-number-status.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,wBAAwB,GAAG,CAC7B,kBAA8C,EACD,EAAE;IAC/C,MAAM,EAAE,YAAY,EAAE,kBAAkB,EAAE,YAAY,EAAE,iBAAiB,EAAE,GAAG,kBAAkB,CAAC;IAEjG,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE,GAAG,YAAY,IAAI,EAAE,CAAC;IAC1D,IAAI,kBAAkB,KAAK,aAAa;QAAE,OAAO,aAAa,CAAC;IAE/D,MAAM,EAAE,MAAM,EAAE,uBAAuB,EAAE,GAAG,iBAAiB,IAAI,EAAE,CAAC;IACpE,IAAI,uBAAuB,KAAK,aAAa;QAAE,OAAO,aAAa,CAAC;IAEpE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,kBAAkB,EAAE,GAAG,YAAY,IAAI,EAAE,CAAC;IAEpE,IAAI,kBAAkB,KAAK,eAAe;QACtC,OAAO,kBAAkB,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC;IAC5E,IAAI,kBAAkB,KAAK,MAAM;QAAE,OAAO,mBAAmB,CAAC;IAE9D,QAAQ,kBAAkB,EAAE;QACxB,KAAK,UAAU;YACX,IACI,kBAAkB,KAAK,QAAQ,KAC/B,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,cAAc,CAAA;gBAC5B,aAAa,CAAC,YAAY,CAAC,cAAc,CAAC,EAC5C;gBACE,OAAO,UAAU,CAAC;aACrB;YACD,OAAO,UAAU,CAAC;QACtB,KAAK,UAAU;YACX,OAAO,UAAU,CAAC;QACtB,KAAK,WAAW;YACZ,OAAO,WAAW,CAAC;QACvB,KAAK,MAAM;YACP,OAAO,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;KAC3C;IAED,OAAO;AACX,CAAC,CAAC;AAEF,OAAO,EAAE,wBAAwB,EAAE,CAAC","sourcesContent":["import {\n ExtendedConstructionNumber,\n GeneratedConstructionNumberStatus,\n} from '../../api-utilities/api-utilities.types';\nimport { hasDatePassed } from '../../date';\n\nconst constructionNumberStatus = (\n constructionNumber: ExtendedConstructionNumber,\n): GeneratedConstructionNumberStatus | undefined => {\n const { projectPhase, availabilityStatus, propertyType, apartmentBuilding } = constructionNumber;\n\n const { status: propertyTypeStatus } = propertyType || {};\n if (propertyTypeStatus === 'AssigningOn') return 'AssigningOn';\n\n const { status: apartmentBuildingStatus } = apartmentBuilding || {};\n if (apartmentBuildingStatus === 'AssigningOn') return 'AssigningOn';\n\n const { isRental, status: projectPhaseStatus } = projectPhase || {};\n\n if (projectPhaseStatus === 'InPreparation')\n return availabilityStatus === 'Reserved' ? 'Reserved' : 'InPreparation';\n if (projectPhaseStatus === 'Sold') return 'UnderConstruction';\n\n switch (availabilityStatus) {\n case 'Reserved':\n if (\n projectPhaseStatus === 'OnSale' &&\n projectPhase?.allocationDate &&\n hasDatePassed(projectPhase.allocationDate)\n ) {\n return 'InOption';\n }\n return 'Reserved';\n case 'InOption':\n return 'InOption';\n case 'Available':\n return 'Available';\n case 'Sold':\n return isRental ? 'Rented' : 'Sold';\n }\n\n return;\n};\n\nexport { constructionNumberStatus };\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bpd-library/utilities",
3
- "version": "1.4.0",
3
+ "version": "1.4.1-beta.0",
4
4
  "description": "Description",
5
5
  "url": "https://github.com/{repo name}",
6
6
  "license": "MIT",
@@ -45,13 +45,13 @@
45
45
  "publishConfig": {
46
46
  "access": "public"
47
47
  },
48
- "gitHead": "04cb3222f5b878cd20511c8b8639aa2e99d9fb74",
48
+ "gitHead": "5c349509db6a9e548abc35e2ae31fce7bc266839",
49
49
  "dependencies": {
50
50
  "@atomify/core": "2.4.1",
51
51
  "@atomify/hooks": "1.1.11",
52
52
  "@atomify/jsx": "1.7.1",
53
53
  "@atomify/kit": "1.1.11",
54
- "@bpd-library/types": "^1.4.0",
54
+ "@bpd-library/types": "^1.4.1-beta.0",
55
55
  "qs": "^6.9.4",
56
56
  "query-string": "5"
57
57
  }