summaryrefslogtreecommitdiff
path: root/demo/resources/scripts/axure/variables.js
diff options
context:
space:
mode:
Diffstat (limited to 'demo/resources/scripts/axure/variables.js')
-rw-r--r--demo/resources/scripts/axure/variables.js151
1 files changed, 151 insertions, 0 deletions
diff --git a/demo/resources/scripts/axure/variables.js b/demo/resources/scripts/axure/variables.js
new file mode 100644
index 0000000..124357f
--- /dev/null
+++ b/demo/resources/scripts/axure/variables.js
@@ -0,0 +1,151 @@
+// ******* GLOBAL VARIABLE PROVIDER ******** //
+$axure.internal(function($ax) {
+ var _globalVariableValues = {};
+
+ var _globalVariableProvider = {};
+ $ax.globalVariableProvider = _globalVariableProvider;
+
+ var setVariableValue = function(variable, value, suppressBroadcast) {
+ if(!(value instanceof Object)) value = value.toString();
+
+ variable = variable.toLowerCase();
+ _globalVariableValues[variable] = value;
+
+ if(suppressBroadcast !== true) {
+ var varData = {
+ globalVarName: variable,
+ globalVarValue: value.toString()
+ };
+
+ $axure.messageCenter.postMessage('setGlobalVar', varData);
+ }
+
+ //Post global var values only if pageData is loaded (suppresses exception which occurs when page loads)
+ if($ax.pageData) {
+ _postGlobalVarVals();
+ }
+ };
+ _globalVariableProvider.setVariableValue = setVariableValue;
+
+ var getVariableValue = function(variable, eventInfo, ignoreDefaultsForLinkUrl) {
+ variable = variable.toLowerCase();
+ if(_globalVariableValues[variable] !== undefined) {
+ //If this is for the GetLinkUrl function and
+ //the current value of the global variable is the same as the default defined in the document, don't return it
+ if(ignoreDefaultsForLinkUrl == true && $ax.document.globalVariables[variable] == _globalVariableValues[variable]) {
+ return null;
+ }
+
+ return _globalVariableValues[variable];
+ }
+ if($ax.document.globalVariables[variable] !== undefined) return ignoreDefaultsForLinkUrl == true ? null : $ax.document.globalVariables[variable];
+ switch(variable) {
+ case "pagename": return $ax.pageData.page.name;
+
+ case "now": return eventInfo.now;
+ case "gendate": return $ax.pageData.generationDate;
+
+ case "dragx": return $ax.drag.GetDragX();
+ case "dragy": return $ax.drag.GetDragY();
+ case "totaldragx": return $ax.drag.GetTotalDragX();
+ case "totaldragy": return $ax.drag.GetTotalDragY();
+ case "dragtime": return $ax.drag.GetDragTime();
+
+ case "math": return Math;
+ case "date": return Date;
+
+ case "window": return eventInfo && eventInfo.window;
+ case "this": return eventInfo && eventInfo.thiswidget && $ax.getWidgetInfo(eventInfo.thiswidget.elementId);
+ case "item": return (eventInfo && eventInfo.item && eventInfo.item.valid && eventInfo.item) || getVariableValue('targetitem', eventInfo, ignoreDefaultsForLinkUrl);
+ case "targetitem": return eventInfo && eventInfo.targetElement && $ax.getItemInfo(eventInfo.targetElement);
+ case "repeater": return eventInfo && eventInfo.repeater;
+ case "target": return eventInfo && eventInfo.targetElement && $ax.getWidgetInfo(eventInfo.targetElement);
+ case "cursor": return eventInfo && eventInfo.cursor;
+ default:
+ var gen = variable.substr(0, 3) == "gen";
+ var date = gen ? $ax.pageData.generationDate : new Date();
+ var prop = gen ? variable.substr(3) : variable;
+ switch(prop) {
+ case "day": return date.getDate();
+ case "month": return date.getMonth() + 1;
+ case "monthname": return $ax.getMonthName(date.getMonth());
+ case "dayofweek": return $ax.getDayOfWeek(date.getDay());
+ case "year": return date.getFullYear();
+ case "time": return date.toLocaleTimeString();
+ case "hours": return date.getHours();
+ case "minutes": return date.getMinutes();
+ case "seconds": return date.getSeconds();
+ default: return '';
+ }
+ }
+ };
+ _globalVariableProvider.getVariableValue = getVariableValue;
+
+ var load = function() {
+ var csum = false;
+
+ var query = (window.location.href.split("#")[1] || ''); //hash.substring(1); Firefox decodes this so & in variables breaks
+ if(query.length > 0) {
+ var vars = query.split("&");
+ for(var i = 0; i < vars.length; i++) {
+ var pair = vars[i].split("=");
+ var varName = pair[0];
+ var varValue = pair[1];
+ if(varName) {
+ if(varName == 'CSUM') {
+ csum = true;
+ } else setVariableValue(varName, decodeURIComponent(varValue), true);
+ }
+ }
+
+ if(!csum && query.length > 250) {
+ window.alert('Axure Warning: The variable values were too long to pass to this page.\n\nIf you are using IE, using Chrome or Firefox will support more data.');
+ }
+ }
+ };
+
+ var getLinkUrl = function(baseUrl) {
+ var toAdd = '';
+ var definedVariables = _getDefinedVariables();
+ for(var i = 0; i < definedVariables.length; i++) {
+ var key = definedVariables[i];
+ var val = getVariableValue(key, undefined, true);
+ if(val != null) {
+ if(toAdd.length > 0) toAdd += '&';
+ toAdd += key + '=' + encodeURIComponent(val);
+ }
+ }
+ return toAdd.length > 0 ? baseUrl + ($axure.shouldSendVarsToServer() ? '?' : '#') + toAdd + "&CSUM=1" : baseUrl;
+ };
+ _globalVariableProvider.getLinkUrl = getLinkUrl;
+
+ var _getDefinedVariables = function() {
+ return $ax.pageData.variables;
+ };
+ _globalVariableProvider.getDefinedVariables = _getDefinedVariables;
+
+ var _postGlobalVarVals = function() {
+ var retVal = {};
+ var definedVariables = _getDefinedVariables();
+ for(var i = 0; i < definedVariables.length; i++) {
+ var key = definedVariables[i];
+ var val = getVariableValue(key);
+ if(val != null) {
+ retVal[key] = val;
+ }
+ }
+
+ $ax.messageCenter.postMessage('globalVariableValues', retVal);
+ };
+
+ $ax.messageCenter.addMessageListener(function(message, data) {
+ if(message == 'getGlobalVariables') {
+ _postGlobalVarVals();
+ } else if(message == 'resetGlobalVariables') {
+ _globalVariableValues = {};
+ _postGlobalVarVals();
+ }
+ });
+
+ load();
+}); \ No newline at end of file