opacity.js 2.5 KB

12345
  1. /*
  2. All material copyright ESRI, All Rights Reserved, unless otherwise specified.
  3. See https://js.arcgis.com/4.24/esri/copyright.txt for details.
  4. */
  5. import e from"../../core/Error.js";import{isSome as i}from"../../core/maybe.js";import a from"../../renderers/support/AuthoringInfo.js";import s from"../../renderers/support/AuthoringInfoVisualVariable.js";import r from"../../renderers/visualVariables/OpacityVariable.js";import{verifyBasicFieldValidity as l,createStopValues as o,getDefaultDataRange as t}from"./support/utils.js";import n from"../statistics/summaryStatistics.js";import{getFieldsList as p}from"../support/utils.js";import{createLayerAdapter as u,featureCapableLayerTypes as m,getLayerTypeLabels as d}from"../support/adapters/support/layerUtils.js";const f="date";async function v(a){if(!(a&&a.layer&&(a.field||a.valueExpression||a.sqlExpression)))throw new e("opacity-visual-variable:missing-parameters","'layer' and 'field', 'valueExpression' or 'sqlExpression' parameters are required");if(a.valueExpression&&!a.view)throw new e("opacity-visual-variable:missing-parameters","View is required when 'valueExpression' is specified");const s={...a},r=u(s.layer,m);if(s.layer=r,!r)throw new e("opacity-visual-variable:invalid-parameters","'layer' must be one of these types: "+d(m).join(", "));const o=i(s.signal)?{signal:s.signal}:null;await r.load(o);const t=await p({field:s.field,normalizationField:s.normalizationField,valueExpression:s.valueExpression}),n=l(r,t,"opacity-visual-variable:invalid-parameters");if(n)throw n;return s}function c(e,i){const l=i.layer,n=i.field,p=n&&!("function"==typeof n)?l.getField(n):null,u=p&&p.type===f,m=o(e),d=t(e,u,!0),v=d||[m[0],m[4]],c=new r({field:n,valueExpression:i.valueExpression,valueExpressionTitle:i.valueExpressionTitle,normalizationField:i.normalizationField,stops:[{value:v[0],opacity:.3},{value:v[1],opacity:1}],legendOptions:i.legendOptions}),y=new s({type:"opacity",minSliderValue:null!=i.minValue?i.minValue:e.min,maxSliderValue:null!=i.maxValue?i.maxValue:e.max}),x=new a({visualVariables:[y]});return Promise.resolve({visualVariable:c,statistics:e,defaultValuesUsed:!!d,authoringInfo:x})}async function y(e){const i=await v(e);let a=null;return a=i.statistics?i.statistics:await n({layer:i.layer,field:i.field,valueExpression:i.valueExpression,sqlExpression:i.sqlExpression,sqlWhere:i.sqlWhere,normalizationType:i.normalizationField?"field":void 0,normalizationField:i.normalizationField,minValue:i.minValue,maxValue:i.maxValue,view:i.view,signal:i.signal}),c(a,i)}export{y as createVisualVariable};