123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745 |
- $axure.internal(function($ax) {
- var _pageData;
- var _initializePageFragment = function(pageFragment, objIdToObject) {
- var objectArrayHelper = function(objects, parent) {
- for(var i = 0; i < objects.length; i++) {
- diagramObjectHelper(objects[i], parent);
- }
- };
- var diagramObjectHelper = function(diagramObject, parent) {
- $ax.initializeObject('diagramObject', diagramObject);
- objIdToObject[pageFragment.packageId + '~' + diagramObject.id] = diagramObject;
- diagramObject.parent = parent;
- diagramObject.owner = pageFragment;
- diagramObject.scriptIds = [];
- if(diagramObject.diagrams) { //dynamic panel
- for(var i = 0; i < diagramObject.diagrams.length; i++) {
- var diagram = diagramObject.diagrams[i];
- objectArrayHelper(diagram.objects, diagram);
- }
- }
- if(diagramObject.objects) objectArrayHelper(diagramObject.objects, diagramObject);
- };
- objectArrayHelper(pageFragment.diagram.objects, pageFragment.diagram);
- };
- var _initalizeStylesheet = function(stylesheet) {
- var stylesById = {};
- var customStyles = stylesheet.customStyles;
- for(var key in customStyles) {
- var style = customStyles[key];
- stylesById[style.id] = style;
- }
- var duplicateStyles = stylesheet.duplicateStyles;
- for(var duplicateKey in duplicateStyles) {
- stylesById[duplicateKey] = stylesById[duplicateStyles[duplicateKey]];
- }
- stylesheet.stylesById = stylesById;
- };
- var _initializeDocumentData = function() {
- _initalizeStylesheet($ax.document.stylesheet);
- };
- var _initializePageData;
- // ******* Dictionaries ******** //
- (function () {
- var scriptIdToParentLayer = {};
- var elementIdToObject = {};
- var scriptIdToObject = {};
- var scriptIdToRepeaterId = {};
- var repeaterIdToScriptIds = {};
- var repeaterIdToItemIds = {};
- var scriptIdToPath = {};
- var _scriptIds = [];
- var elementIdToText = {};
- var radioGroupToSelectedElementId = {};
- _initializePageData = function() {
- if(!_pageData || !_pageData.page || !_pageData.page.diagram) return;
- var objIdToObject = {};
- _initializePageFragment(_pageData.page, objIdToObject);
- for(var masterId in _pageData.masters) {
- var master = _pageData.masters[masterId];
- _initializePageFragment(master, objIdToObject);
- }
- var _pathsToScriptIds = [];
- _pathToScriptIdHelper(_pageData.objectPaths, [], _pathsToScriptIds, scriptIdToPath);
- for(var i = 0; i < _pathsToScriptIds.length; i++) {
- var path = _pathsToScriptIds[i].idPath;
- var scriptId = _pathsToScriptIds[i].scriptId;
- var packageId = _pageData.page.packageId;
- if(path.length > 1) {
- for(var j = 0; j < path.length - 1; j++) {
- var rdoId = path[j];
- var rdo = objIdToObject[packageId + '~' + rdoId];
- packageId = rdo.masterId;
- }
- }
- var diagramObject = objIdToObject[packageId + '~' + path[path.length - 1]];
- diagramObject.scriptIds[diagramObject.scriptIds.length] = scriptId;
- scriptIdToObject[scriptId] = diagramObject;
- _scriptIds[_scriptIds.length] = scriptId;
- }
- // Now map scriptIds to repeaters and layers
- var mapScriptIdToRepeaterId = function(scriptId, repeaterId) {
- scriptIdToRepeaterId[scriptId] = repeaterId;
- var scriptIds = repeaterIdToScriptIds[repeaterId];
- if(scriptIds) scriptIds[scriptIds.length] = scriptId;
- else repeaterIdToScriptIds[repeaterId] = [scriptId];
- };
- var mapScriptIdToLayerId = function (obj, layerId, path) {
- var pathCopy = $ax.deepCopy(path);
- pathCopy[path.length] = obj.id;
- var scriptId = $ax.getScriptIdFromPath(pathCopy);
- if ($ax.public.fn.IsLayer(obj.type)) {
- for(var i = 0; i < obj.objs.length; i++) mapScriptIdToLayerId(obj.objs[i], scriptId, path);
- }
- scriptIdToParentLayer[scriptId] = layerId;
- }
- var mapIdsToRepeaterAndLayer = function(path, objs, repeaterId) {
- var pathCopy = $ax.deepCopy(path);
- for(var i = 0; i < objs.length; i++) {
- var obj = objs[i];
- pathCopy[path.length] = obj.id;
- var scriptId = $ax.getScriptIdFromPath(pathCopy);
- // Rdo have no element on page and are not mapped to the repeater
- if(repeaterId) mapScriptIdToRepeaterId(scriptId, repeaterId);
- if ($ax.public.fn.IsDynamicPanel(obj.type)) {
- for(var j = 0; j < obj.diagrams.length; j++) mapIdsToRepeaterAndLayer(path, obj.diagrams[j].objects, repeaterId);
- } else if ($ax.public.fn.IsReferenceDiagramObject(obj.type)) {
- mapIdsToRepeaterAndLayer(pathCopy, $ax.pageData.masters[obj.masterId].diagram.objects, repeaterId);
- } else if ($ax.public.fn.IsRepeater(obj.type)) {
- mapScriptIdToRepeaterId(scriptId, scriptId);
- mapIdsToRepeaterAndLayer(path, obj.objects, scriptId);
- } else if ($ax.public.fn.IsLayer(obj.type)) {
- var layerObjs = obj.objs;
- for(var j = 0; j < layerObjs.length; j++) {
- mapScriptIdToLayerId(layerObjs[j], scriptId, path);
- }
- } else if(obj.objects && obj.objects.length) {
- if(repeaterId) {
- for(var j = 0; j < obj.objects.length; j++) {
- mapIdsToRepeaterAndLayer(path, obj.objects, repeaterId);
- }
- }
- }
- }
- };
- mapIdsToRepeaterAndLayer([], $ax.pageData.page.diagram.objects);
- };
- $ax.getPathFromScriptId = function(scriptId) {
- var reversedPath = [];
- var path = scriptIdToPath[scriptId];
- while(path && path.uniqueId) {
- reversedPath[reversedPath.length] = path.uniqueId;
- path = path.parent;
- }
- return reversedPath.reverse();
- };
- var _getScriptIdFromFullPath = function(path) {
- var current = $ax.pageData.objectPaths;
- for(var i = 0; i < path.length; i++) {
- current = current[path[i]];
- if(!current) return current;
- }
- return current && current.scriptId;
- };
- var _getScriptIdFromPath = function(path, relativeTo) {
- var relativePath = [];
- var includeMasterInPath = false;
- if(relativeTo) {
- var relativeToScriptId;
- if(relativeTo.srcElement) { //this is eventInfo
- relativeToScriptId = $ax.repeater.getScriptIdFromElementId(relativeTo.srcElement);
- includeMasterInPath = relativeTo.isMasterEvent;
- } else if(typeof relativeTo === 'string') { //this is an element id
- relativeToScriptId = relativeTo;
- }
- if(relativeToScriptId) {
- relativePath = $ax.getPathFromScriptId(relativeToScriptId);
- if(!includeMasterInPath) relativePath = relativePath.slice(0, relativePath.length - 1);
- } else if(relativeTo instanceof Array) { //this is a path
- relativePath = relativeTo;
- }
- }
- var fullPath = relativePath.concat(path);
- var scriptId = _getScriptIdFromFullPath(fullPath);
- return !$ax.visibility.isScriptIdLimbo(scriptId) && scriptId;
- };
- $ax.getScriptIdFromPath = _getScriptIdFromPath;
- var _getElementIdsFromPath = function(path, eventInfo) {
- var scriptId = _getScriptIdFromPath(path, eventInfo);
- if (!scriptId) return [];
- // Don't need placed check hear. If unplaced, scriptId will be undefined and exit out before here.
- return $ax.getElementIdsFromEventAndScriptId(eventInfo, scriptId);
- };
- $ax.getElementIdsFromPath = _getElementIdsFromPath;
- var _getElementIdFromPath = function (path, params) {
- var scriptId = _getScriptIdFromPath(path, params.relativeTo);
- if (!scriptId) return scriptId;
- var itemNum = params.itemNum;
- if(params.relativeTo && typeof params.relativeTo === 'string') {
- if($jobj(params.relativeTo)) itemNum = $ax.repeater.getItemIdFromElementId(params.relativeTo);
- }
- return $ax.repeater.createElementId(scriptId, itemNum);
- };
- $ax.getElementIdFromPath = _getElementIdFromPath;
- var _getElementsIdFromEventAndScriptId = function(eventInfo, scriptId) {
- var itemId = eventInfo && $ax.repeater.getItemIdFromElementId(eventInfo.srcElement);
- var target = false;
- // Try to get itemId from target if you can't get it from source.
- if(!itemId) {
- itemId = eventInfo && eventInfo.targetElement && $ax.repeater.getItemIdFromElementId(eventInfo.targetElement);
- if(itemId) target = true;
- }
- var parentRepeater = $ax.getParentRepeaterFromScriptId(scriptId);
- if(parentRepeater && scriptId != parentRepeater) {
- if(itemId && (!eventInfo || parentRepeater == $ax.getParentRepeaterFromScriptId($ax.repeater.getScriptIdFromElementId(target ? eventInfo.targetElement : eventInfo.srcElement)))) {
- return [$ax.repeater.createElementId(scriptId, itemId)];
- }
- var elementIds = [];
- var itemIds = $ax.getItemIdsForRepeater(parentRepeater);
- if(!itemIds) return [];
- for(var i = 0; i < itemIds.length; i++) elementIds[i] = $ax.repeater.createElementId(scriptId, itemIds[i]);
- return elementIds;
- }
- return [scriptId];
- };
- $ax.getElementIdsFromEventAndScriptId = _getElementsIdFromEventAndScriptId;
- var _getSrcElementIdFromEvent = function(event) {
- var currentQuery = $(event.srcElement || event.target);
- while(currentQuery && currentQuery.length && (!$obj(currentQuery.attr('id')) || $jobj(currentQuery.attr('id')).hasClass('text'))) {
- currentQuery = currentQuery.parent();
- };
- return currentQuery.attr('id');
- };
- $ax.getSrcElementIdFromEvent = _getSrcElementIdFromEvent;
- var _getEventInfoFromEvent = function(event, skipShowDescriptions, elementId) {
- var eventInfo = {};
- eventInfo.srcElement = elementId;
- eventInfo.now = new Date();
- if(event != null) {
- //elementId can be empty string, so can't simple use "or" assignment here.
- eventInfo.srcElement = elementId || elementId == '' ? elementId : _getSrcElementIdFromEvent(event);
- eventInfo.which = event.which;
- // When getting locations in mobile, need to extract the touch object to get the mouse location attributes
- var mouseEvent = (event.originalEvent && event.originalEvent.changedTouches && event.originalEvent.changedTouches[0]) || event.originalEvent;
- if(mouseEvent && !mouseEvent.type) mouseEvent.type = event.type;
- if(skipShowDescriptions) eventInfo.skipShowDescriptions = true;
- // Always update mouse location if possible
- $ax.event.updateMouseLocation(mouseEvent);
- }
- // Always set event info about cursor
- var _cursor = eventInfo.cursor = {};
- _cursor.x = $ax.mouseLocation.x;
- _cursor.y = $ax.mouseLocation.y;
- eventInfo.pageX = _cursor.x + 'px';
- eventInfo.pageY = _cursor.y + 'px';
- // Do Keyboard Info
- eventInfo.keyInfo = $ax.event.keyState();
- eventInfo.window = _getWindowInfo();
- eventInfo.thiswidget = _getWidgetInfo(eventInfo.srcElement);
- eventInfo.item = _getItemInfo(eventInfo.srcElement);
- eventInfo.dragInfo = $ax.drag.GetWidgetDragInfo();
- return eventInfo;
- };
- $ax.getEventInfoFromEvent = _getEventInfoFromEvent;
- var _getWindowInfo = function() {
- var win = {};
- win.width = $(window).width();
- win.height = $(window).height();
- win.scrollx = $(window).scrollLeft();
- win.scrolly = $(window).scrollTop();
- return win;
- };
- $ax.getWindowInfo = _getWindowInfo;
- var _getItemInfo = function(elementId) {
- if(!elementId) return { valid: false };
- elementId = _getParentElement(elementId);
- var index = $ax.repeater.getItemIdFromElementId(elementId);
- if(!index) return { valid: false };
- var item = { valid: true };
- var scriptId = $ax.repeater.getScriptIdFromElementId(elementId);
- var repeaterId = $ax.getParentRepeaterFromScriptId(scriptId);
- item.repeater = _getWidgetInfo(repeaterId);
- $ax.repeater.setDisplayProps(item, repeaterId, index);
- item.ismarked = $ax.repeater.isEditItem(repeaterId, index);
- item.isvisible = Boolean($jobj(elementId).length);
- return item;
- };
- $ax.getItemInfo = _getItemInfo;
- var _getWidgetInfo = function(elementId) {
- if(!elementId) return { valid: false };
- elementId = _getParentElement(elementId);
- var elementAxQuery = $ax('#' + elementId);
- var elementQuery = $jobj(elementId);
- var obj = $obj(elementId);
- var widget = { valid: true, isWidget: true };
- widget.elementId = elementId;
- widget.name = widget.label = (elementQuery.data('label') ? elementQuery.data('label') : '');
- widget.text = $ax('#' + elementId).text();
- widget.opacity = Number(elementQuery.css('opacity')) * 100;
- widget.rotation = $ax.move.getRotationDegree(widget.elementId);
- var scriptId = $ax.repeater.getScriptIdFromElementId(elementId);
- var repeaterId = $ax.getParentRepeaterFromScriptId(scriptId);
- if (repeaterId) widget.repeater = $ax.public.fn.IsRepeater(obj.type) ? widget : _getWidgetInfo(repeaterId);
- if($ax.public.fn.IsLayer(obj.type)) {
- var boundingRect = $ax.public.fn.getWidgetBoundingRect(elementId);
- widget.x = boundingRect.left;
- widget.y = boundingRect.top;
- widget.width = boundingRect.width;
- widget.height = boundingRect.height;
- if(elementQuery.length != 0) {
- widget.pagex = elementAxQuery.left();
- widget.pagey = elementAxQuery.top();
- }
- } else {
- var elementExists = elementQuery.length > 0;
- var x = elementExists ? elementAxQuery.locRelativeIgnoreLayer(false) : 0;
- var y = elementExists ? elementAxQuery.locRelativeIgnoreLayer(true) : 0;
- widget.x = x;
- widget.y = y;
- if(elementExists) {
- widget.pagex = elementAxQuery.left();
- widget.pagey = elementAxQuery.top();
- widget.width = elementAxQuery.width();
- widget.height = elementAxQuery.height();
- }
- //if (obj.generateCompound) {
- // // assume this means that this is a compound vector.
- // widget.x = boundingRect.left;
- // widget.y = boundingRect.top;
- // //widget.pagex += boundingRect.left;
- // //widget.pagey += boundingRect.top;
- //}
- }
- // Right now only dynamic panel can scroll
- if ($ax.public.fn.IsDynamicPanel(obj.type)) {
- var stateQuery = $('#' + $ax.visibility.GetPanelState(elementId));
- widget.scrollx = stateQuery.scrollLeft();
- widget.scrolly = stateQuery.scrollTop();
- if($ax.dynamicPanelManager.isIdFitToContent(elementId)) {
- widget.width = stateQuery.width();
- widget.height = stateQuery.height();
- }
- } else {
- widget.scrollx = 0;
- widget.scrolly = 0;
- }
- // repeater only props
- if ($ax.public.fn.IsRepeater(obj.type)) {
- widget.visibleitemcount = repeaterIdToItemIds[scriptId] ? repeaterIdToItemIds[scriptId].length : $ax.repeater.getVisibleDataCount(scriptId);
- widget.itemcount = $ax.repeater.getFilteredDataCount(scriptId);
- widget.datacount = $ax.repeater.getDataCount(scriptId);
- widget.pagecount = $ax.repeater.getPageCount(scriptId);
- widget.pageindex = $ax.repeater.getPageIndex(scriptId);
- }
- widget.left = widget.leftfixed = widget.x;
- widget.top = widget.topfixed = widget.y;
- widget.right = widget.rightfixed = widget.x + widget.width;
- widget.bottom = widget.bottomfixed = widget.y + widget.height;
- if(elementQuery.css('position') == 'fixed') {
- var windowScrollLeft = $(window).scrollLeft();
- var windowScrollTop = $(window).scrollTop();
- widget.leftfixed = widget.left - windowScrollLeft;
- widget.topfixed = widget.top - windowScrollTop;
- widget.rightfixed = widget.right - windowScrollLeft;
- widget.bottomfixed = widget.bottom - windowScrollTop;
- }
- return widget;
- };
- $ax.getWidgetInfo = _getWidgetInfo;
- var _getParentElement = $ax.getParentElement = function(elementId) {
- var obj = $obj(elementId);
- while(obj.isContained) {
- var path = $ax.getPathFromScriptId($ax.repeater.getScriptIdFromElementId(elementId));
- var itemId = $ax.repeater.getItemIdFromElementId(elementId);
- path[path.length - 1] = obj.parent.id;
- elementId = $ax.getElementIdFromPath(path, { itemNum: itemId });
- obj = $obj(elementId);
- }
- return elementId;
- };
- $ax.addItemIdToRepeater = function(itemId, repeaterId) {
- var itemIds = repeaterIdToItemIds[repeaterId];
- if(itemIds) itemIds[itemIds.length] = itemId;
- else repeaterIdToItemIds[repeaterId] = [itemId];
- var scriptIds = repeaterIdToScriptIds[repeaterId];
- for(var i = 0; i < scriptIds.length; i++) elementIdToObject[$ax.repeater.createElementId(scriptIds[i], itemId)] = $ax.getObjectFromScriptId(scriptIds[i]);
- };
- $ax.getAllElementIds = function() {
- var elementIds = [];
- for(var i = 0; i < _scriptIds.length; i++) {
- var scriptId = _scriptIds[i];
- var repeaterId = scriptIdToRepeaterId[scriptId];
- if(repeaterId && repeaterId != scriptId) {
- var itemIds = repeaterIdToItemIds[repeaterId] || [];
- for(var j = 0; j < itemIds.length; j++) elementIds[elementIds.length] = $ax.repeater.createElementId(scriptId, itemIds[j]);
- } else elementIds[elementIds.length] = scriptId;
- }
- return elementIds;
- };
- $ax.getAllScriptIds = function() {
- return _scriptIds;
- };
- $ax.getObjectFromElementId = function(elementId) {
- return $ax.getObjectFromScriptId($ax.repeater.getScriptIdFromElementId(elementId));
- };
- $ax.getObjectFromScriptId = function(scriptId) {
- return scriptIdToObject[scriptId];
- };
- $ax.getParentRepeaterFromElementId = function(elementId) {
- return $ax.getParentRepeaterFromScriptId($ax.repeater.getScriptIdFromElementId(elementId));
- };
- $ax.getParentRepeaterFromScriptId = function(scriptId) {
- return scriptIdToRepeaterId[scriptId];
- };
- var _getChildScriptIdsForRepeater = function(repeaterId) {
- return repeaterIdToScriptIds[repeaterId];
- };
- var _getItemIdsForRepeater = function(repeaterId) {
- return repeaterIdToItemIds[repeaterId] || [];
- };
- $ax.getItemIdsForRepeater = _getItemIdsForRepeater;
- var _clearItemIdsForRepeater = function(repeaterId) {
- repeaterIdToItemIds[repeaterId] = [];
- };
- $ax.clearItemsForRepeater = _clearItemIdsForRepeater;
- $ax.getChildElementIdsForRepeater = function(repeaterId) {
- var scriptIds = _getChildScriptIdsForRepeater(repeaterId);
- var itemIds = _getItemIdsForRepeater(repeaterId);
- var retVal = [];
- if(!itemIds || !scriptIds) return retVal;
- for(var i = 0; i < scriptIds.length; i++) {
- for(var j = 0; j < itemIds.length; j++) {
- retVal[retVal.length] = $ax.repeater.createElementId(scriptIds[i], itemIds[j]);
- }
- }
- return retVal;
- };
- $ax.getRdoParentFromElementId = function(elementId) {
- var scriptId = $ax.repeater.getScriptIdFromElementId(elementId);
- var rdoId = scriptIdToPath[scriptId].parent.scriptId;
- if($ax.getParentRepeaterFromScriptId(rdoId)) rdoId = $ax.repeater.createElementId(rdoId, $ax.repeater.getItemIdFromElementId(elementId));
- return rdoId;
- };
- $ax.getLayerParentFromElementId = function (elementId) {
- var itemId = $ax.repeater.getItemIdFromElementId(elementId);
- var scriptId = scriptIdToParentLayer[$ax.repeater.getScriptIdFromElementId(elementId)];
- return $ax.getParentRepeaterFromElementId(scriptId) ? $ax.repeater.createElementId(scriptId, itemId) : scriptId;
- }
- $ax.updateElementText = function(elementId, text) {
- elementIdToText[elementId] = text;
- };
- $ax.hasElementTextChanged = function(elementId, text) {
- return elementIdToText[elementId] != text;
- };
- $ax.updateRadioButtonSelected = function(group, elementId) {
- var old = radioGroupToSelectedElementId[group];
- radioGroupToSelectedElementId[group] = elementId;
- return old;
- };
- $ax.hasRadioButtonSelectedChanged = function(group, elementId) {
- return radioGroupToSelectedElementId[group] != elementId;
- };
- })();
- //Recursively populates fullPathArray with:
- // [ { idPath, scriptId }, ... ]
- //for every scriptId in the object
- //also populates an object of scriptId -> path
- var _pathToScriptIdHelper = function(currentPath, currentChain, fullPathArray, scriptIdToPath) {
- for(var key in currentPath) {
- if(key != "scriptId") {
- var nextPath = currentPath[key];
- _pathToScriptIdHelper(nextPath, currentChain.concat(key), fullPathArray, scriptIdToPath);
- nextPath.parent = currentPath;
- nextPath.uniqueId = key;
- } else {
- fullPathArray[fullPathArray.length] = { idPath: currentChain, scriptId: currentPath.scriptId };
- scriptIdToPath[currentPath.scriptId] = currentPath;
- }
- }
- };
- $ax.public.loadCurrentPage = $ax.loadCurrentPage = function(pageData) {
- $ax.pageData = _pageData = pageData;
- _initializePageData();
- };
- $ax.public.loadDocument = $ax.loadDocument = function(document) {
- $ax.document = document;
- _initializeDocumentData();
- };
- /**
- Navigates to a page
- */
- $ax.public.navigate = $ax.navigate = function(to) { //url, includeVariables, type) {
- var targetUrl;
- if(typeof (to) === 'object') {
- includeVariables = to.includeVariables;
- targetUrl = !includeVariables ? to.url : $ax.globalVariableProvider.getLinkUrl(to.url);
- if(to.target == "new") {
- window.open(targetUrl, to.name);
- } else if(to.target == "popup") {
- var features = _getPopupFeatures(to.popupOptions);
- window.open(targetUrl, to.name, features);
- } else {
- var targetLocation = window.location;
- if(to.target == "current") {
- } else if(to.target == "parent") {
- targetLocation = top.opener.window.location;
- } else if(to.target == "parentFrame") {
- targetLocation = parent.location;
- } else if(to.target == "frame") {
- // targetLocation = to.frame.contentWindow.location;
- $(to.frame).attr('src', targetUrl || 'about:blank');
- return;
- }
- if (!_needsReload(targetLocation, to.url)) {
- targetLocation.href = targetUrl || 'about:blank';
- } else {
- targetLocation.href = $axure.utils.getReloadPath() + "#" + encodeURI(targetUrl);
- }
- }
- } else {
- $ax.navigate({
- url: to,
- target: "current",
- includeVariables: arguments[1]
- });
- }
- };
- var _needsReload = function(oldLocation, newBaseUrl) {
- var reload = false;
- try {
- var oldUrl = oldLocation.href;
- var oldBaseUrl = oldUrl.split("#")[0];
- var lastslash = oldBaseUrl.lastIndexOf("/");
- if(lastslash > 0) {
- oldBaseUrl = oldBaseUrl.substring(lastslash + 1, oldBaseUrl.length);
- if(oldBaseUrl == encodeURI(newBaseUrl)) {
- reload = true;
- }
- }
- } catch(e) {
- }
- return reload;
- };
- var _getPopupFeatures = function(options) {
- var defaultOptions = {
- toolbar: true,
- scrollbars: true,
- location: true,
- status: true,
- menubar: true,
- directories: true,
- resizable: true,
- centerwindow: true,
- left: -1,
- top: -1,
- height: -1,
- width: -1
- };
- var selectedOptions = $.extend({}, defaultOptions, options);
- var optionsList = [];
- optionsList.push('toolbar=' + (selectedOptions.toolbar ? 'yes' : 'no'));
- optionsList.push('scrollbars=' + (selectedOptions.scrollbars ? 'yes' : 'no'));
- optionsList.push('location=' + (selectedOptions.location ? 'yes' : 'no'));
- optionsList.push('status=' + (selectedOptions.status ? 'yes' : 'no'));
- optionsList.push('menubar=' + (selectedOptions.menubar ? 'yes' : 'no'));
- optionsList.push('directories=' + (selectedOptions.directories ? 'yes' : 'no'));
- optionsList.push('resizable=' + (selectedOptions.resizable ? 'yes' : 'no'));
- if(selectedOptions.centerwindow == false) {
- if(selectedOptions.left > -1) {
- optionsList.push('left=' + selectedOptions.left);
- }
- if(selectedOptions.top > -1) {
- optionsList.push('top=' + selectedOptions.top);
- }
- }
- var height = 0;
- var width = 0;
- if(selectedOptions.height > 0) {
- optionsList.push('height=' + selectedOptions.height);
- height = selectedOptions.height;
- }
- if(selectedOptions.width > 0) {
- optionsList.push('width=' + selectedOptions.width);
- width = selectedOptions.width;
- }
- var features = optionsList.join(',');
- if(selectedOptions.centerwindow) {
- var winl = (window.screen.width - width) / 2;
- var wint = (window.screen.height - height) / 2;
- features = features + ',left=' + winl + ',top=' + wint;
- }
- return features;
- };
- /**
- Closes a window
- */
- $ax.public.closeWindow = $ax.closeWindow = function() {
- parent.window.close();
- };
- /**
- Goes back
- */
- $ax.public.back = $ax.back = function() {
- window.history.go(-1);
- };
- /**
- Reloads the current page.
- # includeVariables: true if it should re-include the variables when the page is reloaded
- */
- $ax.public.reload = $ax.reload = function(includeVariables) {
- var targetUrl = (includeVariables === false)
- ? $axure.utils.getReloadPath() + "#" + encodeURI($ax.pageData.url)
- : $axure.utils.getReloadPath() + "#" + encodeURI($ax.globalVariableProvider.getLinkUrl($ax.pageData.url));
- window.location.href = targetUrl;
- };
- /**
- Sets a variable.
- # name: The name of the global variable to set
- # value: The value that should be set
- */
- $ax.public.setGlobalVariable = $ax.setGlobalVariable = function(name, value) {
- if(!name || !value) {
- return;
- }
- $ax.globalVariableProvider.setVariableValue(name, value);
- };
- /**
- Gets the value of a global variable
- # name: The name of the global variable value to get
- */
- $ax.public.getGlobalVariable = $ax.getGlobalVariable = function(name) {
- $ax.globalVariableProvider.getVariableValue(name);
- };
- $ax.getObjectFromElementIdDisregardHex = function (elementId) {
- var elementIdInput = elementId.charAt(0) == '#' ? elementId.substring(1) : elementId;
- return this.getObjectFromElementId(elementIdInput);
- }
- $ax.getTypeFromElementId = function(elementId) {
- var obj = this.getObjectFromElementIdDisregardHex(elementId);
- return obj && obj.type;
- };
- $ax.getNumFromPx = function(pxNum) {
- return Number(pxNum.replace('px', ''));
- }
- });
|