1 /** 2 * @ignore 3 */ 4 var Ozone = Ozone ? Ozone : {}; 5 6 /** 7 * @namespace 8 * @since OWF 5.0 9 */ 10 OWF = window.OWF ? window.OWF : {}; 11 12 (function(window, document, undefined) { 13 14 var WIDGET_READY_SERVICE_NAME = '_widgetReady', 15 16 isReady = false, 17 readyList = [], 18 widget = Ozone.util.parseWindowNameData(), 19 eventingController, 20 dragAndDropController, 21 launchingController, 22 chromeController; 23 24 owfdojo.mixin(OWF, /** @lends OWF */ { 25 26 /** 27 * The OWF.Eventing object manages the eventing for an individual widget 28 * 29 * @namespace 30 * @name OWF.Eventing 31 */ 32 Eventing: {}, 33 34 /** 35 * @namespace 36 * @name OWF.RPC 37 */ 38 RPC: {}, 39 40 /** 41 * This object is used to create, retrieve, update and delete user preferences. 42 * 43 * @namespace 44 * @name OWF.Preferences 45 */ 46 Preferences: {}, 47 48 /** 49 * This object is used launch other widgets. 50 * 51 * @namespace 52 * @name OWF.Launcher 53 */ 54 Launcher: {}, 55 56 /** 57 * The OWF.DragAndDrop object manages the drag and drop for an individual widget. 58 * 59 * @namespace 60 * @name OWF.DragAndDrop 61 */ 62 DragAndDrop: {}, 63 64 /** 65 * This object allows a widget to modify the button contained in the widget header (the chrome). 66 * 67 * @namespace 68 * @name OWF.Chrome 69 */ 70 Chrome: {}, 71 72 /** 73 * Provides OWF utility methods for the widget developer 74 * 75 * @namespace 76 * @name OWF.Util 77 */ 78 Util: Ozone.util, 79 80 /** 81 * 82 * 83 * @namespace 84 * @name OWF.Metrics 85 */ 86 Metrics: Ozone.metrics, 87 88 /** 89 * Provides functions to log messages and objects 90 * 91 * @namespace 92 * @name OWF.Log 93 */ 94 Log: Ozone.log, 95 96 /** 97 * Provides utility methods for localization 98 * 99 * @namespace 100 * @name OWF.Lang 101 */ 102 Lang: Ozone.lang, 103 104 Version: Ozone.version, 105 106 /** 107 Accepts a function that is executed when Ozone APIs are ready for use 108 @param {Function} handler Function to execute when OWF APIs are ready 109 @param {Object} scope The scope (this reference) in which the function is executed. If omitted, defaults to the browser window. 110 */ 111 ready: function(handler, scope) { 112 113 if(handler === undefined) { 114 throw 'Error: no arguments passed'; 115 return; 116 } 117 118 if(typeof handler !== 'function') { 119 throw 'Error: handler must be a function'; 120 return; 121 } 122 123 isReady === true ? handler.call(scope) : readyList.push( {fn: handler, scope: scope} ); 124 125 }, 126 127 /** 128 * This function should be called once the widget is ready and all initialization is completed. This will send a 129 * message to the container which in turn may notify other widgets 130 */ 131 notifyWidgetReady: function() { 132 //send a message to container that this widget is ready 133 gadgets.rpc.call('..', WIDGET_READY_SERVICE_NAME, null, OWF.getIframeId()); 134 }, 135 136 /** 137 Returns definition GUID of the widget. This is auto generated by OWF when the widget was brought in an OWF instance. 138 */ 139 getWidgetGuid : function() { 140 return widget.guid; 141 }, 142 143 /** 144 Returns instance GUID of the widget. 145 */ 146 getInstanceId : function() { 147 return widget.id; 148 }, 149 150 /** 151 * @description Returns the Widget Id 152 * @returns {String} The widgetId is a complex JSON encoded string which identifies a widget for Eventing. 153 * Embedded in this string is the widget's uniqueId as the 'id' attribute. There is other data is in the string 154 * which is needed for Eventing and other APIs to function properly. This complex widgetId string may be used in 155 * the <a href="./OWF.Eventing.html#.publish">OWF.Eventing.publish</a> function to designate a specific recipient for a message. 156 * Additionally, once subscribed to a channel via <a href="./OWF.Eventing.html#.subscribe">OWF.Eventing.subscribe</a> during the 157 * receipt of a message, the sender's widgetId is made available as the first argument to the handler function. 158 * @example 159 * //decode and retrieve the widget's unique id 160 * var complexIdString = OWF.getIframeId(); 161 * var complexIdObj = owfdojo.toJson(complexIdString); 162 * 163 * //complexIdObj will look like 164 * // { 165 * // //widget's uniqueId 166 * // id:"49cd21f0-3110-8121-d905-18ffa81b442e" 167 * // } 168 * 169 * //get Widget's uniqueId 170 * alert('widget id = ' + complexIdObj.id); 171 */ 172 getIframeId : function() { 173 return '{\"id\":\"' + widget.id + '\"}'; 174 }, 175 176 /** 177 Returns type of dashboard in which the widget is opened. [portal, desktop, accordion, tabbed] 178 */ 179 getDashboardLayout : function() { 180 return widget.layout; 181 }, 182 183 /** 184 Returns version of the widget. 185 */ 186 getVersion : function() { 187 return widget.version; 188 }, 189 190 /** 191 Returns URL of the widget. 192 */ 193 getUrl : function() { 194 return widget.url; 195 }, 196 197 /** 198 Returns an object containing information on the current OWF theme 199 @returns {Object} Returns an object below: <br> 200 { <br> 201 //name of the theme <br> 202 themeName: 'theme-name', <br> 203 <br> 204 //describes color contrast of the theme. This may be one of 3 values: <br> 205 // 'standard' (colors provide no special contrast) <br> 206 // 'black-on-white' (black on white color contrast) <br> 207 // 'white-on-black' (white on black color contrast) <br> 208 themeContrast: 'black-on-white', <br> 209 <br> 210 //this field is a number of the fontSize in pixels <br> 211 themeFontSize: 12 <br> 212 } 213 @example 214 var themeObj = OWF.getCurrentTheme(); 215 */ 216 getCurrentTheme : function() { 217 return widget.currentTheme; 218 }, 219 220 /** 221 Returns the name of the Container the Widget is in 222 */ 223 getContainerName: function() { 224 return widget.containerName; 225 }, 226 227 /** 228 Returns the version of the Container the Widget is in 229 */ 230 getContainerVersion: function() { 231 return widget.containerVersion; 232 }, 233 234 /** 235 Returns whether or not the dashboard in which the widget is opened is locked. 236 */ 237 isDashboardLocked : function() { 238 return widget.locked; 239 }, 240 241 /** 242 Returns the URL of the Container the Widget is in 243 */ 244 getContainerUrl: function() { 245 //figure out from preference location 246 var pref = widget.preferenceLocation; 247 return pref.substring(0, pref.length - 6); 248 }, 249 250 /** 251 Gets all opened widgets on the current dashboard. 252 253 @param {Function} callback function to execute when opened widgets are retrieved from OWF. Function is passed an array of objects with the structure below: <br> 254 {<br> 255 id: 'instance guid of widget',<br> 256 frameId: 'iframe id of widget',<br> 257 widgetGuid: 'widget guid of the widget',<br> 258 url: 'url of the widget',<br> 259 name: 'name of the widget'<br> 260 }<br> 261 @example 262 OWF.getOpenedWidgets(function(openedWidgets) { 263 264 }); 265 */ 266 getOpenedWidgets: function(fn) { 267 268 if(fn === undefined) { 269 throw 'Error: no arguments passed'; 270 return; 271 } 272 273 if(typeof fn !== 'function') { 274 throw 'Error: fn must be a function'; 275 return; 276 } 277 278 Ozone.eventing.getAllWidgets(fn); 279 } 280 }); 281 282 // for backwards compatibility 283 Ozone.Widget = OWF; 284 285 OWF._init = function(window, document, undefined) { 286 287 if (OWF.relayFile != null) { 288 Ozone.eventing.Widget.widgetRelayURL = OWF.relayFile; 289 } 290 291 // Eventing API 292 function initEventing() { 293 for(var i = 0, methods = ['publish', 'subscribe', 'unsubscribe'] ; i < methods.length ; i++) { 294 OWF.Eventing[ methods[i] ] = this[ methods[i] ]; 295 } 296 } 297 298 // RPC/Directed Eventing API 299 function initRPC() { 300 OWF.RPC.registerFunctions = Ozone.eventing.registerFunctions; 301 OWF.RPC.getWidgetProxy = Ozone.eventing.importWidget; 302 OWF.RPC.handleDirectMessage = function(fn) { 303 if(typeof fn !== 'function') { 304 throw 'Error: fn must be a function'; 305 return; 306 } 307 Ozone.eventing.handleDirectMessage = fn; 308 }; 309 } 310 311 // Preferences API 312 function initPreferences() { 313 for(var i in Ozone.pref.PrefServer) { 314 if(typeof Ozone.pref.PrefServer[ i ] === 'function') 315 OWF.Preferences[ i ] = Ozone.pref.PrefServer[ i ]; 316 } 317 } 318 319 // Launching API 320 function initLauncher() { 321 OWF.Launcher.launch = launchingController.launchWidget; 322 OWF.Launcher.getLaunchData = Ozone.launcher.WidgetLauncherUtils.getLaunchConfigData; 323 } 324 325 // Drag and Drop API 326 function initDragAndDrop() { 327 OWF.DragAndDrop = { 328 onDragStart: function(callback, scope) { 329 dragAndDropController.addCallback('dragStart', owfdojo.hitch(scope, callback)); 330 return this; 331 }, 332 333 onDragStop: function(callback, scope) { 334 dragAndDropController.addCallback('dragStop', owfdojo.hitch(scope, callback)); 335 return this; 336 }, 337 338 onDrop: function(callback, scope) { 339 dragAndDropController.addCallback('dropReceive', owfdojo.hitch(scope, callback)); 340 return this; 341 }, 342 343 startDrag: function(cfg) { 344 dragAndDropController.doStartDrag(cfg); 345 return this; 346 } 347 }; 348 349 for(var i = 0, methods = ['addDropZoneHandler', 'getDragStartData', 'getDropEnabled', 'setDropEnabled', 'isDragging', 'getFlashWidgetId', 'setFlashWidgetId'] ; i < methods.length ; i++) { 350 351 OWF.DragAndDrop[ methods[i] ] = function( methodName ) { 352 353 return function() { 354 return dragAndDropController[methodName].apply(dragAndDropController, arguments); 355 }; 356 357 }( methods[i] ); 358 359 } 360 } 361 362 // Chrome API 363 function initChrome() { 364 for(var i = 0, 365 methods = ['addHeaderButtons', 'addHeaderMenus', 'insertHeaderButtons', 'insertHeaderMenus', 'isModified', 'listHeaderButtons', 'listHeaderMenus', 'removeHeaderButtons', 'removeHeaderMenus', 'updateHeaderButtons', 'updateHeaderMenus'] ; i < methods.length ; i++) { 366 OWF.Chrome[ methods[i] ] = chromeController[ methods[i] ]; 367 } 368 } 369 370 eventingController = Ozone.eventing.Widget.getInstance(function() { 371 372 dragAndDropController = Ozone.dragAndDrop.WidgetDragAndDrop.getInstance({ 373 widgetEventingController: this 374 }); 375 launchingController = Ozone.launcher.WidgetLauncher.getInstance(); 376 chromeController = Ozone.chrome.WidgetChrome.getInstance({ 377 widgetEventingController: this 378 }); 379 380 initEventing.call(this); 381 initRPC(); 382 initPreferences(); 383 initLauncher(); 384 initDragAndDrop(); 385 initChrome(); 386 387 Ozone.components.keys.createKeyEventSender(this); 388 389 // execute ready listeners 390 isReady = true; 391 for(var i = 0, len = readyList.length ; i < len ; i++) { 392 readyList[i].fn.call(readyList[i].scope); 393 } 394 395 }); 396 397 }; 398 399 }(window, document)); 400 401 // -------------------------------------------------------------------------------------------------- 402 // ------------------- Eventing --------------------------------------------------------------------- 403 // -------------------------------------------------------------------------------------------------- 404 /** 405 * @name relayFile 406 * @memberOf OWF 407 * @description The location of the widget relay file. The relay file should be defined 408 * globally for the entire widget by setting OWF.relayFile to the relay file url, immediately after 409 * including the widget bundle javascript. If the relay is not defined at all it is assumed to be at 410 * /[context]/js/eventing/rpc_relay.uncompressed.html. The relay file must be specified with full location details, but without a fully 411 * qualified path. In the case where the relay is residing @ http://server/path/relay.html, the path used must be from the context root of the local 412 * widget. In this case, it would be /path/relay.html. Do not include the protocol. 413 * @since OWF 5.0.0 414 * @example 415 * <script type="text/javascript" src="../../js-min/owf-widget-min.js"></script> 416 * <script> 417 * //The location is assumed to be at /[context]/js/eventing/rpc_relay.uncompressed.html if it is not 418 * //set the path correctly below 419 * OWF.relayFile = '/owf/js/eventing/rpc_relay.uncompressed.html'; 420 * //... 421 * </script> 422 * 423 */ 424 425 /** 426 Subscribe to a named channel for a given function. 427 @name subscribe 428 @methodOf OWF.Eventing 429 430 @param {String} channelName The channel to subscribe to. 431 @param {Function} handler The function you wish to subscribe. This function will be called with three 432 arguments: sender, msg, channel. 433 @param {String} [handler.sender] The first argument passed to the handler function is the id of the sender of the message. See <a href="OWF.html#.getIframeId">OWF.getIframeId</a> for a description of this id. 434 @param {Object} [handler.msg] The second argument passed to the handler function is the message itself. 435 @param {String} [handler.channel] The third argument passed to the handler function is the channel the message was published on. 436 437 @example 438 OWF.Eventing.subscribe("ClockChannel", this.update); 439 var update = function(sender, msg, channel) { 440 document.getElementById('currentTime').innerHTML = msg; 441 } 442 */ 443 444 /** 445 Unsubscribe to a named channel. 446 @name unsubscribe 447 @methodOf OWF.Eventing 448 449 @param {String} channelName The channel to unsubscribe to. 450 451 @example 452 OWF.Eventing.unsubscribe("ClockChannel"); 453 */ 454 455 /** 456 Publishes a message to a given channel. 457 @name publish 458 @methodOf OWF.Eventing 459 460 @param {String} channelName The name of the channel to publish to 461 @param {Object} message The message to publish to the channel. 462 @param {String} [dest] The id of a particular destination. Defaults to null which sends to all 463 subscribers on the channel. See <a href="OWF.html#.getIframeId">OWF.getIframeId</a> 464 for a description of the id. 465 466 @example 467 OWF.Eventing.publish("ClockChannel", currentTimeString); 468 */ 469 470 // -------------------------------------------------------------------------------------------------- 471 // ------------------- RPC -------------------------------------------------------------------------- 472 // -------------------------------------------------------------------------------------------------- 473 474 /** 475 Register one or more functions to OWF to expose to other widgets. 476 @name registerFunctions 477 @methodOf OWF.RPC 478 479 @param {Object/Array} objs Object or an array of objects of following structure.<br /> 480 {<br /> 481 name: 'name of the function', <br /> 482 fn: function() {}, <br /> 483 scope: window //The scope (this reference) in which the function is executed. If omitted, defaults to the browser window.<br /> 484 }<br /> 485 486 @example 487 Calculator = { 488 add: function() { 489 var args = arguments, 490 val = 0; 491 for(var i = 0, len = args.length; i < len; i++) { 492 val += parseFloat(args[i]); 493 } 494 return val; 495 }, 496 multiply: function() { 497 var args = arguments, 498 val = 1; 499 for(var i = 0, len = args.length; i < len; i++) { 500 val *= parseFloat(args[i]); 501 } 502 return val; 503 } 504 }; 505 OWF.RPC.registerFunctions([ 506 { 507 name: 'add' 508 fn: Calculator.add, 509 scope: Calculator 510 }, 511 { 512 name: 'multiply' 513 fn: Calculator.multiply, 514 scope: Calculator 515 } 516 ]); 517 */ 518 519 /** 520 Gets a proxy object that contains methods exposed by other widget. 521 @name getWidgetProxy 522 @methodOf OWF.RPC 523 524 @param {String} instanceGuid instance guid of the widget to import 525 @param {Function} callback function that will be executed if the widget is found opened on the current dashboard. The function is passed a proxy object as the first argument which will contain methods that were exposed by the widget. In addition, the proxy abject also has sendMessage method to send a direct message to the widget. 526 527 @example 528 OWF.RPC.getWidgetProxy('instanceGuid of widgetA', function(widgetA) { 529 530 widgetA.add(1,2,3, function(result) { 531 console.log(result); // log the result 532 }) 533 534 widgetA.sendMessage('some secret message'); 535 536 }); 537 */ 538 539 /** 540 Register a function to be executed when a direct message is received from another widget. 541 @name handleDirectMessage 542 @methodOf OWF.RPC 543 544 @param {Function} fn function that will be executed when a direct message is received from another widget. 545 546 @example 547 OWF.RPC.handleDirectMessage(function(msg) { 548 // do something with the message 549 }); 550 */ 551 552 // -------------------------------------------------------------------------------------------------- 553 // ------------------- Drag and Drop ---------------------------------------------------------------- 554 // -------------------------------------------------------------------------------------------------- 555 /** 556 Use this method to set flex dom element id, so that drag and drop can be enabled in flex widgets. 557 @name setFlashWidgetId 558 @methodOf OWF.DragAndDrop 559 560 @param {String} id dom element id of flex widget 561 */ 562 563 /** 564 Starts a drag. The config object passed in describes the drag and contains the data to be passed to the drop. 565 @name startDrag 566 @methodOf OWF.DragAndDrop 567 568 @param {Object} cfg config object see below 569 @param {String} cfg.dragDropLabel Name to be used as text for the dragDrop indicator 570 @param {Object} cfg.dragDropData Data to be sent on a successful drag and drop. This property is only sent to the 571 successful recipient of the drag (the dropReceive event). It will not be sent for other events. 572 @param {Object} cfg.dragZone dom node which presents a dragZone which is associated with this drag. This property is 573 only saved and used locally to the widget to identify whether a dragZone is in fact the node as a dropZone. It will not be 574 sent to other events callbacks. 575 @param {Object} cfg.* other custom properties may be specified, these will be passed along to event handlers 576 577 @example 578 //add handler to text field for dragging 579 owfdojo.connect(document.getElementById('dragSource'), 'onmousedown', this, function(e) { 580 e.preventDefault(); 581 var data = document.getElementById('InputChannel').value; 582 if (data) { 583 OWF.DragAndDrop.startDrag({ 584 dragDropLabel: data, 585 dragDropData: data, 586 dragZone: document.getElementById('dragZone'), 587 dragDropGroup: 'location' //extra property to pass along 588 }); 589 } 590 }); 591 */ 592 593 594 /** 595 Adds a new drop zone to be managed. The handler function defined in the cfg object will be called when 596 a drop occurs over a dom node which matches the id or the className or is equal to or a child of the dropTarget node 597 @name addDropZoneHandler 598 @methodOf OWF.DragAndDrop 599 600 @param {Object} cfg config object see below 601 @param {className} cfg.class class of the dropZone 602 @param {String} cfg.id Id of the dropZone 603 @param {Node} cfg.dropZone HTML node which represents the dropZone 604 @param {Function} cfg.handler function to be called when a drop occurs over the dropZone. A msg object will be passed in 605 606 @example 607 //Example cfg Object 608 { 609 id: 'mygrid-1', 610 className: 'mygridClass', 611 dropZone: document.getElementById('dropZone'), 612 handler: function(msg) { 613 //some code here to handle the msg and respond 614 } 615 } 616 617 //Example usage of addDropZoneHandler which handles a drop that occurs over an Ext Grid and inserts new data into 618 //that grid based on the dragged data 619 OWF.DragAndDrop.addDropZoneHandler({ 620 //dom node of an Ext grid 621 dropZone:grid.getView().scroller.dom, 622 623 //this function is called only when a drop occurs over the grid (i.e. the mouse was released over the grid) 624 handler: (function(msg){ 625 626 var store = grid.getStore(); 627 var processedSelections = []; 628 var errorMsg = null; 629 630 //loop through msg.dragDropData which is an array and check for dupes versus the destination store 631 for (var i = 0; i < msg.dragDropData.length; i++) { 632 //get data for one possible new record in the dragDropData 633 var recData = msg.dragDropData[i]; 634 635 //is it already in the dest Ext Store? 636 if (store.findExact('id',recData.id) >= 0) { 637 //found the record already in the store 638 } 639 else { 640 //add new record based on the dragDropData 641 var newRec = new store.recordType(recData); 642 //calling an external function to decide whether to add the new rec 643 var rs = displayPanel.validateRecordOnAdd(newRec); 644 if (rs.success) { 645 processedSelections.push(newRec); 646 } 647 else { 648 errorMsg = rs.msg; 649 } 650 } 651 } 652 653 if (errorMsg) { 654 Ext.Msg.alert('Error', errorMsg); 655 } 656 657 //actually insert into the store which adds it the new recs to the grid 658 if (processedSelections.length > 0) { 659 store.insert(0, processedSelections); 660 } 661 662 }).createDelegate(grid)}); //createDelegate is an Ext function which sets the scope of the callback 663 664 */ 665 666 667 /** 668 Returns whether the a drop is enabled (this is only true when the mouse is over a drop zone) 669 @name getDropEnabled 670 @methodOf OWF.DragAndDrop 671 */ 672 673 /** 674 Returns whether a drag is in progress 675 @name isDragging 676 @methodOf OWF.DragAndDrop 677 */ 678 679 /** 680 Returns data sent when a drag was started 681 @name getDragStartData 682 @methodOf OWF.DragAndDrop 683 */ 684 685 /** 686 Toggles the dragIndicator to indicate successful or unsuccessful drop 687 @name setDropEnabled 688 @methodOf OWF.DragAndDrop 689 690 @param {Boolean} dropEnabled true to enable a drop, false to indicate a unsuccessful drop 691 692 @example 693 //attach mouseover callback to a particular area. If the mouse is here allow a drop 694 cmp.getView().scroller.on('mouseover',function(e,t,o) { 695 if (cmp.dragging) { 696 OWF.DragAndDrop.setDropEnabled(true); 697 } 698 },this); 699 700 //attach a mouse out callback to a particular area. If the mouse leaves disable drop 701 cmp.getView().scroller.on('mouseout',function(e,t,o) { 702 if (cmp.dragging) { 703 OWF.DragAndDrop.setDropEnabled(false); 704 } 705 },this); 706 */ 707 708 709 /** 710 Executes the callback passed when a drag starts in any widget. 711 @name onDragStart 712 @methodOf OWF.DragAndDrop 713 714 @param {Function} callback The function to execute as a callback. 715 @param {Object} scope The scope (this reference) in which the function is executed. If omitted, defaults to the browser window. 716 717 @example 718 //example callback, highlights an Ext Grid when a drag occurs 719 OWF.DragAndDrop.onDragStart(function(sender, msg) { 720 //get the Ext Grid 721 var grid = this.getComponent(this.gridId); 722 723 //check custom dragDropGroup property to see if the drag is meant for this grid 724 //if so highlight the grid by adding the ddOver class 725 if (grid && msg != null && msg.dragDropGroup == 'users') { 726 grid.getView().scroller.addClass('ddOver'); 727 } 728 }, this); 729 */ 730 731 /** 732 Executes the callback passed when a drag stops in any widget. 733 @name onDragStop 734 @methodOf OWF.DragAndDrop 735 736 @param {Function} callback The function to execute as a callback. 737 @param {Object} scope The scope (this reference) in which the function is executed. If omitted, defaults to the browser window. 738 739 @example 740 741 OWF.DragAndDrop.onDragStop(function(sender, msg) { 742 // do something here 743 }, this); 744 */ 745 746 /** 747 Executes the callback passed when a drop occurs in the widget. If one has multiple dropZones in a widget it is easier to use <a href="#addDropZoneHandler">addDropZoneHandler</a> 748 @name onDrop 749 @methodOf OWF.DragAndDrop 750 751 @param {Function} callback The function to execute as a callback. 752 @param {Object} scope The scope (this reference) in which the function is executed. If omitted, defaults to the browser window. 753 754 @example 755 756 OWF.DragAndDrop.onDrop(function(sender, msg) { 757 var data = msg.dragDropData; 758 759 // do something with the data here 760 }, this); 761 */ 762 763 // -------------------------------------------------------------------------------------------------- 764 // ------------------- Launcher --------------------------------------------------------------------- 765 // -------------------------------------------------------------------------------------------------- 766 767 /** 768 Launches a Widget based on the config. 769 @name launch 770 @methodOf OWF.Launcher 771 772 @param {Object} config object see example for structure 773 @param {Function} callback a function to be called once after the launchWidget is executed 774 775 @example 776 OWF.Launcher.launch({ 777 guid: 'guid_of_widget_to_launch', 778 launchOnlyIfClosed: true, //if true will only launch the widget if it is not already opened. 779 //if it is opened then the widget will be brought to focus 780 data: dataString //initial launch data to be passed to a widget only if the widget is opened. This must be a string. 781 }, callback); 782 */ 783 784 /** 785 Retrieves initial launch data for this widget if it is opened by another widget. 786 @name getLaunchData 787 @methodOf OWF.Launcher 788 789 @returns {Object} data object which contains initial launch data for the widget 790 791 @example 792 var launchData = OWF.Launcher.getLaunchData(); 793 if (launchData != null) { 794 var data = Ozone.util.parseJson(launchData); //in this example the data object has two fields: channel and message 795 if (data != null) { 796 //do something with the data 797 OWF.Eventing.subscribe(data.channel, function() {}); 798 } 799 } 800 */ 801 802 // -------------------------------------------------------------------------------------------------- 803 // ------------------- Chrome ----------------------------------------------------------------------- 804 // -------------------------------------------------------------------------------------------------- 805 806 /** 807 Checks to see if the Widget Chrome has already been modified. This is useful when the widget iframe is reloaded. 808 @name isModified 809 @methodOf OWF.Chrome 810 811 @param {Object} cfg config object see below for properties 812 @param {Function} cfg.callback The function which receives the results. 813 This method will be passed an object which has following properties. <br> 814 <br> 815 {Boolean} success: true if the widget is currently opened on the dashboard, or else false. <br> 816 {Boolean} modified: true if the widget chrome(header) is modified, or else false. <br> 817 * 818 @example 819 OWF.Chrome.isModified({ 820 callback: function(msg) { 821 //msg will always be a json string 822 var res = Ozone.util.parseJson(msg); 823 if (res.success) { 824 //if the chrome was never modified 825 if (!res.modified) { 826 //do something, perhaps add buttons 827 } 828 //if we already modified the chrome 829 else { 830 //do something or perhaps nothing if the buttons are already added 831 } 832 } 833 } 834 }); 835 */ 836 837 838 /** 839 Adds buttons to the Widget Chrome. Buttons are added after existing buttons. 840 @name addHeaderButtons 841 @methodOf OWF.Chrome 842 843 @param {Object} cfg config object see below for properties 844 @param {Object[]} cfg.items an array of buttons configurations to add to the chrome. See example for button configs 845 @param {String} cfg.items[*].itemId itemId is a unique id among all buttons that are added. It is a required property. It is used for identification and defines the internal Eventing channel which is used to execute the handler function. If itemId is not unique this may result in duplicate buttons which may not be able to be removed properly. 846 @param {String} cfg.items[*].xtype xtype is ExtJS-like property used to determine the component to create. Currently the Widget Chrome API only supports two xtype values: ‘button’ and ‘widgettool’. xtype is an optional field, if it is omitted ‘widgettool’ is used. 847 @param {String} cfg.items[*].type Used only for ‘widgettool’ buttons. It determines the standard icon to be used. For a complete list of types please see the ExtJS 4.x API documentation, <a href='http://docs.sencha.com/ext-js/4-0/#/api/Ext.panel.Tool-cfg-type'>http://docs.sencha.com/ext-js/4-0/#/api/Ext.panel.Tool-cfg-type</a> 848 @param {String} cfg.items[*].icon This property defines the URL of the image to be used for the button. If the URL is a relative path, it will be relative to the /owf context. This is useful if the desired image is hosted by the OWF web server. Otherwise a fully qualified URL should be used. If type is being used to determine the image, the icon property is optional 849 @param {String} cfg.items[*].text This property defines text to appear alongside the button. This property is only used if the xtype is ‘button.’ ‘widgettool’ will not show text. 850 @param {Object} cfg.items[*].tooltip This property defines a tooltip. It has two important sub properties, title and text. tooltip is only used when the xtype is ‘button’ 851 @param {Function} cfg.items[*].handler The handler attribute defines a function to be executed when the button is pressed. This function is executed using Widget Eventing API from inside the widget. The internal channel name used is the itemId attribute. This function’s parameter list contains the standard parameters for an Eventing callback function. 852 853 @example 854 OWF.Chrome.addHeaderButtons({ 855 items: [ 856 { 857 xtype: 'button', 858 //path to an image to use. this path should either be fully qualified or relative to the /owf context 859 icon: './themes/common/images/skin/exclamation.png', 860 text: 'Alert', 861 itemId:'alert', 862 tooltip: { 863 text: 'Alert!' 864 }, 865 handler: function(sender, data) { 866 //widgetState is an already instantiated WidgetState Obj 867 if (widgetState) { 868 widgetState.getWidgetState({ 869 callback: function(state) { 870 //check if the widget is visible 871 if (!state.collapsed && !state.minimized && state.active) { 872 //only render visual content, perhaps popup a message box if the widget is visible 873 //otherwise it may not render correctly 874 } 875 } 876 }); 877 } 878 } 879 }, 880 { 881 xtype: 'widgettool', 882 //path to an image to use. this path should either be fully qualified or relative to the /owf context 883 icon: './themes/common/images/skin/information.png', 884 itemId:'help', 885 handler: function(sender, data) { 886 alert('About Button Pressed'); 887 } 888 }, 889 { 890 //gear is a standard ext tool type 891 type: 'gear', 892 itemId:'gear', 893 handler: function(sender, data) { 894 alert('Utility Button Pressed'); 895 } 896 } 897 ] 898 }); 899 */ 900 901 /** 902 Updates any existing buttons in the Widget Chrome based on the itemId. 903 @name updateHeaderButtons 904 @methodOf OWF.Chrome 905 906 @param {Object} cfg config object see below for properties 907 @param {Object[]} cfg.items an array of buttons configurations to add to the chrome. See example below for button configs 908 @param {String} cfg.items[*].itemId itemId is a unique id among all buttons that are added. It is a required property. It is used for identification and defines the internal Eventing channel which is used to execute the handler function. If itemId is not unique this may result in duplicate buttons which may not be able to be removed properly. 909 @param {String} cfg.items[*].xtype xtype is ExtJS-like property used to determine the component to create. Currently the Widget Chrome API only supports two xtype values: ‘button’ and ‘widgettool’. xtype is an optional field, if it is omitted ‘widgettool’ is used. 910 @param {String} cfg.items[*].type Used only for ‘widgettool’ buttons. It determines the standard icon to be used. For a complete list of types please see the ExtJS 4.x API documentation, <a href='http://docs.sencha.com/ext-js/4-0/#/api/Ext.panel.Tool-cfg-type'>http://docs.sencha.com/ext-js/4-0/#/api/Ext.panel.Tool-cfg-type</a> 911 @param {String} cfg.items[*].icon This property defines the URL of the image to be used for the button. If the URL is a relative path, it will be relative to the /owf context. This is useful if the desired image is hosted by the OWF web server. Otherwise a fully qualified URL should be used. If type is being used to determine the image, the icon property is optional 912 @param {String} cfg.items[*].text This property defines text to appear alongside the button. This property is only used if the xtype is ‘button.’ ‘widgettool’ will not show text. 913 @param {Object} cfg.items[*].tooltip This property defines a tooltip. It has two important sub properties, title and text. tooltip is only used when the xtype is ‘button’ 914 @param {Function} cfg.items[*].handler The handler attribute defines a function to be executed when the button is pressed. This function is executed using Widget Eventing API from inside the widget. The internal channel name used is the itemId attribute. This function’s parameter list contains the standard parameters for an Eventing callback function. 915 916 @example 917 OWF.Chrome.updateHeaderButtons({ 918 items: [ 919 { 920 xtype: 'button', 921 //path to an image to use. this path should either be fully qualified or relative to the /owf context 922 icon: './themes/common/images/skin/exclamation.png', 923 text: 'Alert', 924 itemId:'alert', 925 tooltip: { 926 text: 'Alert!' 927 }, 928 handler: function(sender, data) { 929 //widgetState is an already instantiated WidgetState Obj 930 if (widgetState) { 931 widgetState.getWidgetState({ 932 callback: function(state) { 933 //check if the widget is visible 934 if (!state.collapsed && !state.minimized && state.active) { 935 //only render visual content, perhaps popup a message box if the widget is visible 936 //otherwise it may not render correctly 937 } 938 } 939 }); 940 } 941 } 942 }, 943 { 944 xtype: 'widgettool', 945 //path to an image to use. this path should either be fully qualified or relative to the /owf context 946 icon: './themes/common/images/skin/information.png', 947 itemId:'help', 948 handler: function(sender, data) { 949 alert('About Button Pressed'); 950 } 951 }, 952 { 953 //gear is a standard ext tool type 954 type: 'gear', 955 itemId:'gear', 956 handler: function(sender, data) { 957 alert('Utility Button Pressed'); 958 } 959 } 960 ] 961 }); 962 */ 963 964 /** 965 Inserts new buttons to the Widget Chrome. Buttons are added to the same area as existing buttons. 966 @name insertHeaderButtons 967 @methodOf OWF.Chrome 968 969 @param {Object} cfg config object see below for properties 970 @param {Number} [cfg.pos=0] 0-based index of where buttons will be added, among any pre-existing buttons. 971 @param {Object[]} cfg.items an array of buttons configurations to insert to the chrome. See example below for button configs 972 @param {String} cfg.items[*].itemId itemId is a unique id among all buttons that are added. It is a required property. It is used for identification and defines the internal Eventing channel which is used to execute the handler function. If itemId is not unique this may result in duplicate buttons which may not be able to be removed properly. 973 @param {String} cfg.items[*].xtype xtype is ExtJS-like property used to determine the component to create. Currently the Widget Chrome API only supports two xtype values: ‘button’ and ‘widgettool’. xtype is an optional field, if it is omitted ‘widgettool’ is used. 974 @param {String} cfg.items[*].type Used only for ‘widgettool’ buttons. It determines the standard icon to be used. For a complete list of types please see the ExtJS 4.x API documentation, <a href='http://docs.sencha.com/ext-js/4-0/#/api/Ext.panel.Tool-cfg-type'>http://docs.sencha.com/ext-js/4-0/#/api/Ext.panel.Tool-cfg-type</a> 975 @param {String} cfg.items[*].icon This property defines the URL of the image to be used for the button. If the URL is a relative path, it will be relative to the /owf context. This is useful if the desired image is hosted by the OWF web server. Otherwise a fully qualified URL should be used. If type is being used to determine the image, the icon property is optional 976 @param {String} cfg.items[*].text This property defines text to appear alongside the button. This property is only used if the xtype is ‘button.’ ‘widgettool’ will not show text. 977 @param {Object} cfg.items[*].tooltip This property defines a tooltip. It has two important sub properties, title and text. tooltip is only used when the xtype is ‘button’ 978 @param {Function} cfg.items[*].handler The handler attribute defines a function to be executed when the button is pressed. This function is executed using Widget Eventing API from inside the widget. The internal channel name used is the itemId attribute. This function’s parameter list contains the standard parameters for an Eventing callback function. 979 980 @example 981 OWF.Chrome.insertHeaderButtons({ 982 pos: 0, 983 items: [ 984 { 985 xtype: 'button', 986 //path to an image to use. this path should either be fully qualified or relative to the /owf context 987 icon: './themes/common/images/skin/exclamation.png', 988 text: 'Alert', 989 itemId:'alert', 990 tooltip: { 991 text: 'Alert!' 992 }, 993 handler: function(sender, data) { 994 //widgetState is an already instantiated WidgetState Obj 995 if (widgetState) { 996 widgetState.getWidgetState({ 997 callback: function(state) { 998 //check if the widget is visible 999 if (!state.collapsed && !state.minimized && state.active) { 1000 //only render visual content, perhaps popup a message box if the widget is visible 1001 //otherwise it may not render correctly 1002 } 1003 } 1004 }); 1005 } 1006 } 1007 }, 1008 { 1009 xtype: 'widgettool', 1010 //path to an image to use. this path should either be fully qualified or relative to the /owf context 1011 icon: './themes/common/images/skin/information.png', 1012 itemId:'help', 1013 handler: function(sender, data) { 1014 alert('About Button Pressed'); 1015 } 1016 }, 1017 { 1018 //gear is a standard ext tool type 1019 type: 'gear', 1020 itemId:'gear', 1021 handler: function(sender, data) { 1022 alert('Utility Button Pressed'); 1023 } 1024 } 1025 ] 1026 }); 1027 */ 1028 1029 /** 1030 Removes existing buttons on the Widget Chrome based on itemId. 1031 @name removeHeaderButtons 1032 @methodOf OWF.Chrome 1033 1034 @param {Object} cfg config object see below for properties 1035 @param {Object[]} cfg.items an array of buttons configurations to remove to the chrome. Only itemId is required. 1036 See example below for button configs 1037 @param {String} cfg.items[*].itemId itemId is a unique id among all buttons that are added. It is a required property. It is used for identification and defines the internal Eventing channel which is used to execute the handler function. If itemId is not unique this may result in duplicate buttons which may not be able to be removed properly. 1038 1039 @example 1040 OWF.Chrome.removeHeaderButtons({ 1041 items:[ 1042 { 1043 itemId:'alert' 1044 }, 1045 { 1046 itemId:'help' 1047 }, 1048 { 1049 itemId:'gear' 1050 } 1051 ] 1052 }); 1053 */ 1054 1055 /** 1056 Lists all buttons that have been added to the widget chrome. 1057 @name listHeaderButtons 1058 @methodOf OWF.Chrome 1059 1060 @param {Object} cfg config object see below for properties 1061 @param {Function} cfg.callback The function which receives the results. 1062 1063 @example 1064 OWF.Chrome.listHeaderButtons({ 1065 callback: function(msg) { 1066 //msg will always be a json string 1067 var res = Ozone.util.parseJson(msg); 1068 if (res.success) { 1069 for (var i = 0; i < res.items.length; i++) { 1070 // do something with the buttons 1071 } 1072 } 1073 } 1074 }); 1075 */ 1076 1077 /** 1078 Adds menus to the Widget Chrome. Menus are added after existing menus. 1079 @name addHeaderMenus 1080 @methodOf OWF.Chrome 1081 1082 @param {Object} cfg config object see below for properties 1083 @param {Object[]} cfg.items an array of menu configurations to add to the chrome. See example for menu configs 1084 @param {String} cfg.items[*].parentId itemId is the itemId of the menu to which this configuration should be added as a sub-menu. If omitted, the configuration will be added as a main menu on the menu toolbar. 1085 @param {String} cfg.items[*].itemId itemId is a unique id among all menus that are added. It is a required property. It is used for identification and defines the internal Eventing channel which is used to execute the handler function. If itemId is not unique this may result in duplicate menus which may not be able to be removed properly. 1086 @param {String} cfg.items[*].icon This property defines the URL of the image to be used for the menu. If the URL is a relative path, it will be relative to the /owf context. This is useful if the desired image is hosted by the OWF web server. Otherwise a fully qualified URL should be used. If type is being used to determine the image, the icon property is optional 1087 @param {String} cfg.items[*].text This property defines text to appear alongside the menu. 1088 @param {Object} cfg.items[*].menu menu configuration object 1089 @param {Object[]} cfg.items[*].menu.items an array of menu item configurations to add to the chrome. See example for menu item configs 1090 @param {String} cfg.items[*].menu.items[*].itemId itemId is a unique id among all menu items that are added. It is a required property. It is used for identification and defines the internal Eventing channel which is used to execute the handler function. 1091 @param {String} cfg.items[*].menu.items[*].xtype xtype is used to specify the type of menu item to add. This attribute should be omitted unless specifying a menuseparator. Setting this value to "menuseparator" adds a separator bar to a menu, used to divide logical groups of menu items. If specified, only xtype should be specified. Generally you will add one of these by using "-" in your items config rather than creating one directly using xtype. See example below for usage. 1092 @param {String} cfg.items[*].menu.items[*].icon This property defines the URL of the image to be used for the menu item. If the URL is a relative path, it will be relative to the /owf context. This is useful if the desired image is hosted by the OWF web server. Otherwise a fully qualified URL should be used. If type is being used to determine the image, the icon property is optional 1093 @param {String} cfg.items[*].menu.items[*].text This property defines text to appear for the menu item. 1094 @param {Function} cfg.items[*].menu.items[*].handler The handler attribute defines a function to be executed when the menu item is clicked. This function is executed using Widget Eventing API from inside the widget. The internal channel name used is the itemId attribute. This function's parameter list contains the standard parameters for an Eventing callback function. 1095 @param {Object} cfg.items[*].menu.items[*].menu sub-menu configuration object. See example for sub-menu config. 1096 1097 @example 1098 OWF.Chrome.addHeaderMenus({ 1099 items: [ 1100 { 1101 itemId:'regularMenu', 1102 icon: './themes/common/images/skin/exclamation.png', 1103 text: 'Regular Menu', 1104 menu: { 1105 items: [ 1106 { 1107 itemId:'regularMenuItem1', 1108 icon: './themes/common/images/skin/exclamation.png', 1109 text: 'Regular Menu Item 1', 1110 handler: function(sender, data) { 1111 alert('You clicked the Regular Menu menu item.'); 1112 } 1113 } 1114 ] 1115 } 1116 }, 1117 { 1118 itemId:'snacks', 1119 icon: './themes/common/images/skin/exclamation.png', 1120 text: 'Menu with Sub-Menu', 1121 menu: { 1122 items: [ 1123 { 1124 itemId:'fruits', 1125 icon: './themes/common/images/skin/exclamation.png', 1126 text: 'Fruits', 1127 menu: { 1128 items: [ 1129 { 1130 itemId:'apple', 1131 icon: './themes/common/images/skin/exclamation.png', 1132 text: 'Apple', 1133 handler: function(sender, data) { 1134 alert('Your snack will be an Apple.'); 1135 } 1136 }, 1137 { 1138 xtype: 'menuseparator' 1139 }, 1140 { 1141 itemId:'banana', 1142 icon: './themes/common/images/skin/exclamation.png', 1143 text: 'Banana', 1144 handler: function(sender, data) { 1145 alert('Your snack will be a Banana.'); 1146 } 1147 }, { 1148 itemId:'cherry', 1149 icon: './themes/common/images/skin/exclamation.png', 1150 text: 'Cherries', 1151 handler: function(sender, data) { 1152 alert('Your snack will be Cherries.'); 1153 } 1154 } 1155 ] 1156 } 1157 }, 1158 '-', // another way to add a menu separator 1159 { 1160 itemId:'cupcake', 1161 icon: './themes/common/images/skin/exclamation.png', 1162 text: 'Cupcake', 1163 handler: function(sender, data) { 1164 alert('Your snack will be a Cupcake.'); 1165 } 1166 }, 1167 { 1168 itemId:'chips', 1169 icon: './themes/common/images/skin/exclamation.png', 1170 text: 'Potato Chips', 1171 handler: function(sender, data) { 1172 alert('Your snack will be a Potato Chips.'); 1173 } 1174 } 1175 ] 1176 } 1177 } 1178 ] 1179 }); 1180 */ 1181 1182 /** 1183 Updates any existing menus in the Widget Chrome based on the itemId. 1184 @name updateHeaderMenus 1185 @methodOf OWF.Chrome 1186 1187 @param {Object} cfg config object see below for properties 1188 @param {Object[]} cfg.items an array of menu configurations to add to the chrome. See example for menu configs 1189 @param {String} cfg.items[*].itemId itemId is a unique id among all menus that are added. It is a required property. It is used for identification and defines the internal Eventing channel which is used to execute the handler function. If itemId is not unique this may result in duplicate menus which may not be able to be removed properly. 1190 @param {String} cfg.items[*].icon This property defines the URL of the image to be used for the menu. If the URL is a relative path, it will be relative to the /owf context. This is useful if the desired image is hosted by the OWF web server. Otherwise a fully qualified URL should be used. If type is being used to determine the image, the icon property is optional 1191 @param {String} cfg.items[*].text This property defines text to appear alongside the menu. 1192 @param {Object} cfg.items[*].menu menu configuration object 1193 @param {Object[]} cfg.items[*].menu.items an array of menu item configurations to add to the chrome. See example for menu item configs 1194 @param {String} cfg.items[*].menu.items[*].itemId itemId is a unique id among all menu items that are added. It is a required property. It is used for identification and defines the internal Eventing channel which is used to execute the handler function. 1195 @param {String} cfg.items[*].menu.items[*].xtype xtype is used to specify the type of menu item to add. This attribute should be omitted unless specifying a menuseparator. Setting this value to "menuseparator" adds a separator bar to a menu, used to divide logical groups of menu items. If specified, only xtype should be specified. See example below for usage. 1196 @param {String} cfg.items[*].menu.items[*].icon This property defines the URL of the image to be used for the menu item. If the URL is a relative path, it will be relative to the /owf context. This is useful if the desired image is hosted by the OWF web server. Otherwise a fully qualified URL should be used. If type is being used to determine the image, the icon property is optional 1197 @param {String} cfg.items[*].menu.items[*].text This property defines text to appear for the menu item. 1198 @param {Function} cfg.items[*].menu.items[*].handler The handler attribute defines a function to be executed when the menu item is clicked. This function is executed using Widget Eventing API from inside the widget. The internal channel name used is the itemId attribute. This function's parameter list contains the standard parameters for an Eventing callback function. 1199 @param {Object} cfg.items[*].menu.items[*].menu sub-menu configuration object. See example for sub-menu config. 1200 1201 @example 1202 OWF.Chrome.updateHeaderMenus({ 1203 items:[ 1204 { 1205 itemId:'regularMenu', 1206 icon: './themes/common/images/skin/exclamation.png', 1207 text: 'Regular Menu', 1208 menu: { 1209 items: [ 1210 { 1211 itemId:'regularMenuItem1', 1212 icon: './themes/common/images/skin/exclamation.png', 1213 text: 'Regular Menu Item 1', 1214 handler: function(sender, data) { 1215 alert('You clicked the Regular Menu menu item.'); 1216 } 1217 } 1218 ] 1219 } 1220 }, 1221 { 1222 itemId:'snacks', 1223 icon: './themes/common/images/skin/exclamation.png', 1224 text: 'Menu with Sub-Menu', 1225 menu: { 1226 items: [ 1227 { 1228 itemId:'fruits', 1229 icon: './themes/common/images/skin/exclamation.png', 1230 text: 'Fruits', 1231 menu: { 1232 items: [ 1233 { 1234 itemId:'apple', 1235 icon: './themes/common/images/skin/exclamation.png', 1236 text: 'Apple', 1237 handler: function(sender, data) { 1238 alert('Your snack will be an Apple.'); 1239 } 1240 }, 1241 { 1242 xtype: 'menuseparator' 1243 }, 1244 { 1245 itemId:'banana', 1246 icon: './themes/common/images/skin/exclamation.png', 1247 text: 'Banana', 1248 handler: function(sender, data) { 1249 alert('Your snack will be a Banana.'); 1250 } 1251 }, { 1252 itemId:'cherry', 1253 icon: './themes/common/images/skin/exclamation.png', 1254 text: 'Cherries', 1255 handler: function(sender, data) { 1256 alert('Your snack will be Cherries.'); 1257 } 1258 } 1259 ] 1260 } 1261 }, 1262 '-', // another way to add a menu separator 1263 { 1264 itemId:'cupcake', 1265 icon: './themes/common/images/skin/exclamation.png', 1266 text: 'Cupcake', 1267 handler: function(sender, data) { 1268 alert('Your snack will be a Cupcake.'); 1269 } 1270 }, 1271 { 1272 itemId:'chips', 1273 icon: './themes/common/images/skin/exclamation.png', 1274 text: 'Potato Chips', 1275 handler: function(sender, data) { 1276 alert('Your snack will be a Potato Chips.'); 1277 } 1278 } 1279 ] 1280 } 1281 } 1282 ] 1283 }); 1284 */ 1285 1286 /** 1287 Inserts new menus into the Widget Chrome. Menus are added to the same area as existing menus. 1288 @name insertHeaderMenus 1289 @methodOf OWF.Chrome 1290 1291 @param {Object} cfg config object see below for properties 1292 @param {Number} [cfg.pos=0] 0-based index of where menus will be added, among any pre-existing menus. 1293 @param {Object[]} cfg.items an array of menu configurations to add to the chrome. See example for menu configs 1294 @param {String} cfg.items[*].parentId itemId is the itemId of the menu to which this configuration should be added as a sub-menu. If omitted, the configuration will be added as a main menu on the menu toolbar. 1295 @param {String} cfg.items[*].itemId itemId is a unique id among all menus that are added. It is a required property. It is used for identification and defines the internal Eventing channel which is used to execute the handler function. If itemId is not unique this may result in duplicate menus which may not be able to be removed properly. 1296 @param {String} cfg.items[*].icon This property defines the URL of the image to be used for the menu. If the URL is a relative path, it will be relative to the /owf context. This is useful if the desired image is hosted by the OWF web server. Otherwise a fully qualified URL should be used. If type is being used to determine the image, the icon property is optional 1297 @param {String} cfg.items[*].text This property defines text to appear alongside the menu. This property is only used if the xtype is ‘menu.’ ‘widgettool’ will not show text. 1298 @param {Object} cfg.items[*].menu menu configuration object 1299 @param {Object[]} cfg.items[*].menu.items an array of menu item configurations to add to the chrome. See example for menu item configs 1300 @param {String} cfg.items[*].menu.items[*].itemId itemId is a unique id among all menu items that are added. It is a required property. It is used for identification and defines the internal Eventing channel which is used to execute the handler function. 1301 @param {String} cfg.items[*].menu.items[*].xtype xtype is used to specify the type of menu item to add. This attribute should be omitted unless specifying a menuseparator. Setting this value to "menuseparator" adds a separator bar to a menu, used to divide logical groups of menu items. If specified, only xtype should be specified. See example below for usage. 1302 @param {String} cfg.items[*].menu.items[*].icon This property defines the URL of the image to be used for the menu item. If the URL is a relative path, it will be relative to the /owf context. This is useful if the desired image is hosted by the OWF web server. Otherwise a fully qualified URL should be used. If type is being used to determine the image, the icon property is optional 1303 @param {String} cfg.items[*].menu.items[*].text This property defines text to appear for the menu item. 1304 @param {Function} cfg.items[*].menu.items[*].handler The handler attribute defines a function to be executed when the menu item is clicked. This function is executed using Widget Eventing API from inside the widget. The internal channel name used is the itemId attribute. This function's parameter list contains the standard parameters for an Eventing callback function. 1305 @param {Object} cfg.items[*].menu.items[*].menu sub-menu configuration object. See example for sub-menu config. 1306 1307 @example 1308 OWF.Chrome.insertHeaderMenus({ 1309 pos: 0, 1310 items: [{ 1311 itemId:'insertedMenu', 1312 icon: './themes/common/images/skin/exclamation.png', 1313 text: 'Inserted Menu', 1314 menu: { 1315 items: [ 1316 { 1317 itemId:'insertedMenuItem1', 1318 icon: './themes/common/images/skin/exclamation.png', 1319 text: 'Inserted Menu Item 1', 1320 handler: function(sender, data) { 1321 alert('You clicked the Inserted Menu menu item.'); 1322 } 1323 }, 1324 { 1325 xtype: 'menuseparator' 1326 }, 1327 { 1328 itemId:'insertedMenuItem2', 1329 icon: './themes/common/images/skin/exclamation.png', 1330 text: 'Inserted Menu Item 2', 1331 handler: function(sender, data) { 1332 alert('You clicked the Inserted Menu menu item.'); 1333 } 1334 }, 1335 '-', // another way to add a menu separator 1336 { 1337 itemId:'insertedMenuItem3', 1338 icon: './themes/common/images/skin/exclamation.png', 1339 text: 'Inserted Menu Item 3', 1340 handler: function(sender, data) { 1341 alert('You clicked the Inserted Menu menu item.'); 1342 } 1343 } 1344 ] 1345 } 1346 }] 1347 }); 1348 */ 1349 1350 /** 1351 Removes existing menus on the Widget Chrome based on itemId. 1352 @name removeHeaderMenus 1353 @methodOf OWF.Chrome 1354 1355 @param {Object} cfg config object see below for properties 1356 @param {Object[]} cfg.items an array of objects containing itemIds for the menus to remove from the chrome. 1357 See example below for button configs 1358 1359 @example 1360 OWF.Chrome.removeHeaderMenus({ 1361 items: [{ 1362 itemId: 'regularMenu' 1363 }] 1364 }); 1365 */ 1366 1367 /** 1368 Lists all menus that have been added to the widget chrome. 1369 @name listHeaderMenus 1370 @methodOf OWF.Chrome 1371 1372 @param {Object} cfg config object see below for properties 1373 @param {Function} cfg.callback The function which receives the results. 1374 1375 @example 1376 OWF.Chrome.listHeaderMenus({ 1377 callback: function(msg) { 1378 //msg will always be a json string 1379 var res = Ozone.util.parseJson(msg); 1380 if (res.success) { 1381 for (var i = 0; i < res.items.length; i++) { 1382 // do something with the menus 1383 } 1384 } 1385 } 1386 }); 1387 */ 1388 1389 // -------------------------------------------------------------------------------------------------- 1390 // ------------------- Preferences ------------------------------------------------------------------ 1391 // -------------------------------------------------------------------------------------------------- 1392 1393 /** 1394 Get the url for the Preference Server 1395 @name getUrl 1396 @methodOf OWF.Preferences 1397 1398 @returns {String} url 1399 */ 1400 1401 /** 1402 Sets the url for the Preference Server 1403 @name setUrl 1404 @methodOf OWF.Preferences 1405 1406 @param {String} url 1407 @returns void 1408 */ 1409 1410 /** 1411 Gets the dashboard with the specified id 1412 @name getDashboard 1413 @methodOf OWF.Preferences 1414 1415 @param {Object} cfg config object see below for properties 1416 @param {String} cfg.dashboardId Unigue dashbard identifier 1417 @param {Function} cfg.onSuccess Callback function to capture the success result. Callback parameter is json representation of a dashboard. 1418 This method will be passed the dashboard object which has the following properties:<br> 1419 <br> 1420 {Boolean} alteredByAdmin: true if altered by an administrator<br> 1421 {Date} createdDate: date dashboard was created<br> 1422 {Boolean} isGroupDashboard: true if dashboard is a group dashboard<br> 1423 {String} layout: layout of dashboard<br> 1424 {Boolean} isdefault: true if this is a default dashboard<br> 1425 {String} name: name of dashboard<br> 1426 {Number} columnCount: number of columns if dashboard is a portal type<br> 1427 {Object} user: the dashoard owner. Has the following properties:<br> 1428 {String} userId: unique user identifier<br> 1429 {List} EDashboardLayoutList: list of dashboard types<br> 1430 {String} defaultSettings: JSON string of default settings which varies by dashboard type<br> 1431 {Object} createdBy: dashboard creator. Has the following properties:<br> 1432 {String} userId: unique user identifier<br> 1433 {String} userRealName: user's name<br> 1434 {Date} editedDate: date dashboard was last edited<br> 1435 {Array} groups: groups dashboard is assigned to<br> 1436 {String} description: description of dashboard<br> 1437 {String} guid: uniqued dashboard identifier<br> 1438 {Array} state: array of widget state objects. Has the following properties:<br> 1439 {String} widgetGuid: unique widget identifier<br> 1440 {Number} width: width of widget in pixels<br> 1441 {Number} zIndex: in pixels<br> 1442 {String} region: containing region on dashboard. Dashboard type specific.<br> 1443 {Boolean} pinned: true if widget is pinned open<br> 1444 {String} buttonId: identifier of button that opens widget<br> 1445 {Number} height: height of widget in pixels<br> 1446 {Number} columnPos: position of widget in a column<br> 1447 {String} name: widget name<br> 1448 {Number} statePosition<br> 1449 {Boolean} active: true if this widget is the active (has focus) widget<br> 1450 {String} uniqueId: unique widget identifier on dashboard<br> 1451 {Boolean} minimized: true if widget is minimized<br> 1452 {Boolean} buttonOpened: true if button launched widget is opened<br> 1453 {Boolean} collapsed: true if widget is collapsed<br> 1454 {Number} y: y-axis position in pixels<br> 1455 {Number} x: x-axis position in pixels<br> 1456 {Boolean} maximized: true if widget is maximized<br> 1457 {Boolean} showLaunchMenu: true if launch menu is opened on dashboard<br> 1458 <br> 1459 @param {Function} [cfg.onFailure] Callback to execute if there is an error (optional, a default alert provided). Callback parameter is an error string. 1460 1461 @example 1462 var onSuccess = function(dashboard) { 1463 alert(dashboard.name); 1464 }; 1465 var onFailure = function(error) { 1466 alert(error); 1467 }; 1468 1469 OWF.Preferences.getDashboard({ 1470 dashboardId:'917b4cd0-ecbd-410b-afd9-42d150c26426', 1471 onSuccess:onSuccess, 1472 onFailure:onFailure 1473 }); 1474 */ 1475 1476 /** 1477 Gets the user's default dashboard 1478 @name getDefaultDashboard 1479 @methodOf OWF.Preferences 1480 1481 @param {Object} cfg config object see below for properties 1482 @param {Function} cfg.onSuccess Callback function to capture the success result. Callback parameter is json representation of a Dashboard. 1483 This method will be passed the dashboard object which has the following properties:<br> 1484 <br> 1485 {Boolean} alteredByAdmin: true if altered by an administrator<br> 1486 {Date} createdDate: date dashboard was created<br> 1487 {Boolean} isGroupDashboard: true if dashboard is a group dashboard<br> 1488 {String} layout: layout of dashboard<br> 1489 {Boolean} isdefault: true if this is a default dashboard<br> 1490 {String} name: name of dashboard<br> 1491 {Number} columnCount: number of columns if dashboard is a portal type<br> 1492 {Object} user: the dashoard owner. Has the following properties:<br> 1493 {String} userId: unique user identifier<br> 1494 {List} EDashboardLayoutList: list of dashboard types<br> 1495 {String} defaultSettings: JSON string of default settings which varies by dashboard type<br> 1496 {Object} createdBy: dashboard creator. Has the following properties:<br> 1497 {String} userId: unique user identifier<br> 1498 {String} userRealName: user's name<br> 1499 {Date} editedDate: date dashboard was last edited<br> 1500 {Array} groups: groups dashboard is assigned to<br> 1501 {String} description: description of dashboard<br> 1502 {String} guid: uniqued dashboard identifier<br> 1503 {Array} state: array of widget state objects. Has the following properties:<br> 1504 {String} widgetGuid: unique widget identifier<br> 1505 {Number} width: width of widget in pixels<br> 1506 {Number} zIndex: in pixels<br> 1507 {String} region: containing region on dashboard. Dashboard type specific.<br> 1508 {Boolean} pinned: true if widget is pinned open<br> 1509 {String} buttonId: identifier of button that opens widget<br> 1510 {Number} height: height of widget in pixels<br> 1511 {Number} columnPos: position of widget in a column<br> 1512 {String} name: widget name<br> 1513 {Number} statePosition<br> 1514 {Boolean} active: true if this widget is the active (has focus) widget<br> 1515 {String} uniqueId: unique widget identifier on dashboard<br> 1516 {Boolean} minimized: true if widget is minimized<br> 1517 {Boolean} buttonOpened: true if button launched widget is opened<br> 1518 {Boolean} collapsed: true if widget is collapsed<br> 1519 {Number} y: y-axis position in pixels<br> 1520 {Number} x: x-axis position in pixels<br> 1521 {Boolean} maximized: true if widget is maximized<br> 1522 {Boolean} showLaunchMenu: true if launch menu is opened on dashboard<br> 1523 <br> 1524 @param {Function} [cfg.onFailure] Callback to execute if there is an error (optional, a default alert provided). Callback parameter is an error string. 1525 1526 @example 1527 var onSuccess = function(dashboard) { 1528 alert(dashboard.name); 1529 }; 1530 var onFailure = function(error) { 1531 alert(error); 1532 }; 1533 OWF.Preferences.getDefaultDashboard({ 1534 onSuccess:onSuccess, 1535 onFailure:onFailure 1536 }); 1537 */ 1538 1539 /** 1540 Sets the user's default dashboard 1541 @name setDefaultDashboard 1542 @methodOf OWF.Preferences 1543 @param {Object} cfg config object see below for properties 1544 @param {String} cfg.dashboardId Unigue dashbard identifier 1545 @param {Boolean} cfg.isDefault true to set as default dashboard 1546 @param {Function} cfg.onSuccess Callback function to capture the success result. Callback parameter is json representation of a Dashboard. 1547 This method will be passed the dashboard object which has the following properties:<br> 1548 <br> 1549 {Boolean} alteredByAdmin: true if altered by an administrator<br> 1550 {Date} createdDate: date dashboard was created<br> 1551 {Boolean} isGroupDashboard: true if dashboard is a group dashboard<br> 1552 {String} layout: layout of dashboard<br> 1553 {Boolean} isdefault: true if this is a default dashboard<br> 1554 {String} name: name of dashboard<br> 1555 {Number} columnCount: number of columns if dashboard is a portal type<br> 1556 {Object} user: the dashoard owner. Has the following properties:<br> 1557 {String} userId: unique user identifier<br> 1558 {List} EDashboardLayoutList: list of dashboard types<br> 1559 {String} defaultSettings: JSON string of default settings which varies by dashboard type<br> 1560 {Object} createdBy: dashboard creator. Has the following properties:<br> 1561 {String} userId: unique user identifier<br> 1562 {String} userRealName: user's name<br> 1563 {Date} editedDate: date dashboard was last edited<br> 1564 {Array} groups: groups dashboard is assigned to<br> 1565 {String} description: description of dashboard<br> 1566 {String} guid: uniqued dashboard identifier<br> 1567 {Array} state: array of widget state objects. Has the following properties:<br> 1568 {String} widgetGuid: unique widget identifier<br> 1569 {Number} width: width of widget in pixels<br> 1570 {Number} zIndex: in pixels<br> 1571 {String} region: containing region on dashboard. Dashboard type specific.<br> 1572 {Boolean} pinned: true if widget is pinned open<br> 1573 {String} buttonId: identifier of button that opens widget<br> 1574 {Number} height: height of widget in pixels<br> 1575 {Number} columnPos: position of widget in a column<br> 1576 {String} name: widget name<br> 1577 {Number} statePosition<br> 1578 {Boolean} active: true if this widget is the active (has focus) widget<br> 1579 {String} uniqueId: unique widget identifier on dashboard<br> 1580 {Boolean} minimized: true if widget is minimized<br> 1581 {Boolean} buttonOpened: true if button launched widget is opened<br> 1582 {Boolean} collapsed: true if widget is collapsed<br> 1583 {Number} y: y-axis position in pixels<br> 1584 {Number} x: x-axis position in pixels<br> 1585 {Boolean} maximized: true if widget is maximized<br> 1586 {Boolean} showLaunchMenu: true if launch menu is opened on dashboard<br> 1587 <br> 1588 @param {Function} [cfg.onFailure] Callback to execute if there is an error (optional, a default alert provided). Callback parameter is an error string. 1589 1590 @example 1591 var onSuccess = function(dashboard) { 1592 alert(dashboard.name); 1593 }; 1594 1595 var onFailure = function(error) { 1596 alert(error); 1597 }; 1598 1599 OWF.Preferences.setDefaultDashboard({ 1600 dashboardId:'917b4cd0-ecbd-410b-afd9-42d150c26426', 1601 isDefault:true, 1602 onSuccess:onSuccess, 1603 onFailure:onFailure 1604 }); 1605 */ 1606 1607 /** 1608 @description Saves changes to a new or existing dashboard 1609 @name createOrUpdateDashboard 1610 @methodOf OWF.Preferences 1611 @param {Object} cfg config object see below for properties 1612 @param {Object} cfg.json The encoded JSON object representing the dashboard. 1613 The dashboard object has the following properties:<br> 1614 <br> 1615 {Boolean} isGroupDashboard: true if dashboard is a group dashboard<br> 1616 {String} layout: layout of dashboard<br> 1617 {Boolean} isdefault: true if this is a default dashboard<br> 1618 {String} name: name of dashboard<br> 1619 {Number} columnCount: number of columns if dashboard is a portal type<br> 1620 {String} defaultSettings: JSON string of default settings which varies by dashboard type<br> 1621 {Array} groups: groups dashboard is assigned to<br> 1622 {String} description: description of dashboard<br> 1623 {String} guid: uniqued dashboard identifier<br> 1624 {Array} state: array of widget state objects. Has the following properties:<br> 1625 {String} widgetGuid: unique widget identifier<br> 1626 {Number} width: width of widget in pixels<br> 1627 {Number} zIndex: in pixels<br> 1628 {String} region: containing region on dashboard. Dashboard type specific.<br> 1629 {Boolean} pinned: true if widget is pinned open<br> 1630 {String} buttonId: identifier of button that opens widget<br> 1631 {Number} height: height of widget in pixels<br> 1632 {Number} columnPos: position of widget in a column<br> 1633 {String} name: widget name<br> 1634 {Number} statePosition<br> 1635 {Boolean} active: true if this widget is the active (has focus) widget<br> 1636 {String} uniqueId: unique widget identifier on dashboard<br> 1637 {Boolean} minimized: true if widget is minimized<br> 1638 {Boolean} buttonOpened: true if button launched widget is opened<br> 1639 {Boolean} collapsed: true if widget is collapsed<br> 1640 {Number} y: y-axis position in pixels<br> 1641 {Number} x: x-axis position in pixels<br> 1642 {Boolean} maximized: true if widget is maximized<br> 1643 {Boolean} showLaunchMenu: true if launch menu is opened on dashboard<br> 1644 <br> 1645 @param {Boolean} cfg.saveAsNew A Boolean indicating whether the entity being saved is new. 1646 @param {Function} cfg.onSuccess Callback function to capture the success result. Callback parameter is json representation of a Dashboard. 1647 This method will be passed the dashboard object which has the following properties:<br> 1648 <br> 1649 {Boolean} alteredByAdmin: true if altered by an administrator<br> 1650 {Date} createdDate: date dashboard was created<br> 1651 {Boolean} isGroupDashboard: true if dashboard is a group dashboard<br> 1652 {String} layout: layout of dashboard<br> 1653 {Boolean} isdefault: true if this is a default dashboard<br> 1654 {String} name: name of dashboard<br> 1655 {Number} columnCount: number of columns if dashboard is a portal type<br> 1656 {Object} user: the dashoard owner. Has the following properties:<br> 1657 {String} userId: unique user identifier<br> 1658 {List} EDashboardLayoutList: list of dashboard types<br> 1659 {String} defaultSettings: JSON string of default settings which varies by dashboard type<br> 1660 {Object} createdBy: dashboard creator. Has the following properties:<br> 1661 {String} userId: unique user identifier<br> 1662 {String} userRealName: user's name<br> 1663 {Date} editedDate: date dashboard was last edited<br> 1664 {Array} groups: groups dashboard is assigned to<br> 1665 {String} description: description of dashboard<br> 1666 {String} guid: uniqued dashboard identifier<br> 1667 {Array} state: array of widget state objects. Has the following properties:<br> 1668 {String} widgetGuid: unique widget identifier<br> 1669 {Number} width: width of widget in pixels<br> 1670 {Number} zIndex: in pixels<br> 1671 {String} region: containing region on dashboard. Dashboard type specific.<br> 1672 {Boolean} pinned: true if widget is pinned open<br> 1673 {String} buttonId: identifier of button that opens widget<br> 1674 {Number} height: height of widget in pixels<br> 1675 {Number} columnPos: position of widget in a column<br> 1676 {String} name: widget name<br> 1677 {Number} statePosition<br> 1678 {Boolean} active: true if this widget is the active (has focus) widget<br> 1679 {String} uniqueId: unique widget identifier on dashboard<br> 1680 {Boolean} minimized: true if widget is minimized<br> 1681 {Boolean} buttonOpened: true if button launched widget is opened<br> 1682 {Boolean} collapsed: true if widget is collapsed<br> 1683 {Number} y: y-axis position in pixels<br> 1684 {Number} x: x-axis position in pixels<br> 1685 {Boolean} maximized: true if widget is maximized<br> 1686 {Boolean} showLaunchMenu: true if launch menu is opened on dashboard<br> 1687 <br> 1688 @param {Function} [cfg.onFailure] Callback to execute if there is an error (optional, a default alert provided). Callback parameter is an error string. 1689 @param {Boolean} [cfg.async] Async true or false defaults to true 1690 @example 1691 1692 var onSuccess = function(dashboard) { 1693 alert(dashboard.name); 1694 }; 1695 1696 var onFailure = function(error) { 1697 alert(error); 1698 }; 1699 1700 var dashboard = { 1701 isGroupDashboard: false, 1702 layout: 'desktop', 1703 isdefault: false, 1704 name: 'My Dashboard', 1705 columnCount: 0, 1706 defaultSettings: {}, 1707 groups: [], 1708 description: 'This is my dashboard', 1709 guid: guid.util.guid(), 1710 state: [], 1711 showLaunchMenu: false 1712 }; 1713 1714 OWF.Preferences.createOrUpdateDashboard({ 1715 json: dashboard, 1716 saveAsNew: true, 1717 onSuccess: onSuccess, 1718 onFailure: onFailure, 1719 async: true 1720 }); 1721 */ 1722 1723 /** 1724 @description Copies an existing dashboard and saves it as new 1725 @name cloneDashboard 1726 @methodOf OWF.Preferences 1727 1728 @param {Object} cfg config object see below for properties 1729 @param {Object} cfg.json The encoded JSON object representing the dashboard. 1730 The dashboard object has the following properties:<br> 1731 <br> 1732 {Boolean} alteredByAdmin: true if altered by an administrator<br> 1733 {Date} createdDate: date dashboard was created<br> 1734 {Boolean} isGroupDashboard: true if dashboard is a group dashboard<br> 1735 {String} layout: layout of dashboard<br> 1736 {Boolean} isdefault: true if this is a default dashboard<br> 1737 {String} name: name of dashboard<br> 1738 {Number} columnCount: number of columns if dashboard is a portal type<br> 1739 {Object} user: the dashoard owner. Has the following properties:<br> 1740 {String} userId: unique user identifier<br> 1741 {List} EDashboardLayoutList: list of dashboard types<br> 1742 {String} defaultSettings: JSON string of default settings which varies by dashboard type<br> 1743 {Object} createdBy: dashboard creator. Has the following properties:<br> 1744 {String} userId: unique user identifier<br> 1745 {String} userRealName: user's name<br> 1746 {Date} editedDate: date dashboard was last edited<br> 1747 {Array} groups: groups dashboard is assigned to<br> 1748 {String} description: description of dashboard<br> 1749 {String} guid: uniqued dashboard identifier<br> 1750 {Array} state: array of widget state objects. Has the following properties:<br> 1751 {String} widgetGuid: unique widget identifier<br> 1752 {Number} width: width of widget in pixels<br> 1753 {Number} zIndex: in pixels<br> 1754 {String} region: containing region on dashboard. Dashboard type specific.<br> 1755 {Boolean} pinned: true if widget is pinned open<br> 1756 {String} buttonId: identifier of button that opens widget<br> 1757 {Number} height: height of widget in pixels<br> 1758 {Number} columnPos: position of widget in a column<br> 1759 {String} name: widget name<br> 1760 {Number} statePosition<br> 1761 {Boolean} active: true if this widget is the active (has focus) widget<br> 1762 {String} uniqueId: unique widget identifier on dashboard<br> 1763 {Boolean} minimized: true if widget is minimized<br> 1764 {Boolean} buttonOpened: true if button launched widget is opened<br> 1765 {Boolean} collapsed: true if widget is collapsed<br> 1766 {Number} y: y-axis position in pixels<br> 1767 {Number} x: x-axis position in pixels<br> 1768 {Boolean} maximized: true if widget is maximized<br> 1769 {Boolean} showLaunchMenu: true if launch menu is opened on dashboard<br> 1770 <br> 1771 @param {Function} cfg.onSuccess Callback function to capture the success result. Callback parameter is json representation of a Dashboard. 1772 This method will be passed the dashboard object which has the following properties:<br> 1773 <br> 1774 {Boolean} alteredByAdmin: true if altered by an administrator<br> 1775 {Date} createdDate: date dashboard was created<br> 1776 {Boolean} isGroupDashboard: true if dashboard is a group dashboard<br> 1777 {String} layout: layout of dashboard<br> 1778 {Boolean} isdefault: true if this is a default dashboard<br> 1779 {String} name: name of dashboard<br> 1780 {Number} columnCount: number of columns if dashboard is a portal type<br> 1781 {Object} user: the dashoard owner. Has the following properties:<br> 1782 {String} userId: unique user identifier<br> 1783 {List} EDashboardLayoutList: list of dashboard types<br> 1784 {String} defaultSettings: JSON string of default settings which varies by dashboard type<br> 1785 {Object} createdBy: dashboard creator. Has the following properties:<br> 1786 {String} userId: unique user identifier<br> 1787 {String} userRealName: user's name<br> 1788 {Date} editedDate: date dashboard was last edited<br> 1789 {Array} groups: groups dashboard is assigned to<br> 1790 {String} description: description of dashboard<br> 1791 {String} guid: uniqued dashboard identifier<br> 1792 {Array} state: array of widget state objects. Has the following properties:<br> 1793 {String} widgetGuid: unique widget identifier<br> 1794 {Number} width: width of widget in pixels<br> 1795 {Number} zIndex: in pixels<br> 1796 {String} region: containing region on dashboard. Dashboard type specific.<br> 1797 {Boolean} pinned: true if widget is pinned open<br> 1798 {String} buttonId: identifier of button that opens widget<br> 1799 {Number} height: height of widget in pixels<br> 1800 {Number} columnPos: position of widget in a column<br> 1801 {String} name: widget name<br> 1802 {Number} statePosition<br> 1803 {Boolean} active: true if this widget is the active (has focus) widget<br> 1804 {String} uniqueId: unique widget identifier on dashboard<br> 1805 {Boolean} minimized: true if widget is minimized<br> 1806 {Boolean} buttonOpened: true if button launched widget is opened<br> 1807 {Boolean} collapsed: true if widget is collapsed<br> 1808 {Number} y: y-axis position in pixels<br> 1809 {Number} x: x-axis position in pixels<br> 1810 {Boolean} maximized: true if widget is maximized<br> 1811 {Boolean} showLaunchMenu: true if launch menu is opened on dashboard<br> 1812 <br> 1813 @param {Function} [cfg.onFailure] Callback to execute if there is an error (optional, a default alert provided). Callback parameter is an error string. 1814 1815 @example 1816 var onSuccess = function(dashboard) { 1817 alert(dashboard.name); 1818 }; 1819 1820 var onFailure = function(error) { 1821 alert(error); 1822 }; 1823 1824 var dashboard = { 1825 alteredByAdmin: 'false', 1826 createdDate: '04/18/2012 11:29 AM EDT', 1827 isGroupDashboard: false, 1828 layout: 'desktop', 1829 isdefault: false, 1830 name: 'My Dashboard', 1831 columnCount: 0, 1832 user: { 1833 userId: 'testAdmin1', 1834 }, 1835 EDashboardLayoutList: ['accordion', 'desktop', 'portal', 'tabbed'], 1836 defaultSettings: {}, 1837 createdBy: { 1838 userId: 'testAdmin1', 1839 userRealName: 'Test Admin 1' 1840 }, 1841 editedDate: '04/18/2012 11:29 AM EDT', 1842 groups: [], 1843 description: 'This is my dashboard', 1844 guid: guid.util.guid(), 1845 state: [], 1846 showLaunchMenu: false 1847 }; 1848 1849 OWF.Preferences.cloneDashboard({ 1850 json: dashboard, 1851 onSuccess: onSuccess, 1852 onFailure: onFailure 1853 }); 1854 */ 1855 1856 /** 1857 @description Saves changes to existing dashboards 1858 @name updateAndDeleteDashboards 1859 @methodOf OWF.Preferences 1860 1861 @param {Object} cfg config object see below for properties 1862 @param {Array} cfg.viewsToUpdate array of JSON objects containing the view guid and data to be updated 1863 @param {Array} cfg.viewGuidsToDelete array of guids of views to be deleted 1864 @param {Boolean} cfg.updateOrder flag to update order 1865 @param {Function} cfg.onSuccess callback function to capture the success result 1866 @param {Function} [cfg.onFailure] callback to execute if there is an error (optional, a default alert provided) 1867 */ 1868 1869 /** 1870 @description Deletes the dashboard with the specified id 1871 @name deleteDashboard 1872 @methodOf OWF.Preferences 1873 1874 @param {Object} cfg config object see below for properties 1875 @param {String} cfg.dashboardId Unigue dashbard identifier 1876 @param {Function} cfg.onSuccess Callback function to capture the success result. Callback parameter is json representation of a Dashboard. 1877 This method will be passed the dashboard object which has the following properties:<br> 1878 <br> 1879 {Boolean} alteredByAdmin: true if altered by an administrator<br> 1880 {Date} createdDate: date dashboard was created<br> 1881 {Boolean} isGroupDashboard: true if dashboard is a group dashboard<br> 1882 {String} layout: layout of dashboard<br> 1883 {Boolean} isdefault: true if this is a default dashboard<br> 1884 {String} name: name of dashboard<br> 1885 {Number} columnCount: number of columns if dashboard is a portal type<br> 1886 {Object} user: the dashoard owner. Has the following properties:<br> 1887 {String} userId: unique user identifier<br> 1888 {List} EDashboardLayoutList: list of dashboard types<br> 1889 {String} defaultSettings: JSON string of default settings which varies by dashboard type<br> 1890 {Object} createdBy: dashboard creator. Has the following properties:<br> 1891 {String} userId: unique user identifier<br> 1892 {String} userRealName: user's name<br> 1893 {Date} editedDate: date dashboard was last edited<br> 1894 {Array} groups: groups dashboard is assigned to<br> 1895 {String} description: description of dashboard<br> 1896 {String} guid: uniqued dashboard identifier<br> 1897 {Array} state: array of widget state objects. Has the following properties:<br> 1898 {String} widgetGuid: unique widget identifier<br> 1899 {Number} width: width of widget in pixels<br> 1900 {Number} zIndex: in pixels<br> 1901 {String} region: containing region on dashboard. Dashboard type specific.<br> 1902 {Boolean} pinned: true if widget is pinned open<br> 1903 {String} buttonId: identifier of button that opens widget<br> 1904 {Number} height: height of widget in pixels<br> 1905 {Number} columnPos: position of widget in a column<br> 1906 {String} name: widget name<br> 1907 {Number} statePosition<br> 1908 {Boolean} active: true if this widget is the active (has focus) widget<br> 1909 {String} uniqueId: unique widget identifier on dashboard<br> 1910 {Boolean} minimized: true if widget is minimized<br> 1911 {Boolean} buttonOpened: true if button launched widget is opened<br> 1912 {Boolean} collapsed: true if widget is collapsed<br> 1913 {Number} y: y-axis position in pixels<br> 1914 {Number} x: x-axis position in pixels<br> 1915 {Boolean} maximized: true if widget is maximized<br> 1916 {Boolean} showLaunchMenu: true if launch menu is opened on dashboard<br> 1917 <br> 1918 @param {Function} [cfg.onFailure] Callback to execute if there is an error (optional, a default alert provided). Callback parameter is an error string. 1919 1920 @example 1921 var onSuccess = function(dashboard) { 1922 alert(dashboard.name); 1923 }; 1924 1925 var onFailure = function(error) { 1926 alert(error); 1927 }; 1928 1929 OWF.Preferences.deleteDashboard({ 1930 dashboardId:'917b4cd0-ecbd-410b-afd9-42d150c26426', 1931 onSuccess:onSuccess, 1932 onFailure:onFailure 1933 }); 1934 */ 1935 1936 /** 1937 @description Returns all dashboards for the logged in user. 1938 @name findDashboards 1939 @methodOf OWF.Preferences 1940 1941 @param {Object} cfg config object see below for properties 1942 @param {Function} cfg.onSuccess Callback function to capture the success result. 1943 This method is passed an object having the following properties:<br> 1944 <br> 1945 {Boolean} success: true if dashboards found<br> 1946 {Number} results: number of dashboards found<br> 1947 {Array} data: array of dashboards objects found. Dashboard object has the following properties:<br> 1948 <br> 1949 {Boolean} alteredByAdmin: true if altered by an administrator<br> 1950 {Date} createdDate: date dashboard was created<br> 1951 {Boolean} isGroupDashboard: true if dashboard is a group dashboard<br> 1952 {String} layout: layout of dashboard<br> 1953 {Boolean} isdefault: true if this is a default dashboard<br> 1954 {String} name: name of dashboard<br> 1955 {Number} columnCount: number of columns if dashboard is a portal type<br> 1956 {Object} user: the dashoard owner. Has the following properties:<br> 1957 {String} userId: unique user identifier<br> 1958 {List} EDashboardLayoutList: list of dashboard types<br> 1959 {String} defaultSettings: JSON string of default settings which varies by dashboard type<br> 1960 {Object} createdBy: dashboard creator. Has the following properties:<br> 1961 {String} userId: unique user identifier<br> 1962 {String} userRealName: user's name<br> 1963 {Date} editedDate: date dashboard was last edited<br> 1964 {Array} groups: groups dashboard is assigned to<br> 1965 {String} description: description of dashboard<br> 1966 {String} guid: uniqued dashboard identifier<br> 1967 {Array} state: array of widget state objects. Has the following properties:<br> 1968 {String} widgetGuid: unique widget identifier<br> 1969 {Number} width: width of widget in pixels<br> 1970 {Number} zIndex: in pixels<br> 1971 {String} region: containing region on dashboard. Dashboard type specific.<br> 1972 {Boolean} pinned: true if widget is pinned open<br> 1973 {String} buttonId: identifier of button that opens widget<br> 1974 {Number} height: height of widget in pixels<br> 1975 {Number} columnPos: position of widget in a column<br> 1976 {String} name: widget name<br> 1977 {Number} statePosition<br> 1978 {Boolean} active: true if this widget is the active (has focus) widget<br> 1979 {String} uniqueId: unique widget identifier on dashboard<br> 1980 {Boolean} minimized: true if widget is minimized<br> 1981 {Boolean} buttonOpened: true if button launched widget is opened<br> 1982 {Boolean} collapsed: true if widget is collapsed<br> 1983 {Number} y: y-axis position in pixels<br> 1984 {Number} x: x-axis position in pixels<br> 1985 {Boolean} maximized: true if widget is maximized<br> 1986 {Boolean} showLaunchMenu: true if launch menu is opened on dashboard<br> 1987 <br> 1988 <br> 1989 @param {Function} [cfg.onFailure] Callback to execute if there is an error (optional, a default alert provided). Callback parameter is an error string. 1990 1991 @example 1992 var onSuccess = function(obj) { 1993 alert(obj.results); 1994 if (obj.results > 0) { 1995 for (var i = 0; i < obj.results; i++) { 1996 alert(obj.data[i].name); 1997 } 1998 } 1999 }; 2000 2001 var onFailure = function(error) { 2002 alert(error); 2003 }; 2004 2005 OWF.Preferences.findDashboards({ 2006 onSuccess:onSuccess, 2007 onFailure:onFailure 2008 }); 2009 */ 2010 2011 /** 2012 @description Returns all dashboards for the logged in user filtered by the type of dashboard. 2013 @name findDashboardsByType 2014 @methodOf OWF.Preferences 2015 2016 @param {Object} cfg config object see below for properties 2017 @param {String} cfg.type A string representing the type of dashboard. If using built in dashboard types, this would include desktop, tabbed, portal, and accordion. 2018 @param {Function} cfg.onSuccess Callback function to capture the success result. 2019 This method is passed an object having the following properties:<br> 2020 <br> 2021 {Boolean} success: true if dashboards found<br> 2022 {Number} results: number of dashboards found<br> 2023 {Array} data: array of dashboards objects found. Dashboard object has the following properties:<br> 2024 <br> 2025 {Boolean} alteredByAdmin: true if altered by an administrator<br> 2026 {Date} createdDate: date dashboard was created<br> 2027 {Boolean} isGroupDashboard: true if dashboard is a group dashboard<br> 2028 {String} layout: layout of dashboard<br> 2029 {Boolean} isdefault: true if this is a default dashboard<br> 2030 {String} name: name of dashboard<br> 2031 {Number} columnCount: number of columns if dashboard is a portal type<br> 2032 {Object} user: the dashoard owner. Has the following properties:<br> 2033 {String} userId: unique user identifier<br> 2034 {List} EDashboardLayoutList: list of dashboard types<br> 2035 {String} defaultSettings: JSON string of default settings which varies by dashboard type<br> 2036 {Object} createdBy: dashboard creator. Has the following properties:<br> 2037 {String} userId: unique user identifier<br> 2038 {String} userRealName: user's name<br> 2039 {Date} editedDate: date dashboard was last edited<br> 2040 {Array} groups: groups dashboard is assigned to<br> 2041 {String} description: description of dashboard<br> 2042 {String} guid: uniqued dashboard identifier<br> 2043 {Array} state: array of widget state objects. Has the following properties:<br> 2044 {String} widgetGuid: unique widget identifier<br> 2045 {Number} width: width of widget in pixels<br> 2046 {Number} zIndex: in pixels<br> 2047 {String} region: containing region on dashboard. Dashboard type specific.<br> 2048 {Boolean} pinned: true if widget is pinned open<br> 2049 {String} buttonId: identifier of button that opens widget<br> 2050 {Number} height: height of widget in pixels<br> 2051 {Number} columnPos: position of widget in a column<br> 2052 {String} name: widget name<br> 2053 {Number} statePosition<br> 2054 {Boolean} active: true if this widget is the active (has focus) widget<br> 2055 {String} uniqueId: unique widget identifier on dashboard<br> 2056 {Boolean} minimized: true if widget is minimized<br> 2057 {Boolean} buttonOpened: true if button launched widget is opened<br> 2058 {Boolean} collapsed: true if widget is collapsed<br> 2059 {Number} y: y-axis position in pixels<br> 2060 {Number} x: x-axis position in pixels<br> 2061 {Boolean} maximized: true if widget is maximized<br> 2062 {Boolean} showLaunchMenu: true if launch menu is opened on dashboard<br> 2063 <br> 2064 <br> 2065 @param {Function} [cfg.onFailure] Callback to execute if there is an error (optional, a default alert provided). Callback parameter is an error string. 2066 2067 @example 2068 var onSuccess = function(obj) { 2069 alert(obj.results); 2070 if (obj.results > 0) { 2071 for (var i = 0; i < obj.results; i++) { 2072 alert(obj.data[i].name); 2073 } 2074 } 2075 }; 2076 2077 var onFailure = function(error) { 2078 alert(error); 2079 }; 2080 2081 OWF.Preferences.findDashboardsByType({ 2082 type:'desktop', 2083 onSuccess:onSuccess, 2084 onFailure:onFailure 2085 }); 2086 */ 2087 2088 /** 2089 @description Gets the widget with the specified id 2090 @name getWidget 2091 @methodOf OWF.Preferences 2092 2093 @param {Object} cfg config object see below for properties 2094 @param {String} cfg.widgetId The unique identifier (normally a guid) for the widget. 2095 @param {Function} cfg.onSuccess Callback function to capture the success result. Callback is passed the following object as a parameter: {id:Number, namespace:String, value:Object, path:String} 2096 This method is passed an object having the following properties:<br> 2097 <br> 2098 {Number} id: database pk identifier<br> 2099 {String} namespace: "widget"<br> 2100 {Object} value: widget object having the following properties:<br> 2101 <br> 2102 {Boolean} editable: true if widget can be edited<br> 2103 {Boolean} visible: true if widget is visible<br> 2104 {Number} position<br> 2105 {String} userId: widget owner identifier<br> 2106 {String} userRealName: widget owner name<br> 2107 {String} namespace: widget name<br> 2108 {String} url: url of widget application<br> 2109 {String} headerIcon: url of widget header icon<br> 2110 {String} image: url of widget image<br> 2111 {String} smallIconUrl: url of widget's small icon<br> 2112 {String} largeIconUrl: url of widget's large icon<br> 2113 {Number} width: width of the widget in pixels<br> 2114 {Number} height: height of the widget in pixels<br> 2115 {Number} x: x-axis position<br> 2116 {Number} y: y-axis position<br> 2117 {Boolean} minimized: true if widget is minimized<br> 2118 {Boolean} maximized: true if widget is maximized<br> 2119 {String} widgetVersion: widget version<br> 2120 {Array} tags: array of tag strings<br> 2121 {Boolean} definitionVisible: true if definition is visible<br> 2122 {Boolean} singleton: true if widget is a singleton<br> 2123 {Boolean} background: true if widget runs in the background<br> 2124 {Array} allRequired: array of all widgets required by this widget<br> 2125 {Array} directRequired: array of all widgets directly required by this widget<br> 2126 {Array} widgetTypes: array of widget types this widget belongs to<br> 2127 <br> 2128 {String} path: unnique widget identifier<br> 2129 <br> 2130 @param {Function} [cfg.onFailure] Callback to execute if there is an error (optional, a default alert provided). Callback parameter is an error string. 2131 2132 @example 2133 var onSuccess = function(obj) { 2134 if (obj.value) { 2135 alert(obj.value.namespace); 2136 } 2137 }; 2138 2139 var onFailure = function(error) { 2140 alert(error); 2141 }; 2142 2143 OWF.Preferences.getWidget({ 2144 widgetId:'ea5435cf-4021-4f2a-ba69-dde451d12551', 2145 onSuccess:onSuccess, 2146 onFailure:onFailure 2147 }); 2148 */ 2149 2150 /** 2151 @description Gets all widgets for a given user. 2152 @name findWidgets 2153 @methodOf OWF.Preferences 2154 2155 @param {Object} cfg config object see below for properties 2156 @param {Boolean} [cfg.userOnly] boolean flag that determines whether to only return widgets assigned to the user (excluding widgets to which the user only has access via their assigned groups) 2157 @param {Object} [cfg.searchParams] object containing search parameters 2158 @param {String} [cfg.searchParams.widgetName] name of widget '%' are wildcards 2159 @param {String} [cfg.searchParams.widgetNameExactMatch] true or false to match the name exactly. defaults to false 2160 @param {String} [cfg.searchParams.widgetVersion] version of widget '%' are wildcards 2161 @param {String} [cfg.searchParams.widgetGuid] guid of widget '%' are wildcards 2162 @param {Function} cfg.onSuccess callback function to capture the success result. 2163 This method is passed an array of objects having the following properties:<br> 2164 <br> 2165 {Number} id: database pk identifier<br> 2166 {String} namespace: "widget"<br> 2167 {Object} value: widget object having the following properties:<br> 2168 <br> 2169 {Boolean} editable: true if widget can be edited<br> 2170 {Boolean} visible: true if widget is visible<br> 2171 {Number} position<br> 2172 {String} userId: widget owner identifier<br> 2173 {String} userRealName: widget owner name<br> 2174 {String} namespace: widget name<br> 2175 {String} url: url of widget application<br> 2176 {String} headerIcon: url of widget header icon<br> 2177 {String} image: url of widget image<br> 2178 {String} smallIconUrl: url of widget's small icon<br> 2179 {String} largeIconUrl: url of widget's large icon<br> 2180 {Number} width: width of the widget in pixels<br> 2181 {Number} height: height of the widget in pixels<br> 2182 {Number} x: x-axis position<br> 2183 {Number} y: y-axis position<br> 2184 {Boolean} minimized: true if widget is minimized<br> 2185 {Boolean} maximized: true if widget is maximized<br> 2186 {String} widgetVersion: widget version<br> 2187 {Array} tags: array of tag strings<br> 2188 {Boolean} definitionVisible: true if definition is visible<br> 2189 {Boolean} singleton: true if widget is a singleton<br> 2190 {Boolean} background: true if widget runs in the background<br> 2191 {Array} allRequired: array of all widgets required by this widget<br> 2192 {Array} directRequired: array of all widgets directly required by this widget<br> 2193 {Array} widgetTypes: array of widget types this widget belongs to<br> 2194 <br> 2195 {String} path: unnique widget identifier<br> 2196 <br> 2197 @param {Function} [cfg.onFailure] callback to execute if there is an error (optional, a default alert provided). This callback is called with two parameters: a error message string, and optionally a status code 2198 2199 @example 2200 var onSuccess = function(widgets) { 2201 if (widgets.length > 0) { 2202 alert(widgets[0].value.namespace); 2203 } 2204 }; 2205 2206 var onFailure = function(error, status) { 2207 alert(error); 2208 }; 2209 2210 OWF.Preferences.findWidgets({ 2211 onSuccess:onSuccess, 2212 onFailure:onFailure 2213 }); 2214 */ 2215 2216 /** 2217 @description Saves changes to existing widgets 2218 @name updateAndDeleteWidgets 2219 @methodOf OWF.Preferences 2220 2221 @param {Object} cfg config object see below for properties 2222 @param {Array} cfg.widgetsToUpdate array of JSON objects containing the widget guid and data to be updated 2223 @param {Array} cfg.widgetGuidsToDelete array of guids of widgets to be deleted 2224 @param {Boolean} cfg.updateOrder flag to update order 2225 @param {Function} cfg.onSuccess callback function to capture the success result 2226 @param {Function} [cfg.onFailure] callback to execute if there is an error (optional, a default alert provided) 2227 */ 2228 2229 /** 2230 @description Retrieves the user preference for the provided name and namespace 2231 @name getUserPreference 2232 @methodOf OWF.Preferences 2233 2234 @param {Object} cfg config object see below for properties 2235 @param {String} cfg.namespace The namespace of the requested user preference 2236 @param {String} cfg.name The name of the requested user preference 2237 @param {Function} cfg.onSuccess The function to be called if the user preference is successfully retrieved from 2238 the database. This function takes a single argument, which is a JSON object. If a preference is found, the 2239 complete JSON structure as shown below will be returned. If it is not found this function be passed an empty JSON object. 2240 @example 2241 The following is an example of a complete preference object passed to the onSuccess 2242 function: 2243 { 2244 "value":"true", 2245 "path":"militaryTime", 2246 "user": 2247 { 2248 "userId":"testAdmin1" 2249 }, 2250 "namespace":"com.mycompany.AnnouncingClock" 2251 } 2252 @param {Function} [cfg.onFailure] This parameter is optional. If this function is not specified a default error 2253 message will be displayed.This function is called if an error occurs on preference retrieval. It is not 2254 called if the preference is simply missing. 2255 This function should accept two arguments:<br> 2256 <br> 2257 error: String<br> 2258 The error message<br> 2259 <br> 2260 Status: The numeric HTTP Status code (if applicable)<br> 2261 401: You are not authorized to access this entity.<br> 2262 500: An unexpected error occurred.<br> 2263 404: The user preference was not found.<br> 2264 400: The requested entity failed to pass validation.<br> 2265 2266 @example 2267 The following shows how to make a call to getUserPreference: 2268 function onSuccess(pref){ 2269 alert(Ozone.util.toString(pref.value)); 2270 } 2271 2272 function onFailure(error,status){ 2273 alert('Error ' + error); 2274 alert(status); 2275 } 2276 2277 // The following code calls getUserPreference with the above defined onSuccess and 2278 // onFailure callbacks. 2279 OWF.Preferences.getUserPreference({ 2280 namespace:'com.company.widget', 2281 name:'First President', 2282 onSuccess:onSuccess, 2283 onFailure:onFailure 2284 }); 2285 */ 2286 2287 /** 2288 @description Checks for the existence of a user preference for a given namespace and name 2289 @name doesUserPreferenceExist 2290 @methodOf OWF.Preferences 2291 2292 @param {Object} cfg config object see below for properties 2293 @param {String} cfg.namespace The namespace of the requested user 2294 @param {String} cfg.name The name of the requested user 2295 @param {Function} cfg.onSuccess The callback function that is called if a preference successfully return from the database. 2296 This method is passed an object having the following properties:<br> 2297 <br> 2298 {Number} statusCode: status code<br> 2299 {Boolean} preferenceExist: true if preference exists<br> 2300 <br> 2301 @param {Function} [cfg.onFailure] The callback function that is called if the preference could not be found in the database. Callback parameter is an error string. 2302 2303 @example 2304 var onSuccess = function(obj) { 2305 if (obj.statusCode = 200) { 2306 alert(obj.preferenceExist); 2307 } 2308 }; 2309 2310 var onFailure = function(error) { 2311 alert(error); 2312 }; 2313 2314 OWF.Preferences.doesUserPreferenceExist({ 2315 namespace:'foo.bar.0', 2316 name:'test path entry 0', 2317 onSuccess:onSuccess, 2318 onFailure:onFailure 2319 }); 2320 */ 2321 2322 /** 2323 @description retrieves the current user logged into the system 2324 @name getCurrentUser 2325 @methodOf OWF.Preferences 2326 2327 @param {Object} cfg config object see below for properties 2328 @param {Function} cfg.onSuccess The callback function that is called for a successful retrieval of the user logged in. 2329 This method is passed an object having the following properties:<br> 2330 <br> 2331 {String} currentUserName: user name<br> 2332 {String} currentUser: user real name<br> 2333 {Date} currentUserPrevLogin: previous login date<br> 2334 {Number} currentId: database pk index<br> 2335 <br> 2336 @param {Function} cfg.[onFailure] The callback function that is called when the system is unable to retrieve the current user logged in. Callback parameter is an error string. 2337 2338 @example 2339 var onSuccess = function(obj) { 2340 if (obj) { 2341 alert(obj.currentUser); 2342 } 2343 }; 2344 2345 var onFailure = function(error) { 2346 alert(error); 2347 }; 2348 2349 OWF.Preferences.getCurrentUser({ 2350 onSuccess:onSuccess, 2351 onFailure:onFailure 2352 }); 2353 */ 2354 2355 /** 2356 @description For retrieving the OWF system server version 2357 @name getServerVersion 2358 @methodOf OWF.Preferences 2359 2360 @param {Object} cfg config object see below for properties 2361 @param {Function} cfg.onSuccess The callback function that is called for successfully retrieving the server version of the OWF system. 2362 This method is passed an object having the following properties:<br> 2363 <br> 2364 {String} {serverVersion: server version<br> 2365 <br> 2366 @param {Function} [cfg.onFailure] The callback function that is called when the system fails to retrieve the server version of the OWF system. Callback parameter is an error string. 2367 @example 2368 2369 var onSuccess = function(obj) { 2370 if (obj) { 2371 alert(obj.serverVersion); 2372 } 2373 }; 2374 2375 var onFailure = function(error) { 2376 alert(error); 2377 }; 2378 2379 OWF.Preferences.getServerVersion({ 2380 onSuccess:onSuccess, 2381 onFailure:onFailure 2382 }); 2383 */ 2384 2385 /** 2386 @description Creates or updates a user preference for the provided namespace and name. 2387 @name setUserPreference 2388 @methodOf OWF.Preferences 2389 2390 @param {Object} cfg config object see below for properties 2391 @param {String} cfg.namespace The namespace of the user preference 2392 @param {String} cfg.name The name of the user preference 2393 @param {String} cfg.value The value of the user preference. The value can be any string including JSON. 2394 @param {Function} cfg.onSuccess The function to be called if the user preference is successfully updated in 2395 the database. 2396 2397 @example 2398 The following is an example of a complete preference object passed to the onSuccess function: 2399 { 2400 "value":"true", 2401 "path":"militaryTime", 2402 "user": { 2403 "userId":"testAdmin1" 2404 }, 2405 "namespace":"com.mycompany.AnnouncingClock" 2406 } 2407 @param {Function} [cfg.onFailure] The function to be called if the user preference cannot be stored in the database. 2408 If this function is not specified a default error message will be displayed. This function is passed 2409 back the following parameters:<br> 2410 <br> 2411 error: String<br> 2412 The error message<br> 2413 <br> 2414 Status: The HTTP Status code<br> 2415 401: You are not authorized to access this entity.<br> 2416 500: An unexpected error occurred.<br> 2417 404: The requested entity was not found.<br> 2418 400: The requested entity failed to pass validation.<br> 2419 2420 @example 2421 function onSuccess(pref){ 2422 alert(pref.value); 2423 } 2424 2425 function onFailure(error,status){ 2426 alert('Error ' + error); 2427 alert(status); 2428 } 2429 2430 var text = 'George Washington'; 2431 OWF.Preferences.setUserPreference({ 2432 namespace:'com.company.widget', 2433 name:'First President', 2434 value:text, 2435 onSuccess:onSuccess, 2436 onFailure:onFailure 2437 }); 2438 */ 2439 2440 /** 2441 Deletes a user preference with the provided namespace and name. 2442 @name deleteUserPreference 2443 @methodOf OWF.Preferences 2444 2445 @param {Object} cfg config object see below for properties 2446 @param {String} cfg.namespace The namespace of the user preference 2447 @param {String} cfg.name The name of the user preference 2448 @param {Function} cfg.onSuccess The function to be called if the user preference is successfully deleted from the database. 2449 @example 2450 The following is an example of a complete preference object passed to the onSuccess 2451 function: 2452 2453 { 2454 "value":"true", 2455 "path":"militaryTime", 2456 "user": 2457 { 2458 "userId":"testAdmin1" 2459 }, 2460 "namespace":"com.mycompany.AnnouncingClock" 2461 } 2462 @param {Function} [cfg.onFailure] The function to be called if the user preference cannot be deleted from the 2463 database or if the preference does not exist. If this function is not specified a default error message will be 2464 displayed. This function is passed back the following parameters: <br> 2465 <br> 2466 error: String <br> 2467 The error message <br> 2468 <br> 2469 Status: The HTTP Status code<br> 2470 <br> 2471 401: You are not authorized to access this entity.<br> 2472 500: An unexpected error occurred.<br> 2473 404: The user preference was not found.<br> 2474 400: The requested entity failed to pass validation. <br> 2475 <br> 2476 @example 2477 function onSuccess(pref){ 2478 alert(pref.value); 2479 } 2480 2481 function onFailure(error,status){ 2482 alert('Error ' + error); 2483 alert(status); 2484 } 2485 2486 OWF.Preferences.deleteUserPreference({ 2487 namespace:'com.company.widget', 2488 name:'First President', 2489 onSuccess:onSuccess, 2490 onFailure:onFailure 2491 }); 2492 */ 2493 2494 /** 2495 This method informs a widget developer if their widget is running from the OWF or from a direct URL call. 2496 @name isRunningInOWF 2497 @methodOf OWF.Util 2498 2499 @returns boolean true if the widget is inside OWF, false otherwise. 2500 */ 2501 2502 /** 2503 @name isInContainer 2504 @methodOf OWF.Util 2505 * @description This method informs a widget developer if their widget is running 2506 * in a Container, like OWF 2507 * 2508 * @returns boolean true if the widget is inside a container, false otherwise. 2509 * 2510 */ 2511 2512 /** 2513 Returns a globally unique identifier (guid). 2514 @name guid 2515 @methodOf OWF.Util 2516 2517 @returns boolean true if the widget is inside OWF, false otherwise. 2518 */ 2519 2520 /** 2521 This method returns flash/flex dom element from dom. 2522 @name getFlashApp 2523 @methodOf OWF.Util 2524 2525 @param {String} id id of the flex dom element 2526 2527 @returns flash/flex object from dom 2528 */ 2529 2530 /** 2531 Basic logging capability - meant to be called by other methods which transform or validate data. 2532 @name logMetric 2533 @methodOf OWF.Metrics 2534 @since OWF 3.8.0 2535 2536 @param {String} userId 2537 @param {String} userName 2538 @param {String} metricSite Identifier, potentially URL, for source of metric - typically OWF instance 2539 @param {String} componentName 2540 @param {String} componentId 2541 @param {String} componentInstanceId 2542 @param {String} metricTypeId String describing metric - recommend package name construct 2543 @param {String} metricData Any additional data for metric - do any necessary validation appropriate to metricTypeId before sending through 2544 */ 2545 2546 /** 2547 * @description Logs a set of metrics to the server all at once. All 2548 * metrics passed into a call to this function will be logged in a single 2549 * HTTP request, instead of one request per metric 2550 * @name logBatchMetrics 2551 * @methodOf OWF.Metrics 2552 * @since OWF 6.0 2553 * 2554 * @param {Array} metrics 2555 * @param {String} metrics[*].userId 2556 * @param {String} metrics[*].userName 2557 * @param {Number} metrics[*].metricTime The time at which is metric was collected (in UNIX time) 2558 * @param {String} metrics[*].site Identifier, potentially URL, for source of metric - typically OWF instance 2559 * @param {String} metrics[*].component 2560 * @param {String} metrics[*].componentId 2561 * @param {String} metrics[*].instanceId 2562 * @param {String} metrics[*].metricTypeId String describing metric - recommend package name construct 2563 * @param {String} metrics[*].widgetData Any additional data for metric - do any necessary validation appropriate to metricTypeId before sending through 2564 * @param {String} metrics[*].userAgent Should be set to the user-agent string of the browser 2565 */ 2566 2567 /** 2568 Log view of widget - see calls in dashboards. 2569 @name logWidgetRender 2570 @methodOf OWF.Metrics 2571 @since OWF 3.8.0 2572 2573 @param {String} userId - see Ozone.metrics.logMetric userId 2574 @param {String} userName - see Ozone.metrics.logMetric userName 2575 @param {String} metricSite - see Ozone.metrics.logMetric metricSite 2576 @param {Object} widget 2577 */ 2578 2579 /** 2580 Get a logger by name, if the logger has not already been created it will be created. 2581 @name getLogger 2582 @methodOf OWF.Log 2583 @since OWF 3.8.0 2584 @param {String} loggerName 2585 */ 2586 2587 /** 2588 Enable/Disable logging for the OWF application. 2589 @name setEnabled 2590 @methodOf OWF.Log 2591 @since OWF 3.8.0 2592 @param {Boolean} enabled true will enable logging false will disable 2593 */ 2594 2595 /** 2596 Get OWF's default logger 2597 @name getDefaultLogger 2598 @methodOf OWF.Log 2599 @since OWF 3.8.0 2600 */ 2601 2602 /** 2603 Launch the log window pop-up, this will re-launch the window in the event it has been closed. 2604 @name launchPopupAppender 2605 @methodOf OWF.Log 2606 @since OWF 3.8.0 2607 */ 2608 2609 /** 2610 Gets the language that is currently being used by OWF. 2611 @name getLanguage 2612 @methodOf OWF.Lang 2613 2614 @returns {String} Returns the ISO 639-1 language code for the language that is currently being used by OWF. 2615 */ 2616