Skip to content

Commit

Permalink
Add unique value generator
Browse files Browse the repository at this point in the history
  • Loading branch information
ekenes committed Aug 9, 2024
1 parent a1a412a commit c8d2702
Showing 1 changed file with 53 additions and 19 deletions.
72 changes: 53 additions & 19 deletions recalculate-style-by-bin-sizes/src/rendererUtils.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
import {
createContinuousRenderer as createContinuousColorRenderer,
createAgeRenderer as createAgeColorRenderer
createAgeRenderer as createAgeColorRenderer,
} from "@arcgis/core/smartMapping/renderers/color";
import {
createContinuousRenderer as createContinuousSizeRenderer,
createAgeRenderer as createAgeSizeRenderer
createAgeRenderer as createAgeSizeRenderer,
} from "@arcgis/core/smartMapping/renderers/size";
import {
createRenderer as createRelationshipRenderer,
} from "@arcgis/core/smartMapping/renderers/relationship";

import classBreaks from "@arcgis/core/smartMapping/statistics/classBreaks";

Expand Down Expand Up @@ -281,12 +284,8 @@ async function regenerateClassBreaksRenderer(params: RegenerateRendererParams) {
featureReduction.renderer as __esri.ClassBreaksRenderer
).clone();

const {
field,
normalizationField,
valueExpression,
authoringInfo,
} = renderer;
const { field, normalizationField, valueExpression, authoringInfo } =
renderer;

const styleType = authoringInfo?.type;

Expand All @@ -296,7 +295,8 @@ async function regenerateClassBreaksRenderer(params: RegenerateRendererParams) {
return renderer;
}

if(styleType === "univariate-color-size") {
if (styleType === "univariate-color-size") {
console.log("figure this out later");
return renderer;
}

Expand All @@ -309,7 +309,8 @@ async function regenerateClassBreaksRenderer(params: RegenerateRendererParams) {
field,
normalizationField,
valueExpression,
classificationMethod: classificationMethod as __esri.classBreaksClassBreaksParams["classificationMethod"],
classificationMethod:
classificationMethod as __esri.classBreaksClassBreaksParams["classificationMethod"],
standardDeviationInterval,
numClasses,
forBinning: true,
Expand All @@ -324,19 +325,37 @@ async function regenerateClassBreaksRenderer(params: RegenerateRendererParams) {
return renderer;
}

function processParams(params: RegenerateRendererParams) {
async function regenerateUniqueValueRenderer(params: RegenerateRendererParams) {
const { layer, view } = params;

if (!layer || !view) {
throw new Error("Layer and view are required");
}

const featureReduction =
layer.featureReduction as __esri.FeatureReductionBinning;

if (!featureReduction) {
throw new Error("Feature reduction is required");
const renderer = (
featureReduction.renderer as __esri.UniqueValueRenderer
).clone();

const { authoringInfo } = renderer;

const styleType = authoringInfo?.type;

if (styleType === "relationship"){
const { field1, field2, focus, numClasses } = authoringInfo;
const response = await createRelationshipRenderer({
layer,
view,
field1,
field2,
focus,
numClasses,
forBinning: true,
});
renderer.valueExpression = response.renderer.valueExpression;
}

const newVisualVariables = await regenerateVisualVariables(params);
renderer.visualVariables = newVisualVariables;

return renderer;
}

async function regenerateSimpleRenderer(params: RegenerateRendererParams) {
Expand All @@ -348,10 +367,25 @@ async function regenerateSimpleRenderer(params: RegenerateRendererParams) {
return renderer;
}

function processParams(params: RegenerateRendererParams) {
const { layer, view } = params;

if (!layer || !view) {
throw new Error("Layer and view are required");
}

const featureReduction =
layer.featureReduction as __esri.FeatureReductionBinning;

if (!featureReduction) {
throw new Error("Feature reduction is required");
}
}

const rendererTypeMap = {
simple: regenerateSimpleRenderer,
"class-breaks": regenerateClassBreaksRenderer,
"unique-value": null,
"unique-value": regenerateUniqueValueRenderer,
"dot-density": null,
"pie-chart": null,
};
Expand Down

0 comments on commit c8d2702

Please sign in to comment.