Skip to content

Commit

Permalink
Merge pull request #392 from wearepal/minor-refactoring
Browse files Browse the repository at this point in the history
Refactor: Refactor components to use ProjectProperties object & improve naming consistency
  • Loading branch information
paulthatjazz authored Jul 15, 2024
2 parents c938080 + 914322a commit 55aebf6
Show file tree
Hide file tree
Showing 17 changed files with 133 additions and 120 deletions.
13 changes: 7 additions & 6 deletions app/javascript/projects/modelling/components/ati_component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import { Extent } from "ol/extent"
import { bboxFromExtent, maskFromExtentAndShape } from "../bounding_box"
import { GeoJSON } from "ol/format";
import { find } from "lodash"
import { ProjectProperties } from "."

interface TreeType {
id : number
Expand Down Expand Up @@ -143,16 +144,16 @@ export class ATIComponent extends BaseComponent {
maskLayer: string
maskCQL: string

constructor(projectExtent: Extent, projectZoom: number, maskMode: boolean, maskLayer: string, maskCQL: string) {
constructor(projectProps: ProjectProperties) {
super("Ancient Tree Inventory")
this.category = "Inputs"
this.categoricalData = null
this.outputCache = new Map()
this.projectExtent = projectExtent
this.projectZoom = projectZoom
this.maskMode = maskMode
this.maskLayer = maskLayer
this.maskCQL = maskCQL
this.projectExtent = projectProps.extent
this.projectZoom = projectProps.zoom
this.maskMode = projectProps.mask
this.maskLayer = projectProps.maskLayer
this.maskCQL = projectProps.maskCQL
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import { Point } from 'ol/geom'
import { EPSG3857, EPSG4326, WKTfromExtent, maskFromExtentAndShape } from '../bounding_box'
import * as proj4 from 'proj4'
import { speciesFamilyList, speciesList } from '../nbnatlas_species'
import { ProjectProperties } from '.'

const cache = new Map<number, any>()

Expand Down Expand Up @@ -76,14 +77,14 @@ export class BiodiversityComponent extends BaseComponent {
maskLayer: string
maskCQL: string

constructor(projectExtent: Extent, projectZoom: number, maskMode: boolean, maskLayer: string, maskCQL: string) {
constructor(projectProps: ProjectProperties) {
super('Recorded species')
this.category = 'Inputs'
this.projectExtent = projectExtent
this.projectZoom = projectZoom
this.maskMode = maskMode
this.maskLayer = maskLayer
this.maskCQL = maskCQL
this.projectExtent = projectProps.extent
this.projectZoom = projectProps.zoom
this.maskMode = projectProps.mask
this.maskLayer = projectProps.maskLayer
this.maskCQL = projectProps.maskCQL
}

async loadSpeciesFamilyList(node: Node) {
Expand Down
15 changes: 8 additions & 7 deletions app/javascript/projects/modelling/components/census_component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import { Feature } from "ol"
import { Geometry } from "ol/geom"
import { Extent } from "ol/extent"
import { bboxFromExtent, maskFromExtentAndShape } from "../bounding_box"
import { ProjectProperties } from "."

interface CensusDataset {
code: string
Expand Down Expand Up @@ -761,21 +762,21 @@ export class CensusComponent extends BaseComponent {
maskLayer: string
maskCQL: string

constructor(projectExtent: Extent, projectZoom: number, maskMode: boolean, maskLayer: string, maskCQL: string) {
constructor(projectProps: ProjectProperties) {
super("UK Census 2021")
this.category = "Inputs"
this.cachedData = undefined
this.cachedOutput = new Map()
this.projectExtent = projectExtent
this.projectZoom = projectZoom
this.maskMode = maskMode
this.maskLayer = maskLayer
this.maskCQL = maskCQL
this.projectExtent = projectProps.extent
this.projectZoom = projectProps.zoom
this.maskMode = projectProps.mask
this.maskLayer = projectProps.maskLayer
this.maskCQL = projectProps.maskCQL
}

async builder(node: Node) {

node.meta.toolTip = "Experimental Feature - Census data for highest education per Output Area. Returns percentage value."
node.meta.toolTip = "Using data from the 2021 UK Census, this component generates a numeric dataset based on the selected census dataset and option"

node.addControl(
new SelectControl(
Expand Down
16 changes: 8 additions & 8 deletions app/javascript/projects/modelling/components/crome_component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import { Extent } from "ol/extent"
import { bboxFromExtent, maskFromExtentAndShape } from "../bounding_box"
import { TileRange } from "ol"
import TileGrid from "ol/tilegrid/TileGrid"
import { ProjectProperties } from "."

interface CropSpecies {
LUCODE: string
Expand Down Expand Up @@ -239,22 +240,21 @@ export class CROMEComponent extends BaseComponent {
maskLayer: string
maskCQL: string

constructor(projectExtent: Extent, projectZoom: number, maskMode: boolean, maskLayer: string, maskCQL: string) {
super("Crop Map of England CROME")
constructor(projectProps: ProjectProperties) {
super("CROME 2021")
this.category = "Inputs"
this.categoricalData = null
this.outputCache = new Map()
this.projectExtent = projectExtent
this.projectZoom = projectZoom
this.maskMode = maskMode
this.maskLayer = maskLayer
this.maskCQL = maskCQL
this.projectExtent = projectProps.extent
this.projectZoom = projectProps.zoom
this.maskMode = projectProps.mask
this.maskLayer = projectProps.maskLayer
this.maskCQL = projectProps.maskCQL
}

async builder(node: Node) {

node.meta.toolTip = "The Crop Map of England (CROME) is a polygon vector dataset mainly containing the crop types of England. The dataset contains approximately 32 million hexagonal cells classifying England into over 15 main crop types, grassland, and non-agricultural land covers, such as Woodland, Water Bodies, Fallow Land and other non-agricultural land covers."

node.meta.toolTipLink = "https://www.data.gov.uk/dataset/aaedb588-fc86-498f-acab-5fa1b261fdd5/crop-map-of-england-crome-2021"

const cropcats = new Set<string>()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import { CompiledDatasetRecord, getDataset } from "../../saved_dataset"
import { Extent } from "ol/extent"
import { createXYZ } from "ol/tilegrid"
import { maskFromExtentAndShape } from "../bounding_box"
import { ProjectProperties } from "."

async function fetchDataset(datasetId: number, teamId: number) {
return new Promise<{ error: { message: string }; out: { model: BooleanTileGrid | NumericTileGrid | CategoricalTileGrid } }>((resolve) => {
Expand All @@ -28,15 +29,15 @@ export class PrecompiledModelComponent extends BaseComponent {
maskLayer: string
maskCQL: string

constructor(getDatasets: getDatasets, projectExtent: Extent, projectZoom: number, maskMode: boolean, maskLayer: string, maskCQL: string) {
constructor(getDatasets: getDatasets, projectProps: ProjectProperties) {
super("Load Dataset")
this.category = "Inputs"
this.modelSource = getDatasets
this.projectExtent = projectExtent
this.projectZoom = projectZoom
this.maskMode = maskMode
this.maskLayer = maskLayer
this.maskCQL = maskCQL
this.projectExtent = projectProps.extent
this.projectZoom = projectProps.zoom
this.maskMode = projectProps.mask
this.maskLayer = projectProps.maskLayer
this.maskCQL = projectProps.maskCQL
}

async builder(node: Node) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import { designations, Designation } from "../designations"
import { retrieveModelData } from "../model_retrieval"
import { TypedArray } from "d3"
import { maskFromExtentAndShape } from "../bounding_box"
import { ProjectProperties } from "."

async function renderDesignation(extent: Extent, zoom: number, designation: Designation, cacheFn: (result : BooleanTileGrid) => BooleanTileGrid, maskMode: boolean, maskLayer: string, maskCQL: string) : Promise<BooleanTileGrid>{

Expand Down Expand Up @@ -50,15 +51,15 @@ export class DesignationsComponent extends BaseComponent {
maskLayer: string
maskCQL: string

constructor(projectExtent: Extent, projectZoom: number, maskMode: boolean, maskLayer: string, maskCQL: string) {
constructor(projectProps: ProjectProperties) {
super("Designations")
this.category = "Inputs"
this.projectExtent = projectExtent
this.projectZoom = projectZoom
this.cachedDesignations = new Map()
this.maskMode = maskMode
this.maskLayer = maskLayer
this.maskCQL = maskCQL
this.projectExtent = projectProps.extent
this.projectZoom = projectProps.zoom
this.maskMode = projectProps.mask
this.maskLayer = projectProps.maskLayer
this.maskCQL = projectProps.maskCQL
}

async builder(node: Node) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import { TypedArray } from "d3"
import { retrieveModelDataWCS } from "../model_retrieval"
import { Extent } from "ol/extent"
import { maskFromExtentAndShape } from "../bounding_box"
import { ProjectProperties } from "."

interface DigitalModel {
id: number
Expand Down Expand Up @@ -44,15 +45,15 @@ export class DigitalModelComponent extends BaseComponent {
maskLayer: string
maskCQL: string

constructor(projectExtent: Extent, projectZoom: number, maskMode: boolean, maskLayer: string, maskCQL: string) {
constructor(projectProps: ProjectProperties) {
super("Digital Model")
this.category = "Inputs"
this.projectExtent = projectExtent
this.projectZoom = projectZoom
this.outputCache = new Map()
this.maskMode = maskMode
this.maskLayer = maskLayer
this.maskCQL = maskCQL
this.projectExtent = projectProps.extent
this.projectZoom = projectProps.zoom
this.maskMode = projectProps.mask
this.maskLayer = projectProps.maskLayer
this.maskCQL = projectProps.maskCQL
}

async builder(node: Node) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import { booleanDataSocket, numericDataSocket } from '../socket_types'
import { workerPool } from '../../../modelling/workerPool'
import { currentExtent, maskFromExtentAndShape } from '../bounding_box'
import { Extent } from 'ol/extent'
import { ProjectProperties } from '.'

export class DistanceMapComponent extends BaseComponent {
cache: Map<BooleanTileGrid, NumericTileGrid>
Expand All @@ -16,15 +17,15 @@ export class DistanceMapComponent extends BaseComponent {
projectExtent: Extent
projectZoom: number

constructor(projectExtent: Extent , projectZoom: number, maskMode: boolean, maskLayer: string, maskCQL: string) {
constructor(projectProps: ProjectProperties) {
super('Distance map')
this.category = "Calculations"
this.cache = new Map()
this.maskMode = maskMode
this.maskLayer = maskLayer
this.maskCQL = maskCQL
this.projectExtent = projectExtent
this.projectZoom = projectZoom
this.maskMode = projectProps.mask
this.maskLayer = projectProps.maskLayer
this.maskCQL = projectProps.maskCQL
this.projectExtent = projectProps.extent
this.projectZoom = projectProps.zoom
}

async builder(node: Node) {
Expand Down
13 changes: 7 additions & 6 deletions app/javascript/projects/modelling/components/imd_component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import { Feature } from "ol"
import { Geometry } from "ol/geom"
import { NumericTileGrid } from "../tile_grid"
import { createXYZ } from "ol/tilegrid"
import { ProjectProperties } from "."

interface OutputFormat {
name: string
Expand Down Expand Up @@ -238,14 +239,14 @@ export class IMDComponent extends BaseComponent {
cachedData: Feature<Geometry>[]
cachedGrids: Map<string, NumericTileGrid>

constructor(projectExtent: Extent, projectZoom: number, maskMode: boolean, maskLayer: string, maskCQL: string) {
constructor(projectProps : ProjectProperties) {
super("Indices of Multiple Deprivation")
this.category = "Inputs"
this.projectExtent = projectExtent
this.projectZoom = projectZoom
this.maskMode = maskMode
this.maskLayer = maskLayer
this.maskCQL = maskCQL
this.projectExtent = projectProps.extent
this.projectZoom = projectProps.zoom
this.maskMode = projectProps.mask
this.maskLayer = projectProps.maskLayer
this.maskCQL = projectProps.maskCQL
this.cachedGrids = new Map()
}

Expand Down
36 changes: 17 additions & 19 deletions app/javascript/projects/modelling/components/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -57,25 +57,23 @@ export function createDefaultComponents(saveMapLayer: SaveMapLayer, saveModel: S

// Freely available components here.
const components : BaseComponent[] = [
// TODO: Replace extent, mask, zoom, maskLayer, maskCQL with projectProps in all components

// Inputs
new UkcehLandCoverComponent(extent, zoom, mask, maskLayer, maskCQL),
new LehLandCoverComponent(extent, zoom, mask, maskLayer, maskCQL),
new IMDComponent(extent, zoom, mask, maskLayer, maskCQL),
new MlTreeHedgeComponent(extent, zoom, mask, maskLayer, maskCQL),
new BiodiversityComponent(extent, zoom, mask, maskLayer, maskCQL),
new NevoLayerComponent(extent, zoom, mask, maskLayer, maskCQL),
new ORValComponent(extent, zoom, mask, maskLayer, maskCQL),
new OSMLandUseComponent(extent, zoom, mask, maskLayer, maskCQL),
new NumericConstantComponent(),
new DigitalModelComponent(extent, zoom, mask, maskLayer, maskCQL),
new PrecompiledModelComponent(getDatasets, extent, zoom, mask, maskLayer, maskCQL),
new CensusComponent(extent, zoom, mask, maskLayer, maskCQL),
new OSGreenSpacesComponent(extent, zoom, mask, maskLayer, maskCQL),
new CROMEComponent(extent, zoom, mask, maskLayer, maskCQL),
new ATIComponent(extent, zoom, mask, maskLayer, maskCQL),
new DesignationsComponent(extent, zoom, mask, maskLayer, maskCQL),
new UkcehLandCoverComponent(projectProps),
new LehLandCoverComponent(projectProps),
new IMDComponent(projectProps),
new MlTreeHedgeComponent(projectProps),
new BiodiversityComponent(projectProps),
new NevoLayerComponent(projectProps),
new ORValComponent(projectProps),
new OSMLandUseComponent(projectProps),
new DigitalModelComponent(projectProps),
new PrecompiledModelComponent(getDatasets, projectProps),
new CensusComponent(projectProps),
new OSGreenSpacesComponent(projectProps),
new CROMEComponent(projectProps),
new ATIComponent(projectProps),
new DesignationsComponent(projectProps),
new SoilComponent(projectProps),

// Outputs
Expand All @@ -89,7 +87,7 @@ export function createDefaultComponents(saveMapLayer: SaveMapLayer, saveModel: S

// Calculations
new AreaComponent(),
new DistanceMapComponent(extent, zoom, mask, maskLayer, maskCQL),
new DistanceMapComponent(projectProps),
new ScaleFactorComponent(),

// Charts
Expand Down Expand Up @@ -126,6 +124,6 @@ export function createDefaultComponents(saveMapLayer: SaveMapLayer, saveModel: S
new RescaleComponent(),

]

return components.concat(restrictedComponents)
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import { bboxFromExtent, maskFromExtentAndShape } from "../bounding_box";
import { GeoJSON } from "ol/format";
import { BooleanTileGrid, CategoricalTileGrid } from "../tile_grid";
import { find } from "lodash";
import { ProjectProperties } from ".";

interface Habitat {
name: string
Expand Down Expand Up @@ -193,16 +194,16 @@ export class LehLandCoverComponent extends BaseComponent {
maskLayer: string
maskCQL: string

constructor(projectExtent: Extent, projectZoom: number, maskMode: boolean, maskLayer: string, maskCQL: string) {
constructor(projectProps: ProjectProperties) {
super("Living England Land Cover")
this.category = "Inputs"
this.projectExtent = projectExtent
this.projectZoom = projectZoom
this.projectExtent = projectProps.extent
this.projectZoom = projectProps.zoom
this.maskMode = projectProps.mask
this.maskLayer = projectProps.maskLayer
this.maskCQL = projectProps.maskCQL
this.categoricalData = null
this.outputCache = new Map()
this.maskMode = maskMode
this.maskLayer = maskLayer
this.maskCQL = maskCQL
}

async builder(node: Node) {
Expand Down
Loading

0 comments on commit 55aebf6

Please sign in to comment.