Commit c0f2ef47 authored by Rushikesh Padsala's avatar Rushikesh Padsala
Browse files

added HFT viewer

parent f67ddac7
node_modules/*
src/**/*.js*
src/**/*.css
*.css.map
css/**/*.css*
.sass-cache/*
dist/
## Contributing to ArcGIS API for JavaScript
This guide describes how you can contribute code improvements to the ArcGIS API for JavaScript.
1. Review the [README](README.md).
2. Create a new feature branch in your local repo.
* The name of the branch doesn't matter, but as a best practice use a descriptive name like "add-annotation-layer".
3. Write code to add an enhancement or fix the problem.
4. Test your code.
### Submitting changes
1. Push your feature branch to the repo or your fork of the repo if you don't have push access.
2. Submit a [pull request](https://help.github.com/articles/using-pull-requests) against the "master" branch.
* Clearly describe the issue including steps to reproduce; or if an enhancement, indicate the functionality you built.
module.exports = function(grunt) {
var options = {
livereload: true,
port: grunt.option('port') || 8888,
hostname: grunt.option('server') || "localhost",
};
// Project configuration.
grunt.initConfig({
watch: {
livereload: {
// Here we watch any files changed
options: {
livereload: true
},
files: [
'src/**/*.js',
'src/**/*.css',
'src/**/*.html'
]
}
},
connect: {
app: {
options: options
}
},
concat : {
dist : {
src : ['src/js/**/*.js'],
dest : '.tmp/main.js'
}
},
uglify : {
dist : {
src : 'dist/main.min.js',
dest : 'dist/main.min.js'
}
},
htmlmin: {
dist: {
options: {
removeComments: true,
collapseWhitespace: true
},
files: {
'dist/index.html': 'dist/index.html'
}
}
},
copy: {
dist: {
files: [
{
expand: true,
src: ['src/**/*.css'],
dest: 'dist/'
}
]
}
},
comments: {
dist: {
options: {
singleline: true,
multiline: true
},
src: [ 'dist/*.html' ]
}
},
includeSource: {
options: {
basePath: 'dist'
},
dist: {
files: {
'dist/index.html': './index.html'
}
}
},
run: {
tscDist: {
cmd: 'npx',
args: [
'tsc',
'--outFile',
'dist/main.min.js'
]
}
}
});
// dist
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-htmlmin');
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-copy');
grunt.loadNpmTasks('grunt-stripcomments');
grunt.loadNpmTasks('grunt-include-source');
grunt.loadNpmTasks('grunt-run');
// Load grunt plugins
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-contrib-connect');
// Register tasks
grunt.registerTask("default", ["connect", "watch"]);
grunt.registerTask("dist", ["run:tscDist", "includeSource:dist", "copy:dist", "uglify:dist", "htmlmin:dist", "comments:dist"]);
};
# Building Viewer
This demonstrates the use of [ArcGIS API 4 for JavaScript](https://developers.arcgis.com/javascript/) and [Building Scene Layers](https://developers.arcgis.com/javascript/latest/api-reference/) in a compelling website.
The application presents the [Turanga library](https://my.christchurchcitylibraries.com/turanga/) in 3D. The visitor can explore the library by navigating around, and then inside, floor by floor, to discover this amazing building.
[Visit the live website here.](https://esri.github.io/building-viewer)
![The live website](./docs/images/screenshot_1.png)
## Features
* Building exploration - discover the great Turanga library
* Customisation - use this app to display your own building
* Discover the building floor by floor on a 2D visualisation
* Get a broader perspective of the building surroundings
## Instructions
### To get a live copy on your machine
1. Clone the repo and `npm install` dependencies
2. Remove ref to this repo: `rm -rf .git`
3. `npm run build` to compile `src/js/*.ts` and `src/css/*.sccs` files in the same folder and watch for changes
4. `npm run server` launches a webserver.
5. Open your browser and enter the local address `http://localhost:8888/`. You should see now the Building Viewer running.
### To add your own building
1. Create a webscene with a BuildingSceneLayer named `Building
2. Open `src/config.tsx` in your favorite code editor
3. Delete all the content except the two first obscure lines
4. Now you need to define 2 parameters in the config to get started:
The `websceneId` of the webscene you created above
```
export const websceneId = "YOUR WEBSCENE ID HERE";
```
*Note that you may to also export on which portal this webscene resides if different from the ArcGis's portal: `export const portalUrl = "https://your-portal-url.com";`*
The `sections` you'd like to have in your Building Viewer (see documentation about sections). Let's start with only one section, the home page:
```typescript
// first import the section:
import HomeSection = require("./sections/HomeSection");
// then export the `sections` parameter:
export const sections = [
new HomeSection({})
];
```
5. Recompile the code and reload the website.
Checkout the documentation in the `docs` folder, and in particular the [quick start guide](./docs/Quickstart.md).
## Requirements
* Notepad or your favorite HTML editor
* `npm` and some knowledge of [Typescript](https://www.typescriptlang.org/)
* Web browser with access to the Internet
## Resources
The following external libraries, APIs, open datasets and specifications were used to make this application:
* [ArcGIS API for JavaScript](https://developers.arcgis.com/javascript/)
* [Calcite Web](http://esri.github.io/calcite-web/)
* Turangua's BIM data provided by [Christchurch City Council](https://www.ccc.govt.nz/)
* [Christchurch city model](https://www.linz.govt.nz/news/2014-03/3d-models-released-christchurch-city) provided by [Christchurch City Council](https://www.ccc.govt.nz/)
* [Roboto font](https://fonts.google.com/specimen/Roboto)
## Issues
Find a bug or want to request a new feature? Please let us know by submitting an issue.
## Contributing
Esri welcomes contributions from anyone and everyone. Please see our [guidelines for contributing](https://github.com/esri/contributing).
## Licensing
Copyright 2019 Esri
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
A copy of the license is available in the repository's [license.txt](license.txt) file.
# Naming conventions
## Layers
Besides the required the building scene layer, without which the entire application would not have any sense, there are some layers and their names that have specific meaning. Any other layer you add to the scene will be left untouched and visible at all time in your application.
All the names need to include the following, but you can have longer layer's name, e.g. "Building: Turanga Library".
- `"Building"`: this is the only required layer in your webscene. It needs to be a [Building Scene Layer](https://developers.arcgis.com/javascript/latest/api-reference/)
- `"City model"`: this is an optional layer in your webscene that show the surroundings. It needs to be a [Scene Layer](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-SceneLayer.html).
- `"Floor points"`: this layer needs to be a [`FeatureLayer`](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-FeatureLayer.html) that will be added to the `FloorsSection`. Additionally, if every features have a number attribute `BldgLevel`, the feature filtered depending on the selected floor (See [FloorsSection](./Sections.html)).
- `"Floor pictures"`: this layer needs to be a [`FeatureLayer`](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-FeatureLayer.html), displaying icons, with the string attributes `url`, `title` and `credit`. It will be added to the `FloorsSection`. When a user cliks on it, a popup is displayed with the information provided through the attributes. Additionally, if every features have a number attribute `BldgLevel`, the feature filtered depending on the selected floor (See [FloorsSection](./Sections.html)).
- `"External pictures"`: this layer needs to be a [`FeatureLayer`](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-FeatureLayer.html), displaying icons, with the string attributes `url`, `title` and `credit`. It will be added to the `HomeSection`. When a user cliks on it, a popup is displayed with the information provided through the attributes.
### Prefix
- `"Surroundings:"`: Any layer with name starting with this prefix will be added to the `SurroundingsSection` on the left. A toggle allows user to turn them on or off (off by default).
## Slides
Slides with the following names have specific roles:
- `"Overview"`: The slide's camera will be automatically be applied to the view when a user goes to the `HomeSection`
- `"Floor by floor"`: The slide's camera will be automatically be applied to the view when a user goes to the `FloorsSection`
- `"Surroundings"`: The slide's camera will be automatically be applied to the view when a user goes to the `SurroundingsSection`
- In general, a section is looking among the slide's names and any slide matching the section's title will be applied to the view when a user goes to this section
### Prefix
Additionally, this prefix has also a specific meaning:
- `"Points of Interest:"`: this suffix is used by the `SurroundingsSection` to display different interactive point of interests. When a user clicks on any of the point of interests, the camera is applied to the view.
# Minimal setup
### Prepare a minimal webscene:
1. Create a new webscene
1. Add a Building Scene layer and add the suffix `Building:` in front of it's name
1. Save the webscene, give it a nice title and copy the webscene id. You will need it in a few next steps
### Get your own copy of the Building Viewer
1. Clone the git repository in your local machine and then go into the folder:
```
git clone https://github.com/Esri/building-viewer
cd BSL-Demo-App
```
1. Remove the `.git` repository reference `rm -rf .git`
1. Install dependency: `npm run install`
1. Compile the code: `npm run build`
1. Start the server: `npm run server`
1. Open your browser and enter the local address `http://localhost:8888/`. You should see now the Building Viewer running:
![The default Building Viewer running](./images/screenshot_1.png)
### Edit the content with your own webscene
1. Open `src/config.tsx` in your favorite code editor
2. Delete all the content except the two first obscure lines
3. Now you need to define 2 parameters in the config to get started:
1. The `websceneId` of the webscene you created above
```
export const websceneId = "YOUR WEBSCENE ID HERE";
```
*Note that you may to also export on which portal this webscene resides if different from the ArcGis's portal: `export const portalUrl = "https://your-portal-url.com";`*
2. The `sections` you'd like to have in your Building Viewer (see documentation about sections). Let's start with only one section, the home page:
```typescript
// first import the section:
import HomeSection = require("./sections/HomeSection");
// then export the `sections` parameter:
export const sections = [
new HomeSection({})
];
```
4. Recompile the code (note that the Building Viewer ships with a little util that watch files and recompile for you. Just run `npm run dev` in a differnet terminal window)
5. You should see your building in the Building Viewer now if you reload your webviewer:
![Your building in the Building Viewer](./images/screenshot_2.png)
### Let's add content
The title of the home page is the title of your scene. If you would like to change it, you can simply update the title of the scene.
1. First, the view of the building when opening the Building Viewer isn't really Building appealing. Let's change this.
1. Go back to your webscene
2. Navigate to a view that please you
3. Save a slide with name "Overview"
4. Save your webscene and reload the demo Building Viewer. You should have a better view when you enter the Building Viewer:
![The first view](./images/screenshot_3.png)
2. Let's add some description on the left side:
1. Go back to your webscene and go to "Properties"
2. Add your text in the webscene description
3. Save the webscene and reload the demo Building Viewer. You should now see your text on the left side:
![Description appeared](./images/screenshot_4.png)
3. Let's add different point of views for the user to appreciate the building in all corners:
1. Go back to your webscene and go to "Slides"
2. Move your view to the location you would like
3. Create a new slide
4. Repeat as much as you want, and then save your scene
5. Reload the demo app, you should see now some points of view:
![The point of views](./images/screenshot_5.png)
4. Let's add the opening hours:
1. Go now to the file `src/config.tsx`
2. Import the necessary classes:
```typescript
import {Timetable, DayTimetable} from "./widgets/Timetable/Timetable";
import Collection = require("esri/core/Collection");
```
3. Add the timetable to the home section, and add all your opening hours for every day:
```typescript
new HomeSection({
timetable: new Timetable({
dates: new Collection([
new DayTimetable({
opens: "8:00",
closes: "20:00"
}),
new DayTimetable({
opens: "8:00",
closes: "20:00"
}),
new DayTimetable({
opens: "8:00",
closes: "20:00"
}),
new DayTimetable({
opens: "8:00",
closes: "20:00"
}),
new DayTimetable({
opens: "8:00",
closes: "20:00"
}),
new DayTimetable({
opens: "10:00",
closes: "17:00"
}),
new DayTimetable({
opens: "10:00",
closes: "17:00"
})
])
})
})
```
4. Save your file, recompile the typsecrip and reload the app
5. You should now see the time table on the bottom left of the home page:
![The time table](./images/screenshot_6.png)
5. Change the ground colour
1. The design of the Building Viewer has been set to work well with darker colours. Let's change the background for a dark solid colour
2. Go back to your webscene and click on "Ground". Choose a good ground colour
3. Go to the basemap gallery, and check "No basemap".
4. Save your webscene *(as the initial state)* and reloads the Building Viewer:
![Your building on a dark ground](./images/screenshot_7.png)
5. Finally, let's add city buildings:
1. If you have the city as Building Scene Layer, you can add it to your webscene and name it "City model".
2. Save your webscene and reload the Building Viewer, you should see now the surroundings building:
![The city surrounds your building](./images/screenshot_8.png)
*Note that all others layers or configuration of your webscene will appear in your demo app.*
---
To go beyond and add more section, please read [the sections documentation](./Section.html). You can always check the [naming conventions](./NameConventions.html) for a quick look at the different layer and slide names.
# Sections
The demo uses 3 different sections, the home section, the floor section and the surroundings section. In the following content, we will go through the initialisation of the different sections and explore how you can create new sections.
## General section parameters
- Every section has a configurable `title` which is then the word appearing in the menu.
- To configure the camera of any section, you can add a slide with the coresponding home's title as the name of the slides.
## Home section
The home section ships with 3 main part:
- The **description of the building** on the left. By default, the description is taken from the scene's description. As shown in the `Quickstart` guide, you can add your text in the `Properties` pane of the Scene Viewer. However, if you'd like to add more complex content, e.g. involving html or somejavacsript logic, you can always pass a parameter `content` to the `HomeSection` constructor. This parameter is a function that takes in argument the section and return some `VNodes` that will be later added to the left. You are now totally free to design the exact content you would like.
- The **viewpoints**: every slides that you create in your webscene with automatically be added as a viewpoints on the right of the HomeSection if the slide's name is not part of the [reserved names](./NamingConvention.md).
- The **building opening hours**: you can pass to your Building Viewer a list of opening hours as follow:
```typescript
new HomeSection({
timetable: new Timetable({
dates: new Collection([
new DayTimetable({
opens: "8:00",
closes: "20:00"
}),
new DayTimetable({
opens: "8:00",
closes: "20:00"
}),
new DayTimetable({
opens: "8:00",
closes: "20:00"
}),
new DayTimetable({
opens: "8:00",
closes: "20:00"
}),
new DayTimetable({
opens: "8:00",
closes: "20:00"
}),
new DayTimetable({
opens: "10:00",
closes: "17:00"
}),
new DayTimetable({
opens: "10:00",
closes: "17:00"
})
])
})
})
```
## Floor section
The floor section will display a floor picker on the right that allows the user to discover the different level's of the building. There is two way to initialise the floor section. You can either pass the lowest floor number and the hightest floor number as follow:
```typescript
new FloorsSection({
minFloor: 0,
maxFloor: 2
})
```
which will allow the user to go through floors 0 to 2. Or you can pass every floor with the content it needs to display on the left of the building when a user select one:
```typescript
new FloorsSection({
floors: new Collection([
...,
new Floor({
title: "The name of the floor",
subtitle: "A subtitle",
floor: 0,
content: () => (<div>Some html content</div>)
}),
...
])
})
```
This uses [TSX](https://www.typescriptlang.org/docs/handbook/jsx.html) to render the content. Be sure to include the `tsx` function [from the ArcGIS for Javascript API](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-support-widget.html#tsx) to compile this code.
## Surroundings section
The surroundings section display toggles for extra layers you can setup in your webscene or point of view for different building in your surrounding layer, using your webscene's slides (See [naming concention](./NamingConvention.md)).
It does not take any parameter to be initialised:
```typescript
new SurroundingsSection({})
```
- To add toggle for extra layers, just add `"Surroundings:"` in front of their layer's name in your webscene.
- To add toggle for point of view of building in your "surroundings" layer, just add slides with `"Points of Interest:"` in their title.
## Create your own section
The building viewer as been designed so that you can easily extend it. Every section share a common base class `Section` which defines the minimal structure for it to be displayed. If you want to create your own section, you can simple extend this class and define the `title`, give it a unique `id` and define what goes on the right side by delcaring `, and what goes on the left by define `render`.
As an example:
```
@subclass()
class MySection extends declared(Section) {
@property()
title = "My section"
@property()
id = "my-section"
render() {
return (<div></div>);
}
paneRight() {
return (<div></div>);
}
```
You can of course create a complex widget here. This is following the ArcGIS for Javascript API's [widget convention and structure](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Widget.html). Be sure to check their [guide first](https://developers.arcgis.com/javascript/latest/guide/custom-widget/index.html).
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no"/>
<title>BuildingViewer</title>
<meta name="viewport" content="minimal-ui">
<link rel="stylesheet" href="https://jsdev.arcgis.com/4.20/esri/themes/light/main.css">
<link rel="stylesheet" href="https://s3-us-west-1.amazonaws.com/patterns.esri.com/files/calcite-web/1.2.4/css/calcite-web.min.css">
<link rel="stylesheet" href="./src/css/main.css">
<link rel="stylesheet" href="./src/js/sections/css/sections.css">
<link rel="stylesheet" href="./src/js/widgets/widgets.css">
<link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Roboto+Condensed" rel="stylesheet">
<script>
var locationPath = location.pathname.replace(/\/[^\/]+$/, "/");
window.dojoConfig = {
packages: [
{
name: "app",
location: locationPath + "src/js/"
}
]
};
</script>
<script src="https://js.arcgis.com/4.20/"></script>
<!-- include: "type": "js", "files": "**/*.js" -->
</head>
<body>
<div id="mainViewDiv"></div>
<div id="appDiv">
</div>
<script>require([
"app/BuildingViewer",
"app/config",
"dojo/domReady!"
],
function(
BuildingViewer,
config
) {
var args = {
// The container where to display the map:
mapContainer: "mainViewDiv",
// The id to the scene for the BSL you'd like to display:
websceneId: config.websceneId,
// Your different sections:
sections: config.sections,
// The container where to display the html element:
container: document.getElementById("appDiv")
};
if (config.portalUrl) {
args.portalUrl = config.portalUrl;
}
if (config.floorMapping) {
args.floorMapping = config.floorMapping;
}
if (config.extraQuery) {
args.extraQuery = config.extraQuery;
}
new BuildingViewer(args);
});</script>
</body>
</html>
Apache License - 2.0
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control
with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management
of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial
ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source,
and configuration files.
"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to
compiled object code, generated documentation, and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice
that is included in or attached to the work (an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work
or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual
or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of
electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on
electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for
the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing
by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display,
publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide,
non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell,
sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are
necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was
submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You
under this License for that Work shall terminate as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications,
and in Source or Object form, provided that You meet the following conditions:
1. You must give any other recipients of the Work or Derivative Works a copy of this License; and
2. You must cause any modified files to carry prominent notices stating that You changed the files; and
3. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices
from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
4. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a
readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the
Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the
Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever
such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License.
You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work,
provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to
Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your
modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You
to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above,
nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except
as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides
its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation,
any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for
determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under
this License.
8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required
by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages,
including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the
use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or
any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a
fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting
such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree
to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your
accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
This diff is collapsed.
{
"name": "building-viewer",
"version": "1.0.0",
"description": "This application demonstrates the use of various Building Scene Layer related API",
"repository": {
"type": "git",
"url": "git@transfer.hft-stuttgart.de:rushikesh.padsala/test3.git"
},
"scripts": {
"dev": "tsc -w & sass --watch src:src",
"lint": "tslint './src/*.ts'",
"build": "tsc & sass src:src",
"dist": "grunt dist",
"server": "grunt"
},
"keywords": [
"esri",
"typescript"
],
"author": "Yannik Messerli <ymesserli@esri.com>",
"license": "Apache-2.0",
"devDependencies": {
"grunt": "^1.3.0",
"grunt-contrib-concat": "*",
"grunt-contrib-connect": "*",
"grunt-contrib-copy": "*",
"grunt-contrib-htmlmin": "*",
"grunt-contrib-uglify": "*",
"grunt-contrib-watch": "*",
"grunt-dojo": "^1.1.2",
"grunt-include-source": "^1.1.0",
"grunt-run": "^0.8.1",
"grunt-stripcomments": "^0.7.2",
"js-yaml": ">=3.13.1",
"tslint": "^4.2.0",
"tslib": "~2.4.0",
"sass": "^1.49.10"
},
"dependencies": {
"@types/dojo": "1.9.41",
"typescript": "4.2.4"
}
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment