Custom Gis Application with Arcgis Javascript API with modern layouting
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

23 lines
10 KiB

// All material copyright Esri, All Rights Reserved, unless otherwise specified.
// See https://js.arcgis.com/4.30/esri/copyright.txt for details.
//>>built
define("exports ../../chunks/tslib.es6 ../../request ../../core/Error ../../core/Logger ../../core/promiseUtils ../../core/urlUtils ../../core/accessorSupport/decorators/property ../../core/has ../../core/RandomLCG ../../core/accessorSupport/decorators/reader ../../core/accessorSupport/decorators/subclass ../../core/accessorSupport/decorators/writer ../../core/accessorSupport/originUtils ../../geometry/Extent ../../geometry/HeightModelInfo ../../geometry/SpatialReference ../support/arcgisLayerUrl ../support/commonProperties ../support/I3SIndexInfo ../support/schemaValidatorLoader ../../portal/Portal ../../portal/PortalItem ../../portal/support/jsonContext ../../webdoc/support/resourceUtils ../../webdoc/support/saveAPIKeyUtils ../../webdoc/support/saveUtils".split(" "),
function(h,e,q,k,r,D,E,g,O,P,m,F,G,w,t,H,u,n,x,I,J,K,L,y,z,A,M){function v(c){if(null!=c.spatialReference)return u.fromJSON(c.spatialReference);c=c.store;c=(c=c.indexCRS||c.geographicCRS)&&parseInt(c.substring(c.lastIndexOf("/")+1,c.length),10);return null!=c?new u(c):null}function B(c,a,b){c.typeKeywords||(c.typeKeywords=[]);a=a.getTypeKeywords();for(const d of a)c.typeKeywords.push(d);c.typeKeywords&&(c.typeKeywords=c.typeKeywords.filter((d,f,l)=>l.indexOf(d)===f),b===p.newItem&&(c.typeKeywords=
c.typeKeywords.filter(d=>"Hosted Service"!==d)))}var p;(function(c){c[c.existingItem=0]="existingItem";c[c.newItem=1]="newItem"})(p||={});const C={getTypeKeywords:()=>[],portalItemLayerType:"unknown",validationOptions:{enabled:!0,ignoreUnsupported:!1,failPolicy:"throw"}};h.SaveOperationType=void 0;(function(c){c[c.SAVE=0]="SAVE";c[c.SAVE_AS=1]="SAVE_AS"})(h.SaveOperationType||(h.SaveOperationType={}));h.SceneService=c=>{c=class extends c{constructor(){super(...arguments);this.heightModelInfo=this.fullExtent=
this.spatialReference=null;this.maxScale=this.minScale=0;this.version={major:Number.NaN,minor:Number.NaN,versionString:""};this.copyright=null;this.sublayerTitleMode="item-title";this.indexInfo=this.layerId=this.title=null;this._debouncedSaveOperations=D.debounce(async(a,b,d)=>{switch(a){case h.SaveOperationType.SAVE:return this._save(b);case h.SaveOperationType.SAVE_AS:return this._saveAs(d,b)}})}readSpatialReference(a,b){return v(b)}readFullExtent(a,b,d){if(null!=a&&"object"===typeof a)return b=
null==a.spatialReference?{...a,spatialReference:v(b)}:a,t.fromJSON(b,d);d=b.store;b=v(b);return null==b||null==d?.extent||!Array.isArray(d.extent)||d.extent.some(f=>-1E38>f)?null:new t({xmin:d.extent[0],ymin:d.extent[1],xmax:d.extent[2],ymax:d.extent[3],spatialReference:b})}parseVersionString(a){const b={major:Number.NaN,minor:Number.NaN,versionString:a};a=a.split(".");2<=a.length&&(b.major=parseInt(a[0],10),b.minor=parseInt(a[1],10));return b}readVersion(a,b){a=b.store;return this.parseVersionString(null!=
a.version?a.version.toString():"")}readTitlePortalItem(a){return"item-title"!==this.sublayerTitleMode?void 0:a}readTitleService(a,b){a=this.portalItem?.title;if("item-title"===this.sublayerTitleMode)return this.url?n.titleFromUrlAndName(this.url,b.name):b.name;b=b.name;if(!b&&this.url){const d=n.parse(this.url);null!=d&&(b=d.title)}"item-title-and-service-name"===this.sublayerTitleMode&&a&&(b=a+" - "+b);return n.cleanTitle(b)}set url(a){null==a?this._set("url",a):(a=n.sanitizeUrlWithLayerId({layer:this,
url:a,nonStandardUrlAllowed:!1,logger:r.getLogger(this)}),this._set("url",a.url),null!=a.layerId&&this._set("layerId",a.layerId))}writeUrl(a,b,d,f){n.writeUrlWithLayerId(this,a,"layers",b,f)}get parsedUrl(){var a=this._get("url");(a=E.urlToObject(a))&&null!=this.layerId&&(a.path=`${a.path}/layers/${this.layerId}`);return a}async _fetchIndexAndUpdateExtent(a,b){this.indexInfo=I.fetchIndexInfo(this.parsedUrl?.path??"",this.rootNode,a,this.customParameters,this.apiKey,r.getLogger(this),b);null==this.fullExtent||
this.fullExtent.hasZ||this._updateExtent(await this.indexInfo)}_updateExtent(a){if("page"===a?.type){var b=a.rootIndex%a.pageSize;b=a.rootPage?.nodes?.[b];if(null==b?.obb?.center||null==b.obb.halfSize)throw new k("sceneservice:invalid-node-page","Invalid node page.");-1E38>b.obb.center[0]||null==this.fullExtent||this.fullExtent.hasZ||(a=b.obb.halfSize,b=b.obb.center[2],a=Math.sqrt(a[0]*a[0]+a[1]*a[1]+a[2]*a[2]),this.fullExtent.zmin=b-a,this.fullExtent.zmax=b+a)}else if("node"===a?.type&&(b=a.rootNode?.mbs,
Array.isArray(b)&&4===b.length&&!(-1E38>b[0]))){a=b[2];b=b[3];var {fullExtent:d}=this;d&&(d.zmin=a-b,d.zmax=a+b)}}async _fetchService(a){if(null==this.url)throw new k("sceneservice:url-not-set","Scene service can not be loaded without valid portal item or url");if(null==this.layerId&&/SceneServer\/*$/i.test(this.url)){const b=await this._fetchFirstLayerId(a);null!=b&&(this.layerId=b)}return this._fetchServiceLayer(a)}async _fetchFirstLayerId(a){a=await q(this.url??"",{query:{f:"json",...this.customParameters,
token:this.apiKey},responseType:"json",signal:a});if(a.data&&Array.isArray(a.data.layers)&&0<a.data.layers.length)return a.data.layers[0].id}async _fetchServiceLayer(a){a=await q(this.parsedUrl?.path??"",{query:{f:"json",...this.customParameters,token:this.apiKey},responseType:"json",signal:a});a.ssl&&this.url&&(this.url=this.url.replace(/^http:/i,"https:"));let b=!1;a.data.layerType&&"Voxel"===a.data.layerType&&(b=!0);if(b)return this._fetchVoxelServiceLayer();a=a.data;this.read(a,this._getServiceContext());
this.validateLayer(a)}async _fetchVoxelServiceLayer(a){a=(await q(this.parsedUrl?.path+"/layer",{query:{f:"json",...this.customParameters,token:this.apiKey},responseType:"json",signal:a})).data;this.read(a,this._getServiceContext());this.validateLayer(a)}_getServiceContext(){return{origin:"service",portalItem:this.portalItem,portal:this.portalItem?.portal,url:this.parsedUrl}}async _ensureLoadBeforeSave(){await this.load();"beforeSave"in this&&"function"===typeof this.beforeSave&&await this.beforeSave()}validateLayer(a){}async _saveAs(a,
b){b={...C,...b};a=L.from(a);if(!a)throw new k("sceneservice:portal-item-required","_saveAs() requires a portal item to save to");A.validateSaveAPIKey(a);a.id&&(a=a.clone(),a.id=null);const d=a.portal||K.getDefault();await this._ensureLoadBeforeSave();a.type="Scene Service";a.portal=d;const f=y.createForItemWrite(a,"portal-item",!0),l={layers:[this.write({},f)]};await Promise.all(f.resources.pendingOperations??[]);await this._validateAgainstJSONSchema(l,f,b);this.url&&(a.url=this.url);a.title||(a.title=
this.title);B(a,b,p.newItem);await d.signIn();await d.user?.addItem({item:a,folder:b?.folder,data:l});await z.saveResources(this.resourceReferences,f);this.portalItem=a;w.updateOrigins(f);return f.portalItem=a}async _save(a){a={...C,...a};if(!this.portalItem)throw new k("sceneservice:portal-item-not-set","Portal item to save to has not been set on this SceneService");A.validateSaveAPIKey(this.portalItem);if("Scene Service"!==this.portalItem.type)throw new k("sceneservice:portal-item-wrong-type",'Portal item needs to have type "Scene Service"');
await this._ensureLoadBeforeSave();const b=y.createForItemWrite(this.portalItem,"portal-item",!0),d={layers:[this.write({},b)]};await Promise.all(b.resources.pendingOperations??[]);await this._validateAgainstJSONSchema(d,b,a);this.url&&(this.portalItem.url=this.url);this.portalItem.title||(this.portalItem.title=this.title);B(this.portalItem,a,p.existingItem);await z.updateItemWithResources(this.portalItem,d,this.resourceReferences,b);w.updateOrigins(b);return this.portalItem}async _validateAgainstJSONSchema(a,
b,d){var f=d?.validationOptions;M.evaluateWriteErrors(b,{errorName:"sceneservice:save"},{ignoreUnsupported:f?.ignoreUnsupported,supplementalUnsupportedErrors:["scenemodification:unsupported"]});b=f?.enabled;const l=J.getLoader();if(b&&l&&(d=(await l()).validate(a,d.portalItemLayerType),d.length&&(a=`Layer item did not validate:\n${d.join("\n")}`,r.getLogger(this).error(`_validateAgainstJSONSchema(): ${a}`),"throw"===f.failPolicy)))throw f=d.map(N=>new k("sceneservice:schema-validation",N)),new k("sceneservice-validate:error",
"Failed to save layer item due to schema validation, see `details.errors`.",{validationErrors:f});}};e.__decorate([g.property(x.id)],c.prototype,"id",void 0);e.__decorate([g.property({type:u})],c.prototype,"spatialReference",void 0);e.__decorate([m.reader("spatialReference",["spatialReference","store.indexCRS","store.geographicCRS"])],c.prototype,"readSpatialReference",null);e.__decorate([g.property({type:t})],c.prototype,"fullExtent",void 0);e.__decorate([m.reader("fullExtent",["fullExtent","store.extent",
"spatialReference","store.indexCRS","store.geographicCRS"])],c.prototype,"readFullExtent",null);e.__decorate([g.property({readOnly:!0,type:H})],c.prototype,"heightModelInfo",void 0);e.__decorate([g.property({type:Number,json:{name:"layerDefinition.minScale",write:!0,origins:{service:{read:{source:"minScale"},write:!1}}}})],c.prototype,"minScale",void 0);e.__decorate([g.property({type:Number,json:{name:"layerDefinition.maxScale",write:!0,origins:{service:{read:{source:"maxScale"},write:!1}}}})],c.prototype,
"maxScale",void 0);e.__decorate([g.property({readOnly:!0})],c.prototype,"version",void 0);e.__decorate([m.reader("version",["store.version"])],c.prototype,"readVersion",null);e.__decorate([g.property({type:String,json:{read:{source:"copyrightText"}}})],c.prototype,"copyright",void 0);e.__decorate([g.property({type:String,json:{read:!1}})],c.prototype,"sublayerTitleMode",void 0);e.__decorate([g.property({type:String})],c.prototype,"title",void 0);e.__decorate([m.reader("portal-item","title")],c.prototype,
"readTitlePortalItem",null);e.__decorate([m.reader("service","title",["name"])],c.prototype,"readTitleService",null);e.__decorate([g.property({type:Number,json:{origins:{service:{read:{source:"id"}},"portal-item":{write:{target:"id",isRequired:!0,ignoreOrigin:!0},read:!1}}}})],c.prototype,"layerId",void 0);e.__decorate([g.property(x.url)],c.prototype,"url",null);e.__decorate([G.writer("url")],c.prototype,"writeUrl",null);e.__decorate([g.property()],c.prototype,"parsedUrl",null);e.__decorate([g.property({readOnly:!0})],
c.prototype,"store",void 0);e.__decorate([g.property({type:String,readOnly:!0,json:{read:{source:"store.rootNode"}}})],c.prototype,"rootNode",void 0);return c=e.__decorate([F.subclass("esri.layers.mixins.SceneService")],c)};h.sceneServiceItemType="Scene Service";Object.defineProperty(h,Symbol.toStringTag,{value:"Module"})});