@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 2.14 kB
JavaScript
/*
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
See https://js.arcgis.com/4.32/esri/copyright.txt for details.
*/
import{isSome as e}from"../../../core/arrayUtils.js";import t from"../../../tables/elements/AttributeTableAttachmentElement.js";import i from"../../../tables/elements/AttributeTableFieldElement.js";import n from"../../../tables/elements/AttributeTableGroupElement.js";import r from"../../../tables/elements/AttributeTableRelationshipElement.js";import l from"./AttachmentsColumnTemplate.js";import{isGroupColumn as o,isFieldColumn as s,isRelationshipColumn as m,isAttachmentsColumn as a}from"./columnUtils.js";import p from"./FieldColumnTemplate.js";import f from"./GroupColumnTemplate.js";import c from"./RelationshipColumnTemplate.js";function d(t,i){const n=[];return t?.forEach((t=>{const{description:r,label:l,type:o}=t;if("group"===o){const o=t.elements.map((e=>u(e,i))).filter(e);if(!o?.length)return;n.push(new f({description:r,columnTemplates:o,label:l}))}else{const e=u(t,i);if(!e)return;n.push(e)}})),n}function u(e,t){const{description:i,label:n,type:r}=e;if("field"===r){const r=e.fieldName??void 0,l=t.findIndex((e=>e.field&&e.field===r)),o=l>-1?t.at(l)?.order:void 0;return new p({description:i,direction:o,fieldName:r,initialSortPriority:l,label:n})}return"attachment"===r?new l({description:i,label:n}):"relationship"===r?new c({description:i,label:n,relationshipId:e.relationshipId}):void 0}function b(t){const i=[];return t.forEach((t=>{const{description:r,label:l,hidden:s}=t;if(o(t)){if(s)return;const o=t.columns?.map((e=>h(e))).filter(e);if(!o?.length)return;i.push(new n({description:r,elements:o,label:l}))}else{const e=h(t);if(!e)return;i.push(e)}})),i}function h(e){const{fieldName:n,description:l,hidden:o,label:p}=e;if(s(e)){if(!o)return new i({description:l,fieldName:n,label:p})}else if(m(e)){if(!o)return new r({description:l,label:p,relationshipId:e.relationshipId})}else if(a(e)&&!o)return new t({description:l,label:p})}export{b as createAttributeTableElements,d as createColumnTemplates,h as createNestedAttributeTableElement,u as createNestedColumnTemplate};