start
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| start [2024/02/19 10:13] – johnsonjohn | start [2024/02/26 08:26] (current) – [My Favorites] johnsonjohn | ||
|---|---|---|---|
| Line 2: | Line 2: | ||
| ----- | ----- | ||
| + | ======My Code====== | ||
| + | =====NON UTIL USER===== | ||
| + | < | ||
| + | // Run DEBUG NOW only. Do not run EXECUTE NOW. This will give you a list of users that are NOT ITIL USERS. | ||
| + | // This list of NON ITIL users will show up in the User Logs. | ||
| + | ClearUserLog(); | ||
| + | var gr = new GlideRecord(' | ||
| + | gr.addEncodedQuery(' | ||
| + | gr.query(); | ||
| + | while (gr.next()) { | ||
| + | var gr2 = new GlideRecord(' | ||
| + | gr2.addEncodedQuery(' | ||
| + | gr2.query(); | ||
| + | if (!gr2.hasNext()) { | ||
| + | // | ||
| + | UserLog(gr.user.getDisplayValue() + ' ' + gr.role.getDisplayValue()); | ||
| + | } | ||
| + | } | ||
| + | |||
| + | </ | ||
| + | ----- | ||
| + | =====My Favorites===== | ||
| + | [[https:// | ||
| + | |||
| + | ------ | ||
| ======JavaScript Snippets====== | ======JavaScript Snippets====== | ||
| =====Getting Started===== | =====Getting Started===== | ||
| < | < | ||
| + | // | ||
| + | gs.info(' | ||
| + | </ | ||
| + | < | ||
| + | // | ||
| + | var gr = new GlideRecord(' | ||
| + | gr.addActiveQuery(); | ||
| + | gr.query(); | ||
| + | while (gr.next()) { | ||
| + | gs.info(gr.getValue(' | ||
| + | } | ||
| </ | </ | ||
| + | < | ||
| + | // | ||
| + | function onLoad() { | ||
| + | |||
| + | alert(' | ||
| + | |||
| + | } | ||
| + | </ | ||
| + | |||
| ----- | ----- | ||
| =====Statements and Syntax===== | =====Statements and Syntax===== | ||
| < | < | ||
| + | // | ||
| + | |||
| + | // Required: | ||
| + | var i = 0; i++ // <-- semicolon obligatory | ||
| + | // (but optional before newline) | ||
| + | var i = 0 // <-- semicolon optional | ||
| + | i++ // <-- semicolon optional | ||
| + | |||
| + | // Optional: | ||
| + | var i; // variable declaration | ||
| + | i = 5; // value assignment | ||
| + | i = i + 1; // value assignment | ||
| + | i++; // same as above | ||
| + | var x = 9; // declaration & assignment | ||
| + | var fun = function() {...}; | ||
| + | alert(" | ||
| + | |||
| + | // Avoid | ||
| + | // NO semicolons after }: | ||
| + | if (...) {...} else {...} | ||
| + | for (...) {...} | ||
| + | while (...) {...} | ||
| + | |||
| + | // BUT: | ||
| + | do {...} while (...); | ||
| + | |||
| + | // function statement: | ||
| + | function (arg) { /*do this*/ } // NO semicolon after } | ||
| + | |||
| + | // Exception: | ||
| + | for (var i=0; i < 10; i++) {/ | ||
| + | for (var i=0; i < 10; i++;) {/ | ||
| </ | </ | ||
| Line 16: | Line 93: | ||
| =====Variables===== | =====Variables===== | ||
| < | < | ||
| + | // L03S01 - Simple variables & good/bad variable names | ||
| + | // | ||
| + | var name = ' | ||
| + | var i = 0; // Simple integer variable | ||
| + | var answer = true; // Simple boolean variable | ||
| + | // Naming | ||
| + | var c = " | ||
| + | var case = ' | ||
| + | var lastEntryInTheListWithRelatedRecords = true; // a bit long? | ||
| + | // personCount | ||
| + | // personList | ||
| + | // personObj | ||
| + | // personGr | ||
| </ | </ | ||
| ----- | ----- | ||
| =====Simple Arithmetic Operators===== | =====Simple Arithmetic Operators===== | ||
| < | < | ||
| + | // L04S01 - Mathematical operators | ||
| + | // | ||
| + | |||
| + | // Assignment | ||
| + | var a = 12; | ||
| + | var b = 3; | ||
| + | |||
| + | // Addition | ||
| + | gs.info(2 + 2); | ||
| + | gs.info(a + 2); | ||
| + | b = b + 2; | ||
| + | // b += 2; // shorthand for the line above | ||
| + | gs.info(a + b); | ||
| + | |||
| + | // Increment by 1 | ||
| + | a++; | ||
| + | gs.info(a); | ||
| + | |||
| + | // Decrement by 1 | ||
| + | b--; | ||
| + | gs.info(b); | ||
| + | |||
| + | // Multiply | ||
| + | gs.info(a * b); | ||
| + | |||
| + | // Division | ||
| + | gs.info(a / b); | ||
| + | |||
| + | // Modulo - get the remainder of a division | ||
| + | gs.info('' | ||
| + | gs.info(a); | ||
| + | gs.info(b); | ||
| + | gs.info(a % b); | ||
| + | var c = (5 + 4) * 2; | ||
| + | gs.info(c); | ||
| </ | </ | ||
| ----- | ----- | ||
| =====Common Error Messages===== | =====Common Error Messages===== | ||
| < | < | ||
| + | // L05S01 - Common error messages | ||
| + | // | ||
| + | ClearUserLog(); | ||
| + | UserLog(); | ||
| + | gs.info(myUnknownVariable); | ||
| + | ga.info(' | ||
| </ | </ | ||
| ----- | ----- | ||
| =====Introduction to Strings===== | =====Introduction to Strings===== | ||
| < | < | ||
| + | // L06S01 - Strings | ||
| + | // | ||
| + | var firstName = " | ||
| + | var lastName | ||
| + | var myCar = " | ||
| + | // Note the use of + when strings are involved | ||
| + | var name = firstName + ' ' + lastName; | ||
| + | gs.info(name); | ||
| + | gs.info(' | ||
| </ | </ | ||
| ----- | ----- | ||
| =====Special String Characters===== | =====Special String Characters===== | ||
| < | < | ||
| + | // L07S01 - Special characters | ||
| + | // | ||
| + | // \n = new line | ||
| + | // \t = tab | ||
| + | // \\ = backslash | ||
| + | // \' = single quote | ||
| + | // \" = double quote | ||
| + | // | ||
| + | gs.info(' | ||
| + | gs.info(' | ||
| + | gs.info(' | ||
| </ | </ | ||
| ----- | ----- | ||
| =====Data Type Conversions===== | =====Data Type Conversions===== | ||
| < | < | ||
| + | // L08S01 - Changing and detecting variable types | ||
| + | // | ||
| + | var i = 5; | ||
| + | var iStr = i.toString(); | ||
| + | gs.info(typeof i); | ||
| + | gs.info(typeof iStr); | ||
| + | var n = parseInt(iStr); | ||
| + | gs.info(typeof n + ' n=' + n); | ||
| </ | </ | ||
| ----- | ----- | ||
| =====Commenting===== | =====Commenting===== | ||
| < | < | ||
| + | // L09S01 - Commenting | ||
| + | // | ||
| + | |||
| + | // This is a single line comment | ||
| + | |||
| + | /* This is another way to comment */ | ||
| + | |||
| + | /* | ||
| + | This is a multi-line comment. | ||
| + | This code is commented out! | ||
| + | var name = ' | ||
| + | */ | ||
| + | gs.info(' | ||
| </ | </ | ||
| Line 51: | Line 222: | ||
| =====Comparisons===== | =====Comparisons===== | ||
| < | < | ||
| + | // L10S01 - Arithmetic Operators | ||
| + | // | ||
| + | var a = 0; | ||
| + | var b = 1; | ||
| + | gs.info(a < b); | ||
| + | var n = ' | ||
| + | var i = 3; | ||
| + | gs.info(n == i); // REALLY?!! | ||
| + | gs.info(i = 4); // WATCH OUT!!! | ||
| </ | </ | ||
| ----- | ----- | ||
| =====If Statements and Boolean Logic===== | =====If Statements and Boolean Logic===== | ||
| < | < | ||
| + | // S11S01 - If Statements | ||
| + | // | ||
| + | var a = 1; | ||
| + | var b = 3; | ||
| + | var c = 5; | ||
| + | if (a < b) | ||
| + | gs.info(' | ||
| + | // else | ||
| + | if (a < b) | ||
| + | gs.info(' | ||
| + | else | ||
| + | gs.info(' | ||
| + | |||
| + | // Else if and else | ||
| + | if (a < b) | ||
| + | gs.info(' | ||
| + | else if (a > b) | ||
| + | gs.info(' | ||
| + | else if (a == b) | ||
| + | gs.info(' | ||
| + | else | ||
| + | gs.info(' | ||
| + | |||
| + | if (a < b) | ||
| + | if (b < c) | ||
| + | gs.info(' | ||
| + | </ | ||
| + | < | ||
| + | // S11S02 - Boolean logic | ||
| + | // | ||
| + | // AND (&& | ||
| + | // +---------+---------+---------+ | ||
| + | // | | ||
| + | // +---------+---------+---------+ | ||
| + | // | true | ||
| + | // +---------+---------+---------+ | ||
| + | // | false | false | false | | ||
| + | // +---------+---------+---------+ | ||
| + | // | ||
| + | // OR (||) - Either must be true | ||
| + | // +---------+---------+---------+ | ||
| + | // | | ||
| + | // +---------+---------+---------+ | ||
| + | // | true | ||
| + | // +---------+---------+---------+ | ||
| + | // | false | true | ||
| + | // +---------+---------+---------+ | ||
| + | // | ||
| + | // NOT (!) - reverse the logic | ||
| + | // +---------+---------+---------+ | ||
| + | // | | ||
| + | // +---------+---------+---------+ | ||
| + | // | | ||
| + | // +---------+---------+---------+ | ||
| + | // | ||
| + | var a = 1; | ||
| + | var b = 3; | ||
| + | var c = 5; | ||
| + | |||
| + | if (a < b && b < c) | ||
| + | gs.info(' | ||
| + | |||
| + | if (b > a || b > c) | ||
| + | gs.info(' | ||
| + | |||
| + | // Note, indentation can be deceptive!!! | ||
| + | if (a < b) | ||
| + | if (b < c) { | ||
| + | gs.info(' | ||
| + | gs.info(' | ||
| + | } | ||
| + | else | ||
| + | gs.info(' | ||
| + | |||
| + | var valveOpen = true; | ||
| + | if (valveOpen == true) | ||
| + | gs.info(' | ||
| + | |||
| + | if (bool) | ||
| + | gs.info(' | ||
| + | |||
| + | var valveOpen = false; | ||
| + | if (!valveOpen) | ||
| + | gs.info(' | ||
| </ | </ | ||
| ----- | ----- | ||
| =====The Ternary Operator===== | =====The Ternary Operator===== | ||
| < | < | ||
| + | // L12S01 - The ternary operator | ||
| + | // | ||
| + | // Could have written... | ||
| + | var valveOpen = true; | ||
| + | var openStatusString; | ||
| + | if (valveOpen) | ||
| + | openStatusString = ' | ||
| + | else | ||
| + | openStatusString = ' | ||
| + | gs.info(' | ||
| + | // Introducing a shortcut way... | ||
| + | var openStatusString = (valveOpen) ? ' | ||
| + | gs.info(' | ||
| </ | </ | ||
| ----- | ----- | ||
| =====The Switch Statement===== | =====The Switch Statement===== | ||
| < | < | ||
| + | // L13S01 - Multiple cases | ||
| + | // | ||
| + | // Using if/else if/else if... | ||
| + | var level = 5; | ||
| + | var message = ''; | ||
| + | if (level == 0) | ||
| + | message = ' | ||
| + | else if (level == 1 || level == 2) | ||
| + | message = ' | ||
| + | else if (level == 3) | ||
| + | message = ' | ||
| + | else if (level == 4) | ||
| + | message = ' | ||
| + | else if (level == 5) | ||
| + | message = ' | ||
| + | else | ||
| + | message = ' | ||
| + | gs.info(' | ||
| + | </ | ||
| + | < | ||
| + | // L13S02 - Multiple cases | ||
| + | // | ||
| + | // Using the switch statement | ||
| + | var level = 5; | ||
| + | var message = ''; | ||
| + | switch (level) { | ||
| + | case 0: | ||
| + | message = ' | ||
| + | break; | ||
| + | |||
| + | case 1: | ||
| + | case 2: | ||
| + | message = ' | ||
| + | break; | ||
| + | |||
| + | case 3: // Warning - what's wrong with case 3? | ||
| + | message = ' | ||
| + | case 4: | ||
| + | message = ' | ||
| + | break; | ||
| + | |||
| + | case 5: | ||
| + | message = ' | ||
| + | break; | ||
| + | default: | ||
| + | message = ' | ||
| + | } | ||
| + | gs.info(' | ||
| </ | </ | ||
| ----- | ----- | ||
| =====Truthy Falsy===== | =====Truthy Falsy===== | ||
| < | < | ||
| + | // L14S01 - Truthy and Falsy | ||
| + | // | ||
| + | // Simple case of true and false | ||
| + | // | ||
| + | var boolTrue = true; | ||
| + | var boolFalse = false; | ||
| + | gs.info(' | ||
| + | </ | ||
| + | < | ||
| + | // L14S02 - Truthy and Falsy | ||
| + | // | ||
| + | |||
| + | // What about numbers | ||
| + | // | ||
| + | var num = 0; // <== try with different numbers | ||
| + | gs.info(num + ' is ' + ((num) ? ' | ||
| + | |||
| + | </ | ||
| + | < | ||
| + | // L14S03 - Truthy and Falsy | ||
| + | // | ||
| + | |||
| + | // Take a look at strings | ||
| + | // | ||
| + | var string1; | ||
| + | var string2 = null; | ||
| + | var string3 = ' | ||
| + | gs.info(' | ||
| + | gs.info(' | ||
| + | gs.info(' | ||
| </ | </ | ||
| ----- | ----- | ||
| =====While Loop===== | =====While Loop===== | ||
| < | < | ||
| + | // L15S01 - Simple while loop | ||
| + | // | ||
| + | var i = 0; | ||
| + | while (i < 5) { | ||
| + | gs.info(i); | ||
| + | i++; | ||
| + | } | ||
| + | gs.info(' | ||
| + | </ | ||
| + | < | ||
| + | // L15S02 - breaking out of a while loop | ||
| + | // | ||
| + | var i = 0; | ||
| + | while (true) { | ||
| + | if (i == 5) | ||
| + | break; | ||
| + | gs.info(i); | ||
| + | ++i; | ||
| + | } | ||
| + | gs.info(' | ||
| + | </ | ||
| + | < | ||
| + | // L15S03 - Continue - jumping back to the while condition | ||
| + | // | ||
| + | var i = 0; | ||
| + | var done = false; | ||
| + | while (!done) { | ||
| + | if (i < 5) { | ||
| + | ++i; | ||
| + | gs.info(i + ' done=' + done); | ||
| + | continue; | ||
| + | } | ||
| + | gs.info(' | ||
| + | done = true; | ||
| + | } | ||
| + | gs.info(i); | ||
| </ | </ | ||
| ----- | ----- | ||
| =====For Loop===== | =====For Loop===== | ||
| < | < | ||
| + | // L16S01 - For loop | ||
| + | // | ||
| + | // Note: break and continue work here too! | ||
| + | for (var i = 0; i < 5; i++) { | ||
| + | gs.info(i); | ||
| + | } | ||
| + | gs.info(' | ||
| </ | </ | ||
| ----- | ----- | ||
| =====Do While Loop===== | =====Do While Loop===== | ||
| < | < | ||
| + | // L17S01 - do-while | ||
| + | // | ||
| + | var i = 0; | ||
| + | gs.info(' | ||
| + | do { | ||
| + | gs.info(' | ||
| + | ++i; | ||
| + | } while (i < 5); | ||
| + | gs.info(' | ||
| </ | </ | ||
| ----- | ----- | ||
| =====Nested Loops===== | =====Nested Loops===== | ||
| < | < | ||
| + | // L18S01 - Nested loops | ||
| + | // | ||
| + | for (var i = 0; i < 5; i++) { | ||
| + | for (var j = 0; j < 3; j++) { | ||
| + | gs.info(' | ||
| + | } | ||
| + | } | ||
| + | gs.info(' | ||
| </ | </ | ||
| ----- | ----- | ||
| =====Functions===== | =====Functions===== | ||
| < | < | ||
| + | // L19S01 - Functions | ||
| + | // | ||
| + | function sayHello() { | ||
| + | gs.info(' | ||
| + | } | ||
| + | sayHello(); | ||
| + | </ | ||
| + | < | ||
| + | // L19S02 - Function with a parameter | ||
| + | // | ||
| + | function toCelsius(fahrenheit) { | ||
| + | |||
| + | var c = (5 / 9) * (fahrenheit - 32); | ||
| + | |||
| + | gs.info(c); | ||
| + | } | ||
| + | toCelsius(32); | ||
| + | toCelsius(100); | ||
| + | </ | ||
| + | < | ||
| + | // L19S03 - Function with a return value | ||
| + | // | ||
| + | function toCelsius(fahrenheit) { | ||
| + | |||
| + | return (5 / 9) * (fahrenheit - 32); | ||
| + | |||
| + | } | ||
| + | var c = toCelsius(32); | ||
| + | gs.info(c); | ||
| + | c = toCelsius(212); | ||
| + | gs.info(c); | ||
| + | </ | ||
| + | < | ||
| + | // L19S04 - Local variables scope | ||
| + | // | ||
| + | function toCelsius(fahrenheit) { | ||
| + | |||
| + | // c is only known in the function toCelsius() | ||
| + | var c = (5 / 9) * (fahrenheit - 32); | ||
| + | |||
| + | return c; | ||
| + | } | ||
| + | gs.info(c); // What happened? | ||
| + | |||
| + | </ | ||
| + | < | ||
| + | // L19S05 - Global variables and local | ||
| + | // | ||
| + | var convertTo = ' | ||
| + | |||
| + | function toCelsius(f) { | ||
| + | |||
| + | var c = (5 / 9) * (f - 32); | ||
| + | | ||
| + | return c; | ||
| + | } | ||
| + | |||
| + | function toFahrenheit(c) { | ||
| + | |||
| + | var f = c * 9 / 5 + 32; | ||
| + | | ||
| + | return f; | ||
| + | } | ||
| + | |||
| + | function convertTemp(temp) { | ||
| + | |||
| + | // use the global variable to determine conversion | ||
| + | if (convertTo == ' | ||
| + | return toCelsius(temp); | ||
| + | } else { | ||
| + | return toFahrenheit(temp); | ||
| + | } | ||
| + | } | ||
| + | |||
| + | gs.info(convertTemp(100)); | ||
| + | </ | ||
| + | < | ||
| + | // L19S06 - Self running function | ||
| + | // | ||
| + | |||
| + | // This code is outside the function | ||
| + | var i = 20; | ||
| + | |||
| + | (function() { | ||
| + | |||
| + | // Local variable | ||
| + | i = 10; // uh-oh, forgot the var! | ||
| + | |||
| + | gs.info(' | ||
| + | | ||
| + | }()); | ||
| + | |||
| + | i = 3; | ||
| + | gs.info(' | ||
| </ | </ | ||
| ----- | ----- | ||
| =====Try Catch Finally Statements===== | =====Try Catch Finally Statements===== | ||
| < | < | ||
| + | // L20S01 - bad script w/o try/catch | ||
| + | // | ||
| + | |||
| + | for (var i = 0; i < 5; i++) { | ||
| + | gs.info(' | ||
| + | } | ||
| + | gs.info(' | ||
| + | </ | ||
| + | < | ||
| + | // L20S02 - Trapping that error | ||
| + | // | ||
| + | try { | ||
| + | for (var i = 0; i < 5; i++) { | ||
| + | gs.info(' | ||
| + | } | ||
| + | } catch (e) { | ||
| + | gs.error(' | ||
| + | } | ||
| + | gs.info(' | ||
| + | </ | ||
| + | < | ||
| + | // L20S03 - And finally… | ||
| + | // | ||
| + | try { | ||
| + | for (var i = 0; i < 5; i++) { | ||
| + | gs.info(' | ||
| + | } | ||
| + | } catch (e) { | ||
| + | gs.error(' | ||
| + | } finally { | ||
| + | gs.info(' | ||
| + | } | ||
| </ | </ | ||
| Line 106: | Line 643: | ||
| =====SNOW Glide Record===== | =====SNOW Glide Record===== | ||
| < | < | ||
| + | // L21S01 - Simple Database query | ||
| + | // | ||
| + | |||
| + | // Get and display numbers on all incidents | ||
| + | var incGr = new GlideRecord(' | ||
| + | incGr.query(); | ||
| + | |||
| + | while (incGr.next()) { | ||
| + | gs.info(incGr.getValue(' | ||
| + | } | ||
| </ | </ | ||
| - | ----- | ||
| - | =====Getting===== | ||
| < | < | ||
| + | // L21S02 - Get and display numbers on all incidents v2 | ||
| + | // | ||
| + | var incGr = new GlideRecord(' | ||
| + | incGr.addQuery(' | ||
| + | incGr.orderBy(' | ||
| + | incGr.setLimit(5); | ||
| + | incGr.query(); | ||
| + | |||
| + | while (incGr.next()) { | ||
| + | gs.info(incGr.getValue(' | ||
| + | } | ||
| + | </ | ||
| + | < | ||
| + | // L21S03 - What is ' | ||
| + | // | ||
| + | var incGr = new GlideRecord(' | ||
| + | incGr.setLimit(1); | ||
| + | incGr.query(); | ||
| + | |||
| + | if (incGr.next()) { | ||
| + | var dotNumber = incGr.number; | ||
| + | var gvNumber | ||
| + | gs.info(' | ||
| + | } | ||
| + | |||
| + | // Why should I care? I'll show you when we get to arrays... | ||
| + | |||
| + | </ | ||
| + | < | ||
| + | // L21S04 - getting a single record quickly | ||
| + | // Just need one record? Use .get(SYSID) or .get(' | ||
| + | // | ||
| + | var incGr = new GlideRecord(' | ||
| + | |||
| + | if (incGr.get(' | ||
| + | gs.info(incGr.getValue(' | ||
| + | } | ||
| + | |||
| + | // or... | ||
| + | var incGr = new GlideRecord(' | ||
| + | if (incGr.get(' | ||
| + | gs.info(incGr.getValue(' | ||
| + | } | ||
| </ | </ | ||
| ----- | ----- | ||
| - | =====Introduction | + | =====Introduction |
| < | < | ||
| + | // L22S01 - Arrays | ||
| + | // | ||
| + | // Make a simple array | ||
| + | // | ||
| + | // Optional declaration, | ||
| + | // var list = Array(); | ||
| + | var list = []; | ||
| + | list[0] = 1; | ||
| + | list[1] = 3; | ||
| + | list[2] = 5; | ||
| + | gs.info(' | ||
| + | </ | ||
| + | < | ||
| + | // L22S02 - Shorter way | ||
| + | // | ||
| + | var list = [1, 3, 5]; | ||
| + | gs.info(' | ||
| + | </ | ||
| + | < | ||
| + | // L22S03 - Loops and arrays | ||
| + | // | ||
| + | var list = [1, 3, 5]; | ||
| + | for (var i = 0; i < list.length; | ||
| + | gs.info(' | ||
| + | } | ||
| + | |||
| + | // Slightly better | ||
| + | var list = [1, 3, 5]; | ||
| + | var len = list.length; | ||
| + | for (var i = 0; i < len; i++) { | ||
| + | gs.info(' | ||
| + | } | ||
| </ | </ | ||
| ----- | ----- | ||
| =====Array For Each===== | =====Array For Each===== | ||
| < | < | ||
| + | // L23S01 forEach with external function | ||
| + | // | ||
| + | var list = [1, 3, 5]; | ||
| + | |||
| + | list.forEach(myFunction); | ||
| + | |||
| + | function myFunction(item) { | ||
| + | gs.info(' | ||
| + | } | ||
| + | |||
| + | </ | ||
| + | < | ||
| + | // L23S02 embedded forEach | ||
| + | // | ||
| + | var list = [1, 3, 5]; | ||
| + | |||
| + | list.forEach(function (item) { | ||
| + | gs.info(' | ||
| + | }); | ||
| + | |||
| + | </ | ||
| + | < | ||
| + | // L23S03 - What else can you get.. | ||
| + | // | ||
| + | var list = [' | ||
| + | |||
| + | list.forEach(function (item, index, arr) { | ||
| + | gs.info(' | ||
| + | }); | ||
| </ | </ | ||
| Line 126: | Line 775: | ||
| =====Common Array Methods===== | =====Common Array Methods===== | ||
| < | < | ||
| + | // L24S01 - Common array methods/ | ||
| + | // | ||
| + | var list = [' | ||
| + | gs.info(' | ||
| + | </ | ||
| + | < | ||
| + | // L24S02 - join(string) | ||
| + | // | ||
| + | var list = [' | ||
| + | gs.info(' | ||
| + | |||
| + | // push(value1, | ||
| + | list.push(' | ||
| + | list.push(' | ||
| + | gs.info(' | ||
| + | |||
| + | // pop() | ||
| + | list.pop(); | ||
| + | gs.info(' | ||
| + | </ | ||
| + | < | ||
| + | // L24S03 - shift() | ||
| + | // | ||
| + | var list = [' | ||
| + | gs.info(' | ||
| + | list.shift(); | ||
| + | gs.info(' | ||
| + | gs.info(' | ||
| + | |||
| + | </ | ||
| + | < | ||
| + | // L24S04 - unshift | ||
| + | // | ||
| + | var list = [' | ||
| + | var newLength = list.unshift(' | ||
| + | gs.info(' | ||
| + | </ | ||
| + | < | ||
| + | // L24S05 - splice(position, | ||
| + | // | ||
| + | var names = [" | ||
| + | gs.info(names.join(', | ||
| + | names.splice(2, | ||
| + | gs.info(names.join(', | ||
| + | </ | ||
| + | < | ||
| + | // L24S06 - slice(start, | ||
| + | // | ||
| + | var names = [" | ||
| + | gs.info(names.join(', | ||
| + | var subNames = names.slice(1, | ||
| + | gs.info(subNames.join(', | ||
| + | |||
| + | </ | ||
| + | < | ||
| + | // L24S08 - Reverse the elements of an array | ||
| + | // | ||
| + | var names = [" | ||
| + | names.reverse(); | ||
| + | gs.info(names.join(', | ||
| + | </ | ||
| + | < | ||
| + | // L24S09 - Getting the value | ||
| + | // | ||
| + | var list = []; | ||
| + | var incGr = new GlideRecord(' | ||
| + | incGr.addQuery(' | ||
| + | incGr.query(); | ||
| + | |||
| + | while (incGr.next()) { | ||
| + | list.push(incGr.getValue(' | ||
| + | } | ||
| + | |||
| + | gs.info(' | ||
| </ | </ | ||
| ----- | ----- | ||
| =====SNOW Array Utility===== | =====SNOW Array Utility===== | ||
| < | < | ||
| + | // L25S01 - ArrayUtil | ||
| + | // | ||
| + | var au = new ArrayUtil(); | ||
| + | var names = [ | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | ]; | ||
| + | var newNames = au.unique(names); | ||
| + | gs.info(newNames.join(', | ||
| </ | </ | ||
| ----- | ----- | ||
| =====Introduction To Objects===== | =====Introduction To Objects===== | ||
| < | < | ||
| + | // L26S01 - Simple Objects | ||
| + | // | ||
| + | var box = {}; | ||
| + | box.height | ||
| + | box.width | ||
| + | box.length | ||
| + | box.material = " | ||
| + | box.open | ||
| + | gs.info(box.material); | ||
| + | </ | ||
| + | < | ||
| + | // L26S02 - Bracket notation… | ||
| + | // | ||
| + | var vehicle = {}; | ||
| + | vehicle[' | ||
| + | vehicle[' | ||
| + | vehicle[' | ||
| + | gs.info(vehicle[' | ||
| + | |||
| + | </ | ||
| + | < | ||
| + | // L26S03 - Shortcut - note the double quotes | ||
| + | // | ||
| + | var vehicle = { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | }; | ||
| + | gs.info(vehicle[' | ||
| </ | </ | ||
| Line 141: | Line 907: | ||
| =====Checking If Object Has Property===== | =====Checking If Object Has Property===== | ||
| < | < | ||
| + | // L27S01 - hasOwnProperty | ||
| + | // | ||
| + | var vehicle = { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | }; | ||
| + | gs.info(vehicle.hasOwnProperty(" | ||
| + | gs.info(vehicle.hasOwnProperty(" | ||
| </ | </ | ||
| ----- | ----- | ||
| =====Finding All Properties in Object===== | =====Finding All Properties in Object===== | ||
| < | < | ||
| + | // L28S01 - Get object keys | ||
| + | // | ||
| + | var vehicle = { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | }; | ||
| + | for (var key in vehicle) { | ||
| + | gs.info(' | ||
| + | } | ||
| </ | </ | ||
| ----- | ----- | ||
| =====Array of Objects===== | =====Array of Objects===== | ||
| < | < | ||
| + | // L29S01 - Array of Objects | ||
| + | // | ||
| + | var bookList = [ | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | }, | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | }, | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | ]; | ||
| + | var len = bookList.length; | ||
| + | gs.info(' | ||
| + | for (var i = 0; i < len; i++) { | ||
| + | var book = bookList[i]; | ||
| + | gs.info(i + ' - Title: ' + book.title + ' - Author: ' + book.author); | ||
| + | } | ||
| </ | </ | ||
| ----- | ----- | ||
| =====JSON Stringify and Parse===== | =====JSON Stringify and Parse===== | ||
| < | < | ||
| + | // L30S01 - Stringify and Parse | ||
| + | // | ||
| + | var bookList = [ | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | }, | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | }, | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | ]; | ||
| + | gs.info(bookList); | ||
| + | var bookListStr = JSON.stringify(bookList); | ||
| + | gs.info(bookListStr); | ||
| + | |||
| + | var bookListStrFormat = JSON.stringify(bookList, | ||
| + | gs.info(bookListStrFormat); | ||
| + | </ | ||
| + | < | ||
| + | // L30S02 - Parse example | ||
| + | // | ||
| + | var libraryStr = ' | ||
| + | gs.info(' | ||
| + | var libraryObj = JSON.parse(libraryStr); | ||
| + | gs.info(' | ||
| + | gs.info(JSON.stringify(libraryObj, | ||
| </ | </ | ||
| ----- | ----- | ||
| =====More String Methods===== | =====More String Methods===== | ||
| < | < | ||
| + | // L31S01 More string stuff | ||
| + | // Find the position of a character or substring | ||
| + | // | ||
| + | var subject = ' | ||
| + | var pos = subject.indexOf(' | ||
| + | gs.info(pos); | ||
| + | </ | ||
| + | < | ||
| + | // L31S02 - Use the position of a character/ | ||
| + | // | ||
| + | var short_description = ' | ||
| + | if (short_description.indexOf(' | ||
| + | gs.info(" | ||
| + | } | ||
| + | </ | ||
| + | < | ||
| + | // L31S03 - Get a substring | ||
| + | // | ||
| + | var str = ' | ||
| + | var pos = str.indexOf(' | ||
| + | var ritmNumber = str.substring(pos, | ||
| + | gs.info(ritmNumber); | ||
| + | </ | ||
| + | < | ||
| + | // L31S04 - Case matters with strings | ||
| + | // | ||
| + | var firstName = ' | ||
| + | var loginName = ' | ||
| + | if (loginName == firstName) { | ||
| + | gs.info(' | ||
| + | } else { | ||
| + | gs.info(' | ||
| + | } | ||
| + | </ | ||
| + | < | ||
| + | // L31S05 - Using toUpper or toLower for better matching | ||
| + | // | ||
| + | var firstName = ' | ||
| + | var loginName = ' | ||
| + | gs.info(' | ||
| + | if (loginName.toUpperCase() == firstName.toUpperCase()) { | ||
| + | gs.info(' | ||
| + | } else { | ||
| + | gs.info(' | ||
| + | } | ||
| </ | </ | ||
| ----- | ----- | ||
| =====Recursion===== | =====Recursion===== | ||
| < | < | ||
| + | // L32S01 - Recursion | ||
| + | // | ||
| + | function factorial(x) { | ||
| + | // TERMINATION | ||
| + | if (x < 0) | ||
| + | return; | ||
| + | |||
| + | // BASE | ||
| + | if (x === 0) | ||
| + | return 1; | ||
| + | |||
| + | // RECURSION | ||
| + | return x * factorial(x - 1); | ||
| + | } | ||
| + | gs.info(factorial(3)); | ||
| </ | </ | ||
| ----- | ----- | ||
| =====Classes===== | =====Classes===== | ||
| < | < | ||
| + | // L33S01 - Classes, Objects, and Prototypes | ||
| + | // | ||
| + | var person = Class.create(); | ||
| + | person.prototype = { | ||
| + | initialize: function() { | ||
| + | this.firstName = ''; | ||
| + | this.lastName | ||
| + | }, | ||
| + | |||
| + | setFirstName : function(str) { | ||
| + | this.firstName = str; | ||
| + | }, | ||
| + | |||
| + | setLastName : function(str) { | ||
| + | this.lastName = str; | ||
| + | }, | ||
| + | |||
| + | getDisplayName : function() { | ||
| + | return this.firstName + ' ' + this.lastName; | ||
| + | }, | ||
| + | |||
| + | type: person | ||
| + | }; | ||
| + | |||
| + | var me = new person(); | ||
| + | me.setFirstName(' | ||
| + | me.setLastName(' | ||
| + | gs.info(' | ||
| + | var name = me.getDisplayName(); | ||
| + | gs.info(name); | ||
| + | </ | ||
| + | < | ||
| + | // | ||
| + | // L33S02 - Initialize values | ||
| + | // | ||
| + | var person = Class.create(); | ||
| + | person.prototype = { | ||
| + | initialize: function(str1, | ||
| + | this.firstName = str1; | ||
| + | this.lastName | ||
| + | }, | ||
| + | |||
| + | setFirstName : function(str) { | ||
| + | this.firstName = str; | ||
| + | }, | ||
| + | |||
| + | setLastName : function(str) { | ||
| + | this.lastName = str; | ||
| + | }, | ||
| + | |||
| + | getDisplayName : function() { | ||
| + | return this.firstName + ' ' + this.lastName; | ||
| + | }, | ||
| + | |||
| + | type: ' | ||
| + | }; | ||
| + | |||
| + | var me = new person(' | ||
| + | var name = me.getDisplayName(); | ||
| + | gs.info(name); | ||
| + | me.setFirstName(' | ||
| + | me.setLastName(' | ||
| + | gs.info(me.getDisplayName()); | ||
| </ | </ | ||
| ----- | ----- | ||
| =====Passing Objects to Functions===== | =====Passing Objects to Functions===== | ||
| < | < | ||
| + | // L34S01 - Passing objects to functions | ||
| + | // | ||
| + | var item = Class.create(); | ||
| + | item.prototype = { | ||
| + | initialize: function() { | ||
| + | }, | ||
| + | debugObject : function(obj) { | ||
| + | |||
| + | gs.info(' | ||
| + | }, | ||
| + | |||
| + | type: ' | ||
| + | }; | ||
| + | |||
| + | var myObj = { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | }; | ||
| + | var myItem = new item(); | ||
| + | myItem.debugObject(myObj); | ||
| </ | </ | ||
| ----- | ----- | ||
| =====Class Inheritence===== | =====Class Inheritence===== | ||
| < | < | ||
| + | // L35S01 - Inheritance | ||
| + | // | ||
| + | var vehicle = Class.create(); | ||
| + | vehicle.prototype = { | ||
| + | initialize: function(year, | ||
| + | this.make = make; | ||
| + | this.model = model; | ||
| + | this.year = year; | ||
| + | }, | ||
| + | register : function() { | ||
| + | gs.info(this.getDisplayName() + ' registered!' | ||
| + | }, | ||
| + | |||
| + | info : function() { | ||
| + | gs.info(' | ||
| + | }, | ||
| + | |||
| + | getDisplayName : function() { | ||
| + | |||
| + | return this.year + ' ' + this.make + ' ' + this.model; | ||
| + | |||
| + | }, | ||
| + | |||
| + | type: ' | ||
| + | }; | ||
| + | |||
| + | var car = Class.create(); | ||
| + | car.prototype = Object.extendsObject(vehicle, | ||
| + | |||
| + | findDealer : function() { | ||
| + | gs.info(' | ||
| + | }, | ||
| + | |||
| + | info : function() { | ||
| + | gs.info(' | ||
| + | }, | ||
| + | |||
| + | type: ' | ||
| + | }); | ||
| + | |||
| + | var v1 = new vehicle(' | ||
| + | v1.register(); | ||
| + | v1.info(); | ||
| + | |||
| + | var v2 = new car(' | ||
| + | v2.register(); | ||
| + | v2.findDealer(); | ||
| + | v2.info(); | ||
| </ | </ | ||
| ----- | ----- | ||
| =====Scripted REST API===== | =====Scripted REST API===== | ||
| < | < | ||
| + | // L36S01 - Simple scripted REST API (GET) resource | ||
| + | // | ||
| + | (function process(/ | ||
| + | |||
| + | return " | ||
| + | | ||
| + | })(request, response); | ||
| + | </ | ||
| + | < | ||
| + | // L36S02 - Scripted REST API with query parameters | ||
| + | // | ||
| + | (function process(/ | ||
| + | |||
| + | // Example Query parameters | ||
| + | // https://< | ||
| + | var queryParams | ||
| + | var isActiveQuery = queryParams.active; | ||
| + | var nameQueryVal | ||
| + | |||
| + | var answer = " | ||
| + | |||
| + | return answer; | ||
| + | | ||
| + | })(request, response); | ||
| + | </ | ||
| + | < | ||
| + | // L36S03 - Scripted REST API with path parameters | ||
| + | // | ||
| + | (function process(/ | ||
| + | |||
| + | // Example path parameters | ||
| + | // https:// | ||
| + | // https:// | ||
| + | var pathParams = request.pathParams; | ||
| + | var tableName | ||
| + | var id = pathParams.id; | ||
| + | |||
| + | var answer = " | ||
| + | |||
| + | return answer; | ||
| + | | ||
| + | })(request, response); | ||
| + | </ | ||
| + | < | ||
| + | // L36S04 - Scripted REST API (POST) with request body payload | ||
| + | // | ||
| + | (function process(/ | ||
| + | |||
| + | var name = request.body.data.name; | ||
| + | var id = request.body.data.id; | ||
| + | var color = request.body.data.color; | ||
| + | | ||
| + | var answer = " | ||
| + | |||
| + | return answer; | ||
| + | | ||
| + | })(request, response); | ||
| + | </ | ||
| + | < | ||
| + | // L36S05 - Scripted REST API with POST and response | ||
| + | // | ||
| + | (function process(/ | ||
| + | |||
| + | var name = request.body.data.name; | ||
| + | var id = request.body.data.id; | ||
| + | var color = request.body.data.color; | ||
| + | | ||
| + | // Do some processing here | ||
| + | | ||
| + | var answer = {}; | ||
| + | answer.status = " | ||
| + | answer.author = " | ||
| + | answer.item = {" | ||
| + | answer.active = true; | ||
| + | response.setBody(answer); | ||
| + | return response; | ||
| + | | ||
| + | })(request, response); | ||
| </ | </ | ||
| ----- | ----- | ||
start.1708366417.txt.gz · Last modified: by johnsonjohn
