@nyris/nyris-webapp 0.3.3 → 0.3.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.
Files changed (205) hide show
  1. package/build/asset-manifest.json +18 -32
  2. package/build/index.html +1 -1
  3. package/build/{precache-manifest.01ce682577e62add75aa397b2a944b75.js → precache-manifest.bffed513ca17d8ac16af1cc3aaa7d908.js} +13 -89
  4. package/build/service-worker.js +1 -1
  5. package/build/static/css/2.43a1c8b7.chunk.css +2 -0
  6. package/build/static/css/2.43a1c8b7.chunk.css.map +1 -0
  7. package/build/static/css/main.2a76dc8a.chunk.css +2 -0
  8. package/build/static/css/main.2a76dc8a.chunk.css.map +1 -0
  9. package/build/static/js/2.4e9a4ce1.chunk.js +3 -0
  10. package/build/static/js/2.4e9a4ce1.chunk.js.LICENSE.txt +79 -0
  11. package/build/static/js/2.4e9a4ce1.chunk.js.map +1 -0
  12. package/build/static/js/main.ec93aa4d.chunk.js +2 -0
  13. package/build/static/js/main.ec93aa4d.chunk.js.map +1 -0
  14. package/build/static/js/{runtime-main.b418ff16.js → runtime-main.f5553a9b.js} +1 -1
  15. package/build/static/js/{runtime-main.b418ff16.js.map → runtime-main.f5553a9b.js.map} +1 -1
  16. package/package.json +7 -30
  17. package/src/App.css +64 -20
  18. package/src/App.tsx +253 -19
  19. package/src/AppMD.tsx +320 -0
  20. package/src/Demo2.tsx +220 -0
  21. package/src/actions/nyrisAppActions.ts +76 -0
  22. package/src/actions/searchActions.ts +218 -0
  23. package/src/components/ExampleImages.tsx +17 -32
  24. package/src/components/Feedback.tsx +48 -87
  25. package/src/components/FiltersList.tsx +69 -0
  26. package/src/components/Header.tsx +17 -32
  27. package/src/components/Result.tsx +113 -186
  28. package/src/components/Sidebar.tsx +40 -0
  29. package/src/defaults.ts +3 -4
  30. package/src/{Store/epics → epics}/feedback.ts +0 -0
  31. package/src/epics/index.ts +154 -0
  32. package/src/epics/search.ts +203 -0
  33. package/src/{Store/epics → epics}/types.ts +1 -1
  34. package/src/{common/assets/fonts → fonts}/roboto-bold-webfont.woff +0 -0
  35. package/src/{common/assets/fonts → fonts}/roboto-bold-webfont.woff2 +0 -0
  36. package/src/{common/assets/fonts → fonts}/roboto-italic-webfont.woff +0 -0
  37. package/src/{common/assets/fonts → fonts}/roboto-italic-webfont.woff2 +0 -0
  38. package/src/{common/assets/fonts → fonts}/roboto-regular-webfont.woff +0 -0
  39. package/src/{common/assets/fonts → fonts}/roboto-regular-webfont.woff2 +0 -0
  40. package/src/{common/assets/fonts → fonts}/robotocondensed-bold-webfont.woff +0 -0
  41. package/src/{common/assets/fonts → fonts}/robotocondensed-bold-webfont.woff2 +0 -0
  42. package/src/{common/assets/fonts → fonts}/robotocondensed-bolditalic-webfont.woff +0 -0
  43. package/src/{common/assets/fonts → fonts}/robotocondensed-bolditalic-webfont.woff2 +0 -0
  44. package/src/{common/assets/images → images}/fav/android-icon-192x192.png +0 -0
  45. package/src/{common/assets/images → images}/fav/apple-icon-114x114.png +0 -0
  46. package/src/{common/assets/images → images}/fav/apple-icon-120x120.png +0 -0
  47. package/src/{common/assets/images → images}/fav/apple-icon-144x144.png +0 -0
  48. package/src/{common/assets/images → images}/fav/apple-icon-152x152.png +0 -0
  49. package/src/{common/assets/images → images}/fav/apple-icon-180x180.png +0 -0
  50. package/src/{common/assets/images → images}/fav/apple-icon-57x57.png +0 -0
  51. package/src/{common/assets/images → images}/fav/apple-icon-60x60.png +0 -0
  52. package/src/{common/assets/images → images}/fav/apple-icon-72x72.png +0 -0
  53. package/src/{common/assets/images → images}/fav/apple-icon-76x76.png +0 -0
  54. package/src/{common/assets/images → images}/fav/browserconfig.xml +0 -0
  55. package/src/{common/assets/images → images}/fav/favicon-16x16.png +0 -0
  56. package/src/{common/assets/images → images}/fav/favicon-32x32.png +0 -0
  57. package/src/{common/assets/images → images}/fav/favicon-96x96.png +0 -0
  58. package/src/{common/assets/images → images}/fav/manifest.json +0 -0
  59. package/src/{common/assets/images → images}/ic_cam.png +0 -0
  60. package/src/{common/assets/images → images}/ic_cam.svg +0 -0
  61. package/src/{common/assets/images → images}/ic_cam_large.png +0 -0
  62. package/src/{common/assets/images → images}/ic_cam_large.svg +0 -0
  63. package/src/{common/assets/images → images}/ic_cam_large_noimage.png +0 -0
  64. package/src/{common/assets/images → images}/ic_close_feedback.png +0 -0
  65. package/src/{common/assets/images → images}/ic_close_feedback.svg +0 -0
  66. package/src/{common/assets/images → images}/ic_shopNow.png +0 -0
  67. package/src/{common/assets/images → images}/ic_shopNow.svg +0 -0
  68. package/src/{common/assets/images → images}/ic_shopNowLight.png +0 -0
  69. package/src/{common/assets/images → images}/ic_shopNowLight.svg +0 -0
  70. package/src/{common/assets/images → images}/nyris_logo.png +0 -0
  71. package/src/{common/assets/images → images}/rewe.svg +0 -0
  72. package/src/{common/assets/images → images}/sectionTransBack.png +0 -0
  73. package/src/{common/assets/images → images}/sectionTransBack.svg +0 -0
  74. package/src/{common/assets/images → images}/sectionTransTop.png +0 -0
  75. package/src/{common/assets/images → images}/sectionTransTop.svg +0 -0
  76. package/src/index.css +416 -573
  77. package/src/index.tsx +190 -39
  78. package/src/types.ts +3 -43
  79. package/tsconfig.json +8 -3
  80. package/build/js/settings.example.js +0 -31
  81. package/build/js/test.js +0 -56
  82. package/build/static/css/2.8285176a.chunk.css +0 -2
  83. package/build/static/css/2.8285176a.chunk.css.map +0 -1
  84. package/build/static/css/main.6676fe1f.chunk.css +0 -2
  85. package/build/static/css/main.6676fe1f.chunk.css.map +0 -1
  86. package/build/static/js/2.d1562c08.chunk.js +0 -3
  87. package/build/static/js/2.d1562c08.chunk.js.LICENSE.txt +0 -133
  88. package/build/static/js/2.d1562c08.chunk.js.map +0 -1
  89. package/build/static/js/main.5c08aba4.chunk.js +0 -2
  90. package/build/static/js/main.5c08aba4.chunk.js.map +0 -1
  91. package/build/static/media/Fill.37094b44.svg +0 -3
  92. package/build/static/media/Montserrat-Bold.5a052e98.otf +0 -0
  93. package/build/static/media/Montserrat-Light.21789e89.otf +0 -0
  94. package/build/static/media/Montserrat-Medium.a53e0373.otf +0 -0
  95. package/build/static/media/Montserrat-Regular.71cdc681.otf +0 -0
  96. package/build/static/media/Montserrat-SemiBold.f613d915.otf +0 -0
  97. package/build/static/media/Rectangle.4dd8b747.png +0 -0
  98. package/build/static/media/admin.9529c7f6.svg +0 -3
  99. package/build/static/media/bg-support-page.6ac55268.svg +0 -9
  100. package/build/static/media/book_mark.8e294c0b.svg +0 -3
  101. package/build/static/media/icon_dislike.94607ca6.svg +0 -3
  102. package/build/static/media/icon_like.a4fb1b18.svg +0 -3
  103. package/build/static/media/icon_modal_image.3068d0ea.svg +0 -21
  104. package/build/static/media/icon_search_image.c2c728c0.svg +0 -3
  105. package/build/static/media/nyris_logo.22d8f250.svg +0 -3
  106. package/build/static/media/reload_icon.4b579a74.svg +0 -3
  107. package/build/static/media/save_search.bebaeebf.svg +0 -3
  108. package/build/static/media/support.289c3a3c.svg +0 -3
  109. package/build/static/media/translate_icon.f0492297.svg +0 -3
  110. package/public/js/settings.example.js +0 -31
  111. package/public/js/test.js +0 -56
  112. package/src/Router.tsx +0 -97
  113. package/src/Store/Auth.ts +0 -44
  114. package/src/Store/Nyris.ts +0 -77
  115. package/src/Store/Search.ts +0 -269
  116. package/src/Store/Store.ts +0 -46
  117. package/src/Store/common.d.ts +0 -10
  118. package/src/common/assets/fonts/Montserrat_OTF/Montserrat-Bold.otf +0 -0
  119. package/src/common/assets/fonts/Montserrat_OTF/Montserrat-Light.otf +0 -0
  120. package/src/common/assets/fonts/Montserrat_OTF/Montserrat-Medium.otf +0 -0
  121. package/src/common/assets/fonts/Montserrat_OTF/Montserrat-Regular.otf +0 -0
  122. package/src/common/assets/fonts/Montserrat_OTF/Montserrat-SemiBold.otf +0 -0
  123. package/src/common/assets/icons/Fill.png +0 -0
  124. package/src/common/assets/icons/Fill.svg +0 -3
  125. package/src/common/assets/icons/Icon_wechat.png +0 -0
  126. package/src/common/assets/icons/Icon_whatsapp.png +0 -0
  127. package/src/common/assets/icons/admin.png +0 -0
  128. package/src/common/assets/icons/admin.svg +0 -3
  129. package/src/common/assets/icons/book_mark.png +0 -0
  130. package/src/common/assets/icons/book_mark.svg +0 -3
  131. package/src/common/assets/icons/icon_barcode.png +0 -0
  132. package/src/common/assets/icons/icon_camera.png +0 -0
  133. package/src/common/assets/icons/icon_dislike.svg +0 -3
  134. package/src/common/assets/icons/icon_disslike.png +0 -0
  135. package/src/common/assets/icons/icon_email.png +0 -0
  136. package/src/common/assets/icons/icon_like.png +0 -0
  137. package/src/common/assets/icons/icon_like.svg +0 -3
  138. package/src/common/assets/icons/icon_modal_image.png +0 -0
  139. package/src/common/assets/icons/icon_modal_image.svg +0 -21
  140. package/src/common/assets/icons/icon_picture.png +0 -0
  141. package/src/common/assets/icons/icon_search_image.png +0 -0
  142. package/src/common/assets/icons/icon_search_image.svg +0 -3
  143. package/src/common/assets/icons/nyris_logo.svg +0 -3
  144. package/src/common/assets/icons/reload_icon.png +0 -0
  145. package/src/common/assets/icons/reload_icon.svg +0 -3
  146. package/src/common/assets/icons/save_search.png +0 -0
  147. package/src/common/assets/icons/save_search.svg +0 -3
  148. package/src/common/assets/icons/setting_search_icon.png +0 -0
  149. package/src/common/assets/icons/support.png +0 -0
  150. package/src/common/assets/icons/support.svg +0 -3
  151. package/src/common/assets/icons/translate_icon.png +0 -0
  152. package/src/common/assets/icons/translate_icon.svg +0 -3
  153. package/src/common/assets/icons/view_off.png +0 -0
  154. package/src/common/assets/images/Rectangle.png +0 -0
  155. package/src/common/assets/images/bg-support-page.svg +0 -9
  156. package/src/common/assets/images/image_test.png +0 -0
  157. package/src/components/CustomHits/index.tsx +0 -57
  158. package/src/components/DetailItem.tsx +0 -175
  159. package/src/components/DragDropFile.tsx +0 -188
  160. package/src/components/FilterComponent.tsx +0 -33
  161. package/src/components/Footer.tsx +0 -29
  162. package/src/components/FooterMD.tsx +0 -54
  163. package/src/components/FooterNewVersion.tsx +0 -12
  164. package/src/components/FooterResult.tsx +0 -47
  165. package/src/components/HeaderMd.tsx +0 -39
  166. package/src/components/HeaderNewVersion.tsx +0 -92
  167. package/src/components/Layout.tsx +0 -46
  168. package/src/components/LoadingScreen/index.tsx +0 -29
  169. package/src/components/Navigation.tsx +0 -34
  170. package/src/components/Panigation/Pagination.tsx +0 -140
  171. package/src/components/Panigation/cx.js +0 -3
  172. package/src/components/Panigation/isModifierClick.js +0 -10
  173. package/src/components/Saved/AllItem.tsx +0 -32
  174. package/src/components/Saved/Category.tsx +0 -16
  175. package/src/components/carousel/DefaultCarousel.tsx +0 -48
  176. package/src/components/common.d.ts +0 -9
  177. package/src/components/common.scss +0 -54
  178. package/src/components/default-select.tsx +0 -44
  179. package/src/components/hitItem/hits.tsx +0 -50
  180. package/src/components/hitItem/infinitiHits.tsx +0 -33
  181. package/src/components/input/inputSearch.tsx +0 -77
  182. package/src/components/modal/DefaultModal.tsx +0 -28
  183. package/src/components/preview/preview.tsx +0 -433
  184. package/src/components/results/ItemResult.tsx +0 -155
  185. package/src/components/search/ListSearch.tsx +0 -209
  186. package/src/modules/LandingPage/common.scss +0 -1304
  187. package/src/modules/LandingPage/indexApp.tsx +0 -492
  188. package/src/modules/LandingPage/indexAppMD.tsx +0 -501
  189. package/src/modules/LandingPage/indexNewVersion.tsx +0 -117
  190. package/src/page/Auth/login.tsx +0 -7
  191. package/src/page/Exception/404.tsx +0 -11
  192. package/src/page/History/index.tsx +0 -76
  193. package/src/page/Profile/index.tsx +0 -87
  194. package/src/page/Saved/MockData.ts +0 -223
  195. package/src/page/Saved/index.tsx +0 -166
  196. package/src/page/Support/index.tsx +0 -160
  197. package/src/page/result/MockData.ts +0 -36
  198. package/src/page/result/index.tsx +0 -473
  199. package/src/services/Feedback.ts +0 -65
  200. package/src/services/findByImage.ts +0 -24
  201. package/src/services/findRegionsCustom.ts +0 -212
  202. package/src/services/image.ts +0 -110
  203. package/src/services/nyris.ts +0 -123
  204. package/src/services/session.ts +0 -20
  205. package/src/services/types.ts +0 -96
@@ -0,0 +1,218 @@
1
+ import {CanvasWithId} from "../types";
2
+ import {Code, RectCoords, Region, selectFirstCenteredRegion,Filter} from '@nyris/nyris-api';
3
+
4
+ export type ImageSourceType =
5
+ | { url: string }
6
+ | { file: File }
7
+ | { image: HTMLCanvasElement }
8
+
9
+ export type SearchAction =
10
+ | { type: 'FEEDBACK_SUBMIT_POSITIVE' }
11
+ | { type: 'FEEDBACK_SUBMIT_NEGATIVE' }
12
+ | { type: 'IMAGE_LOADED', image: CanvasWithId, }
13
+ | { type: 'REGION_REQUEST_START', image: HTMLCanvasElement }
14
+ | { type: 'REGION_REQUEST_SUCCEED', regions: Region[] }
15
+ | { type: 'REGION_REQUEST_FAIL', reason: string, exception: any }
16
+ | { type: 'SEARCH_REQUEST_START', image: HTMLCanvasElement, normalizedRect?: RectCoords , selectedFilters?: Filter[] }
17
+ | { type: 'SEARCH_REQUEST_START', file: File }
18
+ | { type: 'SEARCH_REQUEST_SUCCEED', results: any[], requestId: string, duration: number, categoryPredictions: CategoryPrediction[], codes: Code[] }
19
+ | { type: 'SEARCH_REQUEST_FAIL', reason: string, exception?: any }
20
+ | { type: 'REGION_CHANGED', normalizedRect: RectCoords}
21
+ | { type: 'LOAD_IMAGE'} & ImageSourceType
22
+ | { type: 'LOAD_FILE', file: File}
23
+ | { type: 'CAD_LOADED', file: File}
24
+ | { type: 'LOAD_FILTERS'}
25
+ | { type: 'LOAD_FILTERS_SUCCESS', filters: Filter[]}
26
+ | { type: 'LOAD_FILTERS_FAIL', reason: string, exception: any}
27
+ | { type: 'ADD_TO_SELECTEDFILTERS', key: string, value : string}
28
+ | { type: 'ADD_TO_SELECTEDFILTERS_SUCCESS', key: string , value : string}
29
+ | { type: 'REMOVE_FROM_SELECTEDFILTERS', key: string , value: string}
30
+ | { type: 'REMOVE_FROM_SELECTEDFILTERS_SUCCESS', key: string , value: string}
31
+ | { type: 'CLEAR_SELECTED_FILTERS'}
32
+
33
+
34
+ interface CategoryPrediction {
35
+ name: string,
36
+ score: number
37
+ }
38
+
39
+ export interface SearchState {
40
+ results: any[]
41
+ duration?: number
42
+ requestId?: string
43
+ sessionId?: string
44
+ regions: Region[]
45
+ selectedRegion: RectCoords
46
+ fetchingRegions: boolean
47
+ fetchingResults: boolean
48
+ filterOptions: string[]
49
+ requestImage?: CanvasWithId
50
+ requestCadFile?: File
51
+ categoryPredictions: CategoryPrediction[]
52
+ codes: Code[],
53
+ errorMessage: string,
54
+ filters:Filter[],
55
+ selectedFilters: Map<string, string[]>
56
+ }
57
+
58
+ const initialState : SearchState = {
59
+ results: [],
60
+ regions: [],
61
+ selectedRegion: {x1: 0.1, x2: 0.9, y1: 0.1, y2: 0.9},
62
+ requestImage: undefined,
63
+ fetchingResults: false,
64
+ fetchingRegions: false,
65
+ filterOptions: [],
66
+ categoryPredictions: [],
67
+ codes: [],
68
+ errorMessage: '',
69
+ filters: [],
70
+ selectedFilters: new Map<string,string[]>()
71
+ };
72
+
73
+
74
+ export const loadFile = (file: File ): SearchAction => ({ type: 'LOAD_FILE', file });
75
+ export const loadUrl = (url: string): SearchAction => ({ type: 'LOAD_IMAGE', url });
76
+ export const loadCanvas = (image: HTMLCanvasElement): SearchAction => ({ type: 'LOAD_IMAGE', image });
77
+ export const imageLoaded = (image: HTMLCanvasElement, id: string): SearchAction => ({ type: 'IMAGE_LOADED', image: {canvas: image, id: id} });
78
+ export const cadFileLoaded = (file: File, id: string): SearchAction => ({ type: 'CAD_LOADED', file});
79
+ export const selectionChanged = (normalizedRect: RectCoords) : SearchAction => ({ type: 'REGION_CHANGED', normalizedRect });
80
+ export const searchRegions = (image: HTMLCanvasElement): SearchAction => ({ type: 'REGION_REQUEST_START', image });
81
+ export const searchOffersForImage = (image: HTMLCanvasElement, normalizedRect?: RectCoords, selectedFilters?: Filter[]) : SearchAction => ({
82
+ type: 'SEARCH_REQUEST_START',
83
+ image,
84
+ normalizedRect,
85
+ selectedFilters
86
+ });
87
+ export const searchOffersForCad = (file: File) : SearchAction => ({
88
+ type: 'SEARCH_REQUEST_START',
89
+ file
90
+ });
91
+ export const submitPositiveFeedback = () : SearchAction => ({ type: 'FEEDBACK_SUBMIT_POSITIVE'});
92
+ export const submitNegativeFeedback = () : SearchAction => ({ type: 'FEEDBACK_SUBMIT_NEGATIVE'});
93
+ export const loadFilters = (): SearchAction => ({type: 'LOAD_FILTERS'});
94
+ export const addToSelectedFilters =(key: string , value: string): SearchAction => ({type : 'ADD_TO_SELECTEDFILTERS' , key , value});
95
+ export const removeFromSelectedFilters = (key: string, value: string) : SearchAction => ({type: 'REMOVE_FROM_SELECTEDFILTERS', key, value});
96
+ export const reducer = (state : SearchState = initialState, action: SearchAction) => {
97
+ switch (action.type) {
98
+ case "IMAGE_LOADED":
99
+ let { image } = action;
100
+ console.log('image', image)
101
+ return {
102
+ ...initialState,
103
+ requestImage: image,
104
+ selectedFilters: state.selectedFilters
105
+
106
+ };
107
+ case "CAD_LOADED":
108
+ let { file } = action;
109
+ return {
110
+ ...initialState,
111
+ requestCadFile: file
112
+ }
113
+ case 'REGION_REQUEST_START':
114
+ return {
115
+ ...state,
116
+ fetchingRegions: true
117
+ };
118
+ case "REGION_REQUEST_SUCCEED":
119
+ return {
120
+ ...state,
121
+ fetchingRegions: false,
122
+ regions: action.regions,
123
+ selectedRegion: selectFirstCenteredRegion(action.regions, 0.3, state.selectedRegion)
124
+ };
125
+ case "REGION_REQUEST_FAIL":
126
+ return {
127
+ ...state,
128
+ fetchingRegions: false,
129
+ errorMessage: action.exception.response.data.detail
130
+ };
131
+ case "SEARCH_REQUEST_START":
132
+ return {
133
+ ...state,
134
+ fetchingResults: true
135
+ };
136
+ case "SEARCH_REQUEST_SUCCEED":
137
+ let { results, requestId, duration, categoryPredictions, codes } = action;
138
+ return {
139
+ ...state,
140
+ results,
141
+ requestId,
142
+ fetchingResults: false,
143
+ sessionId: state.sessionId || requestId,
144
+ categoryPredictions,
145
+ codes,
146
+ duration
147
+ };
148
+ case "SEARCH_REQUEST_FAIL":
149
+ return {
150
+ ...state,
151
+ fetchingResults: false,
152
+ errorMessage: action.reason
153
+ };
154
+ case "REGION_CHANGED":
155
+ return {
156
+ ...state,
157
+ selectedRegion: action.normalizedRect
158
+ };
159
+ case "LOAD_FILTERS_SUCCESS":
160
+ return {
161
+ ...state,
162
+ filters: action.filters
163
+ };
164
+ case "LOAD_FILTERS_FAIL":
165
+ return {
166
+ ...state,
167
+ errorMessage: action.exception.response.data.detail
168
+ }
169
+ case "ADD_TO_SELECTEDFILTERS_SUCCESS":
170
+ return {
171
+ ...state,
172
+ selectedFilters : ADDtoSelectedfilters(state.selectedFilters, action.key, action.value)
173
+ }
174
+ case "REMOVE_FROM_SELECTEDFILTERS_SUCCESS":
175
+ return {
176
+ ...state,
177
+ selectedFilters : RemoveFromSelectedFilters(state.selectedFilters, action.key, action.value)
178
+ }
179
+ case "CLEAR_SELECTED_FILTERS":
180
+ return {
181
+ ...state,
182
+ selectedFilters : new Map<string,string[]>()
183
+ }
184
+
185
+ }
186
+ return state;
187
+ };
188
+
189
+ function ADDtoSelectedfilters(selectedFilters: Map<string, string[]>, key: string, value: string): Map<string, string[]> {
190
+ if(selectedFilters)
191
+ {
192
+ let values = selectedFilters.get(key);
193
+ if (values){
194
+ values.push(value);
195
+ }
196
+ else
197
+ {
198
+ values = new Array<string>(value);
199
+ }
200
+ selectedFilters.set(key, values);
201
+ }
202
+ console.log(selectedFilters);
203
+ return selectedFilters;
204
+ }
205
+
206
+ function RemoveFromSelectedFilters(selectedFilters: Map<string, string[]>, key: string, value: string): Map<string, string[]> {
207
+ if(selectedFilters)
208
+ {
209
+ let values = selectedFilters.get(key);
210
+ if (values)
211
+ {
212
+ values = values.filter(x => x!== value);
213
+ selectedFilters.set(key, values);
214
+ }
215
+
216
+ }
217
+ return selectedFilters;
218
+ }
@@ -1,39 +1,24 @@
1
- import { Typography } from "@material-ui/core";
2
- import React from "react";
1
+ import React from 'react';
3
2
 
4
3
  interface ExampleImagesProps {
5
- images: string[];
6
- onExampleImageClicked: (url: string) => void;
4
+ images: string[],
5
+ onExampleImageClicked: (url: string) => void
7
6
  }
8
7
 
9
- const ExampleImages: React.FC<ExampleImagesProps> = ({
10
- images,
11
- onExampleImageClicked,
12
- }) => {
13
- if (images.length === 0) {
14
- return null;
15
- }
16
- return (
17
- <section className="useExampleImg">
18
- <Typography className="title-box text-center">
19
- You can also try one of these pictures:
20
- </Typography>
21
- <div className="exampleImages d-flex justify-center">
22
- <div className="exImagesWrap">
23
- {images.map((i) => {
24
- return (
25
- <img
26
- key={i}
27
- src={i}
28
- alt=""
29
- onClick={() => onExampleImageClicked(i)}
30
- />
31
- );
32
- })}
33
- </div>
34
- </div>
35
- </section>
36
- );
8
+ const ExampleImages : React.FC<ExampleImagesProps> = ({images, onExampleImageClicked}) => {
9
+ if (images.length === 0) {
10
+ return null;
11
+ }
12
+ return (
13
+ <section className="useExampleImg">
14
+ You can also try one of these pictures:
15
+ <div className="exampleImages">
16
+ <div className="exImagesWrap">
17
+ {images.map((i) => (<img key={i} src={i} alt="" onClick={() => onExampleImageClicked(i)}/>))}
18
+ </div>
19
+ </div>
20
+ </section>
21
+ );
37
22
  };
38
23
 
39
24
  export default ExampleImages;
@@ -1,94 +1,55 @@
1
- import { useAppDispatch, useAppSelector } from "Store/Store";
2
- import {
3
- feedbackNegative,
4
- feedbackSubmitPositive,
5
- NyrisFeedbackState,
6
- } from "Store/Nyris";
7
- import React from "react";
8
- import { Animate } from "react-move";
9
- import { feedbackSuccessEpic } from "services/Feedback";
1
+ import React from 'react';
2
+ import {NyrisFeedbackState} from "../actions/nyrisAppActions";
3
+ import {Animate} from "react-move";
4
+
10
5
  interface FeedbackProps {
11
- feedbackState: NyrisFeedbackState;
12
- onClose?: () => void;
6
+ feedbackState: NyrisFeedbackState,
7
+ onPositiveFeedback?: () => void,
8
+ onNegativeFeedback?: () => void,
9
+ onClose?: () => void
13
10
  }
14
11
 
15
- const Feedback: React.FC<FeedbackProps> = ({ feedbackState, onClose }) => {
16
- let inner: any = null;
17
- const state = useAppSelector((state) => state);
18
- const dispatch = useAppDispatch();
19
- const onPositiveFeedback = (data: boolean) => {
20
- feedbackSuccessEpic(state, data);
21
- if (data) {
22
- dispatch(feedbackSubmitPositive(""));
23
- } else {
24
- dispatch(feedbackNegative(""));
12
+ const Feedback: React.FC<FeedbackProps> = ({feedbackState, onPositiveFeedback, onNegativeFeedback, onClose}) => {
13
+ let inner : any = null;
14
+ switch (feedbackState) {
15
+ case 'question':
16
+ inner =
17
+ <div className="feedbackForm">
18
+ <p>Did you find what you were looking for?</p>
19
+ <div className="btn primary positiveFeedback" onClick={onPositiveFeedback}>Yes</div>
20
+ <div className="btn secondary negativeFeedback" onClick={onNegativeFeedback}>No</div>
21
+ </div>;
22
+ break;
23
+ case 'positive':
24
+ inner = <div className="feedbackMessage positive">Great, thank you for your feedback!</div>
25
+ break;
26
+ case 'negative':
27
+ inner =
28
+ <div className="feedbackMessage negative">We saved your request so we can track down the
29
+ issue and improve the search experience. Your Feedback helps us to make our service
30
+ better for everyone,
31
+ thank you!<br/>
32
+ <div className="btn dismiss" onClick={onClose}>Dismiss</div>
33
+ </div>;
34
+ break;
35
+ default:
36
+ inner = null;
37
+ break;
25
38
  }
26
- };
27
-
28
- switch (feedbackState) {
29
- case "question":
30
- inner = (
31
- <div className="feedbackForm">
32
- <p>Did you find what you were looking for?</p>
33
- <div
34
- className="btn primary positiveFeedback"
35
- onClick={() => onPositiveFeedback(true)}
36
- >
37
- Yes
38
- </div>
39
- <div
40
- className="btn secondary negativeFeedback"
41
- onClick={() => onPositiveFeedback(false)}
42
- >
43
- No
44
- </div>
45
- </div>
46
- );
47
- break;
48
- case "positive":
49
- inner = (
50
- <div className="feedbackMessage positive">
51
- Great, thank you for your feedback!
52
- </div>
53
- );
54
- break;
55
- case "negative":
56
- inner = (
57
- <div className="feedbackMessage negative">
58
- We saved your request so we can track down the issue and improve the
59
- search experience. Your Feedback helps us to make our service better
60
- for everyone, thank you!
61
- <br />
62
- <div className="btn dismiss" onClick={onClose}>
63
- Dismiss
64
- </div>
65
- </div>
66
- );
67
- break;
68
- default:
69
- inner = null;
70
- break;
71
- }
72
- return (
73
- <Animate
74
- show={feedbackState !== "hidden"}
75
- start={{ y: 100, opacity: 0 }}
76
- enter={{ y: [0], opacity: [1] }}
77
- leave={{ y: [100], opacity: [0] }}
78
- >
79
- {({ y, opacity }) => (
80
- <section
81
- className="feedback"
82
- style={{ transform: `translateY(${y}%)`, opacity }}
83
- >
84
- <div className="wrapper">{inner}</div>
85
- <div className="closeFeedbackContainer">
86
- <div className="closeFeedback" onClick={onClose} />
87
- </div>
88
- </section>
89
- )}
90
- </Animate>
91
- );
39
+ return (
40
+ <Animate show={feedbackState !== 'hidden'} start={{y: 100, opacity: 0}} enter={{y: [0], opacity: [1]}} leave={{y: [100], opacity: [0] }}>
41
+ {({y, opacity}) =>
42
+ <section className="feedback" style={{transform: `translateY(${y}%)`, opacity }}>
43
+ <div className="wrapper">
44
+ {inner}
45
+ </div>
46
+ <div className="closeFeedbackContainer">
47
+ <div className="closeFeedback" onClick={onClose}/>
48
+ </div>
49
+ </section>
50
+ }
51
+ </Animate>
52
+ );
92
53
  };
93
54
 
94
55
  export default Feedback;
@@ -0,0 +1,69 @@
1
+
2
+ import React, { useState } from 'react';
3
+ import {Filter} from '../../../nyris-api/index';
4
+ import { addToSelectedFilters, removeFromSelectedFilters } from '../actions/searchActions';
5
+ import { useDispatch } from 'react-redux';
6
+ import { RiLayoutGridLine} from 'react-icons/ri';
7
+
8
+ interface FilterProps {
9
+ filter : Filter
10
+ }
11
+
12
+
13
+
14
+ const FiltersList : React.FC<FilterProps> = ({filter})=>{
15
+ const [checked, setChecked] = useState<string[]>([]);
16
+ const dispatch = useDispatch();
17
+
18
+ const onFilterChanged=(e: React.ChangeEvent<HTMLInputElement>,value:string) =>{
19
+ var updatedList = [...checked];
20
+ console.log(e.target.checked);
21
+ if (e.target.checked) {
22
+ if(filter.key)
23
+ dispatch(addToSelectedFilters(filter.key , value));
24
+ updatedList = [...checked, value];
25
+ } else {
26
+ if(filter.key)
27
+ dispatch(removeFromSelectedFilters(filter.key, value));
28
+ updatedList.splice(checked.indexOf(value), 1);
29
+ }
30
+ setChecked(updatedList);
31
+ console.log(updatedList);
32
+ }
33
+
34
+ if(filter && filter.values && filter.key && filter.values.length > 0){
35
+
36
+ return (
37
+ <div>
38
+ <div className='item'>
39
+ <RiLayoutGridLine className="sidebar-icon" />
40
+ <span className="sidebar-text"> {filter.key}</span>
41
+ </div>
42
+
43
+ <div className='item'>
44
+ <div className="list-container">
45
+
46
+ {filter.values.slice(0, 6).map((item, index) => (
47
+ <div key={index}>
48
+ <input value={item} type="checkbox" onChange={(e)=>onFilterChanged(e,item)} />
49
+
50
+ <label className='itemLabel'>{item}</label>
51
+ </div>
52
+ ))}
53
+ </div>
54
+ </div>
55
+
56
+ </div>
57
+
58
+ );
59
+ }
60
+ else{
61
+ return (
62
+ <div>
63
+ No filter to load
64
+ </div>
65
+ );
66
+ }
67
+ }
68
+
69
+ export default FiltersList;
@@ -1,35 +1,20 @@
1
1
  import React from "react";
2
2
 
3
- function HeaderComponent(): JSX.Element {
4
- return (
5
- <div className="navWrap">
6
- <div className="wrapper" style={{ padding: 0 }}>
7
- <section id="branding" />
8
- <div id="menu" className="menuWrap" role="navigation">
9
- <ul>
10
- <li>
11
- <a
12
- href="https://nyris.io/imprint/#privacy"
13
- target="_blank"
14
- rel="noopener noreferrer"
15
- >
16
- Privacy Policy
17
- </a>
18
- </li>
19
- <li>
20
- <a
21
- href="https://nyris.io/"
22
- target="_blank"
23
- rel="noopener noreferrer"
24
- >
25
- Visit our Website
26
- </a>
27
- </li>
28
- </ul>
29
- </div>
30
- </div>
31
- </div>
32
- );
33
- }
3
+ const Header = () =>{
4
+ return (
5
+ <div id="header">
6
+
7
+ <section id="branding"></section>
8
+ <div id="menu" className="menuWrap" role="navigation" >
9
+ <ul>
10
+ <li><a href="https://nyris.io/imprint/#privacy" target="_blank"
11
+ rel="noopener noreferrer">Privacy Policy</a></li>
12
+ <li><a href="https://nyris.io/" target="_blank" rel="noopener noreferrer">Visit our
13
+ Website</a></li>
14
+ </ul>
15
+ </div>
16
+ </div>
17
+ );
34
18
 
35
- export default HeaderComponent;
19
+ }
20
+ export default Header;