diff --git a/client/web/compose/src/components/PageBlocks/Configurator.vue b/client/web/compose/src/components/PageBlocks/Configurator.vue index 65d682d6d..e924d7942 100644 --- a/client/web/compose/src/components/PageBlocks/Configurator.vue +++ b/client/web/compose/src/components/PageBlocks/Configurator.vue @@ -95,10 +95,23 @@ + + + {{ $t('general.refresh.enabled') }} + + +
diff --git a/client/web/compose/src/components/PageBlocks/Wrap/Plain.vue b/client/web/compose/src/components/PageBlocks/Wrap/Plain.vue index 7a9827f6e..3e831a53f 100644 --- a/client/web/compose/src/components/PageBlocks/Wrap/Plain.vue +++ b/client/web/compose/src/components/PageBlocks/Wrap/Plain.vue @@ -5,7 +5,7 @@ :class="blockClass" >
diff --git a/client/web/compose/src/components/PageBlocks/Wrap/base.vue b/client/web/compose/src/components/PageBlocks/Wrap/base.vue new file mode 100644 index 000000000..2ed0e6982 --- /dev/null +++ b/client/web/compose/src/components/PageBlocks/Wrap/base.vue @@ -0,0 +1,58 @@ + diff --git a/lib/js/src/compose/types/page-block/calendar/page-block.ts b/lib/js/src/compose/types/page-block/calendar/page-block.ts index 9b906edb5..c9f5fe2c3 100644 --- a/lib/js/src/compose/types/page-block/calendar/page-block.ts +++ b/lib/js/src/compose/types/page-block/calendar/page-block.ts @@ -36,6 +36,7 @@ class CalendarOptions { public header: Partial = {} public locale = 'en-gb' public refreshRate = 0 + public refreshEnabled = false public magnifyOption = '' } @@ -60,6 +61,8 @@ export class PageBlockCalendar extends PageBlock { if (!o) return Apply(this.options, o, Number, 'refreshRate') + Apply(this.options, o, Boolean, 'refreshEnabled') + Apply(this.options, o, String, 'magnifyOption') this.options.defaultView = PageBlockCalendar.handleLegacyView(o.defaultView) || 'dayGridMonth' diff --git a/lib/js/src/compose/types/page-block/chart.ts b/lib/js/src/compose/types/page-block/chart.ts index 0a6a2a331..bee9cc9c1 100644 --- a/lib/js/src/compose/types/page-block/chart.ts +++ b/lib/js/src/compose/types/page-block/chart.ts @@ -6,13 +6,15 @@ const kind = 'Chart' interface Options { chartID: string; refreshRate: number; - magnifyOption: string + refreshEnabled: boolean; + magnifyOption: string; } const defaults: Readonly = Object.freeze({ chartID: NoID, refreshRate: 0, - magnifyOption: '' + magnifyOption: '', + refreshEnabled: false, }) export class PageBlockChart extends PageBlock { @@ -30,8 +32,8 @@ export class PageBlockChart extends PageBlock { Apply(this.options, o, CortezaID, 'chartID') Apply(this.options, o, Number, 'refreshRate') + Apply(this.options, o, Boolean, 'refreshEnabled') Apply(this.options, o, String, 'magnifyOption') - } } diff --git a/lib/js/src/compose/types/page-block/comment.ts b/lib/js/src/compose/types/page-block/comment.ts index 5de61b8da..c2a6fb5fb 100644 --- a/lib/js/src/compose/types/page-block/comment.ts +++ b/lib/js/src/compose/types/page-block/comment.ts @@ -10,7 +10,8 @@ interface Options { referenceField: string; sortDirection: string; refreshRate: number; - magnifyOption: string + refreshEnabled: boolean; + magnifyOption: string; } const defaults: Readonly = Object.freeze({ @@ -21,7 +22,8 @@ const defaults: Readonly = Object.freeze({ sortDirection: '', referenceField: '', refreshRate: 0, - magnifyOption: '' + refreshEnabled: false, + magnifyOption: '', }) export class PageBlockComment extends PageBlock { @@ -39,6 +41,7 @@ export class PageBlockComment extends PageBlock { Apply(this.options, o, CortezaID, 'moduleID') Apply(this.options, o, String, 'titleField', 'contentField', 'referenceField', 'filter', 'sortDirection', 'magnifyOption') Apply(this.options, o, Number, 'refreshRate') + Apply(this.options, o, Boolean, 'refreshEnabled') } } diff --git a/lib/js/src/compose/types/page-block/iframe.ts b/lib/js/src/compose/types/page-block/iframe.ts index 179a6a2db..764d77053 100644 --- a/lib/js/src/compose/types/page-block/iframe.ts +++ b/lib/js/src/compose/types/page-block/iframe.ts @@ -8,6 +8,7 @@ interface Options { src: string; wrap: PageBlockWrap; refreshRate: number; + refreshEnabled: boolean; magnifyOption: string; } @@ -16,6 +17,7 @@ const defaults: Readonly = Object.freeze({ src: '', wrap: 'Plain', refreshRate: 0, + refreshEnabled: false, magnifyOption: '', }) @@ -34,6 +36,7 @@ export class PageBlockIFrame extends PageBlock { Apply(this.options, o, String, 'srcField', 'src', 'wrap', 'magnifyOption') Apply(this.options, o, Number, 'refreshRate') + Apply(this.options, o, Boolean, 'refreshEnabled') } } diff --git a/lib/js/src/compose/types/page-block/metric.ts b/lib/js/src/compose/types/page-block/metric.ts index 3ffe4cb70..5eba42cd0 100644 --- a/lib/js/src/compose/types/page-block/metric.ts +++ b/lib/js/src/compose/types/page-block/metric.ts @@ -41,11 +41,13 @@ interface Metric { interface Options { metrics: Array; refreshRate: number; + refreshEnabled: boolean; } const defaults: Readonly = Object.freeze({ metrics: [], refreshRate: 0, + refreshEnabled: false, }) export class PageBlockMetric extends PageBlock { @@ -61,6 +63,7 @@ export class PageBlockMetric extends PageBlock { applyOptions (o?: Partial): void { if (!o) return Apply(this.options, o, Number, 'refreshRate') + Apply(this.options, o, Boolean, 'refreshEnabled') if (o.metrics) { this.options.metrics = o.metrics } diff --git a/lib/js/src/compose/types/page-block/progress.ts b/lib/js/src/compose/types/page-block/progress.ts index 6d5864ba9..72e9d6d30 100644 --- a/lib/js/src/compose/types/page-block/progress.ts +++ b/lib/js/src/compose/types/page-block/progress.ts @@ -34,6 +34,7 @@ interface Options { maxValue: ValueOptions; display: DisplayOptions; refreshRate: number; + refreshEnabled: boolean; } const defaults: Readonly = Object.freeze({ @@ -70,6 +71,7 @@ const defaults: Readonly = Object.freeze({ thresholds: [], }, refreshRate: 0, + refreshEnabled: false, }) export class PageBlockProgress extends PageBlock { @@ -86,6 +88,7 @@ export class PageBlockProgress extends PageBlock { if (!o) return Apply(this.options, o, Number, 'refreshRate') + Apply(this.options, o, Boolean, 'refreshEnabled') if (o.value) { this.options.value = { ...this.options.value, ...o.value } diff --git a/lib/js/src/compose/types/page-block/record-list.ts b/lib/js/src/compose/types/page-block/record-list.ts index ffa1818dc..356d061eb 100644 --- a/lib/js/src/compose/types/page-block/record-list.ts +++ b/lib/js/src/compose/types/page-block/record-list.ts @@ -29,6 +29,7 @@ interface Options { fullPageNavigation: boolean; showTotalCount: boolean; refreshRate: number; + refreshEnabled: boolean; // Record-lines editable: boolean; @@ -91,6 +92,7 @@ const defaults: Readonly = Object.freeze({ selectionButtons: [], refreshRate: 0, + refreshEnabled: false, }) export class PageBlockRecordList extends PageBlock { @@ -141,6 +143,7 @@ export class PageBlockRecordList extends PageBlock { 'editable', 'draggable', 'linkToParent', + 'refreshEnabled', ) if (o.selectionButtons) { diff --git a/lib/js/src/compose/types/page-block/record-organizer.ts b/lib/js/src/compose/types/page-block/record-organizer.ts index c73ea840f..11e7e40a5 100644 --- a/lib/js/src/compose/types/page-block/record-organizer.ts +++ b/lib/js/src/compose/types/page-block/record-organizer.ts @@ -11,6 +11,7 @@ interface Options { groupField: string; group: string; refreshRate: number; + refreshEnabled: boolean; } const defaults: Readonly = Object.freeze({ @@ -22,6 +23,7 @@ const defaults: Readonly = Object.freeze({ groupField: '', group: '', refreshRate: 0, + refreshEnabled: false, }) export class PageBlockRecordOrganizer extends PageBlock { @@ -40,6 +42,7 @@ export class PageBlockRecordOrganizer extends PageBlock { Apply(this.options, o, CortezaID, 'moduleID') Apply(this.options, o, String, 'labelField', 'descriptionField', 'filter', 'positionField', 'groupField', 'group') Apply(this.options, o, Number, 'refreshRate') + Apply(this.options, o, Boolean, 'refreshEnabled') } } diff --git a/lib/js/src/compose/types/page-block/record-revisions.ts b/lib/js/src/compose/types/page-block/record-revisions.ts index f7f3852d1..14448e21a 100644 --- a/lib/js/src/compose/types/page-block/record-revisions.ts +++ b/lib/js/src/compose/types/page-block/record-revisions.ts @@ -17,6 +17,7 @@ interface Options { // referenced fields (records, users) we want to expand expRefFields: string[]; refreshRate: number; + refreshEnabled: boolean; magnifyOption: string; } @@ -25,6 +26,7 @@ const defaults: Readonly = Object.freeze({ displayedFields: [], expRefFields: [], refreshRate: 0, + refreshEnabled: false, magnifyOption: '', }) @@ -41,7 +43,7 @@ export class PageBlockRecordRevisions extends PageBlock { applyOptions (o?: Partial): void { if (!o) return - Apply(this.options, o, Boolean, 'preload') + Apply(this.options, o, Boolean, 'preload', 'refreshEnabled') Apply(this.options, o, Number, 'refreshRate') Apply(this.options, o, String, 'magnifyOption') diff --git a/lib/js/src/compose/types/page-block/report.ts b/lib/js/src/compose/types/page-block/report.ts index e28be4e90..5e5a7f149 100644 --- a/lib/js/src/compose/types/page-block/report.ts +++ b/lib/js/src/compose/types/page-block/report.ts @@ -8,6 +8,7 @@ interface Options { scenarioID: string; elementID: string; refreshRate: number; + refreshEnabled: boolean; magnifyOption: string; } @@ -16,7 +17,8 @@ const defaults: Readonly = Object.freeze({ scenarioID: NoID, elementID: NoID, refreshRate: 0, - magnifyOption: '' + refreshEnabled: false, + magnifyOption: '', }) export class PageBlockReport extends PageBlock { @@ -34,6 +36,7 @@ export class PageBlockReport extends PageBlock { Apply(this.options, o, CortezaID, 'reportID', 'scenarioID', 'elementID') Apply(this.options, o, Number, 'refreshRate') + Apply(this.options, o, Boolean, 'refreshEnabled') Apply(this.options, o, String, 'magnifyOption') } } diff --git a/lib/js/src/compose/types/page-block/social-feed.ts b/lib/js/src/compose/types/page-block/social-feed.ts index cc069ccc1..9c07a8c96 100644 --- a/lib/js/src/compose/types/page-block/social-feed.ts +++ b/lib/js/src/compose/types/page-block/social-feed.ts @@ -7,6 +7,7 @@ interface Options { fields: unknown[]; profileSourceField: string; profileUrl: string; + refreshEnabled: boolean; refreshRate: number; } @@ -15,6 +16,7 @@ const defaults: Readonly = Object.freeze({ fields: [], profileSourceField: '', profileUrl: '', + refreshEnabled: false, refreshRate: 0, }) @@ -34,6 +36,7 @@ export class PageBlockSocialFeed extends PageBlock { Apply(this.options, o, CortezaID, 'moduleID') Apply(this.options, o, String, 'profileSourceField', 'profileUrl') Apply(this.options, o, Number, 'refreshRate') + Apply(this.options, o, Boolean, 'refreshEnabled') if (o.fields) { this.options.fields = o.fields diff --git a/locale/en/corteza-webapp-compose/block.yaml b/locale/en/corteza-webapp-compose/block.yaml index 789ececae..616a01a5a 100644 --- a/locale/en/corteza-webapp-compose/block.yaml +++ b/locale/en/corteza-webapp-compose/block.yaml @@ -120,8 +120,9 @@ general: fullscreen: Fullscreen wrap: Display block as a card refresh: - label: Block auto-refresh interval - description: Setting value to less than 5 seconds disables auto-refresh + enabled: Enabled + label: Refresh + description: Setting value to 5 seconds or more enables auto-refresh rate: seconds label: add: Add