neo.mjs 8.0.0-alpha.2 → 8.0.0-beta.2
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/.github/CODING_GUIDELINES.md +5 -5
- package/.github/CONCEPT.md +10 -10
- package/apps/ServiceWorker.mjs +2 -2
- package/apps/colors/view/Viewport.mjs +9 -9
- package/apps/colors/view/ViewportController.mjs +13 -13
- package/apps/colors/view/{ViewportModel.mjs → ViewportStateProvider.mjs} +8 -8
- package/apps/covid/view/MainContainer.mjs +22 -22
- package/apps/covid/view/MainContainerController.mjs +8 -10
- package/apps/covid/view/{MainContainerModel.mjs → MainContainerStateProvider.mjs} +7 -7
- package/apps/covid/view/TableContainer.mjs +2 -2
- package/apps/covid/view/TableContainerController.mjs +1 -1
- package/apps/form/view/FormContainerController.mjs +2 -2
- package/apps/form/view/SideNavList.mjs +3 -3
- package/apps/form/view/Viewport.mjs +7 -7
- package/apps/form/view/ViewportController.mjs +4 -4
- package/apps/form/view/{ViewportModel.mjs → ViewportStateProvider.mjs} +8 -8
- package/apps/portal/index.html +1 -1
- package/apps/portal/resources/data/examples_devmode.json +3 -3
- package/apps/portal/resources/data/examples_dist_dev.json +3 -3
- package/apps/portal/resources/data/examples_dist_prod.json +3 -3
- package/apps/portal/view/Viewport.mjs +12 -12
- package/apps/portal/view/ViewportController.mjs +2 -2
- package/apps/portal/view/ViewportStateProvider.mjs +27 -0
- package/apps/portal/view/examples/TabContainer.mjs +11 -11
- package/apps/portal/view/home/FooterContainer.mjs +1 -1
- package/apps/portal/view/home/parts/MainNeo.mjs +6 -2
- package/apps/portal/view/learn/ContentComponent.mjs +2 -2
- package/apps/portal/view/learn/ContentTreeList.mjs +1 -1
- package/apps/portal/view/learn/MainContainer.mjs +9 -9
- package/apps/portal/view/learn/MainContainerController.mjs +12 -12
- package/apps/portal/view/learn/{MainContainerModel.mjs → MainContainerStateProvider.mjs} +7 -7
- package/apps/portal/view/learn/PageSectionsList.mjs +1 -1
- package/apps/realworld/view/article/CreateComponent.mjs +1 -1
- package/apps/realworld2/view/HomeContainer.mjs +7 -7
- package/apps/sharedcovid/view/GalleryContainer.mjs +2 -2
- package/apps/sharedcovid/view/HelixContainer.mjs +2 -2
- package/apps/sharedcovid/view/MainContainer.mjs +25 -25
- package/apps/sharedcovid/view/MainContainerController.mjs +10 -11
- package/apps/sharedcovid/view/{MainContainerModel.mjs → MainContainerStateProvider.mjs} +8 -8
- package/apps/sharedcovid/view/TableContainer.mjs +2 -2
- package/apps/sharedcovid/view/TableContainerController.mjs +1 -1
- package/apps/sharedcovid/view/mapboxGl/Container.mjs +2 -2
- package/buildScripts/createApp.mjs +2 -2
- package/buildScripts/createClass.mjs +15 -17
- package/buildScripts/createComponent.mjs +4 -4
- package/docs/app/view/ContentTabContainer.mjs +1 -1
- package/docs/app/view/MainContainer.mjs +3 -3
- package/docs/app/view/MainContainerController.mjs +15 -15
- package/examples/ServiceWorker.mjs +2 -2
- package/examples/component/mwc/buttons/MainContainer.mjs +2 -2
- package/examples/component/mwc/textFields/MainContainer.mjs +2 -2
- package/examples/fields/MainContainer.mjs +197 -228
- package/examples/preloadingAssets/view/MainContainer.mjs +2 -2
- package/examples/{model → stateProvider}/advanced/MainContainer.mjs +12 -12
- package/examples/{model → stateProvider}/advanced/MainContainerController.mjs +10 -10
- package/examples/stateProvider/advanced/app.mjs +6 -0
- package/examples/{model/dialog → stateProvider/advanced}/index.html +1 -1
- package/examples/{model/inline → stateProvider/advanced}/neo-config.json +1 -1
- package/examples/{model → stateProvider}/dialog/EditUserDialog.mjs +3 -3
- package/examples/{model → stateProvider}/dialog/EditUserDialogController.mjs +5 -5
- package/examples/{model → stateProvider}/dialog/MainContainer.mjs +7 -7
- package/examples/{model → stateProvider}/dialog/MainContainerController.mjs +5 -5
- package/examples/{model → stateProvider}/dialog/app.mjs +1 -1
- package/examples/{model/multiWindow2 → stateProvider/dialog}/index.html +1 -1
- package/examples/{model → stateProvider}/dialog/neo-config.json +1 -1
- package/examples/{model → stateProvider}/extendedClass/MainContainer.mjs +13 -13
- package/examples/{model/inline → stateProvider/extendedClass}/MainContainerController.mjs +7 -7
- package/examples/stateProvider/extendedClass/MainContainerStateProvider.mjs +24 -0
- package/examples/stateProvider/extendedClass/app.mjs +6 -0
- package/examples/stateProvider/extendedClass/index.html +11 -0
- package/examples/stateProvider/extendedClass/neo-config.json +7 -0
- package/examples/{model → stateProvider}/inline/MainContainer.mjs +10 -10
- package/examples/{model/extendedClass → stateProvider/inline}/MainContainerController.mjs +7 -7
- package/examples/{model/extendedClass → stateProvider/inline}/app.mjs +1 -1
- package/examples/{model/extendedClass → stateProvider/inline}/index.html +1 -1
- package/examples/{model/extendedClass → stateProvider/inline}/neo-config.json +1 -1
- package/examples/{model/inlineNoModel → stateProvider/inlineNoStateProvider}/MainContainer.mjs +4 -4
- package/examples/{model/inlineNoModel → stateProvider/inlineNoStateProvider}/MainContainerController.mjs +3 -3
- package/examples/stateProvider/inlineNoStateProvider/README.md +8 -0
- package/examples/stateProvider/inlineNoStateProvider/app.mjs +6 -0
- package/examples/{model/inline → stateProvider/inlineNoStateProvider}/index.html +1 -1
- package/examples/stateProvider/inlineNoStateProvider/neo-config.json +7 -0
- package/examples/{model → stateProvider}/multiWindow/EditUserDialog.mjs +3 -3
- package/examples/{model → stateProvider}/multiWindow/EditUserDialogController.mjs +5 -5
- package/examples/{model → stateProvider}/multiWindow/MainContainer.mjs +3 -3
- package/examples/{model → stateProvider}/multiWindow/MainContainerController.mjs +6 -6
- package/examples/{model → stateProvider}/multiWindow/Viewport.mjs +3 -3
- package/examples/{model → stateProvider}/multiWindow/ViewportController.mjs +14 -14
- package/examples/{model/multiWindow2 → stateProvider/multiWindow}/app.mjs +1 -1
- package/examples/{model/advanced → stateProvider/multiWindow}/index.html +1 -1
- package/examples/{model → stateProvider}/multiWindow/neo-config.json +1 -1
- package/examples/{model → stateProvider}/multiWindow2/Viewport.mjs +3 -3
- package/examples/{model/multiWindow → stateProvider/multiWindow2}/app.mjs +1 -1
- package/examples/{model/multiWindow → stateProvider/multiWindow2}/index.html +1 -1
- package/examples/{model → stateProvider}/multiWindow2/neo-config.json +1 -1
- package/examples/{model → stateProvider}/nestedData/MainContainer.mjs +9 -9
- package/examples/{model → stateProvider}/nestedData/MainContainerController.mjs +7 -7
- package/examples/stateProvider/nestedData/app.mjs +6 -0
- package/examples/stateProvider/nestedData/index.html +11 -0
- package/examples/stateProvider/nestedData/neo-config.json +7 -0
- package/examples/{model → stateProvider}/table/MainContainer.mjs +8 -8
- package/examples/stateProvider/table/MainContainerStateProvider.mjs +24 -0
- package/examples/{model → stateProvider}/table/MainModel.mjs +2 -2
- package/examples/{model → stateProvider}/table/MainStore.mjs +2 -2
- package/examples/{model/advanced → stateProvider/table}/app.mjs +1 -1
- package/examples/{model/advanced → stateProvider/table}/neo-config.json +1 -1
- package/examples/{model → stateProvider}/twoWay/MainContainer.mjs +9 -9
- package/examples/{model/inline → stateProvider/twoWay}/app.mjs +1 -1
- package/examples/stateProvider/twoWay/index.html +11 -0
- package/examples/{model → stateProvider}/twoWay/neo-config.json +1 -1
- package/examples/tab/container/MainContainer.mjs +7 -9
- package/examples/table/nestedRecordFields/EditUserDialog.mjs +3 -3
- package/examples/table/nestedRecordFields/MainContainer.mjs +8 -8
- package/examples/table/nestedRecordFields/{MainContainerModel.mjs → MainContainerStateProvider.mjs} +10 -10
- package/examples/tabs/MainContainer.mjs +3 -3
- package/examples/tabs/MainContainer2.mjs +4 -4
- package/examples/toolbar/paging/view/MainContainer.mjs +7 -7
- package/examples/toolbar/paging/view/{MainContainerModel.mjs → MainContainerStateProvider.mjs} +8 -8
- package/examples/treeAccordion/MainContainer.mjs +2 -2
- package/examples/videoMove/MainContainer.mjs +14 -7
- package/examples/viewport/MainContainer.mjs +3 -3
- package/package.json +6 -6
- package/resources/data/deck/learnneo/pages/benefits/FormsEngine.md +13 -13
- package/resources/data/deck/learnneo/pages/guides/{ViewModels.md → StateProviders.md} +52 -58
- package/resources/data/deck/learnneo/tree.json +46 -46
- package/resources/data/deck/training/pages/2022-12-27T21-55-23-144Z.md +2 -2
- package/resources/data/deck/training/pages/2022-12-28T17-11-34-653Z.md +6 -6
- package/resources/data/deck/training/pages/2022-12-29T18-36-08-226Z.md +2 -2
- package/resources/data/deck/training/pages/2022-12-29T18-36-56-893Z.md +2 -2
- package/resources/data/deck/training/pages/2022-12-29T20-37-08-919Z.md +2 -2
- package/resources/data/deck/training/pages/2022-12-29T20-37-20-344Z.md +2 -2
- package/resources/data/deck/training/pages/2023-01-01T21-11-58-025Z.md +3 -3
- package/resources/data/deck/training/pages/2023-01-16T20-24-09-690Z.md +4 -4
- package/resources/data/deck/training/pages/2023-02-05T17-44-53-815Z.md +3 -3
- package/resources/data/deck/training/pages/2023-02-05T17-45-40-114Z.md +1 -1
- package/src/DefaultConfig.mjs +2 -2
- package/src/button/Base.mjs +7 -7
- package/src/calendar/view/EditEventContainer.mjs +3 -3
- package/src/calendar/view/MainContainer.mjs +27 -27
- package/src/calendar/view/{MainContainerModel.mjs → MainContainerStateProvider.mjs} +7 -7
- package/src/calendar/view/SettingsContainer.mjs +13 -28
- package/src/calendar/view/YearComponent.mjs +5 -5
- package/src/calendar/view/calendars/ColorsList.mjs +5 -0
- package/src/calendar/view/calendars/EditContainer.mjs +1 -1
- package/src/calendar/view/calendars/List.mjs +1 -1
- package/src/calendar/view/month/Component.mjs +6 -6
- package/src/calendar/view/settings/GeneralContainer.mjs +2 -2
- package/src/calendar/view/week/Component.mjs +10 -10
- package/src/calendar/view/week/EventDragZone.mjs +1 -1
- package/src/code/LivePreview.mjs +10 -10
- package/src/component/Base.mjs +123 -105
- package/src/container/Base.mjs +4 -4
- package/src/controller/Component.mjs +29 -12
- package/src/core/Base.mjs +0 -1
- package/src/core/Compare.mjs +128 -83
- package/src/date/SelectorContainer.mjs +12 -12
- package/src/date/{SelectorContainerModel.mjs → SelectorContainerStateProvider.mjs} +7 -7
- package/src/form/field/Text.mjs +1 -1
- package/src/form/field/Time.mjs +5 -3
- package/src/form/field/trigger/Time.mjs +2 -1
- package/src/layout/Base.mjs +6 -6
- package/src/list/Base.mjs +7 -1
- package/src/list/Color.mjs +3 -3
- package/src/main/DomEvents.mjs +1 -1
- package/src/main/DomUtils.mjs +39 -36
- package/src/{model/Component.mjs → state/Provider.mjs} +67 -69
- package/src/tab/Container.mjs +3 -5
- package/src/toolbar/Base.mjs +26 -8
- package/src/tree/Accordion.mjs +15 -13
- package/src/util/VNode.mjs +6 -8
- package/src/worker/App.mjs +2 -2
- package/apps/portal/view/ViewportModel.mjs +0 -27
- package/examples/model/extendedClass/MainContainerModel.mjs +0 -24
- package/examples/model/inlineNoModel/README.md +0 -8
- package/examples/model/inlineNoModel/app.mjs +0 -6
- package/examples/model/inlineNoModel/index.html +0 -11
- package/examples/model/inlineNoModel/neo-config.json +0 -7
- package/examples/model/nestedData/app.mjs +0 -6
- package/examples/model/nestedData/index.html +0 -11
- package/examples/model/nestedData/neo-config.json +0 -7
- package/examples/model/table/MainContainerModel.mjs +0 -24
- package/examples/model/table/app.mjs +0 -6
- package/examples/model/table/neo-config.json +0 -7
- package/examples/model/twoWay/app.mjs +0 -6
- package/examples/model/twoWay/index.html +0 -11
- /package/examples/{model → stateProvider}/table/index.html +0 -0
@@ -272,16 +272,16 @@ items: [HeaderContainer, {
|
|
272
272
|
style : {margin: '10px', marginTop: 0},
|
273
273
|
|
274
274
|
items: [{
|
275
|
-
module
|
276
|
-
reference
|
277
|
-
|
275
|
+
module : () => import('./TableContainer.mjs'),
|
276
|
+
reference: 'table-container',
|
277
|
+
header : {
|
278
278
|
iconCls: 'fa fa-table',
|
279
279
|
route : 'mainview=table',
|
280
280
|
text : 'Table'
|
281
281
|
}
|
282
282
|
}, {
|
283
|
-
module
|
284
|
-
|
283
|
+
module: () => import('./mapboxGl/Container.mjs'),
|
284
|
+
header: {
|
285
285
|
iconCls: 'fa fa-globe-americas',
|
286
286
|
route : 'mainview=mapboxglmap',
|
287
287
|
text : 'Mapbox GL Map'
|
package/.github/CONCEPT.md
CHANGED
@@ -368,7 +368,7 @@ items: [HeaderContainer, {
|
|
368
368
|
listeners: {leafItemClick: 'onApiListLeafClick'},
|
369
369
|
reference: 'api-treelist',
|
370
370
|
|
371
|
-
|
371
|
+
header: {
|
372
372
|
iconCls: 'fa fa-code',
|
373
373
|
text : 'API'
|
374
374
|
}
|
@@ -377,7 +377,7 @@ items: [HeaderContainer, {
|
|
377
377
|
listeners: {leafItemClick: 'onTutorialListLeafClick'},
|
378
378
|
reference: 'tutorials-treelist',
|
379
379
|
|
380
|
-
|
380
|
+
header: {
|
381
381
|
iconCls: 'fa fa-hands-helping',
|
382
382
|
text : 'Tutorials'
|
383
383
|
}
|
@@ -386,7 +386,7 @@ items: [HeaderContainer, {
|
|
386
386
|
listeners: {leafItemClick: 'onExamplesListLeafClick'},
|
387
387
|
reference: 'examples-treelist',
|
388
388
|
|
389
|
-
|
389
|
+
header: {
|
390
390
|
iconCls: 'fa fa-desktop',
|
391
391
|
text : 'Examples'
|
392
392
|
}
|
@@ -437,14 +437,14 @@ items: [{
|
|
437
437
|
flex : 3,
|
438
438
|
|
439
439
|
items: [{
|
440
|
-
ntype
|
441
|
-
cls
|
442
|
-
|
443
|
-
|
444
|
-
vdom
|
440
|
+
ntype : 'component',
|
441
|
+
cls : ['neo-examples-tab-component'],
|
442
|
+
header: {iconCls: 'fa fa-user-ninja', text: 'Your Feed'},
|
443
|
+
style : {padding: '20px'},
|
444
|
+
vdom : {innerHTML: 'todo'}
|
445
445
|
}, {
|
446
|
-
module
|
447
|
-
|
446
|
+
module: PreviewList,
|
447
|
+
header: {iconCls: 'fa fa-globe-europe', text: 'Global Feed'}
|
448
448
|
}]
|
449
449
|
}, {
|
450
450
|
module: TagListComponent,
|
package/apps/ServiceWorker.mjs
CHANGED
@@ -1,10 +1,10 @@
|
|
1
|
-
import BaseViewport
|
2
|
-
import BarChartComponent
|
3
|
-
import HeaderToolbar
|
4
|
-
import PieChartComponent
|
5
|
-
import TableContainer
|
6
|
-
import ViewportController
|
7
|
-
import
|
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 ViewportStateProvider from './ViewportStateProvider.mjs';
|
8
8
|
|
9
9
|
/**
|
10
10
|
* @class Colors.view.Viewport
|
@@ -46,9 +46,9 @@ class Viewport extends BaseViewport {
|
|
46
46
|
reference: 'bar-chart'
|
47
47
|
}],
|
48
48
|
/**
|
49
|
-
* @member {Neo.
|
49
|
+
* @member {Neo.state.Provider} stateProvider=ViewportStateProvider
|
50
50
|
*/
|
51
|
-
|
51
|
+
stateProvider: ViewportStateProvider
|
52
52
|
}
|
53
53
|
}
|
54
54
|
|
@@ -48,7 +48,7 @@ class ViewportController extends Controller {
|
|
48
48
|
|
49
49
|
url = `${basePath}apps/colors/childapps/widget/index.html?name=${name}`;
|
50
50
|
|
51
|
-
if (me.
|
51
|
+
if (me.getStateProvider().getData('openWidgetsAsPopups')) {
|
52
52
|
let widget = me.getReference(name),
|
53
53
|
winData = await Neo.Main.getWindowData({windowId} ),
|
54
54
|
rect = await me.component.getDomRect(widget.vdom.id), // using the vdom id to always get the top-level node
|
@@ -152,7 +152,7 @@ class ViewportController extends Controller {
|
|
152
152
|
* @param {Object} data
|
153
153
|
*/
|
154
154
|
onChangeOpenWidgetsAsPopups(data) {
|
155
|
-
this.
|
155
|
+
this.setState('openWidgetsAsPopups', data.value)
|
156
156
|
}
|
157
157
|
|
158
158
|
/**
|
@@ -206,7 +206,7 @@ class ViewportController extends Controller {
|
|
206
206
|
let me = this,
|
207
207
|
intervalTime = 1000 / 60; // assuming 60 FPS
|
208
208
|
|
209
|
-
me.
|
209
|
+
me.setState({isUpdating: true});
|
210
210
|
|
211
211
|
if (!me.intervalId) {
|
212
212
|
me.intervalId = setInterval(() => {
|
@@ -221,7 +221,7 @@ class ViewportController extends Controller {
|
|
221
221
|
onStopButtonClick(data) {
|
222
222
|
let me = this;
|
223
223
|
|
224
|
-
me.
|
224
|
+
me.setState({isUpdating: false});
|
225
225
|
|
226
226
|
if (me.intervalId) {
|
227
227
|
clearInterval(me.intervalId);
|
@@ -244,11 +244,11 @@ class ViewportController extends Controller {
|
|
244
244
|
* @param {Number|Object|null} value The new VM data property value
|
245
245
|
*/
|
246
246
|
updateDataProperty(data, name, value) {
|
247
|
-
let
|
247
|
+
let stateProvider = this.getStateProvider();
|
248
248
|
|
249
|
-
|
249
|
+
stateProvider.setData(name, value);
|
250
250
|
|
251
|
-
if (data.oldValue !== null && !
|
251
|
+
if (data.oldValue !== null && !stateProvider.getData('isUpdating')) {
|
252
252
|
this.updateWidgets()
|
253
253
|
}
|
254
254
|
}
|
@@ -265,7 +265,7 @@ class ViewportController extends Controller {
|
|
265
265
|
} else {
|
266
266
|
// Depending on the delay of the Socket Connection,
|
267
267
|
// the next data package could still contain the old settings
|
268
|
-
if (this.
|
268
|
+
if (this.getStateProvider().getData('amountRows') === records.length) {
|
269
269
|
store.data = records
|
270
270
|
}
|
271
271
|
}
|
@@ -275,13 +275,13 @@ class ViewportController extends Controller {
|
|
275
275
|
*
|
276
276
|
*/
|
277
277
|
updateWidgets() {
|
278
|
-
let me
|
279
|
-
|
278
|
+
let me = this,
|
279
|
+
stateProvider = me.getStateProvider();
|
280
280
|
|
281
281
|
Colors.backend.ColorService.read({
|
282
|
-
amountColors :
|
283
|
-
amountColumns:
|
284
|
-
amountRows :
|
282
|
+
amountColors : stateProvider.getData('amountColors'),
|
283
|
+
amountColumns: stateProvider.getData('amountColumns'),
|
284
|
+
amountRows : stateProvider.getData('amountRows')
|
285
285
|
}).then(response => {
|
286
286
|
if (!me.isDestroyed) {
|
287
287
|
let {data} = response;
|
@@ -1,17 +1,17 @@
|
|
1
|
-
import
|
2
|
-
import
|
1
|
+
import ColorsStore from '../store/Colors.mjs';
|
2
|
+
import StateProvider from '../../../src/state/Provider.mjs';
|
3
3
|
|
4
4
|
/**
|
5
|
-
* @class Colors.view.
|
6
|
-
* @extends Neo.
|
5
|
+
* @class Colors.view.ViewportStateProvider
|
6
|
+
* @extends Neo.state.Provider
|
7
7
|
*/
|
8
|
-
class
|
8
|
+
class ViewportStateProvider extends StateProvider {
|
9
9
|
static config = {
|
10
10
|
/**
|
11
|
-
* @member {String} className='Colors.view.
|
11
|
+
* @member {String} className='Colors.view.ViewportStateProvider'
|
12
12
|
* @protected
|
13
13
|
*/
|
14
|
-
className: 'Colors.view.
|
14
|
+
className: 'Colors.view.ViewportStateProvider',
|
15
15
|
/**
|
16
16
|
* @member {Object} data
|
17
17
|
*/
|
@@ -48,4 +48,4 @@ class ViewportModel extends Component {
|
|
48
48
|
}
|
49
49
|
}
|
50
50
|
|
51
|
-
export default Neo.setupClass(
|
51
|
+
export default Neo.setupClass(ViewportStateProvider);
|
@@ -1,9 +1,9 @@
|
|
1
|
-
import FooterContainer
|
2
|
-
import HeaderContainer
|
3
|
-
import MainContainerController
|
4
|
-
import
|
5
|
-
import TabContainer
|
6
|
-
import Viewport
|
1
|
+
import FooterContainer from './FooterContainer.mjs';
|
2
|
+
import HeaderContainer from './HeaderContainer.mjs';
|
3
|
+
import MainContainerController from './MainContainerController.mjs';
|
4
|
+
import MainContainerStateProvider from './MainContainerStateProvider.mjs';
|
5
|
+
import TabContainer from '../../../src/tab/Container.mjs';
|
6
|
+
import Viewport from '../../../src/container/Viewport.mjs';
|
7
7
|
|
8
8
|
/**
|
9
9
|
* @class Covid.view.MainContainer
|
@@ -36,45 +36,45 @@ class MainContainer extends Viewport {
|
|
36
36
|
style : {margin: '10px', marginTop: 0},
|
37
37
|
|
38
38
|
items: [{
|
39
|
-
module
|
40
|
-
reference
|
41
|
-
|
39
|
+
module : () => import('./TableContainer.mjs'),
|
40
|
+
reference: 'table-container',
|
41
|
+
header : {
|
42
42
|
iconCls: 'fa fa-table',
|
43
43
|
route : 'mainview=table',
|
44
44
|
text : 'Table'
|
45
45
|
}
|
46
46
|
}, {
|
47
|
-
module
|
48
|
-
|
47
|
+
module: () => import('./mapboxGl/Container.mjs'),
|
48
|
+
header: {
|
49
49
|
iconCls: 'fa fa-globe-americas',
|
50
50
|
route : 'mainview=mapboxglmap',
|
51
51
|
text : 'Mapbox GL Map'
|
52
52
|
}
|
53
53
|
}, {
|
54
|
-
module
|
55
|
-
|
54
|
+
module: () => import('./WorldMapContainer.mjs'),
|
55
|
+
header: {
|
56
56
|
iconCls: 'fa fa-globe-americas',
|
57
57
|
route : 'mainview=worldmap',
|
58
58
|
text : 'World Map'
|
59
59
|
}
|
60
60
|
}, {
|
61
|
-
module
|
62
|
-
|
61
|
+
module: () => import('./GalleryContainer.mjs'),
|
62
|
+
header: {
|
63
63
|
iconCls: 'fa fa-images',
|
64
64
|
route : 'mainview=gallery',
|
65
65
|
text : 'Gallery'
|
66
66
|
}
|
67
67
|
}, {
|
68
|
-
module
|
69
|
-
|
68
|
+
module: () => import('./HelixContainer.mjs'),
|
69
|
+
header: {
|
70
70
|
iconCls: 'fa fa-dna',
|
71
71
|
route : 'mainview=helix',
|
72
72
|
text : 'Helix'
|
73
73
|
}
|
74
74
|
}, {
|
75
|
-
module
|
76
|
-
reference
|
77
|
-
|
75
|
+
module : () => import('./AttributionComponent.mjs'),
|
76
|
+
reference: 'attribution',
|
77
|
+
header : {
|
78
78
|
iconCls: 'fa fa-copyright',
|
79
79
|
route : 'mainview=attribution',
|
80
80
|
text : 'Attribution'
|
@@ -86,9 +86,9 @@ class MainContainer extends Viewport {
|
|
86
86
|
*/
|
87
87
|
layout: {ntype: 'vbox', align: 'stretch'},
|
88
88
|
/**
|
89
|
-
* @member {Neo.
|
89
|
+
* @member {Neo.state.Provider} stateProvider=MainContainerStateProvider
|
90
90
|
*/
|
91
|
-
|
91
|
+
stateProvider: MainContainerStateProvider
|
92
92
|
}
|
93
93
|
}
|
94
94
|
|
@@ -119,16 +119,14 @@ class MainContainerController extends ComponentController {
|
|
119
119
|
applySummaryData(data) {
|
120
120
|
let me = this,
|
121
121
|
container = me.getReference('total-stats'),
|
122
|
-
vdom
|
122
|
+
vdom;
|
123
123
|
|
124
124
|
me.summaryData = data;
|
125
125
|
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
container.update();
|
126
|
+
container.items[0].vdom.cn[1].html = Util.formatNumber({value: data.cases}); container.items[0].update();
|
127
|
+
container.items[1].vdom.cn[1].html = Util.formatNumber({value: data.active}); container.items[1].update();
|
128
|
+
container.items[2].vdom.cn[1].html = Util.formatNumber({value: data.recovered}); container.items[2].update();
|
129
|
+
container.items[3].vdom.cn[1].html = Util.formatNumber({value: data.deaths}); container.items[3].update();
|
132
130
|
|
133
131
|
container = me.getReference('last-update');
|
134
132
|
vdom = container.vdom;
|
@@ -239,7 +237,7 @@ class MainContainerController extends ComponentController {
|
|
239
237
|
record = value && store.find('country', value)?.[0];
|
240
238
|
}
|
241
239
|
|
242
|
-
this.
|
240
|
+
this.setState({
|
243
241
|
country : value,
|
244
242
|
countryRecord: record || null
|
245
243
|
});
|
@@ -268,7 +266,7 @@ class MainContainerController extends ComponentController {
|
|
268
266
|
return
|
269
267
|
}
|
270
268
|
|
271
|
-
me.
|
269
|
+
me.setState({
|
272
270
|
country: country || null
|
273
271
|
});
|
274
272
|
|
@@ -290,7 +288,7 @@ class MainContainerController extends ComponentController {
|
|
290
288
|
me.mapboxglMapHasData = true;
|
291
289
|
}
|
292
290
|
|
293
|
-
countryRecord = me.
|
291
|
+
countryRecord = me.getStateProvider().data.countryRecord;
|
294
292
|
countryRecord && MainContainerController.selectMapboxGlCountry(activeView, countryRecord);
|
295
293
|
|
296
294
|
activeView.autoResize();
|
@@ -1,16 +1,16 @@
|
|
1
|
-
import
|
1
|
+
import StateProvider from '../../../src/state/Provider.mjs';
|
2
2
|
|
3
3
|
/**
|
4
|
-
* @class Covid.view.
|
5
|
-
* @extends Neo.
|
4
|
+
* @class Covid.view.MainContainerStateProvider
|
5
|
+
* @extends Neo.state.Provider
|
6
6
|
*/
|
7
|
-
class
|
7
|
+
class MainContainerStateProvider extends StateProvider {
|
8
8
|
static config = {
|
9
9
|
/**
|
10
|
-
* @member {String} className='Covid.view.
|
10
|
+
* @member {String} className='Covid.view.MainContainerStateProvider'
|
11
11
|
* @protected
|
12
12
|
*/
|
13
|
-
className: 'Covid.view.
|
13
|
+
className: 'Covid.view.MainContainerStateProvider',
|
14
14
|
/**
|
15
15
|
* @member {Object} data
|
16
16
|
*/
|
@@ -45,4 +45,4 @@ class MainContainerModel extends Component {
|
|
45
45
|
}
|
46
46
|
}
|
47
47
|
|
48
|
-
export default Neo.setupClass(
|
48
|
+
export default Neo.setupClass(MainContainerStateProvider);
|
@@ -127,7 +127,7 @@ class TableContainer extends Container {
|
|
127
127
|
reference: 'line-chart',
|
128
128
|
}],
|
129
129
|
|
130
|
-
|
130
|
+
header: {
|
131
131
|
iconCls: 'fa fa-chart-line',
|
132
132
|
text : 'Chart'
|
133
133
|
}
|
@@ -150,7 +150,7 @@ class TableContainer extends Container {
|
|
150
150
|
parentId : me.id,
|
151
151
|
reference: 'historical-data-table',
|
152
152
|
|
153
|
-
|
153
|
+
header: {
|
154
154
|
iconCls: 'fa fa-table',
|
155
155
|
text : 'Table'
|
156
156
|
},
|
@@ -97,7 +97,7 @@ class TableContainerController extends ComponentController {
|
|
97
97
|
}
|
98
98
|
|
99
99
|
// the array is sorted by date ASC
|
100
|
-
Object.assign(dataArray[0], {
|
100
|
+
dataArray[0] && Object.assign(dataArray[0], {
|
101
101
|
dailyActive : dataArray[0].active,
|
102
102
|
dailyCases : dataArray[0].cases,
|
103
103
|
dailyDeaths : dataArray[0].deaths,
|
@@ -30,14 +30,14 @@ class FormContainerController extends Component {
|
|
30
30
|
* @param {Object} data
|
31
31
|
*/
|
32
32
|
onNextPageButtonClick(data) {
|
33
|
-
this.
|
33
|
+
this.getStateProvider().data.activeIndex++;
|
34
34
|
}
|
35
35
|
|
36
36
|
/**
|
37
37
|
* @param {Object} data
|
38
38
|
*/
|
39
39
|
onPrevPageButtonClick(data) {
|
40
|
-
this.
|
40
|
+
this.getStateProvider().data.activeIndex--;
|
41
41
|
}
|
42
42
|
|
43
43
|
/**
|
@@ -64,14 +64,14 @@ class SideNavList extends List {
|
|
64
64
|
}
|
65
65
|
|
66
66
|
/**
|
67
|
-
* Saves activeIndex & activeTitle into the closest
|
67
|
+
* Saves activeIndex & activeTitle into the closest stateProvider
|
68
68
|
* @param {String[]} items
|
69
69
|
*/
|
70
70
|
onSelect(items) {
|
71
71
|
let me = this,
|
72
72
|
record = me.store.get(me.getItemRecordId(items[0]));
|
73
73
|
|
74
|
-
me.
|
74
|
+
me.setState({
|
75
75
|
activeIndex: record.cardIndex,
|
76
76
|
activeTitle: record.name
|
77
77
|
})
|
@@ -89,7 +89,7 @@ class SideNavList extends List {
|
|
89
89
|
}
|
90
90
|
});
|
91
91
|
|
92
|
-
this.
|
92
|
+
this.getStateProvider().data.maxIndex = maxIndex;
|
93
93
|
|
94
94
|
super.onStoreLoad()
|
95
95
|
}
|
@@ -1,8 +1,8 @@
|
|
1
|
-
import BaseViewport
|
2
|
-
import FormContainer
|
3
|
-
import SideNavList
|
4
|
-
import ViewportController
|
5
|
-
import
|
1
|
+
import BaseViewport from '../../../src/container/Viewport.mjs';
|
2
|
+
import FormContainer from './FormContainer.mjs';
|
3
|
+
import SideNavList from './SideNavList.mjs';
|
4
|
+
import ViewportController from './ViewportController.mjs';
|
5
|
+
import ViewportStateProvider from './ViewportStateProvider.mjs';
|
6
6
|
|
7
7
|
/**
|
8
8
|
* @class Form.view.Viewport
|
@@ -49,9 +49,9 @@ class Viewport extends BaseViewport {
|
|
49
49
|
*/
|
50
50
|
layout: {ntype: 'hbox', align: 'stretch'},
|
51
51
|
/**
|
52
|
-
* @member {Neo.
|
52
|
+
* @member {Neo.state.Provider} stateProvider=ViewportStateProvider
|
53
53
|
*/
|
54
|
-
|
54
|
+
stateProvider: ViewportStateProvider
|
55
55
|
}
|
56
56
|
}
|
57
57
|
|
@@ -32,7 +32,7 @@ class ViewportController extends Component {
|
|
32
32
|
*/
|
33
33
|
async onValidatePageButtonClick(data) {
|
34
34
|
let me = this,
|
35
|
-
activeIndex = me.
|
35
|
+
activeIndex = me.getStateProvider().data.activeIndex,
|
36
36
|
activeCard = me.getReference('pages-container').items[activeIndex],
|
37
37
|
formValues = await activeCard.getSubmitValues();
|
38
38
|
|
@@ -48,10 +48,10 @@ class ViewportController extends Component {
|
|
48
48
|
*/
|
49
49
|
async updateRecordValidityState(pageIndex=null) {
|
50
50
|
let me = this,
|
51
|
-
|
51
|
+
stateProvider = me.getStateProvider(),
|
52
52
|
pagesContainer = me.getReference('pages-container'),
|
53
53
|
sideNav = me.getReference('side-nav'),
|
54
|
-
store =
|
54
|
+
store = stateProvider.getStore('sideNav'),
|
55
55
|
i = 0,
|
56
56
|
len = pagesContainer.items.length,
|
57
57
|
formState, listIndex, page;
|
@@ -63,7 +63,7 @@ class ViewportController extends Component {
|
|
63
63
|
|
64
64
|
for (; i < len; i++) {
|
65
65
|
page = pagesContainer.items[i];
|
66
|
-
listIndex = sideNav.
|
66
|
+
listIndex = sideNav.getSelectedIndex(i);
|
67
67
|
formState = await page.getFormState();
|
68
68
|
|
69
69
|
store.getAt(listIndex).formState = formState
|
@@ -1,17 +1,17 @@
|
|
1
|
-
import
|
2
|
-
import
|
1
|
+
import SideNavStore from '../store/SideNav.mjs'
|
2
|
+
import StateProvider from '../../../src/state/Provider.mjs';
|
3
3
|
|
4
4
|
/**
|
5
|
-
* @class Form.view.
|
6
|
-
* @extends Neo.
|
5
|
+
* @class Form.view.ViewportStateProvider
|
6
|
+
* @extends Neo.state.Provider
|
7
7
|
*/
|
8
|
-
class
|
8
|
+
class ViewportStateProvider extends StateProvider {
|
9
9
|
static config = {
|
10
10
|
/**
|
11
|
-
* @member {String} className='Form.view.
|
11
|
+
* @member {String} className='Form.view.ViewportStateProvider'
|
12
12
|
* @protected
|
13
13
|
*/
|
14
|
-
className: 'Form.view.
|
14
|
+
className: 'Form.view.ViewportStateProvider',
|
15
15
|
/**
|
16
16
|
* @member {Object} data
|
17
17
|
*/
|
@@ -90,4 +90,4 @@ class ViewportModel extends Component {
|
|
90
90
|
}
|
91
91
|
}
|
92
92
|
|
93
|
-
export default Neo.setupClass(
|
93
|
+
export default Neo.setupClass(ViewportStateProvider);
|
package/apps/portal/index.html
CHANGED
@@ -53,9 +53,9 @@
|
|
53
53
|
}, {
|
54
54
|
"id" : 15,
|
55
55
|
"image" : "devmode/model-component-example.png",
|
56
|
-
"name" : "
|
57
|
-
"sourceUrl": "examples/
|
58
|
-
"url" : "examples/
|
56
|
+
"name" : "State Provider Example",
|
57
|
+
"sourceUrl": "examples/stateProvider/advanced",
|
58
|
+
"url" : "examples/stateProvider/advanced/index.html"
|
59
59
|
}, {
|
60
60
|
"id" : 14,
|
61
61
|
"image" : "devmode/dragdrop.png",
|
@@ -53,9 +53,9 @@
|
|
53
53
|
}, {
|
54
54
|
"id" : 14,
|
55
55
|
"image" : "devmode/model-component-example.png",
|
56
|
-
"name" : "
|
57
|
-
"sourceUrl": "examples/
|
58
|
-
"url" : "dist/development/examples/
|
56
|
+
"name" : "State Provider Example",
|
57
|
+
"sourceUrl": "examples/stateProvider/advanced",
|
58
|
+
"url" : "dist/development/examples/stateProvider/advanced/index.html"
|
59
59
|
}, {
|
60
60
|
"id" : 13,
|
61
61
|
"image" : "devmode/dragdrop.png",
|
@@ -53,9 +53,9 @@
|
|
53
53
|
}, {
|
54
54
|
"id" : 14,
|
55
55
|
"image" : "devmode/model-component-example.png",
|
56
|
-
"name" : "
|
57
|
-
"sourceUrl": "examples/
|
58
|
-
"url" : "dist/production/examples/
|
56
|
+
"name" : "State Provider Example",
|
57
|
+
"sourceUrl": "examples/stateProvider/advanced",
|
58
|
+
"url" : "dist/production/examples/stateProvider/advanced/index.html"
|
59
59
|
}, {
|
60
60
|
"id" : 13,
|
61
61
|
"image" : "devmode/dragdrop.png",
|