From 9b87cc8dd2e4e89738ca1fc9031fe3278f2b9f1c Mon Sep 17 00:00:00 2001 From: Rik Bos Date: Mon, 29 Feb 2016 15:08:56 +0100 Subject: [PATCH] Added the possibility to set a refresh time --- src/CustomString/CustomString.xml | 5 +++ src/CustomString/CustomStringNoContext.xml | 6 +++ src/CustomString/widget/CustomString.js | 41 +++++++++++++++++---- test/CustomStringTest.mpr | Bin 760832 -> 760832 bytes test/widgets/CustomString.mpk | Bin 7413 -> 7768 bytes 5 files changed, 44 insertions(+), 8 deletions(-) diff --git a/src/CustomString/CustomString.xml b/src/CustomString/CustomString.xml index f73de26..fab64d6 100644 --- a/src/CustomString/CustomString.xml +++ b/src/CustomString/CustomString.xml @@ -22,6 +22,11 @@ Behavior The microflow to execute on click. + + + Refresh Time + Behavior + The microflow will be re-executed and after (x) milliseconds. diff --git a/src/CustomString/CustomStringNoContext.xml b/src/CustomString/CustomStringNoContext.xml index 1b7b8d9..351d470 100644 --- a/src/CustomString/CustomStringNoContext.xml +++ b/src/CustomString/CustomStringNoContext.xml @@ -23,6 +23,12 @@ The microflow to execute on click. + + Refresh Time + Behavior + The microflow will be re-executed and after (x) milliseconds. + + diff --git a/src/CustomString/widget/CustomString.js b/src/CustomString/widget/CustomString.js index e03d13b..3700076 100644 --- a/src/CustomString/widget/CustomString.js +++ b/src/CustomString/widget/CustomString.js @@ -35,11 +35,13 @@ define([ // Parameters configured in the Modeler. sourceMF: "", renderHTML: "", + refreshTime: 0, // Internal variables. Non-primitives created in the prototype are shared between all widget instances. _handles: null, _contextObj: null, _alertDiv: null, + _widgetIsDestroyed: false, // dojo.declare.constructor is called to construct the widget instance. Implement to initialize non-primitive properties. constructor: function() { @@ -56,15 +58,19 @@ define([ // mxui.widget._WidgetBase.update is called when context is changed or initialized. Implement to re-render and / or fetch data. update: function(obj, callback) { logger.debug(this.id + ".update"); - this._contextObj = obj; + // Do not update the widget if it does not exist anymore. + if (!this._widgetIsDestroyed){ + this._contextObj = obj; + + if (this._contextObj) { + this._resetSubscriptions(); + this._updateRendering(callback); + } else if (this._render){ + this._render(callback); + } else { + mendix.lang.nullExec(callback); + } - if (this._contextObj) { - this._resetSubscriptions(); - this._updateRendering(callback); - } else if (this._render){ - this._render(callback); - } else { - mendix.lang.nullExec(callback); } }, @@ -123,6 +129,10 @@ define([ logger.debug(this.id + "._processSourceMFCallback"); html.set(this.customString, this.checkString(returnedString, this.renderHTML)); mendix.lang.nullExec(callback); + + if (this.refreshTime !== null && this.refreshTime > 0){ + setTimeout(dojoLang.hitch(this, this.update, this._contextObj, callback), this.refreshTime); + } }, checkString : function (string, htmlBool) { @@ -133,6 +143,21 @@ define([ } return string; }, + + uninitialize : function () { + logger.debug(this.id + ".uninitialize"); + + + this._widgetIsDestroyed = true; + + if (this._handles) { + dojoArray.forEach(this._handles, function (handle) { + mx.data.unsubscribe(handle); + }); + this._handles = []; + } + }, + // Reset subscriptions. _resetSubscriptions: function() { diff --git a/test/CustomStringTest.mpr b/test/CustomStringTest.mpr index d7c1f9692be512d9dd86947f723bb2c3bbfa42a3..a053a7c15b9dc2a24d00ca29744f16bca9f867d7 100644 GIT binary patch delta 3598 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 D_U5Mz diff --git a/test/widgets/CustomString.mpk b/test/widgets/CustomString.mpk index dca76244502d2056ebbcb469f2f78334de9a2edc..ab033aac2c3d6a926a5068a9aab6cb453988a791 100644 GIT binary patch delta 5842 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 delta 5541 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 Hb-bg+FLu!#_{2?#Nc>a(a0;< zffwTghTxw(G*z%R%;Jd}0tFRp~=TY){v;{pJqq*;Jjmjjh^hOtw{I)akiL zGl`frz8Mw9se@{9t4XC#3G&O7KEJi+57(cRdHr>`xj!8?i62TF?8@+}sAN z-A4)unH}Zt90{M2oPAgPK3I2Aa&@p%b#=C~x8VGLwZ95c>Ay?VI1NfZCU%s+r~a9L zG29#aqtSrA1_YqR?V&NT{nwKJIv(Qx=!5V_ZQ%P1#+x= zKwKpiHX(<#%YQi?=SM|}%uMvB2GyO@e{K6;K7ju+dGA97$sYheGR*(+