460 likes | 884 Views
Native JavaScript in Hyperion Intelligence. Unleashing the Power of Object-Oriented Programming. What is JavaScript?. Created in 1995 by Brendan Eich of Netscape as “LiveScript” Interpreted, object-oriented/procedural programming language
E N D
Native JavaScript in Hyperion Intelligence Unleashing the Power of Object-Oriented Programming
What is JavaScript? • Created in 1995 by Brendan Eich of Netscape as “LiveScript” • Interpreted, object-oriented/procedural programming language • Extensively used in web pages in conjunction with HTML • Event-driven, case-sensitive, ignores extra spaces
How Does Hyperion Intelligence Use JavaScript? • Introduced Netscape v1.4 JavaScript interpreter in v6.0 • Supports all standard JavaScript commands • Used in dashboards, computed items (except in query sections), calculated report fields and document scripts • Proprietary object model
Proprietary Object Model • Web object model uses objects like window, document, and location • Hyperion object model uses objects like Application, ActiveDocument and ActiveSection • Properties and methods will vary • Core objects such as String, Number and Date will be unchanged
What About “_____”? • We will not cover anything proprietary to Hyperion Intelligence • We will not cover the basics (syntax, conditional statements, loops, etc.) • We will not cover redundancies (for example, the concat() method of a string object) • We will not cover advanced topics that would require a separate presentation altogether (for example, regular expressions) • We will cover everything else!
Object-Oriented Programming • Objects, sub-objects and object collections • Methods – • Actions performed on or by an object • Called with parenthesis at the end to allow for the passing of parameters • Properties – • Descriptive traits of objects • Sometimes read-only
Other JavaScript Terms • Functions: parameters are passed in parenthesis returning a result • Statements: cause an action or series of actions • Operators: Used for mathematical calculations, value comparisons and shortcuts • Constants: Built-in variables (Infinity, NaN, null and undefined)
Functions • eval() – evaluates a string of code and (optionally) returns a result eval(“Alert(1)”) //returns no value var x = eval(“10 * 10”) //returns a value of 100
Functions (cont.) • isFinite() – returns true if the number is neither positive nor negative infinity var x = isFinite(10) //returns true var x = isFinite(Infinity) //returns false
Functions (cont.) • isNaN() – returns true if the parameter is not or cannot become a number var x = isNaN(10) //returns false var x = isNaN(“Adam12”) //returns true var x = isNaN(“1000”) //returns false
Functions (cont.) • Number() – converts a non-numeric value to a numeric value var x = Number(“10”) //returns the numeric value 10 • String() – converts any value to its string representation var x = String(10) //returns the string value “10”
Statements • break – breaks a loop or conditional statement • // - comments out a line of code • /* - comments out several lines of code (closed with */) • continue – opposite of break • do{} while() – executes a loop at least once • for(){} – executes a loop
Statements (cont.) • function(){} – declares a local function • if(){} else{} – executes a condition • return – returns a value from a function • var – declares a local variable • while(){} – executes a loop • with(){} – declares top level object with(ActiveDocument.Sections[“Query”]){ Name = “MyQuery” }
Statements (cont.) • switch(){} – executes a conditional statement with multiple conditions possible switch(x){ case “A” : var y = 1 break case “B” : var y = 2 break default : var y = 3 }
Statements (cont.) • try{} catch(){} – attempts to execute a statement in the try{} and executes the catch(){} if an error occurs • throw – passes a value to the catch(){}
Statements (cont.) try{ if(x == 1){throw "Error 1"} else if(x == 2){throw "Error 2"} } catch(er){ if(er == "Error 1"){Alert(“Contact SysAdmin")} if(er == "Error 2"){Alert("Please Reload the page")} }
Mathematical + Add/Concatenate ++ Increment += Add/Append - Subtract -- Decrement -= Subtract/Remove / Divide * Multiply % Modulus Comparison == Equal != Not Equal > Greater >= Greater or Equal < Less <= Less or Equal Assignment = Assign Operators
Backslash Escaped \’ Quote \” Double Quote \\ Backslash \b Backspace \f Form Feed \n New Line \r Carriage Return \t Tab Logical && And || Or ! Not Special… Operators (cont.)
Operators (cont.) • Question mark & colon – executes a single condition (rowCount > 0) ? var x = “Rows” : var x = “No Rows” • new – creates an object function makeBook(title){this.Title = title} var book = new makeBook(“Don Quixote”) Alert(book.Title) //returns “Don Quixote” as a property
Operators (cont.) • typeof – returns the type of object var x = typeof(10) // returns “number” var x = typeof(“ABC”) // returns “string” var x = typeof(true) // returns “boolean” var x = typeof(null) // returns “object” Methods & functions return “function”
Operators (cont.) • Comma – used to separate multiple values • delete – deletes an object, property or array element • this – used to refer to the parent object Alert(this.Name) //returns the name of the object used
Objects • String • Number • Date • Array • Math
String Object • The length property returns the string length • Methods include charAt(), charCodeAt(), fromCharCode(), indexOf(), lastIndexOf(), slice(), split(), substr(), substring(), toLowerCase(), toUpperCase() • We will NOT be discussing regular expressions in this presentation
String Object - Methods • String.charAt() – takes 1 argument, returns the character at the index of the argument var x = “AdamFranz” Alert(x.charAt(0)) // returns “A” • String.charCodeAt() – takes 1 argument, returns the ASCII value of the character at the index of the argument Alert(x.charCodeAt(0)) // returns 65 (ASCII for “A”)
String Object – Methods (cont.) • String.fromCharCode() – builds a character from the ASCII value specified in the argument Alert(String.fromCharCode(65)) // returns “A”
String Object – Methods (cont.) • String.indexOf() – takes one or two arguments, returns the index of the first argument in the string (starting from the index of the second argument) Alert(x.indexOf(“a”)) // returns 2 Alert(x.indexOf(“a”, 4)) // returns 6 • String.lastIndexOf() – same as above but returning the index of the last instance of the argument
String Object – Methods (cont.) • String.slice() – returns a portion of the string between 2 specified indexes Alert(x.slice(1, 3)) // returns “da” • String.split() – returns an array from the string being broken on a designated character var y = “A, B” var z = y.split(“,”) Alert(z[0]) // returns “A” Alert(z[1]) // returns “B”
String Object – Methods (cont.) • String.substr() – returns a portion of the string starting at the index of the first argument for the length of the second argument (defaults to end of string) Alert(x.substr(2, 2)) // returns “am” • String.substring() – basically the same as String.slice()
String Object – Methods (cont.) • String.toLowerCase() – returns the string in all lower case Alert(x.toLowerCase()) // returns “adamfranz” • String.toUpperCase() – opposite of above Alert(x.toLowerCase()) // returns “ADAMFRANZ”
Number Object • Represents a solely numeric value • Number.MAX_VALUE = 1.79769e+308 • Number.MIN_VALUE = 5e-324 • Number.NaN, Number.NEGATIVE_INFINITY and NUMBER.POSITIVE_INFINITY for comparison purposes
Date Object • It is always a good idea to explicitly declare dates before performing any comparisons, calculations or calling any methods var x = new Date(yourDateValue)
Date Object - Methods • Date objects have a series of get & set methods used to return or set any specific portion of the date object • A get method, such as getFullYear(), returns the year from the date object whereas a set method, such as setFullYear(), sets the year portion of the date to the argument passed • A getUTC or setUTC gets or sets according to Universal Time (not discussed)
.getDate() .getDay() .getFullYear() .getHours() .getMilliseconds() .getMinutes() .getMonth()* .getSeconds() .setDate() .setDay() .setFullYear() .setHours() .setMilliseconds() .setMinutes() .setMonth()* .setSeconds() Date Object – Methods (cont.) * - zero-based, watch out!
Date Object – Methods (cont.) • Date.getTimezoneOffset – returns the difference in minutes between local time and Greenwich Mean Time • Date.getTime(), Date.parse() and Date.valueof() used to return the number of milliseconds since 1/1/1970
Array Object • Contains a series of values of any datatype designated by their array index (starting with zero) • The length property will return the total amount of elements in the specified array
Array Object - Methods • Array.concat() – joins two or more array objects (passed as arguments) into a single array object (without effecting the original array) • Array.join() – converts an array object to a string separated by the character used in the argument (or a comma by default)
Array Object – Methods (cont.) • Array.pop() – removes the last element of an array • Array.push() – adds an element specified as the argument to the end of an array and returns the new array length • Array.shift() – removes and returns the first element of the array
Array Object – Methods (cont.) • Array.slice() – Returns a new array from a portion of the original array starting at the index of the first argument and ending at the second (or to the end of the array by default) • Array.sort() - re-indexes the array in ascending order by default or in the order provided as an argument in the form of a function
Array Object – Methods (cont.) • Array.splice() – used to add, remove or replace elements of an array Array_name.splice(starting_index, how_many_to_remove, replacement_value_1, replacement_value_2, etc.)
Math Object • A native object accessible by direct reference without requiring instantiation • Used for performing calculations and to access unique mathematical values such as Pi, random numbers, etc. • Includes geometrical properties and methods such as Math.tan for calculating Tangent (not discussed)
Math Object - Properties • Math.E – Euler’s constant • Math.LN10 – Natural logarithm of 10 • Math.LN2 – Natural logarithm of 2 • Math.LOG10E – Base 10 logarithm E • Math.LOG2E – Base 2 logarithm of E • Math.Pi – Pi • Math.SQRT1_2 – 1 divided by sq. rt. of 2 • Math.SQRT2 – Square root of 2
Math Object - Methods • Math.abs(x) – returns the absolute value of x • Math.ceil(x) – returns x rounded up to nearest whole number • Math.exp(x) – returns Euler’s constant to the power of x • Math.floor(x) - returns x rounded down to nearest whole number • Math.log(x) – returns the natural logarithm (base E) of x
Math Object – Methods (cont.) • Math.max(x,y) – returns the greater of x or y • Math.min(x,y) – returns the lesser of x or y • Math.pow(x,y) – returns x to the power of y • Math.random() – returns a pseudo-random number (based on the current time) between 0 and 1 • Math.round(x) – returns x rounded off • Math.sqrt(x) – returns square root of x
Conclusion • JavaScript is a powerful scripting language which extends beyond the Hyperion platform • All applicable JavaScript is valid in Hyperion Intelligence • JavaScript can be used in dashboards, document scripts, and any computed items (other than in a query) • Get out there and get scripting!!!
Helpful Websites • http://www.devguru.com - an excellent JavaScript reference • http://www.adamfranz.com - sample code and presentations available for download
The End fin