46
Native JavaScript in Hyperion Intelligence Unleashing the Power of Object- Oriented Programming

Native JavaScript in Hyperion Intelligence Unleashing the Power of Object- Oriented Programming

Embed Size (px)

Citation preview

Page 1: Native JavaScript in Hyperion Intelligence Unleashing the Power of Object- Oriented Programming

Native JavaScript in Hyperion Intelligence

Unleashing the Power of Object-Oriented Programming

Page 2: 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

Page 3: Native JavaScript in Hyperion Intelligence Unleashing the Power of Object- Oriented Programming

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

Page 4: Native JavaScript in Hyperion Intelligence Unleashing the Power of Object- Oriented Programming

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

Page 5: Native JavaScript in Hyperion Intelligence Unleashing the Power of Object- Oriented Programming

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!

Page 6: Native JavaScript in Hyperion Intelligence Unleashing the Power of Object- Oriented Programming

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

Page 7: Native JavaScript in Hyperion Intelligence Unleashing the Power of Object- Oriented Programming

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)

Page 8: Native JavaScript in Hyperion Intelligence Unleashing the Power of Object- Oriented Programming

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

Page 9: Native JavaScript in Hyperion Intelligence Unleashing the Power of Object- Oriented Programming

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

Page 10: Native JavaScript in Hyperion Intelligence Unleashing the Power of Object- Oriented Programming

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

Page 11: Native JavaScript in Hyperion Intelligence Unleashing the Power of Object- Oriented Programming

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”

Page 12: Native JavaScript in Hyperion Intelligence Unleashing the Power of Object- Oriented Programming

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

Page 13: Native JavaScript in Hyperion Intelligence Unleashing the Power of Object- Oriented Programming

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”}

Page 14: Native JavaScript in Hyperion Intelligence Unleashing the Power of Object- Oriented Programming

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}

Page 15: Native JavaScript in Hyperion Intelligence Unleashing the Power of Object- Oriented Programming

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(){}

Page 16: Native JavaScript in Hyperion Intelligence Unleashing the Power of Object- Oriented Programming

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")}

}

Page 17: Native JavaScript in Hyperion Intelligence Unleashing the Power of Object- Oriented Programming

Operators

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

Page 18: Native JavaScript in Hyperion Intelligence Unleashing the Power of Object- Oriented Programming

Operators (cont.)

Backslash Escaped\’ Quote

\” Double Quote

\\ Backslash

\b Backspace

\f Form Feed

\n New Line

\r Carriage Return

\t Tab

Logical&& And

|| Or

! Not

Special…

Page 19: Native JavaScript in Hyperion Intelligence Unleashing the Power of Object- Oriented Programming

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

Page 20: Native JavaScript in Hyperion Intelligence Unleashing the Power of Object- Oriented Programming

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”

Page 21: Native JavaScript in Hyperion Intelligence Unleashing the Power of Object- Oriented Programming

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

Page 22: Native JavaScript in Hyperion Intelligence Unleashing the Power of Object- Oriented Programming

Objects

String Number Date Array Math

Page 23: Native JavaScript in Hyperion Intelligence Unleashing the Power of Object- Oriented Programming

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

Page 24: Native JavaScript in Hyperion Intelligence Unleashing the Power of Object- Oriented Programming

String Object - Methods

String.charAt() – takes 1 argument, returns the character at the index of the argumentvar 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 argumentAlert(x.charCodeAt(0)) // returns 65 (ASCII for “A”)

Page 25: Native JavaScript in Hyperion Intelligence Unleashing the Power of Object- Oriented Programming

String Object – Methods (cont.)

String.fromCharCode() – builds a character from the ASCII value specified in the argumentAlert(String.fromCharCode(65)) // returns “A”

Page 26: Native JavaScript in Hyperion Intelligence Unleashing the Power of Object- Oriented Programming

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

Page 27: Native JavaScript in Hyperion Intelligence Unleashing the Power of Object- Oriented Programming

String Object – Methods (cont.)

String.slice() – returns a portion of the string between 2 specified indexesAlert(x.slice(1, 3)) // returns “da”

String.split() – returns an array from the string being broken on a designated charactervar y = “A, B”

var z = y.split(“,”)

Alert(z[0]) // returns “A”

Alert(z[1]) // returns “B”

Page 28: Native JavaScript in Hyperion Intelligence Unleashing the Power of Object- Oriented Programming

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()

Page 29: Native JavaScript in Hyperion Intelligence Unleashing the Power of Object- Oriented Programming

String Object – Methods (cont.)

String.toLowerCase() – returns the string in all lower caseAlert(x.toLowerCase()) // returns “adamfranz”

String.toUpperCase() – opposite of aboveAlert(x.toLowerCase()) // returns “ADAMFRANZ”

Page 30: Native JavaScript in Hyperion Intelligence Unleashing the Power of Object- Oriented Programming

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

Page 31: Native JavaScript in Hyperion Intelligence Unleashing the Power of Object- Oriented Programming

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)

Page 32: Native JavaScript in Hyperion Intelligence Unleashing the Power of Object- Oriented Programming

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)

Page 33: Native JavaScript in Hyperion Intelligence Unleashing the Power of Object- Oriented Programming

Date Object – Methods (cont.)

.getDate() .getDay() .getFullYear() .getHours() .getMilliseconds() .getMinutes() .getMonth()* .getSeconds()

.setDate() .setDay() .setFullYear() .setHours() .setMilliseconds() .setMinutes() .setMonth()* .setSeconds()

* - zero-based, watch out!

Page 34: Native JavaScript in Hyperion Intelligence Unleashing the Power of Object- Oriented Programming

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

Page 35: Native JavaScript in Hyperion Intelligence Unleashing the Power of Object- Oriented Programming

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

Page 36: Native JavaScript in Hyperion Intelligence Unleashing the Power of Object- Oriented Programming

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)

Page 37: Native JavaScript in Hyperion Intelligence Unleashing the Power of Object- Oriented Programming

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

Page 38: Native JavaScript in Hyperion Intelligence Unleashing the Power of Object- Oriented Programming

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

Page 39: Native JavaScript in Hyperion Intelligence Unleashing the Power of Object- Oriented Programming

Array Object – Methods (cont.)

Array.splice() – used to add, remove or replace elements of an arrayArray_name.splice(starting_index,

how_many_to_remove, replacement_value_1, replacement_value_2, etc.)

Page 40: Native JavaScript in Hyperion Intelligence Unleashing the Power of Object- Oriented Programming

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)

Page 41: Native JavaScript in Hyperion Intelligence Unleashing the Power of Object- Oriented Programming

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

Page 42: Native JavaScript in Hyperion Intelligence Unleashing the Power of Object- Oriented Programming

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

Page 43: Native JavaScript in Hyperion Intelligence Unleashing the Power of Object- Oriented Programming

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

Page 44: Native JavaScript in Hyperion Intelligence Unleashing the Power of Object- Oriented Programming

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!!!

Page 45: Native JavaScript in Hyperion Intelligence Unleashing the Power of Object- Oriented Programming

Helpful Websites

http://www.devguru.com - an excellent JavaScript reference

http://www.adamfranz.com - sample code and presentations available for download

Page 46: Native JavaScript in Hyperion Intelligence Unleashing the Power of Object- Oriented Programming

The End

fin