popupUtils.js 3.5 KB

12345
  1. /*
  2. All material copyright ESRI, All Rights Reserved, unless otherwise specified.
  3. See https://js.arcgis.com/4.25/esri/copyright.txt for details.
  4. */
  5. import e from"../PopupTemplate.js";import{isRasterPixelValueField as t,getDisplayFieldName as n}from"../layers/support/fieldUtils.js";import i from"../popup/content/AttachmentsContent.js";import"../popup/content/Content.js";import"../popup/content/CustomContent.js";import"../popup/content/ExpressionContent.js";import o from"../popup/content/FieldsContent.js";import"../popup/content/MediaContent.js";import"../popup/content/RelationshipContent.js";import"../popup/content/TextContent.js";import r from"../popup/FieldInfo.js";import s from"../popup/support/FieldInfoFormat.js";const l=["oid","global-id"],a=["oid","global-id","guid"];function p({displayField:t,editFieldsInfo:n,fields:i,objectIdField:o,title:r},s){if(!i)return null;const l=g({editFieldsInfo:n,fields:i,objectIdField:o},s);if(!l.length)return null;const a=L({titleBase:r,fields:i,displayField:t}),p=I();return new e({title:a,content:p,fieldInfos:l})}function d(t){const{fields:n,featureReduction:i,title:o}=t,r=i.fields;if(!r)return null;const s=y(r,n);if(!s.length)return null;const l=$();return new e({title:o,content:l,fieldInfos:s})}const u=[/^fnode_$/i,/^tnode_$/i,/^lpoly_$/i,/^rpoly_$/i,/^poly_$/i,/^subclass$/i,/^subclass_$/i,/^rings_ok$/i,/^rings_nok$/i,/shape/i,/perimeter/i,/objectid/i,/_i$/i],c=(e,{editFieldsInfo:t,objectIdField:n,visibleFieldNames:i})=>i?i.has(e.name):!F(e.name,t)&&((!n||e.name!==n)&&(!l.includes(e.type)&&!u.some((t=>t.test(e.name)))));function f(e,t){const n=e;return t&&(e=e.filter((e=>!t.includes(e.type)))),e===n&&(e=e.slice()),e.sort(m),e}function m(e,t){return"oid"===e.type?-1:"oid"===t.type?1:_(e)?-1:_(t)?1:(e.alias||e.name).toLocaleLowerCase().localeCompare((t.alias||t.name).toLocaleLowerCase())}function F(e,t){if(!e||!t)return!1;const{creationDateField:n,creatorField:i,editDateField:o,editorField:r}=t;return[n&&n.toLowerCase(),i&&i.toLowerCase(),o&&o.toLowerCase(),r&&r.toLowerCase()].includes(e.toLowerCase())}function b(e,t){return e.editable&&!a.includes(e.type)&&!F(e.name,t)}function w(e,t){return new o({fieldInfos:g(e,t).filter((e=>e.visible))})}function g({editFieldsInfo:e,fields:t,objectIdField:n},i){return f(t??[],i?.ignoreFieldTypes||h).map((t=>new r({fieldName:t.name,isEditable:b(t,e),label:t.alias,format:j(t),visible:c(t,{editFieldsInfo:e,objectIdField:n,visibleFieldNames:i?.visibleFieldNames})})))}function y(e,t){return e.map((e=>new r({fieldName:e.name,isEditable:!1,label:e.alias,format:C(e,t),visible:!0})))}function C(e,t){const{onStatisticField:n,onStatisticExpression:i,statisticType:o}=e;if(n){const e=t.find((e=>n===e.name));if(e)return j(e)}return"number"===i?.returnType?new s({digitSeparator:!0,places:2}):"count"===o?new s({digitSeparator:!0,places:0}):null}function j(e){switch(e.type){case"small-integer":case"integer":case"single":return new s({digitSeparator:!0,places:0});case"double":return new s({digitSeparator:!0,places:2});case"date":return new s({dateFormat:"long-month-day-year"});default:return"string"===e.type&&t(e.name)?new s({digitSeparator:!0,places:0}):null}}function I(){return[new o,new i]}function $(){return[new o]}function L(e){const t=n(e),{titleBase:i}=e;return t?`${i}: {${t.trim()}}`:i??""}function _(e){if("name"===(e.name&&e.name.toLowerCase()))return!0;return"name"===(e.alias&&e.alias.toLowerCase())}const h=["geometry","blob","raster","guid","xml"];export{g as createFieldInfos,w as createFieldsContent,p as createPopupTemplate,d as createPopupTemplateForFeatureReduction};