hart-estate-widget 1.1.4 → 1.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,147 +1,164 @@
1
- # HART Estate Widget Component
2
-
3
-
4
- ## Installation using NPM:
5
-
6
- `npm install hart-estate-widget --save`
7
-
8
- ## Usage example:
9
-
10
- ```js
11
- import React, { useEffect, useState } from 'react';
12
- import { Widget, rotationModes } from 'hart-estate-widget';
13
- // or
14
- import 'hart-estate-widget/build/widget.bundle.js'; // in this case, a global variable WidgetLibrary is created
15
-
16
- const WIDGET_OPTIONS = {
17
- tabs: ['planImage', 'rotation', 'panorama'],
18
- logo: '/path/to/logo.png',
19
- planImage: '/path/to/plan.jpg',
20
- rotationMode: rotationModes.DEFAULY,
21
- rotationData: {
22
- type: 'top_down',
23
- items: [
24
- '/path/to/rotation_image_1.jpg',
25
- ...
26
- '/path/to/rotation_image_5.jpg',
27
- ],
28
- },
29
- panoramaData: {
30
- type: 'sphere',
31
- items: [
32
- {
33
- camera_id: '1234',
34
- images: ['/path/to/panorama_image.jpg'],
35
- room_id: '1234',
36
- },
37
- ],
38
- },
39
- };
40
-
41
- const App = () => {
42
- const [widget, setWidget] = useState(null);
43
-
44
- useEffect(() => {
45
- const createdWidget = new Widget('#widget-container', WIDGET_OPTIONS);
46
- setState(createdWidget);
47
- }, []);
48
-
49
- return (
50
- <div>
51
- <div id="widget-container" />
52
- </div>
53
- );
54
- }
55
-
56
- export App;
57
-
58
- ```
59
-
60
-
61
- ## Parameters:
62
-
63
- ```js
64
- {
65
- // elements
66
- tabs: ['rotation', 'panorama'], // included elements
67
-
68
- // logo
69
- logo: '', // path to logo
70
- logoUrl: '', // link opened when logo is clicked
71
-
72
- // localization
73
- locale: 'en', // ISO 639 language code
74
-
75
- // width/height
76
- width: 1920,
77
- height: 1080,
78
- resizable: true, // automatically resize the widget to the size of the container when the window is resized
79
-
80
- // values
81
- planImage: '', // path to the plan image (required for panoramic tour)
82
- topViewImage: '', // path to the top view image
83
- rotationMode: 'default', // mode of operation for plan images
84
- rotationData: {}, // type of images and paths to circular view images (order is mandatory)
85
- panoramaData: {}, // type of panorama and paths to 360° images
86
- panoramaFov: 75, // camera field of view angle for panoramic tour
87
-
88
- // colors
89
- colors: {
90
- main: '#HEX', // main color of buttons, elements
91
- mainText: '#HEX', // text color for buttons, elements contrasting with the main color
92
- },
93
- }
94
-
95
- ```
96
-
97
- ## Types of elements
98
- ```js
99
- tabs: [
100
- 'rotation', // circular view images (order is mandatory)
101
- 'panorama', // 360° images
102
- ],
103
- rotationMode: [
104
- rotationModes.DEFAULT, // top view mode (multiple perspectives) and stylized plan view
105
- rotationModes.THREESIXTY, // image scrolling mode for circular view
106
- ],
107
- rotationData.type: [
108
- 'top_down', // full model
109
- 'middle_cut', // model with cut in the middle
110
- ],
111
- panoramaData.type: [
112
- 'sphere', // 360° panorama
113
- 'cube', // panorama with 6 images (top, down, left, right, front, back)
114
- ],
115
- locale: [
116
- 'ru', // Russian language
117
- 'en', // English language
118
- ],
119
- ```
120
-
121
-
122
- ## Publishing with Nexus Registry NPM:
123
- ```js
124
- // in @hart-estate/widget package.json:
125
- "publishConfig": {
126
- "registry": "https://nexus.myhart.ru/repository/npm/"
127
- },
128
- ```
129
- `npm adduser --auth-type=legacy --registry=https://nexus.myhart.ru/repository/npm/`
130
- `npm install`
131
- `npm run build`
132
- `npm publish`
133
-
134
-
135
- ## Installation using Nexus Registry NPM:
136
-
137
- `npm adduser --auth-type=legacy --registry=https://nexus.myhart.ru/repository/npm/`
138
-
139
- ```js
140
- // when reinstalling (updating), delete node_modules and package-lock.json
141
- // add .npmrc in root:
142
- @hart-estate/widget:registry=https://nexus.myhart.ru/repository/npm/
143
- registry=https://registry.npmjs.org/
144
- ```
145
-
146
- `npm config set @hart-estate:registry https://nexus.myhart.ru/repository/npm/`
147
- `npm install`
1
+ # HART Estate Widget Component
2
+
3
+ ## Prerequisites
4
+
5
+ ![node: 16.13.1](https://img.shields.io/badge/nodeJS-16.13.1-blue)
6
+
7
+ ## Installation using NPM:
8
+
9
+ `npm install hart-estate-widget --save`
10
+
11
+ ## Usage example:
12
+
13
+ ### HTML
14
+ ```html
15
+ <html lang="en">
16
+ <head>
17
+ <meta charset="utf-8">
18
+ <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0" />
19
+ <title>katmosfera</title>
20
+ <link rel="icon" href="./assets/img/logo.png">
21
+ <script src="./js/index.js" type="module"></script>
22
+ </head>
23
+
24
+ <body>
25
+ <section class="widget-section">
26
+ <div class="widget" id="widget"></div> <!--must match the first attribute in 'new Widget('#widget', options);' -->
27
+ </section>
28
+ </body>
29
+ </html>
30
+ ```
31
+
32
+ ### JS
33
+ ```js
34
+ import { ApiStore, Widget, rotationModes } from 'hart-estate-widget';
35
+ import '../assets/sass/index.sass'; // style
36
+ import logo from '../assets/img/logo.png'; // logo
37
+
38
+ const WIDGET_API_URL = 'https://backend.estate.hart-digital.com';
39
+
40
+ const createWidget = async (logoUrl) => {
41
+ const widgetApiHandler = new ApiStore(WIDGET_API_URL)
42
+
43
+ const searchParams = (new URL(document.location)).searchParams;
44
+ const planId = searchParams.get("id");
45
+
46
+ const planData = await widgetApiHandler.loadWidgetData(planId);
47
+ const options = { // the parameters you need
48
+ ...planData.parsed,
49
+ API_URL: WIDGET_API_URL,
50
+ rotationMode: rotationModes.DEFAULT,
51
+ logo: logo,
52
+ tabs: ['panorama', 'rotation'],
53
+ locale: 'en',
54
+ logoUrl,
55
+ }
56
+
57
+ new Widget('#widget', options); // must match the element id
58
+ }
59
+
60
+ createWidget('https://yoursite/'); // create a widget
61
+ ```
62
+
63
+ ## Functionality check:
64
+
65
+ ### Instalization
66
+ 1. `npm install sass@1.62.1`
67
+ 2. `npm install parcel@2.8.3`
68
+ 3. `npm install @parcel/transformer-sass@2.8.3`
69
+
70
+ ### Add files
71
+ 4. add index.html to the ~/src/index.html using the above described content for HTML
72
+ 5. add index.js to the ~/src/js/index.js using the above described content for JS
73
+ 6. add logo.png to the ~/src/assets/img/logo.png (if the logo is not png then replace all paths to the logo)
74
+ 7. add index.sass to the ~/src/assets/sass/index.sass using:
75
+ ```sass
76
+ *, *:before, *:after
77
+ -webkit-font-smoothing: antialiased
78
+ -moz-osx-font-smoothing: grayscale
79
+ font-family: 'Proxima Nova'
80
+ text-decoration: none
81
+ font-weight: 400
82
+ color: #fff
83
+ outline: none
84
+ padding: 0
85
+ margin: 0
86
+ box-sizing: border-box
87
+ -webkit-box-sizing: border-box
88
+
89
+ body
90
+ width: 100%
91
+ height: 100%
92
+ overflow: hidden
93
+
94
+ .widget-section
95
+ width: 100%
96
+ height: 100%
97
+ .widget
98
+ width: 100%
99
+ height: 100%
100
+ ```
101
+
102
+ ### Run
103
+ 8. `rm -rf dist && npx parcel ./src/index.html`
104
+ 9. open: http://localhost:1234/?id=4c834af9-e08a-4ede-bd53-b231bcae38da
105
+
106
+
107
+ ## Parameters:
108
+ ```js
109
+ {
110
+ // elements
111
+ tabs: ['rotation', 'panorama'], // included elements
112
+
113
+ // logo
114
+ logo: '', // path to logo
115
+ logoUrl: '', // link opened when logo is clicked
116
+
117
+ // localization
118
+ locale: 'en', // ISO 639 language code
119
+
120
+ // width/height
121
+ width: 1920,
122
+ height: 1080,
123
+ resizable: true, // automatically resize the widget to the size of the container when the window is resized
124
+
125
+ // values
126
+ planImage: '', // path to the plan image (required for panoramic tour)
127
+ topViewImage: '', // path to the top view image
128
+ rotationMode: 'default', // mode of operation for plan images
129
+ rotationData: {}, // type of images and paths to circular view images (order is mandatory)
130
+ panoramaData: {}, // type of panorama and paths to 360° images
131
+ panoramaFov: 75, // camera field of view angle for panoramic tour
132
+
133
+ // colors
134
+ colors: {
135
+ main: '#HEX', // main color of buttons, elements
136
+ mainText: '#HEX', // text color for buttons, elements contrasting with the main color
137
+ },
138
+ }
139
+
140
+ ```
141
+
142
+ ## Types of elements
143
+ ```js
144
+ tabs: [
145
+ 'rotation', // circular view images (order is mandatory)
146
+ 'panorama', // 360° images
147
+ ],
148
+ rotationMode: [
149
+ rotationModes.DEFAULT, // top view mode (multiple perspectives) and stylized plan view
150
+ rotationModes.THREESIXTY, // image scrolling mode for circular view
151
+ ],
152
+ rotationData.type: [
153
+ 'top_down', // full model
154
+ 'middle_cut', // model with cut in the middle
155
+ ],
156
+ panoramaData.type: [
157
+ 'sphere', // 360° panorama
158
+ 'cube', // panorama with 6 images (top, down, left, right, front, back)
159
+ ],
160
+ locale: [
161
+ 'ru', // Russian language
162
+ 'en', // English language
163
+ ],
164
+ ```