123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806 |
- // ******* AxQuery Plugins ******** //
- $axure.internal(function($ax) {
- $ax.constants = {};
- $ax.constants.TABLE_TYPE = 'table';
- $ax.constants.MENU_OBJECT_TYPE = 'menuObject';
- $ax.constants.MASTER_TYPE = 'master';
- $ax.constants.PAGE_TYPE = 'page';
- $ax.constants.REFERENCE_DIAGRAM_OBJECT_TYPE = 'referenceDiagramObject';
- $ax.constants.REPEATER_TYPE = 'repeater';
- $ax.constants.DYNAMIC_PANEL_TYPE = 'dynamicPanel';
- $ax.constants.LAYER_TYPE = 'layer';
- $ax.constants.TEXT_BOX_TYPE = 'textBox';
- $ax.constants.TEXT_AREA_TYPE = 'textArea';
- $ax.constants.LIST_BOX_TYPE = 'listBox';
- $ax.constants.COMBO_BOX_TYPE = 'comboBox';
- $ax.constants.CHECK_BOX_TYPE = 'checkbox';
- $ax.constants.RADIO_BUTTON_TYPE = 'radioButton';
- $ax.constants.BUTTON_TYPE = 'button'; //html button
- $ax.constants.IMAGE_MAP_REGION_TYPE = 'imageMapRegion';
- $ax.constants.IMAGE_BOX_TYPE = 'imageBox';
- $ax.constants.VECTOR_SHAPE_TYPE = 'vectorShape';
- $ax.constants.SNAPSHOT_TYPE = 'screenshot';
- $ax.constants.TREE_NODE_OBJECT_TYPE = 'treeNodeObject';
- $ax.constants.TABLE_CELL_TYPE = 'tableCell';
- $ax.constants.VERTICAL_LINE_TYPE = 'verticalLine';
- $ax.constants.HORIZONTAL_LINE_TYPE = 'horizontalLine';
- $ax.constants.INLINE_FRAME_TYPE = 'inlineFrame';
- $ax.constants.CONNECTOR_TYPE = 'connector';
- $ax.constants.ALL_TYPE = '*';
- $ax.constants.TEXT_TYPE = 'richTextPanel';
- $ax.constants.LINK_TYPE = 'hyperlink';
- // TODO: Need solid passo f this. Constants should be able to bemade local, may need some public lists or something.
- // public.fn function should take not arg and use this. May need some $ax.IsType fuctions that will take a type arg and be static
- $ax.public.fn.IsTable = function (type) { return type == $ax.constants.TABLE_TYPE; }
- $ax.public.fn.IsMenuObject = function (type) { return type == $ax.constants.MENU_OBJECT_TYPE; }
- $ax.public.fn.IsMaster = function (type) { return type == $ax.constants.MASTER_TYPE; }
- $ax.public.fn.IsPage = function (type) { return type == $ax.constants.PAGE_TYPE; }
- $ax.public.fn.IsReferenceDiagramObject = function (type) { return type == $ax.constants.REFERENCE_DIAGRAM_OBJECT_TYPE; }
- $ax.public.fn.IsRepeater = function (type) { return type == $ax.constants.REPEATER_TYPE; }
- $ax.public.fn.IsDynamicPanel = $ax.IsDynamicPanel = function (type) { return type == $ax.constants.DYNAMIC_PANEL_TYPE; }
- $ax.public.fn.IsLayer = $ax.IsLayer = function (type) { return type == $ax.constants.LAYER_TYPE; }
- $ax.public.fn.IsTextBox = function (type) { return type == $ax.constants.TEXT_BOX_TYPE; }
- $ax.public.fn.IsTextArea = function (type) { return type == $ax.constants.TEXT_AREA_TYPE; }
- $ax.public.fn.IsListBox = function (type) { return type == $ax.constants.LIST_BOX_TYPE; }
- $ax.public.fn.IsComboBox = function (type) { return type == $ax.constants.COMBO_BOX_TYPE; }
- $ax.public.fn.IsCheckBox = function (type) { return type == $ax.constants.CHECK_BOX_TYPE; }
- $ax.public.fn.IsRadioButton = function (type) { return type == $ax.constants.RADIO_BUTTON_TYPE; }
- $ax.public.fn.IsButton = function (type) { return type == $ax.constants.BUTTON_TYPE; }
- $ax.public.fn.IsIamgeMapRegion = function (type) { return type == $ax.constants.IMAGE_MAP_REGION_TYPE; }
- $ax.public.fn.IsImageBox = function (type) { return type == $ax.constants.IMAGE_BOX_TYPE; }
- $ax.public.fn.IsVector = function (type) { return type == $ax.constants.VECTOR_SHAPE_TYPE; }
- $ax.public.fn.IsSnapshot = function (type) { return type == $ax.constants.SNAPSHOT_TYPE; }
- $ax.public.fn.IsTreeNodeObject = function (type) { return type == $ax.constants.TREE_NODE_OBJECT_TYPE; }
- $ax.public.fn.IsTableCell = function (type) { return type == $ax.constants.TABLE_CELL_TYPE; }
- $ax.public.fn.IsInlineFrame = function (type) { return type == $ax.constants.INLINE_FRAME_TYPE; }
- $ax.public.fn.IsConnector = function (type) { return type == $ax.constants.CONNECTOR_TYPE; }
- $ax.public.fn.IsContainer = function (type) { return type== $ax.constants.VECTOR_SHAPE_TYPE || type == $ax.constants.TABLE_TYPE || type == $ax.constants.MENU_OBJECT_TYPE || type == $ax.constants.TREE_NODE_OBJECT_TYPE; }
- var PLAIN_TEXT_TYPES = [$ax.constants.TEXT_BOX_TYPE, $ax.constants.TEXT_AREA_TYPE, $ax.constants.LIST_BOX_TYPE,
- $ax.constants.COMBO_BOX_TYPE, $ax.constants.CHECK_BOX_TYPE, $ax.constants.RADIO_BUTTON_TYPE, $ax.constants.BUTTON_TYPE];
- $ax.public.fn.IsResizable = function (type) { return $.inArray(type, RESIZABLE_TYPES) !== -1; }
- var RESIZABLE_TYPES = [
- $ax.constants.BUTTON_TYPE, $ax.constants.DYNAMIC_PANEL_TYPE, $ax.constants.IMAGE_BOX_TYPE, $ax.constants.IMAGE_MAP_REGION_TYPE,
- $ax.constants.INLINE_FRAME_TYPE, $ax.constants.LAYER_TYPE, $ax.constants.LIST_BOX_TYPE, $ax.constants.COMBO_BOX_TYPE,
- $ax.constants.VECTOR_SHAPE_TYPE, $ax.constants.TEXT_AREA_TYPE, $ax.constants.TEXT_BOX_TYPE, $ax.constants.SNAPSHOT_TYPE
- ];
- $ax.public.fn.SupportsRichText = function() {
- var obj = $obj(this.getElementIds()[0]);
- // Catch root tree nodes as they are not supported.
- if(obj.type == $ax.constants.TREE_NODE_OBJECT_TYPE) return obj.friendlyType == 'Tree Node';
- // Do the same for tree node icons maybe?
- return $.inArray(obj.type, SUPPORTS_RICH_TEXT_TYPES) != -1;
- }
- var SUPPORTS_RICH_TEXT_TYPES = [$ax.constants.CHECK_BOX_TYPE, $ax.constants.RADIO_BUTTON_TYPE,
- $ax.constants.IMAGE_BOX_TYPE, $ax.constants.VECTOR_SHAPE_TYPE, $ax.constants.TABLE_CELL_TYPE, $ax.constants.CONNECTOR_TYPE];
- var _addJQueryFunction = function(name) {
- $ax.public.fn[name] = function() {
- var val = $.fn[name].apply(this.jQuery(), arguments);
- return arguments[0] ? this : val;
- };
- };
- var _jQueryFunctionsToAdd = ['text', 'val', 'css'];
- for (var jqueryFunctionIndex = 0; jqueryFunctionIndex < _jQueryFunctionsToAdd.length; jqueryFunctionIndex++) _addJQueryFunction(_jQueryFunctionsToAdd[jqueryFunctionIndex]);
- // var _addJQueryEventFunction = function(name) {
- // $ax.public.fn[name] = function() {
- // $.fn[name].apply(this.jQuery(), arguments);
- // return this;
- // };
- // };
- // var _addJQueryEventFunction = function(name) {
- // $ax.public.fn[name] = (function(nn) {
- // return function() {
- // $.fn[nn].apply(this.jQuery(), arguments);
- // return this;
- // };
- // })(name);
- // };
- var _addJQueryEventFunction = function(name) {
- $ax.public.fn[name] = function() {
- //With Martin - No idea why this is necessary. We tried encapsulating the function thinking it was related to closure (above),
- //but that didn't fix the problem. If we don't add this Repeaters will give "Uncaught TypeError: Object #<Object> has no method 'apply'"
- //here (but Indeterminately, often on larger/slower Repeaters) because it is Undefined. However it seems the catch is never hit
- //if we surround the statement with the try/catch. Perhaps the try/catch block creates a scope or closure.
- try {
- $.fn[name].apply(this.jQuery(), arguments);
- } catch(e) {
- console.log("Couldn't find the event: " + name);
- }
- return this;
- };
- };
- var _jQueryEventFunctionsToAdd = ['click', 'mouseenter', 'mouseleave', 'bind'];
- for(var jqueryEventIndex = 0; jqueryEventIndex < _jQueryEventFunctionsToAdd.length; jqueryEventIndex++) _addJQueryEventFunction(_jQueryEventFunctionsToAdd[jqueryEventIndex]);
- $ax.public.fn.openLink = function(url, includeVariables) {
- this.jQuery().each(function() {
- if(!($(this).is('iframe'))) {
- return;
- }
- var objIframe = $(this).get(0);
- $ax.navigate({
- url: url,
- target: "frame",
- includeVariables: includeVariables,
- frame: objIframe
- });
- });
- return this;
- };
- $ax.public.fn.SetPanelState = function(stateNumber, options, showWhenSet) {
- var animateInInfo = _getAnimateInfo(options && options.animateIn, 500);
- var animateOutInfo = _getAnimateInfo(options && options.animateOut, 500);
- var elementIds = this.getElementIds();
- for(var index = 0; index < elementIds.length; index++) {
- var elementId = elementIds[index];
- if ($ax.public.fn.IsDynamicPanel($ax.getTypeFromElementId(elementId))) {
- var stateName = $ax.visibility.GetPanelStateId(elementId, Number(stateNumber) - 1);
- var wasVisible = $ax.visibility.IsIdVisible(elementId);
- // If compressing because you are fit to content and the change of state may change size, must be before the change.
- if(options.compress && $ax.dynamicPanelManager.isIdFitToContent(elementId) && wasVisible) {
- $ax.dynamicPanelManager.compressDelta(elementId, $ax.visibility.GetPanelState(elementId), stateName, options.vertical, options.compressEasing, options.compressDuration);
- }
- $ax.visibility.SetPanelState(elementId, stateName, animateOutInfo.easingType, animateOutInfo.direction, animateOutInfo.duration,
- animateInInfo.easingType, animateInInfo.direction, animateInInfo.duration, showWhenSet);
- // If compressing because of a show, must be after state is set.
- if(options.compress && !wasVisible && showWhenSet) {
- $ax.dynamicPanelManager.compressToggle(elementId, options.vertical, true, options.compressEasing, options.compressDuration);
- }
- }
- }
- return this;
- };
- $ax.public.fn.show = function(options, eventInfo) {
- var elementIds = this.getElementIds();
- for(var index = 0; index < elementIds.length; index++) {
- var elementId = elementIds[index];
- var lightboxId = $ax.repeater.applySuffixToElementId(elementId, '_lightbox');
- var lightbox = $jobj(lightboxId);
- if(options && options.showType == 'lightbox') {
- $ax.flyoutManager.unregisterPanel(elementId, true);
- // Add lightbox if there isn't one
- if(lightbox.length == 0) {
- lightbox = $('<div></div>');
- lightbox.attr('id', lightboxId);
- var color = 'rgb(' + options.lightbox.r + ',' + options.lightbox.g + ',' + options.lightbox.b + ')';
- lightbox.css({
- position: 'fixed',
- left: '0px',
- top: '0px',
- width: '10000px',
- height: '10000px',
- 'background-color': color,
- opacity: options.lightbox.a / 255
- });
- var parents = $ax('#' + elementId).getParents(true, ['dynamicPanel'])[0];
- var fixedParentPanelId = undefined;
- for(var j = 0; j < parents.length; j++) {
- var parentId = parents[j];
- if($jobj(parentId).css('z-index') != 'auto' || $ax.features.supports.mobile) {
- fixedParentPanelId = parents[j];
- break;
- }
- }
- if(!fixedParentPanelId) $('#base').append(lightbox);
- else $jobj(fixedParentPanelId).append(lightbox);
- var wasVisible = $ax.visibility.IsIdVisible(elementId);
- (function(lightbox, query) {
- $ax.event.attachClick(lightbox, function() {
- $ax.action.addAnimation(elementId, $ax.action.queueTypes.fade, function() {
- if(!wasVisible) query.hide();
- else $ax.action.fireAnimationFromQueue(elementId, $ax.action.queueTypes.fade);
- lightbox.remove();
- });
- });
- })(lightbox, this);
- }
- $ax.legacy.BringToFront(lightboxId, true);
- $ax.legacy.BringToFront(elementId, true);
- } else if(options && options.showType == 'flyout') {
- // Remove lightbox if there is one
- lightbox.remove();
- var src = eventInfo.thiswidget;
- var target = $ax.getWidgetInfo(elementId);
- var rects = {};
- if(src.valid) rects.src = $ax.geometry.genRect(src, true);
- if(target.valid) rects.target = $ax.geometry.genRect(target, true);
- $ax.flyoutManager.registerFlyout(rects, elementId, eventInfo.srcElement);
- //$ax.style.AddRolloverOverride(elementId);
- $ax.legacy.BringToFront(elementId);
- } else {
- // Remove lightbox, unregister flyout
- lightbox.remove();
- $ax.flyoutManager.unregisterPanel(elementId, true);
- }
- _setVisibility(elementId, true, options);
- }
- return this;
- };
- var _getAnimateInfo = function (options, defaultDuration, useHide) {
- var durationOption, easingOption, animationOption;
- if(options) {
- if (useHide) {
- durationOption = options.durationHide;
- easingOption = options.easingHide;
- animationOption = options.animationHide;
- } else {
- durationOption = options.duration;
- easingOption = options.easing;
- animationOption = options.animation;
- }
- if (animationOption == 'none') animationOption = 'swing';
- } else {
- durationOption = defaultDuration;
- easingOption = 'none',
- animationOption = 'swing';
- }
- var animateInfo = { duration: durationOption };
- switch (easingOption) {
- case 'fade':
- animateInfo.easingType = 'fade';
- animateInfo.direction = '';
- break;
- case 'slideLeft':
- animateInfo.easingType = animationOption;
- animateInfo.direction = 'left';
- break;
- case 'slideRight':
- animateInfo.easingType = animationOption;
- animateInfo.direction = 'right';
- break;
- case 'slideUp':
- animateInfo.easingType = animationOption;
- animateInfo.direction = 'up';
- break;
- case 'slideDown':
- animateInfo.easingType = animationOption;
- animateInfo.direction = 'down';
- break;
- case 'flipLeft':
- animateInfo.easingType = 'flip';
- animateInfo.direction = 'left';
- break;
- case 'flipRight':
- animateInfo.easingType = 'flip';
- animateInfo.direction = 'right';
- break;
- case 'flipUp':
- animateInfo.easingType = 'flip';
- animateInfo.direction = 'up';
- break;
- case 'flipDown':
- animateInfo.easingType = 'flip';
- animateInfo.direction = 'down';
- break;
- default:
- animateInfo.easingType = 'none';
- animateInfo.direction = '';
- }
- return animateInfo;
- };
- $ax.public.fn.hide = function(options) {
- var elementIds = this.getElementIds();
- for(var index = 0; index < elementIds.length; index++) {
- var elementId = elementIds[index];
- // var wasShown = $ax.visibility.IsIdVisible(elementId);
- _setVisibility(elementId, false, options, true);
- }
- return this;
- };
- $ax.public.fn.toggleVisibility = function(options) {
- var elementIds = this.getElementIds();
- for (var index = 0; index < elementIds.length; index++) {
- var elementId = elementIds[index];
- var show = !$ax.visibility.IsIdVisible(elementId);
- _setVisibility(elementId, show, options, !show);
- }
- return this;
- };
- var _setVisibility = function (elementId, value, options, useHide) {
- var animateInfo = _getAnimateInfo(options, 0, useHide);
- var wasShown = $ax.visibility.IsIdVisible(elementId);
- var compress = options && options.showType == 'compress' && wasShown != value;
- if (compress) $ax.dynamicPanelManager.compressToggle(elementId, options.vertical, value, options.compressEasing, options.compressDuration);
- var onComplete = function () {
- $ax.dynamicPanelManager.fitParentPanel(elementId);
- };
- $ax.visibility.SetWidgetVisibility(elementId, {
- value: value,
- easing: animateInfo.easingType,
- direction: animateInfo.direction,
- duration: animateInfo.duration,
- animation: animateInfo.animation,
- fire: true,
- onComplete: onComplete
- });
-
- if(options && options.bringToFront) $ax.legacy.BringToFront(elementId);
- };
- $ax.public.fn.setOpacity = function(opacity, easing, duration) {
- if(!easing || ! duration) {
- easing = 'none';
- duration = 0;
- }
- var elementIds = this.getElementIds();
- for(var index = 0; index < elementIds.length; index++) {
- var elementId = elementIds[index];
- var onComplete = function() {
- $ax.action.fireAnimationFromQueue(elementId, $ax.action.queueTypes.fade);
- };
- var query = $jobj(elementId);
- if(duration == 0 || easing == 'none') {
- query.css('opacity', opacity);
- onComplete();
- } else query.animate({ opacity: opacity }, { duration: duration, easing: easing, queue: false, complete: onComplete });
- }
- }
- //move one widget. I didn't combine moveto and moveby, since this is in .public, and separate them maybe more clear for the user
- var _move = function (elementId, x, y, options, moveTo) {
- if(!options.easing) options.easing = 'none';
- if(!options.duration) options.duration = 500;
- var obj = $obj(elementId);
- // Layer move using container now.
- if($ax.public.fn.IsLayer(obj.type)) {
- $ax.move.MoveWidget(elementId, x, y, options, moveTo,
- function () {
- if(options.onComplete) options.onComplete();
- $ax.dynamicPanelManager.fitParentPanel(elementId);
- }, false);
- } else {
- var xDelta = x;
- var yDelta = y;
- if (moveTo) {
- var jobj = $jobj(elementId);
- var left = $ax.getNumFromPx(jobj.css('left'));
- var top = $ax.getNumFromPx(jobj.css('top'));
- xDelta = x - left;
- yDelta = y - top;
- }
- $ax.move.MoveWidget(elementId, xDelta, yDelta, options, false,
- function () { $ax.dynamicPanelManager.fitParentPanel(elementId); }, true);
- }
- };
- $ax.public.fn.moveTo = function (x, y, options) {
- var elementIds = this.getElementIds();
- for(var index = 0; index < elementIds.length; index++) {
- _move(elementIds[index], x, y, options, true);
- }
- return this;
- };
- $ax.public.fn.moveBy = function (x, y, options) {
- var elementIds = this.getElementIds();
- if(x == 0 && y == 0) {
- for(var i = 0; i < elementIds.length; i++) {
- var elementId = elementIds[i];
- $ax.move.nopMove(elementId, options);
- //$ax.event.raiseSyntheticEvent(elementId, "onMove");
- $ax.action.fireAnimationFromQueue(elementId, $ax.action.queueTypes.move);
- //if($axure.fn.IsLayer($obj(elementId).type)) {
- // var childrenIds = $ax.public.fn.getLayerChildrenDeep(elementId, true);
- // for(var j = 0; j < childrenIds.length; j++) $ax.event.raiseSyntheticEvent(childrenIds[j], 'onMove');
- //}
- }
- return this;
- }
- for(var index = 0; index < elementIds.length; index++) {
- _move(elementIds[index], x, y, options, false);
- }
- return this;
- };
- $ax.public.fn.circularMoveAndRotate = function(degreeChange, options, centerPointLeft, centerPointTop, doRotation, moveDelta, resizeOffset, rotatableMove, moveComplete) {
- if(!rotatableMove) rotatableMove = { x: 0, y: 0 };
- var elementIds = this.getElementIds();
- for(var index = 0; index < elementIds.length; index++) {
- var elementId = elementIds[index];
- var onComplete = function () {
- $ax.dynamicPanelManager.fitParentPanel(elementId);
- if (moveComplete) moveComplete();
- }
- $ax.move.circularMove(elementId, degreeChange, { x: centerPointLeft, y: centerPointTop }, moveDelta, rotatableMove, resizeOffset, options, true, onComplete, doRotation);
- if(doRotation) $ax.move.rotate(elementId, degreeChange, options.easing, options.duration, false, true, function () { $ax.dynamicPanelManager.fitParentPanel(elementId); });
- else $ax.action.fireAnimationFromQueue(elementId, $ax.action.queueTypes.rotate);
- }
- };
- $ax.public.fn.rotate = function (degree, easing, duration, to, axShouldFire) {
- var elementIds = this.getElementIds();
- // this function will no longer handle compound vectors.
- for(var index = 0; index < elementIds.length; index++) {
- var elementId = elementIds[index];
- degree = parseFloat(degree);
- $ax.move.rotate(elementId, degree, easing, duration, to, axShouldFire, function () { $ax.dynamicPanelManager.fitParentPanel(elementId); });
- }
- };
- $ax.public.fn.resize = function(newLocationAndSizeCss, resizeInfo, axShouldFire, moves, onCompletedFunc) {
- var elementIds = this.getElementIds();
- if(!elementIds) return;
- var completeAndFire = function(moved, id) {
- if(axShouldFire) {
- $ax.action.fireAnimationFromQueue(id, $ax.action.queueTypes.resize);
- if(moves) $ax.action.fireAnimationFromQueue(id, $ax.action.queueTypes.move);
- }
- if(onCompletedFunc) onCompletedFunc();
- };
- for(var index = 0; index < elementIds.length; index++) {
- var elementId = elementIds[index];
- var obj = $obj(elementId);
- if(!$ax.public.fn.IsResizable(obj.type)) {
- //$ax.dynamicPanelManager.fitParentPanel(elementId);
- completeAndFire(moves, elementId);
- continue;
- }
- var oldSize = $ax('#' + elementId).size();
- var oldWidth = oldSize.width;
- var oldHeight = oldSize.height;
- var query = $jobj(elementId);
- var isDynamicPanel = $ax.public.fn.IsDynamicPanel(obj.type);
- if(isDynamicPanel) {
- // No longer fitToContent, calculate additional styling that needs to be done.
- $ax.dynamicPanelManager.setFitToContentCss(elementId, false, oldWidth, oldHeight);
- if (query.css('position') == 'fixed' && ((obj.fixedHorizontal && obj.fixedHorizontal == 'center') || (obj.fixedVertical && obj.fixedVertical == 'middle'))) {
- moves = true;
- var loc = $ax.dynamicPanelManager.getFixedPosition(elementId, oldWidth, oldHeight, newLocationAndSizeCss.width, newLocationAndSizeCss.height);
- if(loc) {
- if (loc[0] != 0 && !$ax.dynamicPanelManager.isPercentWidthPanel(obj)) newLocationAndSizeCss['margin-left'] = '+=' + (Number(newLocationAndSizeCss['margin-left'].substr(2)) + loc[0]);
- if (loc[1] != 0) newLocationAndSizeCss['margin-top'] = '+=' + (Number(newLocationAndSizeCss['margin-top'].substr(2)) + loc[1]);
- }
- }
- var onComplete = function() {
- $ax.flyoutManager.updateFlyout(elementId);
- $ax.dynamicPanelManager.fitParentPanel(elementId);
- $ax.dynamicPanelManager.updatePanelPercentWidth(elementId);
- $ax.dynamicPanelManager.updatePanelContentPercentWidth(elementId);
- completeAndFire(moves, elementId);
- $ax.event.raiseSyntheticEvent(elementId, 'onResize');
- };
- } else {
- ////if contains text
- //var textChildren = query.children('div.text');
- //if(textChildren && textChildren.length != 0) {
- // var textDivId = textChildren.attr('id');
- // var padding = $ax.style.getPadding(textDivId);
- // var leftPadding = padding.paddingLeft;
- // var rightPadding = padding.paddingRight;
- // //var textObj = $ax('#' + textDivId);
- // //var leftPadding = textObj.left(true);
- // //var rightPadding = oldWidth - leftPadding - textObj.width();
- // //greater or equal to 1px
- // var newTextWidth = Math.max(newLocationAndSizeCss.width - leftPadding - rightPadding, 1);
- // var textChildCss = { width: newTextWidth };
- // var textStepFunction = function() {
- // //change the width of the text div may effect the height
- // //var currentTextHeight = Number($(textChildren.children('p')[0]).css('height').replace('px', ''));
- // //textChildren.css('height', currentTextHeight);
- // //var display = $ax.public.fn.displayHackStart(document.getElementById(textDivId));
- // var trap = _displayWidget(textDivId);
- // $ax.style.setTextAlignment([textDivId]);
- // trap();
- // //$ax.public.fn.displayHackEnd(display);
- // };
- //}
- //get all the other children that matters
- onComplete = function() {
- $ax.dynamicPanelManager.fitParentPanel(elementId);
- completeAndFire(moves, elementId);
- $ax.annotation.adjustIconLocation(elementId);
- $ax.event.raiseSyntheticEvent(elementId, 'onResize');
- };
- }
- var children = query.children().not('div.text');
- while(children && children.length && $(children[0]).attr('id').indexOf('container') != -1) {
- children = children.children().not('div.text');
- }
- if(children && children.length !== 0) {
- var childAnimationArray = [];
- var isConnector = $ax.public.fn.IsConnector(obj.type);
- children.each(function (i, child) {
- var childCss = {
- width: newLocationAndSizeCss.width,
- height: newLocationAndSizeCss.height
- };
- //$ax.size() use outerWidth/Height(false), which include padding and borders(no margins)
- var childSizingObj = $ax('#' + child.id).size();
- var differentSizedImage = childSizingObj.width - oldWidth != 0 || childSizingObj.height - oldHeight != 0;
- if ((differentSizedImage || isConnector) && child.tagName == 'IMG') {
- //oldwidth is zero for connectors
- var widthOffset = oldWidth ? (childSizingObj.width - oldWidth) * newLocationAndSizeCss.width / oldWidth : childSizingObj.width;
- var heightOffset = oldHeight ? (childSizingObj.height - oldHeight) * newLocationAndSizeCss.height / oldHeight : childSizingObj.height;
- childCss.width += widthOffset;
- childCss.height += heightOffset;
- }
- //there are elements like inputs, come with a padding and border, so need to use outerwidth for starting point, due to jquery 1.7 css() on width/height bugs
- if($(child).css('position') === 'absolute') {
- if(child.offsetLeft) {
- childSizingObj.left = child.offsetLeft;
- childCss.left = oldWidth ? child.offsetLeft * newLocationAndSizeCss.width / oldWidth : child.offsetLeft; //- transformedShift.x;
- }
- if(child.offsetTop) {
- childSizingObj.top = child.offsetTop;
- childCss.top = oldHeight ? child.offsetTop * newLocationAndSizeCss.height / oldHeight : child.offsetTop; //- transformedShift.y;
- }
- }
- childAnimationArray.push({ obj: child, sizingObj: childSizingObj, sizingCss: childCss });
- });
- }
-
- if (newLocationAndSizeCss.left || newLocationAndSizeCss.top) {
- //var movedLeft = newLocationAndSizeCss.left;
- //var movedTop = newLocationAndSizeCss.top;
- //$ax.visibility.setMovedLocation(elementId, movedLeft, movedTop);
- var movedLeft = newLocationAndSizeCss.deltaX;
- var movedTop = newLocationAndSizeCss.deltaY;
- $ax.visibility.moveMovedLocation(elementId, movedLeft, movedTop);
- }
- if (newLocationAndSizeCss.width || newLocationAndSizeCss.height) {
- var resizedWidth = newLocationAndSizeCss.width;
- var resizedHeight = newLocationAndSizeCss.height;
- $ax.visibility.setResizedSize(elementId, resizedWidth, resizedHeight);
- }
- if (!resizeInfo.easing || resizeInfo.easing == 'none') {
- query.animate(newLocationAndSizeCss, 0);
- if (childAnimationArray) {
- $(childAnimationArray).each(function (i, animationObj) {
- if(animationObj.resizeMatrixFunction) {
- $(animationObj.obj).css($ax.public.fn.setTransformHowever(animationObj.resizeMatrixFunction(animationObj.width, animationObj.height)));
- } else {
- //var sizingCss = animationObj.sizingCss;
- //if (sizingCss.left || sizingCss.top) {
- // var movedLeft = sizingCss.left;
- // var movedTop = sizingCss.top;
- // $ax.visibility.setMovedLocation(animationObj.obj.id, movedLeft, movedTop);
- //}
- //if (sizingCss.width || sizingCss.height) {
- // var resizedWidth = sizingCss.width;
- // var resizedHeight = sizingCss.height;
- // $ax.visibility.setResizedSize(animationObj.obj.id, resizedWidth, resizedHeight);
- //}
- $(animationObj.obj).animate(animationObj.sizingCss, 0);
- }
- });
- }
- //if(childCss) children.animate(childCss, 0);
- //if(sketchyImage && sketchyImageCss) $(sketchyImage).animate(sketchyImageCss, 0);
- //if(textChildCss) {
- // textChildren.animate(textChildCss, {
- // duration: 0,
- // step: textStepFunction
- // });
- //}
- onComplete();
- } else {
- if(childAnimationArray) {
- $(childAnimationArray).each(function (i, animationObj) {
- if(animationObj.resizeMatrixFunction) {
- $(animationObj.sizingObj).animate(animationObj.sizingCss, {
- queue: false,
- duration: resizeInfo.duration,
- easing: resizeInfo.easing,
- step: function (now) {
- var widthRatio = (animationObj.width - 1.0) * now + 1.0;
- var heightRatio = (animationObj.height - 1.0) * now + 1.0;
- $(animationObj.obj).css($ax.public.fn.setTransformHowever(animationObj.resizeMatrixFunction(widthRatio, heightRatio)));
- }
- });
- } else {
- $(animationObj.sizingObj).animate(animationObj.sizingCss, {
- queue: false,
- duration: resizeInfo.duration,
- easing: resizeInfo.easing,
- step: function (now, tween) {
- $(animationObj.obj).css(tween.prop, now);
- }
- });
- }
- });
- }
- //if(textChildCss) {
- // textChildren.animate(textChildCss, {
- // queue: false,
- // duration: resizeInfo.duration,
- // easing: resizeInfo.easing,
- // step: textStepFunction
- // });
- //}
- if(isDynamicPanel) {
- query.animate(newLocationAndSizeCss, { queue: false, duration: resizeInfo.duration, easing: resizeInfo.easing, complete: onComplete });
- } else {
- var locObj = {
- left: $ax.public.fn.GetFieldFromStyle(query, 'left'), top: $ax.public.fn.GetFieldFromStyle(query, 'top'),
- width: $ax.public.fn.GetFieldFromStyle(query, 'width'), height: $ax.public.fn.GetFieldFromStyle(query, 'height'),
- };
- $(locObj).animate(newLocationAndSizeCss, {
- queue: false,
- duration: resizeInfo.duration,
- easing: resizeInfo.easing,
- step: function (now, tween) {
- query.css(tween.prop, now);
- },
- complete: onComplete
- });
- }
- }
- }
- };
- $ax.public.fn.bringToFront = function() {
- var elementIds = this.getElementIds();
- for(var index = 0; index < elementIds.length; index++) { $ax.legacy.BringToFront(elementIds[index]); }
- return this;
- };
- $ax.public.fn.sendToBack = function() {
- var elementIds = this.getElementIds();
- for(var index = 0; index < elementIds.length; index++) { $ax.legacy.SendToBack(elementIds[index]); }
- return this;
- };
- $ax.public.fn.text = function() {
- if(arguments[0] == undefined) {
- var firstId = this.getElementIds()[0];
- if(!firstId) { return undefined; }
- return getWidgetText(firstId);
- } else {
- var elementIds = this.getElementIds();
- for(var index = 0; index < elementIds.length; index++) {
- var currentItem = elementIds[index];
- var widgetType = $ax.getTypeFromElementId(currentItem);
- if($ax.public.fn.IsTextBox(widgetType) || $ax.public.fn.IsTextArea(widgetType)) { //For non rtf
- SetWidgetFormText(currentItem, arguments[0]);
- } else {
- var idRtf = '#' + currentItem;
- if($(idRtf).length == 0) idRtf = '#u' + (Number(currentItem.substring(1)) + 1);
- if($(idRtf).length != 0) {
- //If the richtext div already has some text in it,
- //preserve only the first style and get rid of the rest
- //If no pre-existing p-span tags, don't do anything
- if($(idRtf).find('p').find('span').length > 0) {
- $(idRtf).find('p:not(:first)').remove();
- $(idRtf).find('p').find('span:not(:first)').remove();
- //Replace new-lines with NEWLINE token, then html encode the string,
- //finally replace NEWLINE token with linebreak
- var textWithLineBreaks = arguments[0].replace(/\n/g, '--NEWLINE--');
- var textHtml = $('<div/>').text(textWithLineBreaks).html();
- $(idRtf).find('span').html(textHtml.replace(/--NEWLINE--/g, '<br>'));
- }
- }
- }
- }
- return this;
- }
- };
- var getWidgetText = function(id) {
- var idQuery = $jobj(id);
- var inputQuery = $jobj($ax.INPUT(id));
- if(inputQuery.length) idQuery = inputQuery;
- if (idQuery.is('input') && ($ax.public.fn.IsCheckBox(idQuery.attr('type')) || idQuery.attr('type') == 'radio')) {
- idQuery = idQuery.parent().find('label').find('div');
- }
- if(idQuery.is('div')) {
- var $rtfObj = idQuery.hasClass('text') ? idQuery : idQuery.find('.text');
- if($rtfObj.length == 0) return '';
- var textOut = '';
- $rtfObj.children('p,ul,ol').each(function(index) {
- if(index != 0) textOut += '\n';
- //var htmlContent = $(this).html();
- //if(isSoloBr(htmlContent)) return; // It has a solo br, then it was just put in for a newline, and paragraph already added the new line.
- if (isSoloBr($(this).children())) return;
- var htmlContent = $(this).html();
- //Replace line breaks (set in SetWidgetRichText) with newlines and nbsp's with regular spaces.
- htmlContent = htmlContent.replace(/<br[^>]*>/ig, '\n').replace(/ /ig, ' ');
- textOut += $(htmlContent).text();
- //textOut += htmlContent.replace(/<[^>]*>/g, '');
- });
- return textOut;
- } else {
- var val = idQuery.val();
- return val == undefined ? '' : val;
- }
- };
- var isSoloBr = function($html) {
- //html = $(html);
- // Html needs one and only one span
- var spanChildren = $html.length == 1 && $html.is('span') ? $html.children() : false;
- // Span children needs exactly one br and no text in the span
- return spanChildren && spanChildren.length == 1 && spanChildren.is('br') && spanChildren.text().trim() == '';
- };
- $ax.public.fn.setRichTextHtml = function() {
- if(arguments[0] == undefined) {
- //No getter function, so just return undefined
- return undefined;
- } else {
- var elementIds = this.getElementIds();
- for(var index = 0; index < elementIds.length; index++) {
- var currentItem = elementIds[index];
- var widgetType = $ax.getTypeFromElementId(currentItem);
- if ($ax.public.fn.IsTextBox(widgetType) || $ax.public.fn.IsTextArea(widgetType)) { //Do nothing for non rtf
- continue;
- } else {
- //TODO -- [mas] fix this!
- var idRtf = '#' + currentItem;
- if($(idRtf).length == 0) idRtf = '#u' + (parseInt(currentItem.substring(1)) + 1);
- if($(idRtf).length != 0) SetWidgetRichText(idRtf, arguments[0]);
- }
- }
- return this;
- }
- };
- $ax.public.fn.value = function() {
- if(arguments[0] == undefined) {
- var firstId = this.getElementIds()[0];
- if(!firstId) {
- return undefined;
- }
- var widgetType = $ax.getTypeFromElementId(firstId);
- if ($ax.public.fn.IsComboBox(widgetType) || $ax.public.fn.IsListBox(widgetType)) { //for select lists and drop lists
- return $('#' + firstId + ' :selected').text();
- } else if ($ax.public.fn.IsCheckBox(widgetType) || $ax.public.fn.IsRadioButton(widgetType)) { //for radio/checkboxes
- return $('#' + firstId + '_input').is(':selected');
- } else if ($ax.public.fn.IsTextBox(widgetType)) { //for text box
- return $('#' + firstId + '_input').val();
- } else { //for text based form elements
- return this.jQuery().first().val();
- }
- } else {
- var elementIds = this.getElementIds();
- for(var index = 0; index < elementIds.length; index++) {
- var widgetType = $ax.getTypeFromElementId(elementIds[index]);
- var elementIdQuery = $('#' + elementIds[index]);
- if ($ax.public.fn.IsCheckBox(widgetType) || $ax.public.fn.IsRadioButton(widgetType)) { //for radio/checkboxes
- if(arguments[0] == true) {
- elementIdQuery.prop('selected', true);
- } else if(arguments[0] == false) {
- elementIdQuery.prop('selected', false);
- }
- } else { //For select lists, drop lists, text based form elements
- elementIdQuery.val(arguments[0]);
- }
- }
- return this;
- }
- };
- $ax.public.fn.checked = function() {
- if(arguments[0] == undefined) {
- return this.selected();
- } else {
- this.selected(arguments[0]);
- return this;
- }
- };
- //var _getRelativeLeft = function (id, parent) {
- // var currentNode = window.document.getElementById(id).offsetParent;
- // var left = $ax('#' + id).left(true);
- // while (currentNode != null && currentNode.tagName != "BODY" && currentNode != parent) {
- // left += currentNode.offsetLeft;
- // currentNode = currentNode.offsetParent;
- // }
- // return left;
- //};
- //var _getRelativeTop = function(id, parent) {
- // var currentNode = window.document.getElementById(id).offsetParent;
- // var top = $ax('#' + id).top(true);
- // while(currentNode != null && currentNode.tagName != "BODY" && currentNode != parent) {
- // top += currentNode.offsetTop;
- // currentNode = currentNode.offsetParent;
- // }
- // return top;
- //};
- var _scrollHelper = function(id, scrollX, scrollY, easing, duration) {
- var target = window.document.getElementById(id);
- var scrollable = $ax.legacy.GetScrollable(target);
- var $scrollable = $(scrollable);
- var viewportLocation;
- if ($scrollable.is('body')) viewportLocation = $ax('#' + id).viewportLocation();
- else viewportLocation = $ax('#' + id).pageBoundingRect(true, $scrollable.attr('id')).location;
- var targetLeft = viewportLocation.left;
- var targetTop = viewportLocation.top;
- //var targetLeft = _getRelativeLeft(id, scrollable);
- //var targetTop = _getRelativeTop(id, scrollable);
- if(!scrollX) targetLeft = scrollable.scrollLeft;
- if(!scrollY) targetTop = scrollable.scrollTop;
-
- if($scrollable.is('body')) {
- $scrollable = $('html,body');
- }
- if(easing == 'none') {
- if(scrollY) $scrollable.scrollTop(targetTop);
- if(scrollX) $scrollable.scrollLeft(targetLeft);
- } else {
- if(!scrollX) {
- $scrollable.animate({ scrollTop: targetTop }, duration, easing);
- } else if(!scrollY) {
- $scrollable.animate({ scrollLeft: targetLeft }, duration, easing);
- } else {
- $scrollable.animate({ scrollTop: targetTop, scrollLeft: targetLeft }, duration, easing);
- }
- }
- };
- $ax.public.fn.scroll = function(scrollOption) {
- var easing = 'none';
- var duration = 500;
- if(scrollOption && scrollOption.easing) {
- easing = scrollOption.easing;
- if(scrollOption.duration) {
- duration = scrollOption.duration;
- }
- }
- var scrollX = true;
- var scrollY = true;
- // TODO: check this without vertical option -- might scroll outside of device frame
- if(scrollOption.direction == 'vertical') {
- scrollX = false;
- } else if(scrollOption.direction == 'horizontal') {
- scrollY = false;
- }
- var elementIds = this.getElementIds();
- for(var index = 0; index < elementIds.length; index++) {
- // if($ax.getTypeFromElementId(elementIds[index]) == IMAGE_MAP_REGION_TYPE) {
- _scrollHelper(elementIds[index], scrollX, scrollY, easing, duration);
- // }
- }
- return this;
- };
- $ax.public.fn.enabled = function() {
- if(arguments[0] == undefined) {
- var firstId = this.getElementIds()[0];
- if(!firstId) return undefined;
- var widgetType = $ax.getTypeFromElementId(firstId);
- if ($ax.public.fn.IsImageBox(widgetType) || $ax.public.fn.IsVector(widgetType)
- || $ax.public.fn.IsLayer(widgetType)) return !$ax.style.IsWidgetDisabled(firstId);
- else return this.jQuery().children(':disabled').length <= 0;
- } else {
- var elementIds = this.getElementIds();
- for(var index = 0; index < elementIds.length; index++) {
- var elementId = elementIds[index];
- var widgetType = $ax.getTypeFromElementId(elementId);
- var enabled = arguments[0];
- if ($ax.public.fn.IsImageBox(widgetType) || $ax.public.fn.IsVector(widgetType)
- || $ax.public.fn.IsTextBox(widgetType) || $ax.public.fn.IsTextArea(widgetType)
- || $ax.public.fn.IsComboBox(widgetType) || $ax.public.fn.IsListBox(widgetType)
- || $ax.public.fn.IsCheckBox(widgetType) || $ax.public.fn.IsRadioButton(widgetType)
- ) $ax.style.SetWidgetEnabled(elementId, enabled);
- if ($ax.public.fn.IsDynamicPanel(widgetType) || $ax.public.fn.IsLayer(widgetType)) {
- $ax.style.SetWidgetEnabled(elementId, enabled);
- var children = this.getChildren(false, true)[index].children;
- for(var i = 0; i < children.length; i++) {
- $axure('#' + children[i]).enabled(enabled);
- }
- }
- var obj = $obj(elementId);
- var images = obj.images;
- if(PLAIN_TEXT_TYPES.indexOf(widgetType) != -1 && images) {
- var img = $jobj($ax.repeater.applySuffixToElementId(elementId, '_image_sketch'));
- var key = (enabled ? 'normal~' : 'disabled~') + ($ax.adaptive.currentViewId || '');
- img.attr('src', images[key]);
- }
- var jobj = $jobj(elementId);
- var input = $jobj($ax.INPUT(elementId));
- if(input.length) jobj = input;
- //if (OS_MAC && WEBKIT && $ax.public.fn.IsComboBox(widgetType)) jobj.css('color', enabled ? '' : 'grayText');
- if(enabled) jobj.prop('disabled', false);
- else jobj.prop('disabled', true);
- }
- return this;
- }
- };
- $ax.public.fn.visible = function() {
- var ids = this.getElementIds();
- for(var index = 0; index < ids.length; index++) $ax.visibility.SetIdVisible(ids[index], arguments[0]);
- return this;
- };
- $ax.public.fn.selected = function() {
- if(arguments[0] == undefined) {
- var firstId = this.getElementIds()[0];
- if(!firstId) return undefined;
- var widgetType = $ax.getTypeFromElementId(firstId);
- if ($ax.public.fn.IsTreeNodeObject(widgetType)) {
- var treeNodeButtonShapeId = '';
- var allElementIds = $ax.getAllElementIds();
- for(var i = 0; i < allElementIds.length; i++) {
- var elementId = allElementIds[i];
- var currObj = $ax.getObjectFromElementId(elementId);
- if ($ax.public.fn.IsVector(currObj.type) && currObj.parent && currObj.parent.scriptIds && currObj.parent.scriptIds[0] == firstId) {
- treeNodeButtonShapeId = elementId;
- break;
- }
- }
- if(treeNodeButtonShapeId == '') return undefined;
- return $ax.style.IsWidgetSelected(treeNodeButtonShapeId);
- } else if ($ax.public.fn.IsImageBox(widgetType) || $ax.public.fn.IsVector(widgetType) || $ax.public.fn.IsTableCell(widgetType) || $ax.public.fn.IsDynamicPanel(widgetType) || $ax.public.fn.IsLayer(widgetType)) {
- return $ax.style.IsWidgetSelected(firstId);
- } else if ($ax.public.fn.IsCheckBox(widgetType) || $ax.public.fn.IsRadioButton(widgetType)) {
- return $jobj($ax.INPUT(firstId)).prop('checked');
- }
- return this;
- }
- var elementIds = this.getElementIds();
- var func = typeof (arguments[0]) === 'function' ? arguments[0] : null;
- var enabled = arguments[0]; // If this is a function it will be overridden with the return value;
- for(var index = 0; index < elementIds.length; index++) {
- var elementId = elementIds[index];
- if(func) {
- enabled = func($axure('#' + elementId));
- }
- var widgetType = $ax.getTypeFromElementId(elementId);
- if ($ax.public.fn.IsTreeNodeObject(widgetType)) { //for tree node
- var treeRootId = $('#' + elementIds[index]).parents('.treeroot').attr('id');
- var treeNodeButtonShapeId = '';
- var childElementIds = $jobj(elementId).children();
- for(var i = 0; i < childElementIds.length; i++) {
- var elementId = childElementIds[i].id;
- var currObj = $ax.getObjectFromElementId(elementId);
- if (currObj && currObj.type == $ax.constants.VECTOR_SHAPE_TYPE && currObj.parent &&
- currObj.parent.scriptIds && currObj.parent.scriptIds[0] == elementIds[index]) {
- treeNodeButtonShapeId = elementId;
- break;
- }
- }
- if(treeNodeButtonShapeId == '') continue;
- $ax.tree.SelectTreeNode(elementId, enabled);
- } else if ($ax.public.fn.IsImageBox(widgetType) || $ax.public.fn.IsVector(widgetType) || $ax.public.fn.IsVector(widgetType) || $ax.public.fn.IsTableCell(widgetType) || $ax.public.fn.IsDynamicPanel(widgetType) || $ax.public.fn.IsLayer(widgetType)) {
- $ax.style.SetWidgetSelected(elementIds[index], enabled);
- } else if ($ax.public.fn.IsCheckBox(widgetType) || $ax.public.fn.IsRadioButton(widgetType)) {
- var query = $jobj($ax.INPUT(elementId));
- var curr = query.prop('checked');
- //NOTE: won't fire onselect nore onunselect event if states didn't changes
- if(curr != enabled) {
- query.prop('checked', enabled);
- $ax.style.SetWidgetSelected(elementIds[index], enabled, true);
- $ax.event.TryFireCheckChanged(elementId, enabled);
- }
- }
- }
- return this;
- };
- $ax.public.fn.focus = function() {
- var firstId = this.getElementIds()[0];
- var focusableId = $ax.event.getFocusableWidgetOrChildId(firstId);
- // This will scroll but not focus
- $('#' + focusableId).triggerHandler("focus");
- // This will focus but does not call our custom scroll so will not animate scroll
- $('#' + focusableId).focus();
- return this;
- };
- $ax.public.fn.expanded = function() {
- if(arguments[0] == undefined) {
- var firstId = this.getElementIds()[0];
- return firstId && !$ax.public.fn.IsTreeNodeObject($ax.getTypeFromElementId(firstId)) && $ax.visibility.IsIdVisible(firstId + '_children');
- } else {
- var elementIds = this.getElementIds();
- for(var index = 0; index < elementIds.length; index++) {
- if ($ax.public.fn.IsTreeNodeObject($ax.getTypeFromElementId(elementIds[index]))) {
- var treeNodeId = elementIds[index];
- var childContainerId = treeNodeId + '_children';
- var scriptId = $ax.repeater.getScriptIdFromElementId(treeNodeId);
- var itemId = $ax.repeater.getItemIdFromElementId(treeNodeId);
- var plusMinusId = 'u' + (parseInt(scriptId.substring(1)) + 1);
- if(itemId) plusMinusId = $ax.repeater.createElementId(plusMinusId, itemId);
- if($('#' + childContainerId).length == 0 || !$jobj(plusMinusId).children().first().is('img'))
- plusMinusId = '';
- if(arguments[0] == true) {
- $ax.tree.ExpandNode(treeNodeId, childContainerId, plusMinusId);
- } else if(arguments[0] == false) {
- $ax.tree.CollapseNode(treeNodeId, childContainerId, plusMinusId);
- }
- }
- }
- return this;
- }
- };
- var _populateBoundingRect = function (boundingRect) {
- boundingRect.right = boundingRect.left + boundingRect.width;
- boundingRect.bottom = boundingRect.top + boundingRect.height;
- boundingRect.x = boundingRect.left;
- boundingRect.y = boundingRect.top;
- boundingRect.location = {
- x: boundingRect.left,
- y: boundingRect.top,
- left: boundingRect.left,
- top: boundingRect.top
- };
- boundingRect.size = {
- width: boundingRect.width,
- height: boundingRect.height
- };
- boundingRect.centerPoint = {
- x: boundingRect.width / 2 + boundingRect.left,
- y: boundingRect.height / 2 + boundingRect.top
- };
- return boundingRect;
- }
- //boundingrect relative to its offset parent
- //var _getBoundingRectForSingleWidget = function (elementId) {
- // var element = document.getElementById(elementId);
- // var tempBoundingRect, position;
- // var state = $ax.style.generateState(elementId);
- // var style = $ax.style.computeFullStyle(elementId, state, $ax.adaptive.currentViewId);
- // position = { left: style.location.x, top: style.location.y };
- // tempBoundingRect = { left: style.location.x, top: style.location.y, width: style.size.width, height: style.size.height };
- // if ($ax.public.fn.isCompoundVectorHtml(element)) {
- // tempBoundingRect.width = Number(element.getAttribute('data-width'));
- // tempBoundingRect.height = Number(element.getAttribute('data-height'));
- // } else {
- // var boundingElement = element;
- // if ($ax.dynamicPanelManager.isIdFitToContent(elementId)) {
- // var stateId = $ax.visibility.GetPanelState(elementId);
- // if (stateId != '') boundingElement = document.getElementById(stateId);
- // tempBoundingRect = boundingElement.getBoundingClientRect();
- // }
- // //From getLoc
- // //var fixed = _fixedOffset(id, vert);
- // //if (fixed.valid) loc = !vert && fixed.fullWidth ? 0 : fixed.offset;
- // var jElement = $(element);
- // if (jElement.css('position') == 'fixed') {
- // position = jElement.position();
- // position.left += Number(jElement.css('margin-left').replace("px", ""));
- // position.top += Number(jElement.css('margin-top').replace("px", ""));
- // }
- // }
-
- // var boundingRect = {
- // left: position.left,
- // top: position.top,
- // width: tempBoundingRect.width,
- // height: tempBoundingRect.height
- // };
-
- // return _populateBoundingRect(boundingRect);
- //};
- //var _getBoundingRectForMultipleWidgets = function (widgetsIdArray) {
- // if (!widgetsIdArray || widgetsIdArray.constructor !== Array) return undefined;
- // if (widgetsIdArray.length == 0) return { left: 0, top: 0, centerPoint: { x: 0, y: 0 }, width: 0, height: 0 };
- // var widgetRect = _getBoundingRectForSingleWidget(widgetsIdArray[0]);
- // var boundingRect = { left: widgetRect.left, right: widgetRect.right, top: widgetRect.top, bottom: widgetRect.bottom };
- // for (var index = 1; index < widgetsIdArray.length; index++) {
- // widgetRect = _getBoundingRectForSingleWidget(widgetsIdArray[index]);
- // boundingRect.left = Math.min(boundingRect.left, widgetRect.left);
- // boundingRect.top = Math.min(boundingRect.top, widgetRect.top);
- // boundingRect.right = Math.max(boundingRect.right, widgetRect.right);
- // boundingRect.bottom = Math.max(boundingRect.bottom, widgetRect.bottom);
- // }
- // boundingRect.centerPoint = { x: (boundingRect.right + boundingRect.left) / 2.0, y: (boundingRect.bottom + boundingRect.top) / 2.0 };
- // boundingRect.width = boundingRect.right - boundingRect.left;
- // boundingRect.height = boundingRect.bottom - boundingRect.top;
- // return _populateBoundingRect(boundingRect);
- //};
- //var _getLayerChildrenDeep = $ax.public.fn.getLayerChildrenDeep = function (layerId, includeLayers, includeHidden) {
- // var deep = [];
- // var children = $ax('#' + layerId).getChildren()[0].children;
- // for (var index = 0; index < children.length; index++) {
- // var childId = children[index];
- // if (!includeHidden && !$ax.visibility.IsIdVisible(childId)) continue;
- // if ($ax.public.fn.IsLayer($obj(childId).type)) {
- // if (includeLayers) deep.push(childId);
- // var recursiveChildren = _getLayerChildrenDeep(childId, includeLayers, includeHidden);
- // for (var j = 0; j < recursiveChildren.length; j++) deep.push(recursiveChildren[j]);
- // } else deep.push(childId);
- // }
- // return deep;
- //};
- var _boundingRectForIds = function(childIds) {
- // Default size
- var childrenBoundingRect = { left: childIds.length > 0 ? 9999999 : 0, top: childIds.length > 0 ? 9999999 : 0, right: 0, bottom: 0 };
- for (var i = 0; i < childIds.length; i++) {
- var childId = childIds[i];
- var childObj = $obj(childId);
- if (!childObj) continue;
- // Ignore fixed and hidden
- if ($ax.visibility.limboIds[childId] ||
- !$ax.visibility.IsIdVisible(childId) ||
- $ax.public.fn.IsDynamicPanel(childObj.type) && childObj.fixedHorizontal) continue;
- var boundingRect = $ax('#' + childId).offsetBoundingRect();
- // Ignore empty groups
- if ($ax.public.fn.IsLayer(childObj.type) && boundingRect.width == 0 && boundingRect.height == 0) continue;
- childrenBoundingRect.left = Math.min(childrenBoundingRect.left, boundingRect.left);
- childrenBoundingRect.top = Math.min(childrenBoundingRect.top, boundingRect.top);
- childrenBoundingRect.right = Math.max(childrenBoundingRect.right, boundingRect.right);
- childrenBoundingRect.bottom = Math.max(childrenBoundingRect.bottom, boundingRect.bottom);
- }
- childrenBoundingRect.width = childrenBoundingRect.right - childrenBoundingRect.left;
- childrenBoundingRect.height = childrenBoundingRect.bottom - childrenBoundingRect.top;
- return _populateBoundingRect(childrenBoundingRect);
- }
- $ax.public.fn.getPageSize = function() {
- var containerQuery = $('#base');
- var children = containerQuery.children();
- var childIds = [];
- for (var i = 0; i < children.length; i++) {
- var child = $(children[i]);
- var childId = child.attr('id');
- childIds.push(childId);
- }
- return _boundingRectForIds(childIds);
- }
- $ax.public.fn.childrenBoundingRect = function () {
- var childIds = this.getChildren()[0].children;
- return _boundingRectForIds(childIds);
- };
- var _fixedLocation = function (elementId, size) {
- var axObj = $obj(elementId);
- if (!axObj || !axObj.fixedVertical) return { valid: false };
- var win = $(window);
- var windowWidth = win.width();
- var windowHeight = win.height();
- //getting the scroll forces layout. consider caching these values.
- var windowScrollLeft = win.scrollLeft();
- var windowScrollTop = win.scrollTop();
- var newLeft = 0;
- var newTop = 0;
- var width = size.width;
- var height = size.height;
- var horz = axObj.fixedHorizontal;
- if(horz == 'left') {
- newLeft = windowScrollLeft + (axObj.percentWidth ? 0 : $ax.getNumFromPx($jobj(elementId).css('left')));
- } else if(horz == 'center') {
- newLeft = windowScrollLeft + ((windowWidth - width) / 2) + axObj.fixedMarginHorizontal;
- } else if(horz == 'right') {
- newLeft = windowScrollLeft + windowWidth - width - axObj.fixedMarginHorizontal;
- }
- var vert = axObj.fixedVertical;
- if(vert == 'top') {
- newTop = windowScrollTop + $ax.getNumFromPx($jobj(elementId).css('top'));
- } else if(vert == 'middle') {
- newTop = windowScrollTop + ((windowHeight - height) / 2) + axObj.fixedMarginVertical;
- } else if(vert == 'bottom') {
- newTop = windowScrollTop + windowHeight - height - axObj.fixedMarginVertical;
- }
- //probably need to make this relative to the page for hit testing
- return { valid: true, top: newTop, left: axObj.isPercentWidthPanel ? 0 : newLeft };
- };
- //relative to the parent
- $ax.public.fn.offsetBoundingRect = function (ignoreRotation) {
- var elementId = this.getElementIds()[0];
- if (!elementId) return undefined;
-
- //element is null if RDO
- //data- values are for layers (legacy compound)
- var element = document.getElementById(elementId);
- var position, size, rotation;
- var trap;
- var state;
- var style;
- var movedLoc = $ax.visibility.getMovedLocation(elementId);
- var resizedSize = $ax.visibility.getResizedSize(elementId);
-
- if (movedLoc) {
- position = movedLoc;
- } else if(element && element.getAttribute('data-left')) {
- position = {
- left: Number(element.getAttribute('data-left')),
- top: Number(element.getAttribute('data-top'))
- };
- } else if($obj(elementId)) {
- state = $ax.style.generateState(elementId);
- style = $ax.style.computeFullStyle(elementId, state, $ax.adaptive.currentViewId);
- position = { left: style.location.x, top: style.location.y };
- var parents = this.getParents(true, '*')[0];
- //if(parents.length > 0) {
- // var parentId = parents[0];
- // var type = $ax.getTypeFromElementId(parentId);
- // if ($axure.fn.IsReferenceDiagramObject(type)) {
- // var rdoLoc = $ax('#' + parentId).offsetLocation();
- // position.left += rdoLoc.x;
- // position.top += rdoLoc.y;
- // }
- //}
- for(var i = 0; i < parents.length; i++) {
- var parentId = parents[i];
- var type = $ax.getTypeFromElementId(parentId);
- if ($axure.fn.IsReferenceDiagramObject(type)) {
- var rdoLoc = $ax('#' + parentId).offsetLocation();
- position.left += rdoLoc.x;
- position.top += rdoLoc.y;
- break;
- } else if (!$axure.fn.IsLayer(type)) break;
- }
- } else {
- if (!trap) trap = _displayWidget($ax.repeater.removeSuffixFromElementId(elementId));
- var jObjPosition = $(element).position();
- position = { left: jObjPosition.left, top: jObjPosition.top };
- }
- if (resizedSize) {
- size = resizedSize;
- } else if (element && element.getAttribute('data-width')) {
- size = {
- width: Number(element.getAttribute('data-width')),
- height: Number(element.getAttribute('data-height'))
- };
- } else if($obj(elementId)) {
- state = state || $ax.style.generateState(elementId);
- style = style || $ax.style.computeFullStyle(elementId, state, $ax.adaptive.currentViewId);
- size = { width: style.size.width, height: style.size.height };
- } else {
- if(!trap) trap = _displayWidget($ax.repeater.removeSuffixFromElementId(elementId));
- var jObj = $(element);
- size = { width: jObj.outerWidth(), height: jObj.outerHeight() };
- }
-
- var fixed = _fixedLocation(elementId, size);
- if(fixed.valid) {
- position.left = fixed.left;
- position.top = fixed.top;
- }
- var boundingRect = {
- left: position.left,
- top: position.top,
- width: size.width,
- height: size.height,
- isFixed: fixed.valid
- };
- if(!ignoreRotation) {
- var rotatedAngle = $ax.visibility.getRotatedAngle(elementId);
- if(rotatedAngle) {
- rotation = rotatedAngle;
- } else if(element && element.getAttribute('data-rotation')) {
- rotation = Number(element.getAttribute('data-rotation'));
- } else if($obj(elementId)) {
- state = state || $ax.style.generateState(elementId);
- style = style || $ax.style.computeFullStyle(elementId, state, $ax.adaptive.currentViewId);
- rotation = style.rotation;
- } else {
- if (!trap) trap = _displayWidget($ax.repeater.removeSuffixFromElementId(elementId));
- rotation = $ax.move.getRotationDegreeFromElement(element);
- }
- if(rotation && rotation != 0)
- boundingRect = $ax.public.fn.getBoundingRectForRotate(_populateBoundingRect(boundingRect), rotation);
- }
- if (trap) trap();
- return _populateBoundingRect(boundingRect);
- };
- //relative to the page
- $ax.public.fn.pageBoundingRect = function (ignoreRotation, scrollableId) {
- var boundingRect = this.offsetBoundingRect(ignoreRotation);
- if(!boundingRect) return undefined;
- if(boundingRect.isFixed) return _populateBoundingRect(boundingRect);
- var loc = boundingRect.location;
- //var parents = [];
- //var parObj = id.indexOf('text') != -1 ? axObj : axObj.parent; // When working with text id, parent widget is the ax obj we are dealing with, so that should be the first parent
- //while ($ax.public.fn.IsContainer(parObj.type)) {
- // parents.push($ax.getScriptIdFromPath([parObj.id], strippedId));
- // parObj = parObj.parent;
- //}
- //var otherParents = $ax('#' + id).getParents(true, ['item', 'repeater', 'dynamicPanel', 'layer'])[0];
- //for (var i = 0; i < otherParents.length; i++) {
- // parents.push(otherParents[i]);
- //}
- var elementId = this.getElementIds()[0];
- // var strippedId = $ax.repeater.removeSuffixFromElementId(id);
- // var parObj = id.indexOf('text') != -1 ? axObj : axObj.parent; // When working with text id, parent widget is the ax obj we are dealing with, so that should be the first parent
- var parentIds = [];
- var parObj = $obj(elementId).parent;
- while ($ax.public.fn.IsContainer(parObj.type)) {
- parentIds.push($ax.getScriptIdFromPath([parObj.id], this.id));
- parObj = parObj.parent;
- }
- var otherParents = $ax('#' + elementId).getParents(true, ['item', 'repeater', 'dynamicPanel'])[0];
- for (var i = 0; i < otherParents.length; i++) {
- parentIds.push(otherParents[i]);
- }
- var parentScrollableId = scrollableId ? scrollableId.split('_')[0] : scrollableId;
- for (var i = 0; i < parentIds.length; i++) {
- //var parentId = $ax.visibility.getWidgetFromContainer(parents[0]);
- //var parent = $ax.visibility.applyWidgetContainer(parentId, true);
- //if(parent.length) {
- //var parentId = parentIds[i];
- //var fixed = _fixedOffset(parentId, vert);
- //if (fixed.valid) {
- // loc += fixed.offset;
- // break;
- //} else loc += $ax.getNumFromPx(parent.css(prop));
- //}
-
- var parentId = parentIds[i];
- if (parentId == parentScrollableId) break;
- var parentLoc = $ax('#' + parentId).offsetLocation();
- loc = {
- x: loc.x + parentLoc.x,
- y: loc.y + parentLoc.y,
- left: loc.left + parentLoc.left,
- top: loc.top + parentLoc.top,
- }
- var axObj = $obj(parentId);
- if(axObj && axObj.fixedVertical) {
- boundingRect.isFixed = true;
- break;
- }
- }
- boundingRect.left = loc.x;
- boundingRect.top = loc.y;
- return _populateBoundingRect(boundingRect);
- };
- $ax.public.fn.viewportBoundingRect = function (scrollableId) {
- var boundingRect = this.pageBoundingRect(true, scrollableId);
- if (!boundingRect) return undefined;
- if(!boundingRect.isFixed) boundingRect.left = _bodyToWorld(boundingRect.left, false);
- return _populateBoundingRect(boundingRect);
- }
- $ax.public.fn.size = function () {
- var boundingRect = this.offsetBoundingRect(true);
- return boundingRect ? boundingRect.size : undefined;
- //var firstId = this.getElementIds()[0];
- //if(!firstId) return undefined;
- //var object = $ax.getObjectFromElementIdDisregardHex(firstId);
- //if(object && (object.type == 'layer' || object.generateCompound)) {
- // var boundingRect = $ax.public.fn.getWidgetBoundingRect(firstId);
- // return { width: boundingRect.width, height: boundingRect.height };
- //}
- //var firstIdObject = $jobj(firstId);
- //var trap = _displayWidget($ax.repeater.removeSuffixFromElementId(firstId));
- //var size = { width: firstIdObject.outerWidth(), height: firstIdObject.outerHeight() };
- //trap();
- //return size;
- };
- $ax.public.fn.width = function () {
- var boundingRect = this.offsetBoundingRect(true);
- return boundingRect ? boundingRect.width : undefined;
- //var firstId = this.getElementIds()[0];
- //if(!firstId) return undefined;
- //var object = $ax.getObjectFromElementIdDisregardHex(firstId);
- //if (object && (object.type == 'layer' || object.generateCompound)) {
- // var boundingRect = $ax.public.fn.getWidgetBoundingRect(firstId);
- // return boundingRect.width;
- //}
- //var firstIdObject = $jobj(firstId);
- //return firstIdObject.outerWidth();
- };
- $ax.public.fn.height = function () {
- var boundingRect = this.offsetBoundingRect(true);
- return boundingRect ? boundingRect.height : undefined;
- //var firstId = this.getElementIds()[0];
- //if(!firstId) return undefined;
- //var object = $ax.getObjectFromElementIdDisregardHex(firstId);
- //if (object && (object.type == 'layer' || object.generateCompound)) {
- // var boundingRect = $ax.public.fn.getWidgetBoundingRect(firstId);
- // return boundingRect.height;
- //}
- //var firstIdObject = $jobj(firstId);
- //return firstIdObject.outerHeight();
- };
- //this should replace locRelativeIgnoreLayer
- $ax.public.fn.offsetLocation = function () {
- var boundingRect = this.offsetBoundingRect(true);
- return boundingRect ? boundingRect.location : undefined;
- };
- //$ax.public.fn.offsetLeft = function () {
- // var boundingRect = this.offsetBoundingRect();
- // return boundingRect ? boundingRect.left : undefined;
- //};
- //$ax.public.fn.offsetTop = function () {
- // var boundingRect = this.offsetBoundingRect();
- // return boundingRect ? boundingRect.top : undefined;
- //};
- $ax.public.fn.viewportLocation = function (scrollableId) {
- var boundingRect = this.viewportBoundingRect(scrollableId);
- return boundingRect ? boundingRect.location : undefined;
- };
- //$ax.public.fn.pageLeft = function () {
- // var boundingRect = this.pageBoundingRect();
- // return boundingRect ? boundingRect.left : undefined;
- //};
- //$ax.public.fn.pageTop = function () {
- // var boundingRect = this.pageBoundingRect();
- // return boundingRect ? boundingRect.top : undefined;
- //};
- //This is getting its position in the Editor
- //It was needed because the widget would be contained so getting the position from jQuery would not be accurate
- //This can use the editor values
- //$ax.public.fn.locRelativeIgnoreLayer = function (vert) {
- // var elementId = this.getElementIds()[0];
- // if(!elementId) return undefined;
- // var parents = this.getParents(true, '*')[0];
- // for(var i = 0; i < parents.length; i++) {
- // var type = $ax.getTypeFromElementId(parents[i]);
- // if(!$axure.fn.IsLayer(type) && !$axure.fn.IsReferenceDiagramObject(type)) {
- // var func = vert ? _getRelativeTop : _getRelativeLeft;
- // return func(elementId, $jobj(parents[i])[0]);
- // }
- // }
- // var axThis = $ax('#' + elementId);
- // return vert ? axThis.top() : _bodyToWorld(axThis.left(), true);
- //};
- var _bodyToWorld = $axure.fn.bodyToWorld = function(x, from) {
- var body = $('body');
- if (body.css('position') != 'relative') return x;
- var offset = $ax.getNumFromPx(body.css('left')) + Math.max(0, ($(window).width() - body.width()) / 2);
- if(from) offset *= -1;
- return x + offset;
- }
- $ax.public.fn.left = function (relative) {
- return relative ? this.offsetLocation().left : this.viewportLocation().left;
- //var firstId = this.getElementIds()[0];
- //if(!firstId) return undefined;
- //var left = _getLoc(firstId, false, false, relative);
- //// If you are absolute, unless your are a pinned panel...
- //if(relative || $obj(firstId) && $obj(firstId).fixedVertical) return left;
- //// ... or you are in one...
- //var parentPanels = $ax('#' + firstId).getParents(true, 'dynamicPanel')[0];
- //for(var i = 0; i < parentPanels.length; i++) if ($obj(parentPanels[i]).fixedVertical) return left;
- //// ... you must convert from body to world coordinates
- //return _bodyToWorld(left);
- };
- $ax.public.fn.top = function(relative) {
- return relative ? this.offsetLocation().top : this.viewportLocation().top;
- //var firstId = this.getElementIds()[0];
- //return firstId && _getLoc(firstId, true, false, relative);
- };
- //var _getLoc = function(id, vert, high, relative) {
- // var mathFunc = high ? 'max' : 'min';
- // var prop = vert ? 'top' : 'left';
- // var dim = vert ? 'height' : 'width';
- // var obj = $jobj(id);
- // var strippedId = $ax.repeater.removeSuffixFromElementId(id);
- // var axObj = $obj(strippedId);
- // var oldDisplay = obj.css('display');
- // var displaySet = false;
- // if(oldDisplay == 'none') {
- // obj.css('display', '');
- // displaySet = true;
- // }
- // var loc = Math.NaN;
- // var rdo = axObj.type == $ax.constants.REFERENCE_DIAGRAM_OBJECT_TYPE;
- // if (!rdo) loc = $ax.getNumFromPx(obj.css(prop));
- // var fixed = _fixedOffset(id, vert);
- // if(fixed.valid) loc = !vert && fixed.fullWidth ? 0 : fixed.offset;
- // else if (!relative) {
- // var parents = [];
- // var parObj = id.indexOf('text') != -1 ? axObj : axObj.parent; // When working with text id, parent widget is the ax obj we are dealing with, so that should be the first parent
- // while($ax.public.fn.IsContainer(parObj.type)) {
- // parents.push($ax.getScriptIdFromPath([parObj.id], strippedId));
- // parObj = parObj.parent;
- // }
- // var otherParents = $ax('#' + id).getParents(true, ['item', 'repeater', 'dynamicPanel', 'layer'])[0];
- // for(var i = 0; i < otherParents.length; i++) {
- // parents.push(otherParents[i]);
- // }
- // for(var i = 0; i < parents.length; i++) {
- // var parentId = $ax.visibility.getWidgetFromContainer(parents[i]);
- // var parent = $ax.visibility.applyWidgetContainer(parentId, true);
- // // Layer may not have container, and will be at 0,0 otherwise.
- // if (!parent.length) continue;
- // fixed = _fixedOffset(parentId, vert);
- // if(fixed.valid) {
- // loc += fixed.offset;
- // break; // If fixed ignore any parents if there are any, they don't matter.
- // } else loc += $ax.getNumFromPx(parent.css(prop));
- // }
- // }
- // if (high) loc += obj[dim]();
- // // Special Layer code
- // if (axObj.type == 'layer') {
- // // If layer has a container, then use that. Otherwise must deal with children. Children can move in container after created, but ignoring for now.
- // var container = $ax.visibility.applyWidgetContainer(id, true, true);
- // if(container.length) loc += $ax.getNumFromPx(container.css(prop));
- // else loc += (_getChildLoc(axObj.objs, vert, high, dim, true, id) || 0);
- // }
- // if(displaySet) obj.css('display', oldDisplay);
- // return loc;
- //};
- //var _getChildLoc = function (children, vert, high, dim, root, path, itemId) {
- // if (typeof (path) == 'string') {
- // itemId = $ax.repeater.getItemIdFromElementId(path);
- // path = $ax.getPathFromScriptId(path);
- // path.pop(); // Remove object id, only want rdo path.
- // }
- // var mathFunc = high ? 'max' : 'min';
- // var childLoc = NaN;
- // for (var i = 0; i < children.length; i++) {
- // var childObj = children[i];
- // var childId = $ax.getElementIdFromPath([childObj.id], { relativeTo: path });
- // if (!childId) continue;
- // childId = $ax.repeater.createElementId(childId, itemId);
- // if($ax.public.fn.IsReferenceDiagramObject(childObj.type)) {
- // path.push(childObj.id);
- // var childProp = _getChildLoc($ax.pageData.masters[$obj(childId).masterId].diagram.objects, vert, high, dim, false, path, itemId);
- // path.pop();
- // if(isNaN(childProp)) continue;
- // } else if($ax.public.fn.IsLayer(childObj.type)) {
- // childProp = _getChildLoc(childObj.objs, vert, high, dim, false, path, itemId);
- // } else {
- // if(!$ax.visibility.IsIdVisible(childId)) continue;
- // childProp = $ax('#' + childId).locRelativeIgnoreLayer(vert);
- // if(high) childProp += $jobj(childId)[dim]();
- // }
- // if(isNaN(childLoc)) childLoc = childProp;
- // else if(!isNaN(childProp)) childLoc = Math[mathFunc](childLoc, childProp);
- // }
- // return root && isNaN(childLoc) ? 0 : childLoc;
- //};
- //var _fixedOffset = function (id, vert) {
- // var axObj = $obj(id);
- // //I think this is only for pinned panels? So why are we coming through here for rtps?
- // if(!axObj) return { valid: false };
- // var dim = vert ? 'height' : 'width';
- // var alignment = axObj['fixed' + (vert ? 'Vertical' : 'Horizontal')];
- // if(!alignment) return { valid: false };
- // var loc = 0;
- // // TODO: This returns 0 for width/height it or any parent is display none. Similar issue when using axquery width/height
- // // TODO: Look into replacing this with axquery width/height and fixing that to use this hack. Potentially want to make js generic trapper.
- // var trap = _displayWidget(id);
- // var query = $jobj(id);
- // var objSize = query[dim]();
- // trap();
- // if(alignment == 'center' || alignment == 'middle') {
- // loc = $ax.getNumFromPx(query.css('margin-' + (vert ? 'top' : 'left')));
- // loc += ($(window)[dim]()) / 2;
- // } else if(alignment == 'bottom' || alignment == 'right') {
- // loc = $ax.getNumFromPx(query.css(vert ? 'bottom' : 'right'));
- // loc = $(window)[dim]() - objSize - loc; // subract loc because margin here moves farther left/up as it gets bigger.
- // } else {
- // loc = $ax.getNumFromPx(query.css(vert ? 'top' : 'left'));
- // }
- // var scrollKey = 'scroll' + (vert ? 'Top' : 'Left');
- // return { offset: $(window)[scrollKey]() + loc, valid: true, fullWidth: axObj.percentWidth == 1 };
- //};
- var _displayWidget = function(id) {
- var parents = $ax('#' + id).getParents(true, '*')[0];
- parents.push(id); // also need to show self
- var displayed = [];
- for(var i = 0; i < parents.length; i++) {
- var currId = parents[i];
- var currObj = $jobj(currId);
- if(currObj.css('display') == 'none') {
- currObj.css('display', 'block');
- displayed.push(currId);
- }
- }
- return function() {
- for(var i = 0; i < displayed.length; i++) {
- $jobj(displayed[i]).css('display', 'none');
- }
- };
- }
- });
|