/////////////////////////////////////////////////////////////////////////// // Scripting Tutorial #9 - Matrix /////////////////////////////////////////////////////////////////////////// // Title // Report to list all attributes from the current selected object(s) // in a Matrix // // Main Features // - Matrix Report with Attributes in the row and Objects in the columns // - Dynamic and Unique Liste of Attributes // - Dynamic List of Objects // - Model Name only when changed // - Colored changes // - Function AttrList to get maintained attributes // // Author // Volker Eckardt, Oracle Corporation, April 2010 /////////////////////////////////////////////////////////////////////////// // global variables for reuse var nLocale=Context.getSelectedLanguage(); var sScriptName=Context.getScriptInfo(Constants.SCRIPT_NAME); // Environment, returns STD or BP var sEnv = Context.getEnvironment() // To force a fixed Excel file name, set to true var bUseFixedOutPutFileName = true // Font Size List var aOutputFontSizeList = [getString("ID_FONT_SIZE_SMALL"), getString("ID_FONT_SIZE_MEDIUM"), getString("ID_FONT_SIZE_LARGE")] var nOutputFontSizeOffset = 1 // Show Dialog var bShowDialog = false /** Main Function */ function main(){ // React on Parameter 1 if (bUseFixedOutPutFileName) // if requested, assign a fixed file name var oOutput=Context.createOutputObject(Context.getSelectedFormat(),getFixedFileName()); else // Create an output Object var oOutput=Context.createOutputObject(); // define page and write Header + Footer writeHeaderAndFooter(oOutput) // define the styles defineStyles(oOutput); // set the html page title oOutput.SetTitle(Context.getScriptInfo(Constants.SCRIPT_NAME)) // Validate, if standard execution is requested (not BP) if (sEnv == "STD") { // read the current selected object occurrences var oObjOccList = ArisData.getSelectedObjOccs(); } else { // set to an empty array by now var oObjOccList = new ObjOcc // also possible: var objoccs = [] } // if no object occurrence is selected, try also objectdef if (oObjOccList.length == 0) { var objDefs = ArisData.getSelectedObjDefs (); // is at least one object is selected // hint: you can select multiple objects in the search result window if (objDefs.length > 0) // collect referenced object occurrences oObjOccList = collectObjOccs(objDefs) else { // if no objOcc and no objDef is selected, try model var modDefs = ArisData.getSelectedModels() // is a model selected? Take the first only. if ( modDefs.length > 0 ) oObjOccList = modDefs[0].ObjOccListFilter() } } // if at least one object selected if (oObjOccList.length > 0) { // Write joined Header Line (Script Name), not supported in pdf oOutput.BeginTable(100, Constants.C_BLACK, Constants.C_WHITE, Constants.FMT_LEFT | Constants.FMT_REPEAT_HEADER, 0) oOutput.TableRow(); if(Context.getSelectedFormat()==Constants.OUTPDF) oOutput.TableCellF( Context.getScriptInfo(Constants.SCRIPT_NAME), 100, "TITLE") else oOutput.TableCell ( Context.getScriptInfo(Constants.SCRIPT_NAME), 1, oObjOccList.length+1, getString("ID_DEFAULT_FONT"), 12, Constants.C_OLIVE, Constants.C_WHITE, 0,Constants.FMT_BOLD | Constants.FMT_CENTER | Constants.FMT_VCENTER,0) var currFilter = ArisData.ActiveFilter(); // Construct Array #1: Column Header // Create a list of Object Defs var oObjDefList = new Array(); for (o=0;o