Skip to content

Commit 650a859

Browse files
committed
Move scroll on parent to help Mithril re-render
1 parent 0138397 commit 650a859

5 files changed

Lines changed: 51 additions & 44 deletions

File tree

QualityControl/public/common/header.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,9 @@ import { filtersPanel } from './filters/filterViews.js';
3333
export default (model) => {
3434
const specific = headerSpecific(model) || {};
3535
const { centerCol, rightCol, subRow } = specific;
36-
36+
const id = `qcg-header-${model.page}`;
3737
return h('.flex-col', [
38-
h('.flex-row.p2.items-center', { id: 'qcg-header' }, [
38+
h('.flex-row.p2.items-center', { id, key: id }, [
3939
commonHeader(model),
4040
centerCol || h('.flex-grow'),
4141
rightCol || h('.w-25'),

QualityControl/public/object/objectTreePage.js

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,14 @@ import { resizableDivider } from '../common/resizableDivider.js';
2828
* @returns {vnode} - virtual node element
2929
*/
3030
export default (model) => {
31-
const { object, router } = model;
31+
const { object } = model;
3232
const { leftPanelWidthPercent } = object;
33-
return h('.h-100.flex-column', { key: `${router.params.page}` }, [
34-
h('.flex-row.flex-grow', [
35-
h('.scroll-y.flex-column', {
33+
return h('.flex-column.h-100', {
34+
key: 'object-tree-page-container',
35+
}, [
36+
h('.flex-row', { style: 'flex-grow: 1; height: 0;' }, [
37+
h('.flex-column.scroll-y', {
38+
key: 'object-tree-scroll-container',
3639
style: {
3740
width: object.selected ? `${leftPanelWidthPercent}%` : '100%',
3841
},

QualityControl/public/pages/aboutView/AboutViewPage.js

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,20 @@ import { h } from '/js/src/index.js';
1919

2020
/**
2121
* Shows a page to view framework information
22-
* @param {Model} model - root model of the application
22+
* @param {AboutViewModel} aboutViewModel - root model of the application
2323
* @returns {vnode} - virtual node element
2424
*/
25-
export default (model) => h(
26-
'.p2.absolute-fill.text-center',
27-
servicesLoadingPanel(model.aboutViewModel.services[ServiceStatus.LOADING]),
28-
servicesResolvedPanel(model.aboutViewModel.services[ServiceStatus.ERROR], 'error'),
29-
servicesResolvedPanel(model.aboutViewModel.services[ServiceStatus.SUCCESS], 'success'),
30-
);
25+
export default (aboutViewModel) => {
26+
const { services } = aboutViewModel;
27+
return [
28+
h(
29+
'.flex-column.flex-grow.p2.text-center',
30+
{ key: 'about-view-page' },
31+
[
32+
servicesLoadingPanel(services[ServiceStatus.LOADING]),
33+
servicesResolvedPanel(services[ServiceStatus.ERROR], 'error'),
34+
servicesResolvedPanel(services[ServiceStatus.SUCCESS], 'success'),
35+
],
36+
),
37+
];
38+
};

QualityControl/public/pages/layoutListView/LayoutListPage.js

Lines changed: 20 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -23,33 +23,25 @@ import { filtersPanelPopover } from './filtersPanelPopover.js';
2323
* @import LayoutListModel from './model/LayoutListModel.js';
2424
*/
2525
export default (layoutListModel) => [
26-
h('.scroll-y.absolute-fill', [
27-
h(
28-
'.flex-row.text-right.m2',
29-
[
30-
filtersPanelPopover(layoutListModel.searchFilterModel),
31-
h(
32-
'input.form-control.form-inline.mh1.w-33',
33-
{
34-
placeholder: 'Layout name',
35-
type: 'text',
36-
value: layoutListModel.searchFilterModel.searchInput,
37-
oninput: (e) => {
38-
layoutListModel.search(e.target.value);
39-
},
40-
},
41-
),
42-
h('.p1', [
43-
h(
44-
'.mh1',
45-
layoutListModel.searchFilterModel.stringifyActiveFiltersFriendly(),
46-
),
47-
]),
48-
],
49-
),
50-
51-
h('', {
52-
style: 'display: flex; flex-direction: column',
53-
}, Array.from(layoutListModel.folders.values()).map(FolderComponent)),
26+
h('.flex-row.text-right.m2', [
27+
filtersPanelPopover(layoutListModel.searchFilterModel),
28+
h('input.form-control.form-inline.mh1.w-33', {
29+
placeholder: 'Layout name',
30+
type: 'text',
31+
value: layoutListModel.searchFilterModel.searchInput,
32+
oninput: (e) => {
33+
layoutListModel.search(e.target.value);
34+
},
35+
}),
36+
h('.p1', [
37+
h(
38+
'.mh1',
39+
layoutListModel.searchFilterModel.stringifyActiveFiltersFriendly(),
40+
),
41+
]),
5442
]),
43+
44+
h('', {
45+
key: 'layout-list-page-folders-container',
46+
}, Array.from(layoutListModel.folders.values()).map(FolderComponent)),
5547
];

QualityControl/public/view.js

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,13 @@ export default (model) => [
3636
model.isImportVisible && layoutImportModal(model),
3737
h('.absolute-fill.flex-column', [
3838
h('header.shadow-level2.level2', [header(model)]),
39-
h('.flex-grow.flex-row.outline-gray', [
39+
h('.flex-row.flex-grow', {
40+
key: 'main-content',
41+
}, [
4042
sidebar(model),
41-
h('section.outline-gray.flex-grow.relative', page(model)),
43+
h('section', {
44+
style: 'flex-grow: 1; position: relative; overflow: auto;',
45+
}, page(model)),
4246
]),
4347
]),
4448
notification(model.notification),
@@ -55,7 +59,7 @@ function page(model) {
5559
case 'layoutShow': return layoutViewPage(model);
5660
case 'objectTree': return objectTreePage(model);
5761
case 'objectView': return ObjectViewPage(model.objectViewModel);
58-
case 'about': return AboutViewPage(model);
62+
case 'about': return AboutViewPage(model.aboutViewModel);
5963

6064
// Should be seen only at the first start when the view is not yet really to be shown (data loading)
6165
default: return null;

0 commit comments

Comments
 (0)