neo.mjs 6.17.2 → 6.18.1

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 (323) hide show
  1. package/apps/ServiceWorker.mjs +3 -5
  2. package/apps/colors/README.md +8 -0
  3. package/apps/colors/app.mjs +6 -0
  4. package/apps/colors/childapps/widget/app.mjs +7 -0
  5. package/apps/colors/childapps/widget/index.html +11 -0
  6. package/apps/colors/childapps/widget/neo-config.json +10 -0
  7. package/apps/colors/childapps/widget/view/Viewport.mjs +19 -0
  8. package/apps/colors/index.html +11 -0
  9. package/apps/colors/model/Color.mjs +43 -0
  10. package/apps/colors/neo-config.json +10 -0
  11. package/apps/colors/remotes-api.json +13 -0
  12. package/apps/colors/store/Colors.mjs +24 -0
  13. package/apps/colors/view/BarChartComponent.mjs +64 -0
  14. package/apps/colors/view/HeaderToolbar.mjs +95 -0
  15. package/apps/colors/view/PieChartComponent.mjs +58 -0
  16. package/apps/colors/view/TableContainer.mjs +91 -0
  17. package/apps/colors/view/Viewport.mjs +57 -0
  18. package/apps/colors/view/ViewportController.mjs +277 -0
  19. package/apps/colors/view/ViewportModel.mjs +53 -0
  20. package/apps/portal/Util.mjs +11 -0
  21. package/apps/portal/childapps/preview/neo-config.json +2 -2
  22. package/apps/portal/neo-config.json +2 -1
  23. package/apps/portal/remotes-api.json +13 -0
  24. package/apps/portal/view/HeaderToolbar.mjs +1 -1
  25. package/apps/portal/view/ViewportController.mjs +89 -1
  26. package/apps/portal/view/home/MainContainer.mjs +34 -6
  27. package/apps/portal/view/home/parts/AfterMath.mjs +1 -1
  28. package/apps/portal/view/home/parts/Colors.mjs +98 -0
  29. package/apps/portal/view/home/parts/Helix.mjs +114 -0
  30. package/apps/portal/view/home/parts/HelloWorld.mjs +6 -3
  31. package/apps/portal/view/home/parts/How.mjs +66 -0
  32. package/apps/portal/view/home/parts/MainNeo.mjs +4 -3
  33. package/apps/portal/view/learn/LivePreview.mjs +56 -15
  34. package/apps/portal/view/learn/MainContainerController.mjs +10 -90
  35. package/apps/realworld/api/Article.mjs +1 -3
  36. package/apps/realworld/api/Favorite.mjs +1 -3
  37. package/apps/realworld/api/Profile.mjs +1 -3
  38. package/apps/realworld/api/Tag.mjs +1 -3
  39. package/apps/realworld/api/User.mjs +1 -3
  40. package/apps/realworld2/api/Article.mjs +1 -3
  41. package/apps/realworld2/api/Favorite.mjs +1 -3
  42. package/apps/realworld2/api/Profile.mjs +1 -3
  43. package/apps/realworld2/api/Tag.mjs +1 -3
  44. package/apps/realworld2/api/User.mjs +1 -3
  45. package/apps/realworld2/view/article/HelixContainer.mjs +5 -5
  46. package/buildScripts/webpack/json/myApps.template.json +1 -0
  47. package/docs/app/view/MainContainer.mjs +5 -0
  48. package/docs/app/view/classdetails/MembersList.mjs +1 -1
  49. package/examples/ServiceWorker.mjs +3 -5
  50. package/examples/component/helix/Viewport.mjs +309 -0
  51. package/examples/component/helix/ViewportController.mjs +122 -0
  52. package/examples/component/helix/app.mjs +2 -2
  53. package/examples/component/helix/neo-config.json +0 -1
  54. package/examples/component/multiWindowHelix/Viewport.mjs +11 -3
  55. package/examples/component/multiWindowHelix/ViewportController.mjs +21 -9
  56. package/examples/component/multiWindowHelix/neo-config.json +0 -1
  57. package/examples/fieldWithPrefix/MainContainer.mjs +1 -6
  58. package/examples/list/animate/MainContainerController.mjs +1 -1
  59. package/examples/worker/task/MyTasks.mjs +1 -3
  60. package/package.json +2 -2
  61. package/resources/data/deck/learnneo/pages/Events.md +15 -9
  62. package/resources/data/deck/learnneo/pages/GuideEvents.md +254 -0
  63. package/resources/data/deck/learnneo/pages/WhyNeo-Speed.md +1 -1
  64. package/resources/images/logo/neo_logo_primary.svg +6 -0
  65. package/resources/images/logo/neo_logo_text_primary.svg +5 -0
  66. package/resources/scss/src/apps/colors/BarChartComponent.scss +3 -0
  67. package/resources/scss/src/apps/colors/HeaderToolbar.scss +11 -0
  68. package/resources/scss/src/apps/colors/PieChartComponent.scss +3 -0
  69. package/resources/scss/src/apps/colors/TableContainer.scss +64 -0
  70. package/resources/scss/src/apps/colors/Viewport.scss +9 -0
  71. package/resources/scss/src/apps/portal/HeaderToolbar.scss +142 -124
  72. package/resources/scss/src/apps/portal/home/MainContainer.scss +9 -22
  73. package/resources/scss/src/apps/portal/home/parts/MainNeo.scss +22 -0
  74. package/resources/scss/src/apps/portal/home/preview/PageCodeContainer.scss +1 -1
  75. package/resources/scss/src/examples/component/multiWindowHelix/Viewport.scss +3 -0
  76. package/resources/scss/src/form/field/CheckBox.scss +1 -0
  77. package/resources/scss/src/tab/header/Button.scss +2 -1
  78. package/resources/scss/theme-dark/Global.scss +8 -0
  79. package/resources/scss/theme-dark/button/Base.scss +1 -1
  80. package/resources/scss/theme-dark/tab/header/Button.scss +1 -0
  81. package/resources/scss/theme-light/Global.scss +8 -0
  82. package/resources/scss/theme-light/button/Base.scss +1 -1
  83. package/resources/scss/theme-light/tab/header/Button.scss +1 -0
  84. package/resources/scss/theme-neo-light/Global.scss +53 -53
  85. package/resources/scss/theme-neo-light/button/Base.scss +3 -4
  86. package/resources/scss/theme-neo-light/tab/header/Button.scss +6 -8
  87. package/src/DefaultConfig.mjs +2 -2
  88. package/src/Fetch.mjs +1 -3
  89. package/src/Main.mjs +13 -11
  90. package/src/MicroLoader.mjs +2 -2
  91. package/src/Neo.mjs +27 -26
  92. package/src/Xhr.mjs +1 -3
  93. package/src/button/Base.mjs +6 -4
  94. package/src/button/Split.mjs +10 -9
  95. package/src/calendar/view/EditEventContainer.mjs +13 -12
  96. package/src/calendar/view/MainContainer.mjs +40 -40
  97. package/src/calendar/view/MainContainerModel.mjs +5 -5
  98. package/src/calendar/view/SettingsContainer.mjs +11 -11
  99. package/src/calendar/view/YearComponent.mjs +73 -75
  100. package/src/calendar/view/calendars/ColorsList.mjs +2 -2
  101. package/src/calendar/view/calendars/EditContainer.mjs +2 -2
  102. package/src/calendar/view/calendars/List.mjs +12 -13
  103. package/src/calendar/view/month/Component.mjs +72 -73
  104. package/src/calendar/view/settings/GeneralContainer.mjs +5 -5
  105. package/src/calendar/view/settings/MonthContainer.mjs +5 -5
  106. package/src/calendar/view/settings/WeekContainer.mjs +6 -6
  107. package/src/calendar/view/settings/YearContainer.mjs +4 -4
  108. package/src/calendar/view/week/Component.mjs +47 -57
  109. package/src/calendar/view/week/EventDragZone.mjs +43 -50
  110. package/src/calendar/view/week/TimeAxisComponent.mjs +21 -21
  111. package/src/calendar/view/week/plugin/DragDrop.mjs +53 -45
  112. package/src/calendar/view/week/plugin/EventResizable.mjs +8 -3
  113. package/src/collection/Base.mjs +15 -22
  114. package/src/collection/Filter.mjs +4 -9
  115. package/src/collection/Sorter.mjs +6 -7
  116. package/src/component/Base.mjs +73 -41
  117. package/src/component/Canvas.mjs +9 -9
  118. package/src/component/Carousel.mjs +31 -33
  119. package/src/component/Chip.mjs +9 -9
  120. package/src/component/Circle.mjs +84 -91
  121. package/src/component/Clock.mjs +8 -8
  122. package/src/component/DateSelector.mjs +14 -15
  123. package/src/component/Gallery.mjs +82 -80
  124. package/src/component/Helix.mjs +131 -126
  125. package/src/component/Iframe.mjs +1 -1
  126. package/src/component/Label.mjs +1 -1
  127. package/src/component/Legend.mjs +3 -3
  128. package/src/component/Process.mjs +39 -37
  129. package/src/component/Splitter.mjs +9 -11
  130. package/src/component/StatusBadge.mjs +2 -3
  131. package/src/component/Timer.mjs +62 -68
  132. package/src/component/Toast.mjs +11 -11
  133. package/src/component/Video.mjs +7 -8
  134. package/src/component/mwc/Button.mjs +10 -10
  135. package/src/component/mwc/TextField.mjs +17 -17
  136. package/src/component/wrapper/AmChart.mjs +5 -5
  137. package/src/component/wrapper/CesiumJS.mjs +11 -17
  138. package/src/component/wrapper/GoogleMaps.mjs +58 -35
  139. package/src/component/wrapper/MapboxGL.mjs +112 -79
  140. package/src/container/Accordion.mjs +18 -20
  141. package/src/container/AccordionItem.mjs +12 -11
  142. package/src/container/Base.mjs +24 -23
  143. package/src/container/Panel.mjs +9 -9
  144. package/src/controller/Base.mjs +12 -14
  145. package/src/controller/Component.mjs +60 -66
  146. package/src/core/Base.mjs +5 -8
  147. package/src/core/IdGenerator.mjs +1 -3
  148. package/src/core/Observable.mjs +40 -24
  149. package/src/core/Util.mjs +5 -5
  150. package/src/data/Model.mjs +3 -3
  151. package/src/data/RecordFactory.mjs +3 -6
  152. package/src/data/Store.mjs +34 -34
  153. package/src/data/connection/Fetch.mjs +3 -3
  154. package/src/data/connection/WebSocket.mjs +21 -25
  155. package/src/data/connection/Xhr.mjs +31 -28
  156. package/src/date/DayViewComponent.mjs +1 -1
  157. package/src/date/SelectorContainer.mjs +2 -2
  158. package/src/dialog/Base.mjs +27 -25
  159. package/src/dialog/header/Toolbar.mjs +5 -4
  160. package/src/draggable/DragProxyComponent.mjs +7 -4
  161. package/src/draggable/DragZone.mjs +30 -30
  162. package/src/draggable/DropZone.mjs +7 -7
  163. package/src/draggable/list/DragZone.mjs +18 -18
  164. package/src/draggable/tab/header/toolbar/SortZone.mjs +7 -7
  165. package/src/draggable/toolbar/DragZone.mjs +15 -15
  166. package/src/draggable/toolbar/SortZone.mjs +30 -31
  167. package/src/draggable/tree/DragZone.mjs +9 -9
  168. package/src/filter/BooleanContainer.mjs +3 -3
  169. package/src/filter/NumberContainer.mjs +5 -5
  170. package/src/filter/ToggleOperatorsButton.mjs +5 -5
  171. package/src/form/Fieldset.mjs +26 -26
  172. package/src/form/field/Base.mjs +1 -1
  173. package/src/form/field/CheckBox.mjs +15 -16
  174. package/src/form/field/Color.mjs +13 -15
  175. package/src/form/field/ComboBox.mjs +16 -24
  176. package/src/form/field/Country.mjs +1 -1
  177. package/src/form/field/Date.mjs +3 -4
  178. package/src/form/field/Display.mjs +1 -1
  179. package/src/form/field/Email.mjs +2 -2
  180. package/src/form/field/Number.mjs +51 -56
  181. package/src/form/field/Picker.mjs +2 -2
  182. package/src/form/field/Radio.mjs +1 -1
  183. package/src/form/field/Range.mjs +7 -6
  184. package/src/form/field/Text.mjs +29 -36
  185. package/src/form/field/TextArea.mjs +9 -9
  186. package/src/form/field/Time.mjs +30 -30
  187. package/src/form/field/trigger/Base.mjs +19 -13
  188. package/src/form/field/trigger/Clear.mjs +13 -13
  189. package/src/form/field/trigger/CopyToClipboard.mjs +7 -7
  190. package/src/form/field/trigger/Picker.mjs +2 -2
  191. package/src/form/field/trigger/SpinDown.mjs +1 -1
  192. package/src/form/field/trigger/SpinUp.mjs +1 -1
  193. package/src/form/field/trigger/SpinUpDown.mjs +3 -3
  194. package/src/form/field/trigger/Time.mjs +3 -3
  195. package/src/grid/Container.mjs +33 -33
  196. package/src/grid/View.mjs +20 -22
  197. package/src/grid/header/Button.mjs +12 -12
  198. package/src/grid/header/Toolbar.mjs +4 -4
  199. package/src/layout/Base.mjs +5 -4
  200. package/src/layout/Card.mjs +15 -16
  201. package/src/layout/Fit.mjs +22 -8
  202. package/src/layout/Flexbox.mjs +30 -29
  203. package/src/layout/Form.mjs +15 -15
  204. package/src/layout/Grid.mjs +2 -2
  205. package/src/layout/HBox.mjs +3 -2
  206. package/src/layout/VBox.mjs +3 -2
  207. package/src/list/Base.mjs +45 -47
  208. package/src/list/Chip.mjs +4 -4
  209. package/src/list/Circle.mjs +3 -3
  210. package/src/list/Color.mjs +4 -4
  211. package/src/list/Component.mjs +10 -10
  212. package/src/list/plugin/Animate.mjs +18 -13
  213. package/src/main/DomAccess.mjs +92 -56
  214. package/src/main/DomEvents.mjs +38 -39
  215. package/src/main/addon/AmCharts.mjs +37 -37
  216. package/src/main/addon/AnalyticsByGoogle.mjs +4 -4
  217. package/src/main/addon/CesiumJS.mjs +8 -8
  218. package/src/main/addon/CloneNode.mjs +5 -5
  219. package/src/main/addon/Cookie.mjs +4 -4
  220. package/src/main/addon/DragDrop.mjs +35 -34
  221. package/src/main/addon/GoogleMaps.mjs +19 -19
  222. package/src/main/addon/IntersectionObserver.mjs +20 -1
  223. package/src/main/addon/LocalStorage.mjs +3 -3
  224. package/src/main/addon/MapboxGL.mjs +40 -41
  225. package/src/main/addon/MonacoEditor.mjs +5 -5
  226. package/src/main/addon/Mwc.mjs +6 -6
  227. package/src/main/addon/Navigator.mjs +35 -39
  228. package/src/main/addon/Popover.mjs +5 -6
  229. package/src/main/addon/PrefixField.mjs +1 -2
  230. package/src/main/addon/ServiceWorker.mjs +9 -9
  231. package/src/main/addon/Siesta.mjs +3 -2
  232. package/src/main/addon/Stylesheet.mjs +37 -37
  233. package/src/main/addon/WebComponent.mjs +2 -3
  234. package/src/main/addon/WindowPosition.mjs +18 -18
  235. package/src/main/draggable/sensor/Base.mjs +2 -2
  236. package/src/main/draggable/sensor/Mouse.mjs +15 -15
  237. package/src/main/draggable/sensor/Touch.mjs +24 -23
  238. package/src/main/mixin/DeltaUpdates.mjs +10 -12
  239. package/src/main/mixin/TouchDomEvents.mjs +6 -6
  240. package/src/manager/Base.mjs +4 -4
  241. package/src/manager/Component.mjs +41 -41
  242. package/src/manager/DomEvent.mjs +41 -44
  243. package/src/manager/Focus.mjs +14 -16
  244. package/src/manager/Instance.mjs +2 -4
  245. package/src/manager/Store.mjs +4 -8
  246. package/src/manager/Task.mjs +20 -22
  247. package/src/manager/Toast.mjs +14 -16
  248. package/src/manager/rpc/Api.mjs +1 -3
  249. package/src/manager/rpc/Message.mjs +16 -18
  250. package/src/menu/List.mjs +16 -16
  251. package/src/menu/Panel.mjs +4 -4
  252. package/src/model/Component.mjs +16 -14
  253. package/src/plugin/Base.mjs +2 -0
  254. package/src/plugin/Popover.mjs +1 -1
  255. package/src/plugin/PrefixField.mjs +35 -45
  256. package/src/plugin/Resizable.mjs +86 -101
  257. package/src/plugin/Responsive.mjs +1 -1
  258. package/src/remotes/Api.mjs +4 -6
  259. package/src/selection/CircleModel.mjs +12 -16
  260. package/src/selection/DateSelectorModel.mjs +21 -23
  261. package/src/selection/GalleryModel.mjs +49 -63
  262. package/src/selection/HelixModel.mjs +35 -41
  263. package/src/selection/ListModel.mjs +9 -14
  264. package/src/selection/Model.mjs +31 -31
  265. package/src/selection/TreeAccordionModel.mjs +74 -80
  266. package/src/selection/grid/CellColumnModel.mjs +10 -10
  267. package/src/selection/grid/CellColumnRowModel.mjs +10 -10
  268. package/src/selection/grid/CellModel.mjs +26 -28
  269. package/src/selection/grid/CellRowModel.mjs +24 -24
  270. package/src/selection/grid/ColumnModel.mjs +16 -20
  271. package/src/selection/grid/RowModel.mjs +27 -29
  272. package/src/selection/menu/ListModel.mjs +2 -2
  273. package/src/selection/table/CellColumnModel.mjs +12 -12
  274. package/src/selection/table/CellColumnRowModel.mjs +12 -12
  275. package/src/selection/table/CellModel.mjs +26 -29
  276. package/src/selection/table/CellRowModel.mjs +19 -19
  277. package/src/selection/table/ColumnModel.mjs +18 -22
  278. package/src/selection/table/RowModel.mjs +27 -29
  279. package/src/sitemap/Component.mjs +20 -20
  280. package/src/sitemap/Store.mjs +1 -1
  281. package/src/tab/Container.mjs +15 -15
  282. package/src/tab/Strip.mjs +1 -1
  283. package/src/tab/header/Toolbar.mjs +4 -4
  284. package/src/table/Container.mjs +8 -10
  285. package/src/table/View.mjs +29 -34
  286. package/src/table/header/Button.mjs +18 -18
  287. package/src/table/header/Toolbar.mjs +2 -2
  288. package/src/toolbar/Base.mjs +14 -14
  289. package/src/toolbar/Breadcrumb.mjs +11 -11
  290. package/src/toolbar/Paging.mjs +18 -18
  291. package/src/tooltip/Base.mjs +20 -22
  292. package/src/tree/Accordion.mjs +69 -75
  293. package/src/tree/List.mjs +22 -25
  294. package/src/util/Array.mjs +19 -18
  295. package/src/util/ClassSystem.mjs +9 -9
  296. package/src/util/Css.mjs +2 -2
  297. package/src/util/Date.mjs +9 -9
  298. package/src/util/Function.mjs +2 -2
  299. package/src/util/HashHistory.mjs +3 -5
  300. package/src/util/KeyNavigation.mjs +17 -17
  301. package/src/util/Logger.mjs +9 -9
  302. package/src/util/Matrix.mjs +19 -19
  303. package/src/util/String.mjs +9 -9
  304. package/src/util/Style.mjs +11 -11
  305. package/src/util/VDom.mjs +12 -14
  306. package/src/util/VNode.mjs +29 -29
  307. package/src/vdom/Helper.mjs +84 -93
  308. package/src/vdom/VNode.mjs +1 -1
  309. package/src/worker/App.mjs +19 -16
  310. package/src/worker/Base.mjs +14 -15
  311. package/src/worker/Canvas.mjs +1 -3
  312. package/src/worker/Data.mjs +4 -8
  313. package/src/worker/Manager.mjs +27 -32
  314. package/src/worker/Message.mjs +1 -1
  315. package/src/worker/ServiceBase.mjs +38 -42
  316. package/src/worker/Task.mjs +1 -3
  317. package/src/worker/VDom.mjs +2 -4
  318. package/src/worker/mixin/RemoteMethodAccess.mjs +5 -6
  319. package/apps/portal/view/home/parts/CoolStuff.mjs +0 -82
  320. package/examples/component/helix/MainContainer.mjs +0 -340
  321. /package/resources/images/{Neo_Logo_Blue.svg → logo/neo_logo_secondary.svg} +0 -0
  322. /package/resources/images/{Neo_Logo_Text.svg → logo/neo_logo_text_secondary.svg} +0 -0
  323. /package/resources/images/{Neo_Logo_White.svg → logo/neo_logo_white.svg} +0 -0
@@ -20,9 +20,9 @@ class ServiceWorker extends ServiceBase {
20
20
  */
21
21
  singleton: true,
22
22
  /**
23
- * @member {String} version='6.17.2'
23
+ * @member {String} version='6.18.1'
24
24
  */
25
- version: '6.17.2'
25
+ version: '6.18.1'
26
26
  }
27
27
 
28
28
  /**
@@ -32,6 +32,4 @@ class ServiceWorker extends ServiceBase {
32
32
  workerId = 'service'
33
33
  }
34
34
 
35
- let instance = Neo.setupClass(ServiceWorker);
36
-
37
- export default instance;
35
+ export default Neo.setupClass(ServiceWorker);
@@ -0,0 +1,8 @@
1
+ # Colors Dashboard
2
+
3
+ We are using a version where Max Rahder deployed the backend to:
4
+ https://still-castle-38841.herokuapp.com/
5
+
6
+ To see the full app including the backend code (using the Neo.mjs core),
7
+ please take a look at:
8
+ https://github.com/neomjs/multiwindowcolors
@@ -0,0 +1,6 @@
1
+ import Viewport from './view/Viewport.mjs';
2
+
3
+ export const onStart = () => Neo.app({
4
+ mainView: Viewport,
5
+ name : 'Colors'
6
+ });
@@ -0,0 +1,7 @@
1
+ import Viewport from './view/Viewport.mjs';
2
+
3
+ export const onStart = () => Neo.app({
4
+ appThemeFolder: 'colors',
5
+ mainView : Viewport,
6
+ name : 'ColorsWidget'
7
+ });
@@ -0,0 +1,11 @@
1
+ <!DOCTYPE HTML>
2
+ <html>
3
+ <head>
4
+ <meta name="viewport" content="width=device-width, initial-scale=1">
5
+ <meta charset="UTF-8">
6
+ <title>Dashboard Widget</title>
7
+ </head>
8
+ <body>
9
+ <script src="../../../../src/MicroLoader.mjs" type="module"></script>
10
+ </body>
11
+ </html>
@@ -0,0 +1,10 @@
1
+ {
2
+ "appPath" : "apps/colors/childapps/widget/app.mjs",
3
+ "basePath" : "../../../../",
4
+ "environment" : "development",
5
+ "loadApplicationDelay": 100,
6
+ "mainPath" : "./Main.mjs",
7
+ "mainThreadAddons" : ["AmCharts", "DragDrop", "Navigator", "Stylesheet"],
8
+ "themes" : ["neo-theme-dark"],
9
+ "useSharedWorkers" : true
10
+ }
@@ -0,0 +1,19 @@
1
+ import BaseViewport from '../../../../../src/container/Viewport.mjs';
2
+
3
+ /**
4
+ * @class ColorsWidget.view.Viewport
5
+ * @extends Neo.container.Viewport
6
+ */
7
+ class Viewport extends BaseViewport {
8
+ static config = {
9
+ /**
10
+ * @member {String} className='ColorsWidget.view.Viewport'
11
+ * @protected
12
+ */
13
+ className: 'Widget.view.Viewport'
14
+ }
15
+ }
16
+
17
+ Neo.setupClass(Viewport);
18
+
19
+ export default Viewport;
@@ -0,0 +1,11 @@
1
+ <!DOCTYPE HTML>
2
+ <html>
3
+ <head>
4
+ <meta name="viewport" content="width=device-width, initial-scale=1">
5
+ <meta charset="UTF-8">
6
+ <title>Colors Dashboard</title>
7
+ </head>
8
+ <body>
9
+ <script src="../../src/MicroLoader.mjs" type="module"></script>
10
+ </body>
11
+ </html>
@@ -0,0 +1,43 @@
1
+ import Model from '../../../src/data/Model.mjs';
2
+
3
+ /**
4
+ * @class Colors.model.Color
5
+ * @extends Neo.data.Model
6
+ */
7
+ class Color extends Model {
8
+ static config = {
9
+ /**
10
+ * @member {String} className='Colors.model.Color'
11
+ * @protected
12
+ */
13
+ className: 'Colors.model.Color'
14
+ }
15
+
16
+ /**
17
+ * @param {Object} config
18
+ */
19
+ construct(config) {
20
+ super.construct(config);
21
+
22
+ let startCharCode = 'A'.charCodeAt(0),
23
+ i = 0,
24
+ len = 26, // amount of chars inside the ISO basic latin alphabet
25
+ fields = [{
26
+ name: 'id',
27
+ type: 'String'
28
+ }];
29
+
30
+ for (; i < len; i++) {
31
+ fields.push({
32
+ name: 'column' + String.fromCharCode(startCharCode + i),
33
+ type: 'String'
34
+ })
35
+ }
36
+
37
+ this.fields = fields
38
+ }
39
+ }
40
+
41
+ Neo.setupClass(Color);
42
+
43
+ export default Color;
@@ -0,0 +1,10 @@
1
+ {
2
+ "appPath" : "apps/colors/app.mjs",
3
+ "basePath" : "../../",
4
+ "environment" : "development",
5
+ "mainPath" : "./Main.mjs",
6
+ "mainThreadAddons": ["AmCharts", "DragDrop", "Navigator", "Stylesheet"],
7
+ "remotesApiUrl" : "remotes-api.json",
8
+ "themes" : ["neo-theme-dark"],
9
+ "useSharedWorkers": true
10
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "namespace": "Colors.backend",
3
+ "type" : "websocket",
4
+ "url" : "https://still-castle-38841.herokuapp.com/",
5
+
6
+ "services": {
7
+ "ColorService": {
8
+ "methods": {
9
+ "read": {"params": [{"type": "Object"}]}
10
+ }
11
+ }
12
+ }
13
+ }
@@ -0,0 +1,24 @@
1
+ import ColorModel from '../model/Color.mjs';
2
+ import Store from '../../../src/data/Store.mjs';
3
+
4
+ /**
5
+ * @class Colors.store.Colors
6
+ * @extends Neo.data.Store
7
+ */
8
+ class Colors extends Store {
9
+ static config = {
10
+ /**
11
+ * @member {String} className='Colors.store.Colors'
12
+ * @protected
13
+ */
14
+ className: 'Colors.store.Colors',
15
+ /**
16
+ * @member {Neo.data.Model} model=ColorModel
17
+ */
18
+ model: ColorModel
19
+ }
20
+ }
21
+
22
+ Neo.setupClass(Colors);
23
+
24
+ export default Colors;
@@ -0,0 +1,64 @@
1
+ import AmChartComponent from '../../../src/component/wrapper/AmChart.mjs';
2
+
3
+ /**
4
+ * @class Colors.view.BarChartComponent
5
+ * @extends Neo.component.wrapper.AmChart
6
+ */
7
+ class BarChartComponent extends AmChartComponent {
8
+ static config = {
9
+ /**
10
+ * @member {String} className='Colors.view.BarChartComponent'
11
+ * @protected
12
+ */
13
+ className: 'Colors.view.BarChartComponent',
14
+ /**
15
+ * @member {String[]} baseCls=['colors-bar-chart']
16
+ */
17
+ baseCls: ['colors-bar-chart'],
18
+ /**
19
+ * @member {String} chartType='PieChart'
20
+ */
21
+ chartType: 'XYChart',
22
+ /**
23
+ * @member {Object} chartConfig
24
+ */
25
+ chartConfig: {
26
+ series: [{
27
+ type: 'ColumnSeries',
28
+
29
+ columns: {
30
+ propertyFields: {
31
+ fill : 'color',
32
+ stroke: 'color'
33
+ }
34
+ },
35
+
36
+ dataFields: {
37
+ categoryX: 'color',
38
+ valueY : 'count'
39
+ }
40
+ }],
41
+ xAxes: [{
42
+ type: 'CategoryAxis',
43
+
44
+ dataFields: {
45
+ category: 'color',
46
+ title: {
47
+ text: 'Colors'
48
+ }
49
+ }
50
+ }],
51
+ yAxes: [{
52
+ type: 'ValueAxis',
53
+
54
+ title: {
55
+ text: 'Occurrences in table cells'
56
+ }
57
+ }]
58
+ }
59
+ }
60
+ }
61
+
62
+ Neo.setupClass(BarChartComponent);
63
+
64
+ export default BarChartComponent;
@@ -0,0 +1,95 @@
1
+ import CheckBox from '../../../src/form/field/CheckBox.mjs';
2
+ import ComboBox from '../../../src/form/field/ComboBox.mjs';
3
+ import NumberField from '../../../src/form/field/Number.mjs';
4
+ import Toolbar from '../../../src/toolbar/Base.mjs';
5
+
6
+ /**
7
+ * @class Colors.view.HeaderToolbar
8
+ * @extends Neo.toolbar.Base
9
+ */
10
+ class HeaderToolbar extends Toolbar {
11
+ static config = {
12
+ /**
13
+ * @member {String} className='Colors.view.HeaderToolbar'
14
+ * @protected
15
+ */
16
+ className: 'Colors.view.HeaderToolbar',
17
+ /**
18
+ * @member {String[]} cls=['portal-header-toolbar']
19
+ */
20
+ cls: ['portal-header-toolbar'],
21
+ /**
22
+ * @member {Object} layout={ntype:'hbox',align:'stretch',wrap:'wrap'}
23
+ */
24
+ layout: {ntype: 'hbox', align: 'center', pack: 'start', wrap: 'wrap'},
25
+ /**
26
+ * @member {Object[]} items
27
+ */
28
+ items: [{
29
+ bind : {disabled: data => data.isUpdating},
30
+ handler: 'onStartButtonClick',
31
+ text : 'Start'
32
+ }, {
33
+ bind : {disabled: data => !data.isUpdating},
34
+ handler: 'onStopButtonClick',
35
+ text : 'Stop'
36
+ }, {
37
+ module : NumberField,
38
+ bind : {value: data => data.amountColors},
39
+ clearable : false,
40
+ editable : false,
41
+ labelPosition: 'inline',
42
+ labelText : 'Amount Colors',
43
+ listeners : {change: 'onChangeAmountColors'},
44
+ maxValue : 10,
45
+ minValue : 3,
46
+ width : 120
47
+ }, {
48
+ module : ComboBox,
49
+ bind : {value: data => String(data.amountColumns)},
50
+ clearable : false,
51
+ editable : false,
52
+ labelPosition: 'inline',
53
+ labelText : 'Amount Columns',
54
+ listeners : {change: 'onChangeAmountColumns'},
55
+ store : ['5', '10', '15', '20', '26'],
56
+ width : 120
57
+ }, {
58
+ module : ComboBox,
59
+ bind : {value: data => String(data.amountRows)},
60
+ clearable : false,
61
+ editable : false,
62
+ labelPosition: 'inline',
63
+ labelText : 'Amount Rows',
64
+ listeners : {change: 'onChangeAmountRows'},
65
+ store : ['5', '10', '15', '20'],
66
+ width : 120
67
+ }, '->', {
68
+ handler : 'onDetachTableButtonClick',
69
+ iconCls : 'fas fa-table',
70
+ reference: 'detach-table-button',
71
+ text : 'Table'
72
+ }, {
73
+ handler : 'onDetachPieChartButtonClick',
74
+ iconCls : 'fas fa-chart-pie',
75
+ reference: 'detach-pie-chart-button',
76
+ text : 'Pie Chart'
77
+ }, {
78
+ handler : 'onDetachBarChartButtonClick',
79
+ iconCls : 'fas fa-chart-column',
80
+ reference: 'detach-bar-chart-button',
81
+ text : 'Bar Chart'
82
+ }, {
83
+ module : CheckBox,
84
+ bind : {checked: data => data.openWidgetsAsPopups},
85
+ hideLabel : true,
86
+ listeners : {change: 'onChangeOpenWidgetsAsPopups'},
87
+ showValueLabel: true,
88
+ valueLabelText: 'Popups'
89
+ }]
90
+ }
91
+ }
92
+
93
+ Neo.setupClass(HeaderToolbar);
94
+
95
+ export default HeaderToolbar;
@@ -0,0 +1,58 @@
1
+ import AmChartComponent from '../../../src/component/wrapper/AmChart.mjs';
2
+
3
+ /**
4
+ * @class Colors.view.PieChartComponent
5
+ * @extends Neo.component.wrapper.AmChart
6
+ */
7
+ class PieChartComponent extends AmChartComponent {
8
+ static config = {
9
+ /**
10
+ * @member {String} className='Colors.view.PieChartComponent'
11
+ * @protected
12
+ */
13
+ className: 'Colors.view.PieChartComponent',
14
+ /**
15
+ * @member {String[]} baseCls=['colors-pie-chart']
16
+ */
17
+ baseCls: ['colors-pie-chart'],
18
+ /**
19
+ * @member {String} chartType='PieChart'
20
+ */
21
+ chartType: 'PieChart',
22
+ /**
23
+ * @member {Object} _vdom
24
+ */
25
+ /**
26
+ * @member {Object} chartConfig
27
+ */
28
+ chartConfig: {
29
+ series: [{
30
+ type: 'PieSeries',
31
+
32
+ colors: {
33
+ list: [
34
+ '#1c60a0',
35
+ '#206db6',
36
+ '#247acb',
37
+ '#2e87da',
38
+ '#4493de',
39
+ '#59a0e2',
40
+ '#6face6',
41
+ '#85b9ea',
42
+ '#9bc5ed',
43
+ '#b0d2f1'
44
+ ]
45
+ },
46
+
47
+ dataFields: {
48
+ category: 'color',
49
+ value : 'count'
50
+ }
51
+ }]
52
+ }
53
+ }
54
+ }
55
+
56
+ Neo.setupClass(PieChartComponent);
57
+
58
+ export default PieChartComponent;
@@ -0,0 +1,91 @@
1
+ import Container from '../../../src/table/Container.mjs';
2
+
3
+ /**
4
+ * @class Colors.view.TableContainer
5
+ * @extends Neo.table.Container
6
+ */
7
+ class TableContainer extends Container {
8
+ static config = {
9
+ /**
10
+ * @member {String} className='Colors.view.TableContainer'
11
+ * @protected
12
+ */
13
+ className: 'Colors.view.TableContainer',
14
+ /**
15
+ * @member {Number|null} amountColumns_=null
16
+ */
17
+ amountColumns_: null,
18
+ /**
19
+ * @member {Number|null} amountRows_=null
20
+ */
21
+ amountRows_: null,
22
+ /**
23
+ * @member {Object} bind
24
+ */
25
+ bind: {
26
+ amountColumns: data => data.amountColumns,
27
+ amountRows : data => data.amountRows,
28
+ store : 'stores.colors'
29
+ },
30
+ /**
31
+ * @member {String[]} cls=['colors-table-container']
32
+ */
33
+ cls: ['colors-table-container'],
34
+ /**
35
+ * @member {Object} columnDefaults
36
+ */
37
+ columnDefaults: {
38
+ renderer(data) {
39
+ return {cls: ['color-' + data.value], html: ' '}
40
+ }
41
+ }
42
+ }
43
+
44
+ /**
45
+ * Triggered after the amountColumns config got changed
46
+ * @param {Number|null} value
47
+ * @param {Number|null} oldValue
48
+ * @protected
49
+ */
50
+ afterSetAmountColumns(value, oldValue) {
51
+ if (Neo.isNumber(value)) {
52
+ let startCharCode = 'A'.charCodeAt(0),
53
+ i = 0,
54
+ columns = [{
55
+ cls : ['neo-index-column', 'neo-table-header-button'],
56
+ dataField: 'index',
57
+ dock : 'left',
58
+ minWidth : 40,
59
+ text : '#',
60
+ renderer : data => ({cls: ['neo-index-column', 'neo-table-cell'], html: data.index + 1}),
61
+ width : 40
62
+ }],
63
+ currentChar;
64
+
65
+ for (; i < value; i++) {
66
+ currentChar = String.fromCharCode(startCharCode + i);
67
+
68
+ columns.push({
69
+ dataField: 'column' + currentChar,
70
+ text : currentChar
71
+ })
72
+ }
73
+
74
+ this.columns = columns
75
+ }
76
+ }
77
+
78
+ /**
79
+ * Triggered after the amountRows config got changed
80
+ * @param {Number|null} value
81
+ * @param {Number|null} oldValue
82
+ * @protected
83
+ */
84
+ afterSetAmountRows(value, oldValue) {
85
+ this.store?.clear()
86
+ }
87
+ }
88
+
89
+ Neo.setupClass(TableContainer);
90
+
91
+ export default TableContainer;
@@ -0,0 +1,57 @@
1
+ import BaseViewport from '../../../src/container/Viewport.mjs';
2
+ import BarChartComponent from './BarChartComponent.mjs';
3
+ import HeaderToolbar from './HeaderToolbar.mjs';
4
+ import PieChartComponent from './PieChartComponent.mjs';
5
+ import TableContainer from './TableContainer.mjs';
6
+ import ViewportController from './ViewportController.mjs';
7
+ import ViewportModel from './ViewportModel.mjs';
8
+
9
+ /**
10
+ * @class Colors.view.Viewport
11
+ * @extends Neo.container.Viewport
12
+ */
13
+ class Viewport extends BaseViewport {
14
+ static config = {
15
+ /**
16
+ * @member {String} className='Colors.view.Viewport'
17
+ * @protected
18
+ */
19
+ className: 'Colors.view.Viewport',
20
+ /**
21
+ * @member {String[]} cls=['colors-viewport']
22
+ */
23
+ cls: ['colors-viewport'],
24
+ /**
25
+ * @member {Neo.controller.Component} controller=ViewportController
26
+ */
27
+ controller: ViewportController,
28
+ /**
29
+ * @member {Object} layout
30
+ */
31
+ layout: {ntype: 'vbox', align: 'stretch'},
32
+ /**
33
+ * @member {Object[]} items
34
+ */
35
+ items: [{
36
+ module: HeaderToolbar,
37
+ flex : 'none'
38
+ }, {
39
+ module : TableContainer,
40
+ reference: 'table'
41
+ }, {
42
+ module : PieChartComponent,
43
+ reference: 'pie-chart'
44
+ }, {
45
+ module : BarChartComponent,
46
+ reference: 'bar-chart'
47
+ }],
48
+ /**
49
+ * @member {Neo.model.Component} model=ViewportModel
50
+ */
51
+ model: ViewportModel
52
+ }
53
+ }
54
+
55
+ Neo.setupClass(Viewport);
56
+
57
+ export default Viewport;