├── .gitignore ├── README.md ├── adv-finished ├── .gitignore ├── Gruntfile.js ├── README.md ├── oraclejetconfig.json ├── package.json ├── scripts │ ├── config │ │ ├── oraclejet-build.js │ │ └── oraclejet-serve.js │ └── grunt │ │ └── config │ │ ├── oraclejet-build.js │ │ └── oraclejet-serve.js └── src │ ├── css │ ├── app.css │ ├── demo-alta-site-min.css │ ├── fonts │ │ └── App_iconfont.woff │ ├── images │ │ ├── avatar_24px.png │ │ ├── avatar_24px_2x.png │ │ ├── avg-rate-icon.png │ │ ├── dashboardpeople.png │ │ ├── email_icon_16@2x.png │ │ ├── email_icon_small.png │ │ ├── facetime_24_wht.png │ │ ├── favicon.ico │ │ ├── func_email_16@2x.png │ │ ├── func_email_18@2x.png │ │ ├── func_facebook_16@2x.png │ │ ├── func_linkedin_16_2x.png │ │ ├── func_list-view_16_act.png │ │ ├── func_list-view_16_dis.png │ │ ├── func_list-view_16_ena.png │ │ ├── func_list-view_16_hov.png │ │ ├── func_matrix_16_act.png │ │ ├── func_matrix_16_dis.png │ │ ├── func_matrix_16_ena.png │ │ ├── func_matrix_16_hov.png │ │ ├── func_mobilePhone_16@2x.png │ │ ├── func_pagefilter_16_act.png │ │ ├── func_pagefilter_16_ena.png │ │ ├── func_pagefilter_16_hov.png │ │ ├── func_phone_16@2x.png │ │ ├── func_twitter_16@2x.png │ │ ├── func_worldglobe_16_act.png │ │ ├── func_worldglobe_16_dis.png │ │ ├── func_worldglobe_16_ena.png │ │ ├── func_worldglobe_16_hov.png │ │ ├── myteam_watermark.png │ │ ├── myteam_watermark@2x.png │ │ ├── navi_phone_comp_32_ena.png │ │ ├── navi_phone_comp_32_hov.png │ │ ├── navi_phone_comp_32_sel.png │ │ ├── navi_phone_perf_32_ena.png │ │ ├── navi_phone_perf_32_hov.png │ │ ├── navi_phone_perf_32_sel.png │ │ ├── navi_phone_summary_32_ena.png │ │ ├── navi_phone_summary_32_hov.png │ │ ├── navi_phone_summary_32_sel.png │ │ ├── navi_phone_team_32_ena.png │ │ ├── navi_phone_team_32_hov.png │ │ ├── navi_phone_team_32_sel.png │ │ ├── oracle_logo.svg │ │ ├── org_icon_16@2x.png │ │ ├── org_icon_small.png │ │ ├── people │ │ │ ├── 100.png │ │ │ ├── 101.png │ │ │ ├── 102.png │ │ │ ├── 103.png │ │ │ ├── 104.png │ │ │ ├── 105.png │ │ │ ├── 106.png │ │ │ ├── 107.png │ │ │ ├── 108.png │ │ │ ├── 109.png │ │ │ ├── 110.png │ │ │ ├── 111.png │ │ │ ├── 112.png │ │ │ ├── 113.png │ │ │ ├── 114.png │ │ │ ├── 115.png │ │ │ ├── 116.png │ │ │ ├── 117.png │ │ │ ├── 118.png │ │ │ ├── 119.png │ │ │ ├── 120.png │ │ │ ├── 121.png │ │ │ ├── 122.png │ │ │ ├── 123.png │ │ │ ├── 124.png │ │ │ ├── 125.png │ │ │ ├── 126.png │ │ │ ├── 127.png │ │ │ ├── 128.png │ │ │ ├── 129.png │ │ │ ├── 130.png │ │ │ ├── 131.png │ │ │ ├── 132.png │ │ │ ├── 133.png │ │ │ ├── 134.png │ │ │ ├── 135.png │ │ │ ├── 136.png │ │ │ ├── 137.png │ │ │ ├── 138.png │ │ │ ├── 139.png │ │ │ ├── 140.png │ │ │ ├── 141.png │ │ │ ├── 142.png │ │ │ ├── 143.png │ │ │ ├── 144.png │ │ │ ├── 145.png │ │ │ ├── 146.png │ │ │ ├── 147.png │ │ │ ├── 148.png │ │ │ ├── 149.png │ │ │ ├── 150.png │ │ │ ├── 151.png │ │ │ ├── 152.png │ │ │ ├── 153.png │ │ │ ├── 154.png │ │ │ ├── 155.png │ │ │ ├── 156.png │ │ │ ├── 157.png │ │ │ ├── 158.png │ │ │ ├── 159.png │ │ │ ├── 160.png │ │ │ ├── 161.png │ │ │ ├── 162.png │ │ │ ├── 163.png │ │ │ ├── 164.png │ │ │ ├── 165.png │ │ │ ├── 166.png │ │ │ ├── 167.png │ │ │ ├── 168.png │ │ │ ├── 169.png │ │ │ ├── 170.png │ │ │ ├── 171.png │ │ │ ├── 172.png │ │ │ ├── 173.png │ │ │ ├── 174.png │ │ │ ├── 175.png │ │ │ ├── 176.png │ │ │ ├── 177.png │ │ │ ├── 178.png │ │ │ ├── 179.png │ │ │ ├── 180.png │ │ │ ├── 181.png │ │ │ ├── 182.png │ │ │ ├── 183.png │ │ │ ├── 184.png │ │ │ ├── 185.png │ │ │ ├── 186.png │ │ │ ├── 187.png │ │ │ └── nopic.png │ │ ├── qual_appointments_48_full.png │ │ ├── qual_approved_32_full.png │ │ ├── qual_averageratings_94_full.png │ │ ├── qual_info_32_full.png │ │ ├── qual_mygroup_70.png │ │ ├── qual_myorg_70.png │ │ ├── qual_reject_32_full.png │ │ └── qual_tasks_48_full.png │ └── override.css │ ├── index.html │ └── js │ ├── appController.js │ ├── data │ ├── all.json │ ├── data.js │ ├── employee100.json │ ├── employee101.json │ ├── employee102.json │ ├── employee103.json │ ├── employee104.json │ ├── employee105.json │ ├── employee106.json │ ├── employee107.json │ ├── employee108.json │ ├── employee109.json │ ├── employee110.json │ ├── employee111.json │ ├── employee112.json │ ├── employee113.json │ ├── employee114.json │ ├── employee115.json │ ├── employee116.json │ ├── employee117.json │ ├── employee118.json │ ├── employee119.json │ ├── employee120.json │ ├── employee121.json │ ├── employee122.json │ ├── employee123.json │ ├── employee124.json │ ├── employee125.json │ ├── employee126.json │ ├── employee127.json │ ├── employee128.json │ ├── employee129.json │ ├── employee130.json │ ├── employee131.json │ ├── employee132.json │ ├── employee133.json │ ├── employee134.json │ ├── employee135.json │ ├── employee136.json │ ├── employee137.json │ ├── employee138.json │ ├── employee139.json │ ├── employee140.json │ ├── employee141.json │ ├── employee142.json │ ├── employee143.json │ ├── employee144.json │ ├── employee145.json │ ├── employee146.json │ ├── employee147.json │ ├── employee148.json │ ├── employee149.json │ ├── employee150.json │ ├── employee151.json │ ├── employee152.json │ ├── employee153.json │ ├── employee154.json │ ├── employee155.json │ ├── employee156.json │ ├── employee157.json │ ├── employee158.json │ ├── employee159.json │ ├── employee160.json │ ├── employee161.json │ ├── employee162.json │ ├── employee163.json │ ├── employee164.json │ ├── employee165.json │ ├── employee166.json │ ├── employee167.json │ ├── employee168.json │ ├── employee169.json │ ├── employee170.json │ ├── employee171.json │ ├── employee172.json │ ├── employee173.json │ ├── employee174.json │ ├── employee175.json │ ├── employee176.json │ ├── employee177.json │ ├── employee179.json │ ├── employee180.json │ ├── employee182.json │ ├── employee183.json │ ├── employee184.json │ ├── employee185.json │ ├── employee186.json │ ├── employee187.json │ ├── employee188.json │ ├── employee189.json │ ├── employee190.json │ ├── employee191.json │ ├── employee192.json │ ├── employee193.json │ ├── employee194.json │ ├── employee195.json │ ├── employee196.json │ ├── employee197.json │ ├── employee198.json │ ├── employee199.json │ ├── employee200.json │ ├── employee201.json │ ├── employee202.json │ ├── employee203.json │ ├── employee204.json │ ├── employee205.json │ ├── employee206.json │ └── employees.json │ ├── jet-composites │ ├── demo-about-me │ │ ├── README.md │ │ ├── component.json │ │ ├── loader.js │ │ ├── styles.css │ │ ├── view.html │ │ └── viewModel.js │ ├── demo-attrition │ │ ├── README.md │ │ ├── component.json │ │ ├── loader.js │ │ ├── styles.css │ │ ├── view.html │ │ └── viewModel.js │ ├── demo-comp-ratio │ │ ├── README.md │ │ ├── component.json │ │ ├── loader.js │ │ ├── styles.css │ │ ├── view.html │ │ └── viewModel.js │ ├── demo-comp │ │ ├── 5e1e77c1-4f35-4a89-a5db-5da166b0b171.dmp │ │ ├── README.md │ │ ├── component.json │ │ ├── loader.js │ │ ├── styles.css │ │ ├── view.html │ │ └── viewModel.js │ ├── demo-my-activities │ │ ├── README.md │ │ ├── component.json │ │ ├── loader.js │ │ ├── styles.css │ │ ├── view.html │ │ └── viewModel.js │ ├── demo-notifications │ │ ├── README.md │ │ ├── component.json │ │ ├── loader.js │ │ ├── styles.css │ │ ├── view.html │ │ └── viewModel.js │ ├── demo-ratings │ │ ├── README.md │ │ ├── component.json │ │ ├── loader.js │ │ ├── styles.css │ │ ├── view.html │ │ └── viewModel.js │ ├── demo-team-activities │ │ ├── README.md │ │ ├── component.json │ │ ├── loader.js │ │ ├── styles.css │ │ ├── view.html │ │ └── viewModel.js │ └── demo-team │ │ ├── README.md │ │ ├── component.json │ │ ├── loader.js │ │ ├── styles.css │ │ ├── view.html │ │ └── viewModel.js │ ├── libs │ └── socketio-client │ │ └── socket.io.js │ ├── main-release-paths.json │ ├── main.js │ ├── sockethandler.js │ ├── viewModels │ ├── dashboard.js │ ├── employees.js │ ├── profile.js │ └── websockets.js │ └── views │ ├── dashboard.html │ ├── employees.html │ ├── profile.html │ └── websockets.html ├── adv-start ├── README.md └── images │ └── empty.txt ├── beginners-finished ├── .gitignore ├── Gruntfile.js ├── README.md ├── oraclejetconfig.json ├── package.json ├── scripts │ ├── config │ │ ├── oraclejet-build.js │ │ └── oraclejet-serve.js │ └── grunt │ │ └── config │ │ ├── oraclejet-build.js │ │ └── oraclejet-serve.js └── src │ ├── css │ ├── app.css │ ├── demo-alta-site-min.css │ ├── fonts │ │ └── App_iconfont.woff │ └── images │ │ ├── avatar_24px.png │ │ ├── avatar_24px_2x.png │ │ ├── favicon.ico │ │ └── oracle_logo.svg │ ├── index.html │ ├── js │ ├── appController.js │ ├── jet-composites │ │ └── my-chart │ │ │ ├── README.md │ │ │ ├── component.json │ │ │ ├── loader.js │ │ │ ├── styles.css │ │ │ ├── view.html │ │ │ └── viewModel.js │ ├── main-release-paths.json │ ├── main.js │ ├── viewModels │ │ ├── about.js │ │ ├── customers.js │ │ ├── dashboard.js │ │ └── incidents.js │ └── views │ │ ├── about.html │ │ ├── customers.html │ │ ├── dashboard.html │ │ └── incidents.html │ └── tests │ ├── index.html │ └── js │ ├── main.js │ └── test.js ├── beginners-start ├── README.md └── images │ ├── image-1.png │ ├── image-10.png │ ├── image-11.png │ ├── image-12.png │ ├── image-13.png │ ├── image-14.png │ ├── image-15.png │ ├── image-16.png │ ├── image-17.png │ ├── image-18.png │ ├── image-2.png │ ├── image-3.png │ ├── image-4.png │ ├── image-5.png │ ├── image-6.png │ ├── image-7.png │ ├── image-8.png │ └── image-9.png └── troubleshooting.md /.gitignore: -------------------------------------------------------------------------------- 1 | /nbproject 2 | /beginners-start/myHOL2017/nbproject/private/ -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Oracle JET Hands-On-Lab 2017 2 | 3 | This project is a collection of smaller Hands-On-Lab sessions presented at the 2017 Oracle OpenWorld/JavaOne Conference. 4 | 5 | 6 | These sessions will allow someone who is brand new to Oracle JET, to get a good understanding of the basic concepts of working with JET while creating, editing, and publishing a very simple application. If you are already familiar with JET, the advanced session will provide you an existing Dashboard application and give you options for extending it, such as connecting to a REST service to enable CRUD operations on a table, or connecting to a WebSocket service for random updates to your data. 7 | 8 | 9 | ### Prerequisites 10 | * Node 4+ (preferably the [Node LTS release](https://nodejs.org) ) for use of npm as an installer 11 | * If running on a Mac, you will need to include "sudo" in front of all global npm commands shown in the lab 12 | * Git installed and configured properly (this is optional, read the installation step for details) https://git-scm.com/downloads 13 | * If you have an existing version of the preview release of `ojet-cli` installed, please uninstall it before installing this official release. 14 | ``` 15 | npm un -g ojet-cli 16 | npm un -g generator-oraclejet 17 | ``` 18 | 19 | >**NOTE** 20 | NPM v5 has known bugs that will cause the JET CLI tool to fail on installation. Make sure you are on 5.6.x or an earlier version of NPM than 5.x alltogether. 21 | To check your NPM version, type: `npm --version` 22 | 23 | 24 | ### Installation 25 | From a command prompt, type the following command to install Oracle JET Command Line Interface(CLI). 26 | 27 | ``` 28 | npm install -g @oracle/ojet-cli 29 | ``` 30 | 31 | >If you are using a proxy server, you will need to make sure that npm's proxy settings are configured properly before the above command will succeed. 32 | 33 | *** 34 | 35 | ### Where to start 36 | If you are new to Oracle JET, we recommend you start with the [**Beginners Start**](./beginners-start) project. Follow the steps 37 | described in the README file at the above link. 38 | 39 | If you have been working with JET for sometime, and would like to take an existing project to another level. 40 | The [**Advanced Start**](./adv-start) project is the place for you. Clone the HOL Git repository and change to adv-start directory and follow the steps outline in the README. 41 | -------------------------------------------------------------------------------- /adv-finished/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/* 2 | bower_components/* 3 | /web 4 | /themes 5 | 6 | /hybrid/platforms 7 | /hybrid/www/* 8 | 9 | !hybrid/plugins 10 | hybrid/plugins/* 11 | !hybrid/plugins/fetch.json 12 | 13 | .DS_Store 14 | Thumbs.db 15 | /nbproject/* -------------------------------------------------------------------------------- /adv-finished/Gruntfile.js: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright (c) 2015, 2018, Oracle and/or its affiliates. 3 | The Universal Permissive License (UPL), Version 1.0 4 | */ 5 | 'use strict'; 6 | 7 | var path = require('path'); 8 | 9 | module.exports = function(grunt) { 10 | 11 | require('load-grunt-config')(grunt, { 12 | configPath: path.join(process.cwd(), 'scripts/grunt/config') 13 | }); 14 | 15 | grunt.loadNpmTasks("grunt-oraclejet"); 16 | 17 | grunt.registerTask("build", "Public task. Calls oraclejet-build to build the oraclejet application. Can be customized with additional build tasks.", function (buildType) { 18 | grunt.task.run([`oraclejet-build:${buildType}`]); 19 | }); 20 | 21 | grunt.registerTask("serve", "Public task. Calls oraclejet-serve to serve the oraclejet application. Can be customized with additional serve tasks.", function (buildType) { 22 | grunt.task.run([`oraclejet-serve:${buildType}`]); 23 | }); 24 | }; 25 | 26 | -------------------------------------------------------------------------------- /adv-finished/README.md: -------------------------------------------------------------------------------- 1 | # Advanced Hands-On-Lab 2018 2 | 3 | ### Installation 4 | Clone the project and run the following commands from the root of the project folder: 5 | ``` 6 | npm install -g @oracle/ojet-cli /** only needed if you don't already have the JET CLI installed **/ 7 | 8 | npm install 9 | ``` 10 | 11 | ### Running 12 | Use the following command to run the project from the root of the project folder: 13 | ``` 14 | ojet serve 15 | ``` 16 | 17 | ### Editing the project 18 | Make all code edits in the /src folder. 19 | If you make edits to any HTML, CSS, or JavaScript files while the ojet serve command is running, 20 | the change will automatically be pushed to the /web folder and the browser will refresh. 21 | 22 | Adding or removing libraries from the project will require a rebuild. 23 | -------------------------------------------------------------------------------- /adv-finished/oraclejetconfig.json: -------------------------------------------------------------------------------- 1 | {"paths":{"source":{"common":"src","web":"src-web","hybrid":"src-hybrid","javascript":"js","styles":"css","themes":"themes"},"staging":{"web":"web","hybrid":"hybrid","themes":"themes"},"defaultBrowser":"chrome"},"generatorVersion":"4.1.0"} -------------------------------------------------------------------------------- /adv-finished/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "oracle_jet_2018_hol_advanced", 3 | "version": "1.0.0", 4 | "description": "An Oracle JavaScript Extension Toolkit(JET) web app", 5 | "dependencies": { 6 | "@oracle/oraclejet": "^4.1.0" 7 | }, 8 | "devDependencies": { 9 | "grunt": "^1.0.1", 10 | "@oracle/grunt-oraclejet": "^4.1.0", 11 | "load-grunt-config": "0.19.2", 12 | "qunit-reporter-junit": "^1.1.1", 13 | "qunit": "^2.4.1" 14 | }, 15 | "engines": { 16 | "node": ">=5" 17 | }, 18 | "private": true 19 | } 20 | -------------------------------------------------------------------------------- /adv-finished/scripts/config/oraclejet-build.js: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright (c) 2015, 2017, Oracle and/or its affiliates. 3 | The Universal Permissive License (UPL), Version 1.0 4 | */ 5 | 'use strict'; 6 | /** 7 | * # oraclejet-build.js 8 | * This script allows users to configure and customize the grunt build tasks. 9 | * Configurable tasks include: 10 | * copySrcToStaging 11 | * copyCustomLibsToStaging 12 | * injectTheme 13 | * injectPaths 14 | * uglify 15 | * requireJs 16 | * sass 17 | * To configure a task, uncomment the corresponding sections below, and pass in your configurations. 18 | * Any options will be merged with default configuration found in node_modules/@oracle/oraclejet-tooling/lib/defaultconfig.js 19 | * Any fileList options will replace the corresponding option defined by the default configuration in its entirety - ie. arrays are not merged. 20 | */ 21 | 22 | module.exports = function () { 23 | return { 24 | 25 | /** 26 | * # copyCustomLibsToStaging 27 | * This task copies any custom libraries that are not provided by JET to staging directory. 28 | * This task supports a single option: fileList. The fileList option defines an array of file objects. 29 | * Each file object contains the following properties: 30 | * cwd, current working directory 31 | * dest, destination path 32 | * src, array of source file patterns 33 | * rename, function to return the full path of desired destination 34 | * If a fileList value is specified, it completely replaces the default fileList value defined by JET 35 | * Example: {cwd: 'app', src: ['**', '!test.js'], dest: 'staging', rename: function (dest, file) {return renamed path}} 36 | */ 37 | // copyCustomLibsToStaging: { 38 | // fileList: [ 39 | // { 40 | // cwd:'node_modules/oraclejet/', 41 | // src: ['*'], 42 | // dest: 'web/js/libs/oraclejet' 43 | // } 44 | // ] 45 | // } 46 | 47 | /** 48 | * # copySrcToStaging 49 | * This task copies all source files and libraries to staging directory. 50 | * This task supports a single option: fileList. The fileList option defines an array of file objects. 51 | * See descriptions and example in copyCustomLibsToStaging for configuring the fileList. 52 | */ 53 | // copySrcToStaging: { 54 | // fileList: [], 55 | // }, 56 | 57 | /** 58 | * # injectTheme 59 | * This task injects css stylesheet links for the current theme into index.html using the injection start and end markers defined below. 60 | */ 61 | // injectTheme: { 62 | // startTag: '', 63 | // endTag: '' 64 | // } 65 | 66 | /** 67 | * # injectPaths 68 | * Configuration for path injection during build in release mode 69 | * This task reads the release paths from the mainReleasePaths json file and injects the path configuration in main.js when run in release mode. 70 | */ 71 | // injectPaths: paths => ({ 72 | // startTag: '//injector:mainReleasePaths', 73 | // endTag: '//endinjector', 74 | // mainJs: 'path to mainjs', 75 | // destMainJs: 'path to the inject destination', 76 | // mainReleasePaths: 'path to the main-release-paths.json' 77 | // }), 78 | 79 | /** 80 | * # uglify 81 | * This task minifies source files and libraries that don't have minified distributions. 82 | * It runs only when build in release mode. Support input of fileList that contains an array of file objects. 83 | * See the example in copyCustomLibsToStaging for configuring the fileList. 84 | * See detailed uglify options at https://github.com/mishoo/UglifyJS 85 | */ 86 | // uglify: { 87 | // fileList: [{}], 88 | // options: {} 89 | // }, 90 | 91 | /** 92 | * # requireJs 93 | * This task runs requirejs optimizer to bundle all scripts in to a large minified main.js for release. 94 | * It runs only when build in release mode. 95 | * The task mirrors the configuration in this link https://github.com/gruntjs/grunt-contrib-requirejs 96 | */ 97 | // requireJs: { 98 | // baseUrl: 'path to the js directory in staging area', 99 | // name: 'the main.js file name', 100 | // mainConfigFile: `the main configuration file`, 101 | // optimize: 'option for optimize', 102 | // out: 'output file path' 103 | // }, 104 | 105 | /** 106 | * # sass 107 | * This task runs sass compile for scss files. 108 | * It takes a fileList as input, see copyCustomLibsToStaging section for examples of fileList 109 | * See detailed node sass options available here https://github.com/sass/node-sass 110 | */ 111 | // sass: { 112 | // fileList: [], 113 | // options: {} 114 | // }, 115 | 116 | /** 117 | * This is the web specific configuration. You can specify configurations targeted only for web apps. 118 | * The web specific configurations will override the general configuration. 119 | */ 120 | web: { 121 | // copyCustomLibsToStaging: { 122 | // fileList: [ 123 | // { 124 | // cwd:'node_modules/oraclejet/', 125 | // src: ['*'], 126 | // dest: 'web/js/libs/oraclejet' 127 | // } 128 | // ] 129 | // } 130 | }, 131 | 132 | /** 133 | * This is the hybrid specific configuration. You can specify configurations targeted only hybrid apps. 134 | * The hybrid specific configurations will override the general configuration. 135 | */ 136 | hybrid: { 137 | // copyCustomLibsToStaging: { 138 | // fileList: [ 139 | // { 140 | // cwd:'node_modules/oraclejet/', 141 | // src: ['*'], 142 | // dest: 'hybrid/www/js/libs/oraclejet' 143 | // } 144 | // ] 145 | // } 146 | } 147 | }; 148 | }; 149 | -------------------------------------------------------------------------------- /adv-finished/scripts/config/oraclejet-serve.js: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright (c) 2015, 2017, Oracle and/or its affiliates. 3 | The Universal Permissive License (UPL), Version 1.0 4 | */ 5 | 'use strict'; 6 | /** 7 | * # oraclejet-serve.js 8 | * This script allows users to configure and customize the grunt serve tasks. 9 | * Configurable tasks: connect, watch. 10 | * To configure a task, uncomment the corresponding sections below, and pass in your configurations. 11 | * Any options will be merged with default configuration found in node_modules/@oracle/oraclejet-tooling/lib/defaultconfig.js 12 | * Any fileList will replace the default configuration. 13 | */ 14 | 15 | module.exports = function () { 16 | return { 17 | /** 18 | * # watch 19 | * This task watches a set of files and defines a series of customizable tasks if a change is detected. 20 | * Within the watch task config, by default there are three targets, sourceFiles, sass, themes. 21 | * Users are encouraged to edit or add their own watch targets, be careful if rewrite the three default targets. 22 | * Within each watch target, users can specify three properties. 23 | * 1. The files entry takes a list of glob patterns that identifies the set of files to watch 24 | * 2. The options.livereload specifies a boolean that indicates whether the browser should reload when files in this target are modified. 25 | * 3. The options.tasks property specifies custom commands to run. 'compileSass' and 'copyThemes' are reserved internal tasks. 26 | * Example commands: ['grunt copy', 'mocha test]. Once a change is detected, it will run grunt copy followed by mocha test 27 | * once the custom tasks completed, tooling will reload the browser if liverealod is set to true, then resume watching 28 | */ 29 | // // Sub task watch default options 30 | // watch: { 31 | // sourceFiles: 32 | // { 33 | // files: [], 34 | // options: { 35 | // livereload: true 36 | // } 37 | // }, 38 | 39 | // sass: { 40 | // files: [], 41 | // commands: ['compileSass'] 42 | // }, 43 | 44 | // themes: { 45 | // files: [], 46 | // options: { 47 | // livereload: true 48 | // }, 49 | // commands: ['copyThemes'] 50 | // }, 51 | // } 52 | 53 | /** 54 | * This is the web specific configuration. You can specify configurations targeted only for web apps. 55 | * The web specific configurations will override the general configuration. 56 | */ 57 | web: { 58 | /** 59 | * # connect 60 | * This task launches a web server for web App, does not work for hybrid App. 61 | * Support five connect options: 62 | * port, port number, default 8000 63 | * hostname, a string of the domain name, default localhost 64 | * livereload, a boolean for livereload, default true in dev mode, false in release mode (overwritten when ) 65 | * open, a blooean for wheather to launch browser, default to true 66 | * base, a string of the target directory to be served, default to the staging area 67 | */ 68 | // connect: { 69 | // options: {} 70 | // }, 71 | }, 72 | 73 | /** 74 | * This is the hybrid specific configuration. You can specify configurations targeted only for hybrid apps. 75 | * The hybrid specific configurations will override the general configuration. 76 | */ 77 | hybrid: { 78 | } 79 | }; 80 | }; 81 | -------------------------------------------------------------------------------- /adv-finished/scripts/grunt/config/oraclejet-build.js: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright (c) 2015, 2017, Oracle and/or its affiliates. 3 | The Universal Permissive License (UPL), Version 1.0 4 | */ 5 | /** 6 | * # oraclejet-build.js 7 | * This script allows users to configure and customize the grunt build tasks. 8 | * Configurable tasks include: 9 | * copySrcToStaging 10 | * copyCustomLibsToStaging 11 | * injectTheme 12 | * injectPaths 13 | * uglify 14 | * requireJs 15 | * sass 16 | * To configure a task, uncomment the corresponding sections below, and pass in your configurations. 17 | * Any options will be merged with default configuration found in node_modules/oraclejet-tooling/lib/defaultconfig.js 18 | * Any fileList options will replace the corresponding option defined by the default configuration in its entirety - ie. arrays are not merged. 19 | */ 20 | 21 | module.exports = function (grunt) { 22 | return { 23 | 24 | /** 25 | * # copyCustomLibsToStaging 26 | * This task copies any custom libraries that are not provided by JET to staging directory. 27 | * This task supports a single option: fileList. The fileList option defines an array of file objects. 28 | * Each file object contains the following properties: 29 | * cwd, current working directory 30 | * dest, destination path 31 | * src, array of source file patterns 32 | * rename, function to return the full path of desired destination 33 | * If a fileList value is specified, it completely replaces the default fileList value defined by JET 34 | * Example: {cwd: 'app', src: ['**', '!test.js'], dest: 'staging', rename: function (dest, file) {return renamed path}} 35 | */ 36 | // copyCustomLibsToStaging: { 37 | // fileList: [] 38 | // }, 39 | 40 | /** 41 | * # copySrcToStaging 42 | * This task copies all source files and libraries to staging directory. 43 | * This task supports a single option: fileList. The fileList option defines an array of file objects. 44 | * See descriptions and example in copyCustomLibsToStaging for configuring the fileList. 45 | */ 46 | // copySrcToStaging: { 47 | // fileList: [], 48 | // }, 49 | 50 | /** 51 | * # injectTheme 52 | * This task injects css stylesheet links for the current theme into index.html using the injection start and end markers defined below. 53 | */ 54 | // injectTheme: { 55 | // startTag: '', 56 | // endTag: '' 57 | // } 58 | 59 | /** 60 | * # injectPaths 61 | * Configuration for path injection during build in release mode 62 | * This task reads the release paths from the mainReleasePaths json file and injects the path configuration in main.js when run in release mode. 63 | */ 64 | // injectPaths: paths => ({ 65 | // startTag: '//injector:mainReleasePaths', 66 | // endTag: '//endinjector', 67 | // mainJs: 'path to mainjs', 68 | // destMainJs: 'path to the inject destination', 69 | // mainReleasePaths: 'path to the main-release-paths.json' 70 | // }), 71 | 72 | /** 73 | * # uglify 74 | * This task minifies source files and libraries that don't have minified distributions. 75 | * It runs only when build in release mode. Support input of fileList that contains an array of file objects. 76 | * See the example in copyCustomLibsToStaging for configuring the fileList. 77 | * See detailed uglify options at https://github.com/mishoo/UglifyJS 78 | */ 79 | // uglify: { 80 | // fileList: [{}], 81 | // options: {} 82 | // }, 83 | 84 | /** 85 | * # requireJs 86 | * This task runs requirejs optimizer to bundle all scripts in to a large minified main.js for release. 87 | * It runs only when build in release mode. 88 | * The task mirrors the configuration in this link https://github.com/gruntjs/grunt-contrib-requirejs 89 | */ 90 | // requireJs: { 91 | // baseUrl: 'path to the js directory in staging area', 92 | // name: 'the main.js file name', 93 | // mainConfigFile: `the main configuration file`, 94 | // optimize: 'option for optimize', 95 | // out: 'output file path' 96 | // }, 97 | 98 | /** 99 | * # sass 100 | * This task runs sass compile for scss files. 101 | * It takes a fileList as input, see copyCustomLibsToStaging section for examples of fileList 102 | * See detailed node sass options available here https://github.com/sass/node-sass 103 | */ 104 | // sass: { 105 | // fileList: [], 106 | // options: {} 107 | // }, 108 | 109 | /** 110 | * This is the web specific configuration. You can specify configurations targeted only for web apps. 111 | * The web specific configurations will override the general configuration. 112 | */ 113 | web: { 114 | 115 | }, 116 | 117 | /** 118 | * This is the hybrid specific configuration. You can specify configurations targeted only hybrid apps. 119 | * The hybrid specific configurations will override the general configuration. 120 | */ 121 | hybrid: { 122 | 123 | } 124 | }; 125 | }; 126 | -------------------------------------------------------------------------------- /adv-finished/scripts/grunt/config/oraclejet-serve.js: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright (c) 2015, 2017, Oracle and/or its affiliates. 3 | The Universal Permissive License (UPL), Version 1.0 4 | */ 5 | /** 6 | * # oraclejet-serve.js 7 | * This script allows users to configure and customize the grunt serve tasks. 8 | * Configurable tasks: connect, watch. 9 | * To configure a task, uncomment the corresponding sections below, and pass in your configurations. 10 | * Any options will be merged with default configuration found in node_modules/oraclejet-tooling/lib/defaultconfig.js 11 | * Any fileList will replace the default configuration. 12 | */ 13 | 14 | module.exports = function () { 15 | return { 16 | /** 17 | * # watch 18 | * This task watches a set of files and defines a series of customizable tasks if a change is detected. 19 | * Within the watch task config, by default there are three targets, sourceFiles, sass, themes. 20 | * Users are encouraged to edit or add their own watch targets, be careful if rewrite the three default targets. 21 | * Within each watch target, users can specify three properties. 22 | * 1. The files entry takes a list of glob patterns that identifies the set of files to watch 23 | * 2. The options.livereload specifies a boolean that indicates whether the browser should reload when files in this target are modified. 24 | * 3. The options.tasks property specifies custom commands to run. 'compileSass' and 'copyThemes' are reserved internal tasks. 25 | * Example commands: ['grunt copy', 'mocha test]. Once a change is detected, it will run grunt copy followed by mocha test 26 | * once the custom tasks completed, tooling will reload the browser if liverealod is set to true, then resume watching 27 | */ 28 | // // Sub task watch default options 29 | // watch: { 30 | // sourceFiles: 31 | // { 32 | // files: [], 33 | // options: { 34 | // livereload: true 35 | // } 36 | // }, 37 | 38 | // sass: { 39 | // files: [], 40 | // commands: ['compileSass'] 41 | // }, 42 | 43 | // themes: { 44 | // files: [], 45 | // options: { 46 | // livereload: true 47 | // }, 48 | // commands: ['copyThemes'] 49 | // }, 50 | // } 51 | 52 | /** 53 | * This is the web specific configuration. You can specify configurations targeted only for web apps. 54 | * The web specific configurations will override the general configuration. 55 | */ 56 | web: { 57 | /** 58 | * # connect 59 | * This task launches a web server for web App, does not work for hybrid App. 60 | * Support five connect options: 61 | * port, port number, default 8000 62 | * hostname, a string of the domain name, default localhost 63 | * livereload, a boolean for livereload, default true in dev mode, false in release mode (overwritten when ) 64 | * open, a blooean for wheather to launch browser, default to true 65 | * base, a string of the target directory to be served, default to the staging area 66 | */ 67 | // connect: { 68 | // options: {} 69 | // }, 70 | }, 71 | 72 | /** 73 | * This is the hybrid specific configuration. You can specify configurations targeted only for hybrid apps. 74 | * The hybrid specific configurations will override the general configuration. 75 | */ 76 | hybrid: { 77 | } 78 | }; 79 | }; 80 | -------------------------------------------------------------------------------- /adv-finished/src/css/fonts/App_iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/fonts/App_iconfont.woff -------------------------------------------------------------------------------- /adv-finished/src/css/images/avatar_24px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/avatar_24px.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/avatar_24px_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/avatar_24px_2x.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/avg-rate-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/avg-rate-icon.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/dashboardpeople.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/dashboardpeople.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/email_icon_16@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/email_icon_16@2x.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/email_icon_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/email_icon_small.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/facetime_24_wht.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/facetime_24_wht.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/favicon.ico -------------------------------------------------------------------------------- /adv-finished/src/css/images/func_email_16@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/func_email_16@2x.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/func_email_18@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/func_email_18@2x.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/func_facebook_16@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/func_facebook_16@2x.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/func_linkedin_16_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/func_linkedin_16_2x.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/func_list-view_16_act.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/func_list-view_16_act.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/func_list-view_16_dis.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/func_list-view_16_dis.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/func_list-view_16_ena.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/func_list-view_16_ena.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/func_list-view_16_hov.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/func_list-view_16_hov.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/func_matrix_16_act.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/func_matrix_16_act.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/func_matrix_16_dis.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/func_matrix_16_dis.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/func_matrix_16_ena.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/func_matrix_16_ena.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/func_matrix_16_hov.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/func_matrix_16_hov.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/func_mobilePhone_16@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/func_mobilePhone_16@2x.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/func_pagefilter_16_act.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/func_pagefilter_16_act.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/func_pagefilter_16_ena.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/func_pagefilter_16_ena.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/func_pagefilter_16_hov.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/func_pagefilter_16_hov.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/func_phone_16@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/func_phone_16@2x.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/func_twitter_16@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/func_twitter_16@2x.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/func_worldglobe_16_act.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/func_worldglobe_16_act.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/func_worldglobe_16_dis.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/func_worldglobe_16_dis.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/func_worldglobe_16_ena.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/func_worldglobe_16_ena.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/func_worldglobe_16_hov.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/func_worldglobe_16_hov.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/myteam_watermark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/myteam_watermark.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/myteam_watermark@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/myteam_watermark@2x.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/navi_phone_comp_32_ena.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/navi_phone_comp_32_ena.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/navi_phone_comp_32_hov.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/navi_phone_comp_32_hov.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/navi_phone_comp_32_sel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/navi_phone_comp_32_sel.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/navi_phone_perf_32_ena.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/navi_phone_perf_32_ena.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/navi_phone_perf_32_hov.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/navi_phone_perf_32_hov.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/navi_phone_perf_32_sel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/navi_phone_perf_32_sel.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/navi_phone_summary_32_ena.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/navi_phone_summary_32_ena.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/navi_phone_summary_32_hov.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/navi_phone_summary_32_hov.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/navi_phone_summary_32_sel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/navi_phone_summary_32_sel.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/navi_phone_team_32_ena.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/navi_phone_team_32_ena.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/navi_phone_team_32_hov.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/navi_phone_team_32_hov.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/navi_phone_team_32_sel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/navi_phone_team_32_sel.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/oracle_logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 21 | 22 | -------------------------------------------------------------------------------- /adv-finished/src/css/images/org_icon_16@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/org_icon_16@2x.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/org_icon_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/org_icon_small.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/100.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/101.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/101.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/102.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/102.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/103.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/103.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/104.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/104.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/105.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/105.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/106.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/106.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/107.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/107.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/108.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/108.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/109.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/109.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/110.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/110.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/111.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/111.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/112.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/112.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/113.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/113.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/114.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/114.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/115.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/115.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/116.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/116.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/117.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/117.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/118.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/118.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/119.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/119.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/120.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/121.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/121.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/122.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/122.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/123.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/123.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/124.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/124.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/125.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/126.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/126.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/127.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/127.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/128.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/129.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/129.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/130.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/130.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/131.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/131.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/132.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/132.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/133.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/133.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/134.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/134.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/135.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/135.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/136.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/136.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/137.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/137.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/138.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/138.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/139.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/139.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/140.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/140.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/141.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/141.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/142.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/142.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/143.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/143.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/144.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/145.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/145.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/146.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/146.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/147.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/147.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/148.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/148.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/149.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/149.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/150.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/151.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/151.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/152.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/153.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/153.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/154.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/154.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/155.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/155.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/156.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/156.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/157.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/157.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/158.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/158.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/159.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/159.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/160.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/160.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/161.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/161.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/162.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/162.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/163.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/163.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/164.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/164.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/165.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/165.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/166.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/166.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/167.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/167.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/168.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/168.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/169.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/169.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/170.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/170.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/171.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/171.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/172.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/172.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/173.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/173.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/174.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/174.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/175.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/175.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/176.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/176.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/177.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/177.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/178.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/178.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/179.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/179.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/180.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/181.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/181.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/182.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/182.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/183.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/183.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/184.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/184.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/185.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/185.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/186.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/186.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/187.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/187.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/people/nopic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/people/nopic.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/qual_appointments_48_full.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/qual_appointments_48_full.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/qual_approved_32_full.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/qual_approved_32_full.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/qual_averageratings_94_full.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/qual_averageratings_94_full.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/qual_info_32_full.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/qual_info_32_full.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/qual_mygroup_70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/qual_mygroup_70.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/qual_myorg_70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/qual_myorg_70.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/qual_reject_32_full.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/qual_reject_32_full.png -------------------------------------------------------------------------------- /adv-finished/src/css/images/qual_tasks_48_full.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/css/images/qual_tasks_48_full.png -------------------------------------------------------------------------------- /adv-finished/src/js/appController.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2014, 2017, Oracle and/or its affiliates. 3 | * The Universal Permissive License (UPL), Version 1.0 4 | */ 5 | /* 6 | * Your application specific code will go here 7 | */ 8 | define(['ojs/ojcore', 'knockout', 'data/data', 'ojs/ojrouter', 'ojs/ojknockout', 'ojs/ojarraytabledatasource', 9 | 'ojs/ojoffcanvas'], 10 | function (oj, ko, data) { 11 | function ControllerViewModel() { 12 | var self = this; 13 | 14 | self.personProfile = ko.observableArray([]); 15 | 16 | // Media queries for repsonsive layouts 17 | var smQuery = oj.ResponsiveUtils.getFrameworkQuery(oj.ResponsiveUtils.FRAMEWORK_QUERY_KEY.SM_ONLY); 18 | self.smScreen = oj.ResponsiveKnockoutUtils.createMediaQueryObservable(smQuery); 19 | var mdQuery = oj.ResponsiveUtils.getFrameworkQuery(oj.ResponsiveUtils.FRAMEWORK_QUERY_KEY.MD_UP); 20 | self.mdScreen = oj.ResponsiveKnockoutUtils.createMediaQueryObservable(mdQuery); 21 | 22 | // Router setup 23 | self.router = oj.Router.rootInstance; 24 | self.router.configure({ 25 | 'dashboard': {label: 'Dashboard', isDefault: true}, 26 | 'profile': {label: 'Profile'}, 27 | 'employees': {label: 'Employees'}, 28 | 'websockets': {label: 'WebSockets'} 29 | }); 30 | oj.Router.defaults['urlAdapter'] = new oj.Router.urlParamAdapter(); 31 | 32 | // data.fetchData('https://apex.oracle.com/pls/apex/oraclejet/emp/7839').then(function (person) { 33 | // self.personProfile(person); 34 | // self.ready(true); 35 | // }).fail(function (error) { 36 | // console.log('Error: ' + error.message); 37 | // }); 38 | 39 | // Navigation setup 40 | var navData = [ 41 | {name: 'Dashboard', id: 'dashboard', 42 | iconClass: 'oj-navigationlist-item-icon demo-icon-font-24 demo-chart-icon-24'}, 43 | {name: 'Profile', id: 'profile', 44 | iconClass: 'oj-navigationlist-item-icon demo-icon-font-24 demo-person-icon-24'}, 45 | {name: 'Employees', id: 'employees', 46 | iconClass: 'oj-navigationlist-item-icon demo-icon-font-24 demo-people-icon-24'}, 47 | {name: 'WebSockets', id: 'websockets', 48 | iconClass: 'oj-navigationlist-item-icon demo-icon-font-24 demo-info-icon-24'} 49 | ]; 50 | self.navDataSource = new oj.ArrayTableDataSource(navData, {idAttribute: 'id'}); 51 | 52 | // Drawer 53 | // Close offcanvas on medium and larger screens 54 | self.mdScreen.subscribe(function () { 55 | oj.OffcanvasUtils.close(self.drawerParams); 56 | }); 57 | self.drawerParams = { 58 | displayMode: 'push', 59 | selector: '#navDrawer', 60 | content: '#pageContent' 61 | }; 62 | // Called by navigation drawer toggle button and after selection of nav drawer item 63 | self.toggleDrawer = function () { 64 | return oj.OffcanvasUtils.toggle(self.drawerParams); 65 | } 66 | // Add a close listener so we can move focus back to the toggle button when the drawer closes 67 | $("#navDrawer").on("ojclose", function () { 68 | $('#drawerToggleButton').focus(); 69 | }); 70 | 71 | // Header 72 | // Application Name used in Branding Area 73 | self.appName = ko.observable("JET Hands On Lab 2017"); 74 | // User Info used in Global Navigation area 75 | self.userLogin = ko.observable("john.hancock@oracle.com"); 76 | 77 | // Footer 78 | function footerLink(name, id, linkTarget) { 79 | this.name = name; 80 | this.linkId = id; 81 | this.linkTarget = linkTarget; 82 | } 83 | self.footerLinks = ko.observableArray([ 84 | new footerLink('About Oracle', 'aboutOracle', 'http://www.oracle.com/us/corporate/index.html#menu-about'), 85 | new footerLink('Contact Us', 'contactUs', 'http://www.oracle.com/us/corporate/contact/index.html'), 86 | new footerLink('Legal Notices', 'legalNotices', 'http://www.oracle.com/us/legal/index.html'), 87 | new footerLink('Terms Of Use', 'termsOfUse', 'http://www.oracle.com/us/legal/terms/index.html'), 88 | new footerLink('Your Privacy Rights', 'yourPrivacyRights', 'http://www.oracle.com/us/legal/privacy/index.html') 89 | ]); 90 | } 91 | 92 | return new ControllerViewModel(); 93 | } 94 | ); 95 | -------------------------------------------------------------------------------- /adv-finished/src/js/data/data.js: -------------------------------------------------------------------------------- 1 | define(['ojs/ojcore', 'knockout', 'jquery'], 2 | function (oj, ko, $) 3 | { 4 | function fetchData(url) { 5 | return $.getJSON(url); 6 | } 7 | 8 | function fetchPerson(url) { 9 | return $.getJSON(url); 10 | } 11 | 12 | return {fetchData: fetchData}; 13 | }); 14 | 15 | 16 | -------------------------------------------------------------------------------- /adv-finished/src/js/jet-composites/demo-about-me/README.md: -------------------------------------------------------------------------------- 1 | # ojet component template 2 | 3 | ## Usage 4 | Refer to the oj.Composite jsdoc 5 | http://www.oracle.com/webfolder/technetwork/jet/jsdocs/oj.Composite.html -------------------------------------------------------------------------------- /adv-finished/src/js/jet-composites/demo-about-me/component.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "demo-about-me", 3 | "displayName": "demo-about-me", 4 | "description": "Describe your component here", 5 | "version": "1.0.0", 6 | "jetVersion": ">=3.0.0", 7 | "properties": { 8 | "avatarImage" : { 9 | "description":"Path to the image source", 10 | "type":"string" 11 | } 12 | }, 13 | "events": { 14 | "demoAboutMeDrill":{ 15 | "description" : "The event that consuming views can use to recognize when the About Me is clicked", 16 | "bubbles" : true, 17 | "cancelable" : false 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /adv-finished/src/js/jet-composites/demo-about-me/loader.js: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright (c) 2015, 2017, Oracle and/or its affiliates. 3 | The Universal Permissive License (UPL), Version 1.0 4 | */ 5 | define(['ojs/ojcore', 'text!./view.html', './viewModel', 'text!./component.json', 'css!./styles', 'ojs/ojcomposite'], 6 | function(oj, view, viewModel, metadata) { 7 | oj.Composite.register('demo-about-me', { 8 | view: {inline: view}, 9 | viewModel: {inline: viewModel}, 10 | metadata: {inline: JSON.parse(metadata)} 11 | }); 12 | } 13 | ); -------------------------------------------------------------------------------- /adv-finished/src/js/jet-composites/demo-about-me/styles.css: -------------------------------------------------------------------------------- 1 | demo-about-me:not(.oj-complete){ 2 | visibility: hidden; 3 | } 4 | 5 | demo-about-me{ 6 | 7 | } -------------------------------------------------------------------------------- /adv-finished/src/js/jet-composites/demo-about-me/view.html: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 |
8 |

9 | About Me 10 |

11 | employee photo 12 |
13 |
-------------------------------------------------------------------------------- /adv-finished/src/js/jet-composites/demo-about-me/viewModel.js: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright (c) 2015, 2017, Oracle and/or its affiliates. 3 | The Universal Permissive License (UPL), Version 1.0 4 | */ 5 | define(['ojs/ojcore', 'knockout'], 6 | function (oj, ko) { 7 | 'use strict'; 8 | 9 | function AboutMeComponentModel(context) { 10 | var self = this; 11 | 12 | self.composite = context.element; 13 | context.props.then(function (propertyMap) { 14 | //Store a reference to the properties for any later use 15 | self.properties = propertyMap; 16 | //Parse your component properties here 17 | }); 18 | 19 | self.showProfile = function () { 20 | var eventParams = { 21 | 'bubbles': true, 22 | 'cancelable': false 23 | }; 24 | //Raise the custom event 25 | this.composite.dispatchEvent(new CustomEvent('demoAboutMeDrill', 26 | eventParams)); 27 | } 28 | 29 | } 30 | 31 | return AboutMeComponentModel; 32 | }); -------------------------------------------------------------------------------- /adv-finished/src/js/jet-composites/demo-attrition/README.md: -------------------------------------------------------------------------------- 1 | # ojet component template 2 | 3 | ## Usage 4 | Refer to the oj.Composite jsdoc 5 | http://www.oracle.com/webfolder/technetwork/jet/jsdocs/oj.Composite.html -------------------------------------------------------------------------------- /adv-finished/src/js/jet-composites/demo-attrition/component.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "demo-attrition", 3 | "displayName": "demo-attrition", 4 | "description": "Describe your component here", 5 | "version": "1.0.0", 6 | "jetVersion": ">=3.0.0", 7 | "properties": { 8 | }, 9 | "methods": { 10 | 11 | }, 12 | "events": { 13 | 14 | }, 15 | "slots": { 16 | 17 | } 18 | } -------------------------------------------------------------------------------- /adv-finished/src/js/jet-composites/demo-attrition/loader.js: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright (c) 2015, 2017, Oracle and/or its affiliates. 3 | The Universal Permissive License (UPL), Version 1.0 4 | */ 5 | define(['ojs/ojcore', 'text!./view.html', './viewModel', 'text!./component.json', 'css!./styles', 'ojs/ojcomposite'], 6 | function(oj, view, viewModel, metadata) { 7 | oj.Composite.register('demo-attrition', { 8 | view: {inline: view}, 9 | viewModel: {inline: viewModel}, 10 | metadata: {inline: JSON.parse(metadata)} 11 | }); 12 | } 13 | ); -------------------------------------------------------------------------------- /adv-finished/src/js/jet-composites/demo-attrition/styles.css: -------------------------------------------------------------------------------- 1 | demo-attrition:not(.oj-complete){ 2 | visibility: hidden; 3 | } 4 | 5 | demo-attrition{ 6 | 7 | } -------------------------------------------------------------------------------- /adv-finished/src/js/jet-composites/demo-attrition/view.html: -------------------------------------------------------------------------------- 1 | 5 |

6 | Attrition History 7 |

8 | 24 | -------------------------------------------------------------------------------- /adv-finished/src/js/jet-composites/demo-attrition/viewModel.js: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright (c) 2015, 2017, Oracle and/or its affiliates. 3 | The Universal Permissive License (UPL), Version 1.0 4 | */ 5 | define( 6 | ['ojs/ojcore', 'knockout', 'jquery'], function (oj, ko, $) { 7 | 'use strict'; 8 | 9 | function ExampleComponentModel(context) { 10 | var self = this; 11 | 12 | var converterFactory = oj.Validation.converterFactory('number'); 13 | self.percentConverter = converterFactory.createConverter({style: 'decimal', maximumFractionDigits: 0}); 14 | 15 | self.composite = context.element; 16 | //Example observable 17 | self.messageText = ko.observable('Hello from Demo-Attrition Component'); 18 | 19 | context.props.then(function (propertyMap) { 20 | //Store a reference to the properties for any later use 21 | self.properties = propertyMap; 22 | 23 | //Parse your component properties here 24 | 25 | }); 26 | 27 | 28 | self.pieSeriesValue = ko.observableArray( 29 | [{name: "Not Fitting into a Team", items: [2]}, 30 | {name: "No Career Progression", items: [2]}, 31 | {name: "Salary", items: [4]}, 32 | {name: "Seeking New Skills", items: [3]}, 33 | {name: "Personal/Family Reasons", items: [3]}, 34 | {name: "Work Environment", items: [1]} 35 | ]); 36 | }; 37 | 38 | //Lifecycle methods - uncomment and implement if necessary 39 | //ExampleComponentModel.prototype.activated = function(context){ 40 | //}; 41 | 42 | //ExampleComponentModel.prototype.attached = function(context){ 43 | //}; 44 | 45 | //ExampleComponentModel.prototype.bindingsApplied = function(context){ 46 | //}; 47 | 48 | //ExampleComponentModel.prototype.detached = function(context){ 49 | //}; 50 | 51 | return ExampleComponentModel; 52 | }); -------------------------------------------------------------------------------- /adv-finished/src/js/jet-composites/demo-comp-ratio/README.md: -------------------------------------------------------------------------------- 1 | # ojet component template 2 | 3 | ## Usage 4 | Refer to the oj.Composite jsdoc 5 | http://www.oracle.com/webfolder/technetwork/jet/jsdocs/oj.Composite.html -------------------------------------------------------------------------------- /adv-finished/src/js/jet-composites/demo-comp-ratio/component.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "demo-comp-ratio", 3 | "displayName": "demo-comp-ratio", 4 | "description": "Describe your component here", 5 | "version": "1.0.0", 6 | "jetVersion": ">=3.0.0", 7 | "properties": { 8 | }, 9 | "methods": { 10 | 11 | }, 12 | "events": { 13 | 14 | }, 15 | "slots": { 16 | 17 | } 18 | } -------------------------------------------------------------------------------- /adv-finished/src/js/jet-composites/demo-comp-ratio/loader.js: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright (c) 2015, 2017, Oracle and/or its affiliates. 3 | The Universal Permissive License (UPL), Version 1.0 4 | */ 5 | define(['ojs/ojcore', 'text!./view.html', './viewModel', 'text!./component.json', 'css!./styles', 'ojs/ojcomposite'], 6 | function(oj, view, viewModel, metadata) { 7 | oj.Composite.register('demo-comp-ratio', { 8 | view: {inline: view}, 9 | viewModel: {inline: viewModel}, 10 | metadata: {inline: JSON.parse(metadata)} 11 | }); 12 | } 13 | ); -------------------------------------------------------------------------------- /adv-finished/src/js/jet-composites/demo-comp-ratio/styles.css: -------------------------------------------------------------------------------- 1 | demo-comp-ratio:not(.oj-complete){ 2 | visibility: hidden; 3 | } 4 | 5 | demo-comp-ratio{ 6 | 7 | } -------------------------------------------------------------------------------- /adv-finished/src/js/jet-composites/demo-comp-ratio/view.html: -------------------------------------------------------------------------------- 1 | 5 |
6 | Compensation Ratio 7 |
8 |
9 |
Above Range
10 |
In Range
11 |
Below Range
12 |
-------------------------------------------------------------------------------- /adv-finished/src/js/jet-composites/demo-comp-ratio/viewModel.js: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright (c) 2015, 2017, Oracle and/or its affiliates. 3 | The Universal Permissive License (UPL), Version 1.0 4 | */ 5 | define( 6 | ['ojs/ojcore', 'knockout', 'data/data'], function (oj, ko, data) { 7 | 'use strict'; 8 | 9 | function ExampleComponentModel(context) { 10 | var self = this; 11 | self.personProfile = ko.observableArray([]); 12 | self.ready = ko.observable(false); 13 | self.averagePerformance = ko.observable(); 14 | self.averagePotential = ko.observable(); 15 | 16 | self.composite = context.element; 17 | //Example observable 18 | self.messageText = ko.observable('Hello from Example Component'); 19 | 20 | context.props.then(function (propertyMap) { 21 | //Store a reference to the properties for any later use 22 | self.properties = propertyMap; 23 | 24 | //Parse your component properties here 25 | 26 | }); 27 | 28 | 29 | data.fetchData('js/data/employee100.json').then(function (person) { 30 | self.personProfile(person); 31 | self.ready(true); 32 | self.formatAverages(); 33 | }).fail(function (error) { 34 | console.log('Error: ' + error.message); 35 | }); 36 | 37 | self.formatAverages = function () { 38 | self.averagePerformance(self.personProfile().groupAvgRating.toPrecision(2)); 39 | self.averagePotential(self.personProfile().groupAvgPotential.toPrecision(2)); 40 | }; 41 | 42 | }; 43 | 44 | //Lifecycle methods - uncomment and implement if necessary 45 | //ExampleComponentModel.prototype.activated = function(context){ 46 | //}; 47 | 48 | //ExampleComponentModel.prototype.attached = function(context){ 49 | //}; 50 | 51 | //ExampleComponentModel.prototype.bindingsApplied = function(context){ 52 | //}; 53 | 54 | //ExampleComponentModel.prototype.detached = function(context){ 55 | //}; 56 | 57 | return ExampleComponentModel; 58 | }); -------------------------------------------------------------------------------- /adv-finished/src/js/jet-composites/demo-comp/5e1e77c1-4f35-4a89-a5db-5da166b0b171.dmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-finished/src/js/jet-composites/demo-comp/5e1e77c1-4f35-4a89-a5db-5da166b0b171.dmp -------------------------------------------------------------------------------- /adv-finished/src/js/jet-composites/demo-comp/README.md: -------------------------------------------------------------------------------- 1 | # ojet component template 2 | 3 | ## Usage 4 | Refer to the oj.Composite jsdoc 5 | http://www.oracle.com/webfolder/technetwork/jet/jsdocs/oj.Composite.html -------------------------------------------------------------------------------- /adv-finished/src/js/jet-composites/demo-comp/component.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "demo-comp", 3 | "displayName": "demo-comp", 4 | "description": "Describe your component here", 5 | "version": "1.0.0", 6 | "jetVersion": ">=3.0.0", 7 | "properties": { 8 | }, 9 | "methods": { 10 | 11 | }, 12 | "events": { 13 | 14 | }, 15 | "slots": { 16 | 17 | } 18 | } -------------------------------------------------------------------------------- /adv-finished/src/js/jet-composites/demo-comp/loader.js: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright (c) 2015, 2017, Oracle and/or its affiliates. 3 | The Universal Permissive License (UPL), Version 1.0 4 | */ 5 | define(['ojs/ojcore', 'text!./view.html', './viewModel', 'text!./component.json', 'css!./styles', 'ojs/ojcomposite'], 6 | function(oj, view, viewModel, metadata) { 7 | oj.Composite.register('demo-comp', { 8 | view: {inline: view}, 9 | viewModel: {inline: viewModel}, 10 | metadata: {inline: JSON.parse(metadata)} 11 | }); 12 | } 13 | ); -------------------------------------------------------------------------------- /adv-finished/src/js/jet-composites/demo-comp/styles.css: -------------------------------------------------------------------------------- 1 | demo-comp:not(.oj-complete){ 2 | visibility: hidden; 3 | } 4 | 5 | demo-comp{ 6 | 7 | } -------------------------------------------------------------------------------- /adv-finished/src/js/jet-composites/demo-comp/view.html: -------------------------------------------------------------------------------- 1 | 5 |
6 | Average Compensation 7 |
8 | 9 |
10 |
11 |
12 |
13 |
14 | 15 |
Top Six Organizations
-------------------------------------------------------------------------------- /adv-finished/src/js/jet-composites/demo-comp/viewModel.js: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright (c) 2015, 2017, Oracle and/or its affiliates. 3 | The Universal Permissive License (UPL), Version 1.0 4 | */ 5 | define( 6 | ['ojs/ojcore', 'knockout', 'jquery'], function (oj, ko, $) { 7 | 'use strict'; 8 | 9 | function ExampleComponentModel(context) { 10 | var self = this; 11 | 12 | self.composite = context.element; 13 | //Example observable 14 | self.messageText = ko.observable('Hello from Example Component'); 15 | 16 | context.props.then(function (propertyMap) { 17 | //Store a reference to the properties for any later use 18 | self.properties = propertyMap; 19 | 20 | //Parse your component properties here 21 | 22 | }); 23 | 24 | self.compratio = ko.observableArray([ 25 | {"faderatio": "1", "name": "Finance", "value": "$150k", "rate": "100"}, 26 | {"faderatio": "0.8", "name": "Development", "value": "$125k", "rate": "70"}, 27 | {"faderatio": "0.8", "name": "Human Resources", "value": "$90k", "rate": "50"}, 28 | {"faderatio": "0.6", "name": "Maintenance", "value": "$60k", "rate": "40"}, 29 | {"faderatio": "0.6", "name": "Shipping", "value": "$50k", "rate": "30"} 30 | ]); 31 | } 32 | 33 | //Lifecycle methods - uncomment and implement if necessary 34 | //ExampleComponentModel.prototype.activated = function(context){ 35 | //}; 36 | 37 | //ExampleComponentModel.prototype.attached = function(context){ 38 | //}; 39 | 40 | //ExampleComponentModel.prototype.bindingsApplied = function(context){ 41 | //}; 42 | 43 | //ExampleComponentModel.prototype.detached = function(context){ 44 | //}; 45 | 46 | return ExampleComponentModel; 47 | }); -------------------------------------------------------------------------------- /adv-finished/src/js/jet-composites/demo-my-activities/README.md: -------------------------------------------------------------------------------- 1 | # ojet component template 2 | 3 | ## Usage 4 | Refer to the oj.Composite jsdoc 5 | http://www.oracle.com/webfolder/technetwork/jet/jsdocs/oj.Composite.html -------------------------------------------------------------------------------- /adv-finished/src/js/jet-composites/demo-my-activities/component.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "demo-my-activities", 3 | "displayName": "demo-my-activities", 4 | "description": "Describe your component here", 5 | "version": "1.0.0", 6 | "jetVersion": ">=3.0.0", 7 | "properties": { 8 | }, 9 | "methods": { 10 | 11 | }, 12 | "events": { 13 | 14 | }, 15 | "slots": { 16 | 17 | } 18 | } -------------------------------------------------------------------------------- /adv-finished/src/js/jet-composites/demo-my-activities/loader.js: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright (c) 2015, 2017, Oracle and/or its affiliates. 3 | The Universal Permissive License (UPL), Version 1.0 4 | */ 5 | define(['ojs/ojcore', 'text!./view.html', './viewModel', 'text!./component.json', 'css!./styles', 'ojs/ojcomposite'], 6 | function(oj, view, viewModel, metadata) { 7 | oj.Composite.register('demo-my-activities', { 8 | view: {inline: view}, 9 | viewModel: {inline: viewModel}, 10 | metadata: {inline: JSON.parse(metadata)} 11 | }); 12 | } 13 | ); -------------------------------------------------------------------------------- /adv-finished/src/js/jet-composites/demo-my-activities/styles.css: -------------------------------------------------------------------------------- 1 | demo-my-activities:not(.oj-complete){ 2 | visibility: hidden; 3 | } 4 | 5 | demo-my-activities{ 6 | 7 | } -------------------------------------------------------------------------------- /adv-finished/src/js/jet-composites/demo-my-activities/view.html: -------------------------------------------------------------------------------- 1 | 5 |
6 | My Activities 7 |
8 |
9 |
10 |
100
11 | Appointments
12 |
13 |
10
14 | Tasks
15 |
-------------------------------------------------------------------------------- /adv-finished/src/js/jet-composites/demo-my-activities/viewModel.js: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright (c) 2015, 2017, Oracle and/or its affiliates. 3 | The Universal Permissive License (UPL), Version 1.0 4 | */ 5 | define(['ojs/ojcore', 'knockout', 'jquery', 'socketio'], 6 | function (oj, ko, $, io) { 7 | 'use strict'; 8 | 9 | function ExampleComponentModel(context) { 10 | var self = this; 11 | 12 | var apiHost = "https://websocketservice2-paas124.apaas.em2.oraclecloud.com" //window.location.hostname || 'localhost'; 13 | var apiPort = '' // apiHost.match(/localhost/) ? ':3000' : ''; 14 | 15 | // This is set to false by default. To see the code working with the Websocket interface 16 | // change the autoConnect value to true below. 17 | const socket = io(apiHost + ":" + apiPort, {autoConnect: false}); 18 | self.value = ko.observable('10'); 19 | 20 | self.composite = context.element; 21 | //Example observable 22 | self.messageText = ko.observable('Hello from Example Component'); 23 | 24 | context.props.then(function (propertyMap) { 25 | //Store a reference to the properties for any later use 26 | self.properties = propertyMap; 27 | 28 | //Parse your component properties here 29 | 30 | }); 31 | 32 | function cb(err, value) { 33 | if (err) { 34 | console.log('Subscriber Error: ' + err); 35 | } else { 36 | self.value(value); 37 | } 38 | } 39 | self.startConnection = function () { 40 | socket.connect(); 41 | }; 42 | 43 | self.subscribeToTimer = function () { 44 | socket.on('timer', value => cb(null, value)); 45 | socket.emit('subscribeToTimer', 2000); 46 | } 47 | 48 | self.closeConnection = function () { 49 | console.log('Connection id: ' + socket.id + ' closed'); 50 | socket.close() 51 | }; 52 | 53 | socket.on('connect', () => { 54 | console.log('Connection started with id: ' + socket.id); 55 | }); 56 | 57 | socket.on('connect_error', (error) => { 58 | console.log('Connection Error: ' + error); 59 | }); 60 | 61 | ExampleComponentModel.prototype.bindingsApplied = function (context) { 62 | 63 | //self.subscribeToTimer(); 64 | }; 65 | } 66 | 67 | 68 | //Lifecycle methods - uncomment and implement if necessary 69 | //ExampleComponentModel.prototype.activated = function(context){ 70 | //}; 71 | 72 | //ExampleComponentModel.prototype.attached = function(context){ 73 | //}; 74 | 75 | //ExampleComponentModel.prototype.bindingsApplied = function (context) { 76 | 77 | // self.subscribeToTimer(); 78 | // }; 79 | 80 | //ExampleComponentModel.prototype.detached = function(context){ 81 | //}; 82 | 83 | return ExampleComponentModel; 84 | }); -------------------------------------------------------------------------------- /adv-finished/src/js/jet-composites/demo-notifications/README.md: -------------------------------------------------------------------------------- 1 | # ojet component template 2 | 3 | ## Usage 4 | Refer to the oj.Composite jsdoc 5 | http://www.oracle.com/webfolder/technetwork/jet/jsdocs/oj.Composite.html -------------------------------------------------------------------------------- /adv-finished/src/js/jet-composites/demo-notifications/component.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "demo-notifications", 3 | "displayName": "demo-notifications", 4 | "description": "Describe your component here", 5 | "version": "1.0.0", 6 | "jetVersion": ">=3.0.0", 7 | "properties": { 8 | }, 9 | "methods": { 10 | 11 | }, 12 | "events": { 13 | 14 | }, 15 | "slots": { 16 | 17 | } 18 | } -------------------------------------------------------------------------------- /adv-finished/src/js/jet-composites/demo-notifications/loader.js: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright (c) 2015, 2017, Oracle and/or its affiliates. 3 | The Universal Permissive License (UPL), Version 1.0 4 | */ 5 | define(['ojs/ojcore', 'text!./view.html', './viewModel', 'text!./component.json', 'css!./styles', 'ojs/ojcomposite'], 6 | function(oj, view, viewModel, metadata) { 7 | oj.Composite.register('demo-notifications', { 8 | view: {inline: view}, 9 | viewModel: {inline: viewModel}, 10 | metadata: {inline: JSON.parse(metadata)} 11 | }); 12 | } 13 | ); -------------------------------------------------------------------------------- /adv-finished/src/js/jet-composites/demo-notifications/styles.css: -------------------------------------------------------------------------------- 1 | demo-notifications:not(.oj-complete){ 2 | visibility: hidden; 3 | } 4 | 5 | demo-notifications{ 6 | 7 | } -------------------------------------------------------------------------------- /adv-finished/src/js/jet-composites/demo-notifications/view.html: -------------------------------------------------------------------------------- 1 | 5 |
6 | My Notifications 7 |
8 |
9 |
Approved
10 |
Waiting
11 |
Rejected
12 |
13 |
Friday, May 8, 2015
-------------------------------------------------------------------------------- /adv-finished/src/js/jet-composites/demo-notifications/viewModel.js: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright (c) 2015, 2017, Oracle and/or its affiliates. 3 | The Universal Permissive License (UPL), Version 1.0 4 | */ 5 | define( 6 | ['ojs/ojcore', 'knockout', 'data/data'], function (oj, ko, data) { 7 | 'use strict'; 8 | 9 | function ExampleComponentModel(context) { 10 | var self = this; 11 | self.personProfile = ko.observableArray([]); 12 | self.ready = ko.observable(false); 13 | self.averagePerformance = ko.observable(); 14 | self.averagePotential = ko.observable(); 15 | 16 | self.formatAverages = function () { 17 | self.averagePerformance(self.personProfile().groupAvgRating.toPrecision(2)); 18 | self.averagePotential(self.personProfile().groupAvgPotential.toPrecision(2)); 19 | }; 20 | 21 | 22 | self.composite = context.element; 23 | //Example observable 24 | self.messageText = ko.observable('Hello from Example Component'); 25 | 26 | context.props.then(function (propertyMap) { 27 | //Store a reference to the properties for any later use 28 | self.properties = propertyMap; 29 | 30 | //Parse your component properties here 31 | 32 | }); 33 | 34 | data.fetchData('js/data/employee100.json').then(function (person) { 35 | self.personProfile(person); 36 | self.ready(true); 37 | self.formatAverages(); 38 | }).fail(function (error) { 39 | console.log('Error: ' + error.message); 40 | }); 41 | 42 | }; 43 | 44 | //Lifecycle methods - uncomment and implement if necessary 45 | //ExampleComponentModel.prototype.activated = function(context){ 46 | //}; 47 | 48 | //ExampleComponentModel.prototype.attached = function(context){ 49 | //}; 50 | 51 | //ExampleComponentModel.prototype.bindingsApplied = function(context){ 52 | //}; 53 | 54 | //ExampleComponentModel.prototype.detached = function(context){ 55 | //}; 56 | 57 | return ExampleComponentModel; 58 | }); -------------------------------------------------------------------------------- /adv-finished/src/js/jet-composites/demo-ratings/README.md: -------------------------------------------------------------------------------- 1 | # ojet component template 2 | 3 | ## Usage 4 | Refer to the oj.Composite jsdoc 5 | http://www.oracle.com/webfolder/technetwork/jet/jsdocs/oj.Composite.html -------------------------------------------------------------------------------- /adv-finished/src/js/jet-composites/demo-ratings/component.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "demo-ratings", 3 | "displayName": "demo-ratings", 4 | "description": "Describe your component here", 5 | "version": "1.0.0", 6 | "jetVersion": ">=3.0.0", 7 | "properties": { 8 | }, 9 | "methods": { 10 | 11 | }, 12 | "events": { 13 | 14 | }, 15 | "slots": { 16 | 17 | } 18 | } -------------------------------------------------------------------------------- /adv-finished/src/js/jet-composites/demo-ratings/loader.js: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright (c) 2015, 2017, Oracle and/or its affiliates. 3 | The Universal Permissive License (UPL), Version 1.0 4 | */ 5 | define(['ojs/ojcore', 'text!./view.html', './viewModel', 'text!./component.json', 'css!./styles', 'ojs/ojcomposite'], 6 | function(oj, view, viewModel, metadata) { 7 | oj.Composite.register('demo-ratings', { 8 | view: {inline: view}, 9 | viewModel: {inline: viewModel}, 10 | metadata: {inline: JSON.parse(metadata)} 11 | }); 12 | } 13 | ); -------------------------------------------------------------------------------- /adv-finished/src/js/jet-composites/demo-ratings/styles.css: -------------------------------------------------------------------------------- 1 | demo-ratings:not(.oj-complete){ 2 | visibility: hidden; 3 | } 4 | 5 | demo-ratings{ 6 | 7 | } -------------------------------------------------------------------------------- /adv-finished/src/js/jet-composites/demo-ratings/view.html: -------------------------------------------------------------------------------- 1 | 5 |
6 | Average Rating 7 |
8 |
9 |
10 | average rating icon 11 |
12 |
13 |
10
14 |
15 | Performance 16 |
17 |
2
18 |
19 | Potential 20 |
21 |
22 |
-------------------------------------------------------------------------------- /adv-finished/src/js/jet-composites/demo-ratings/viewModel.js: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright (c) 2015, 2017, Oracle and/or its affiliates. 3 | The Universal Permissive License (UPL), Version 1.0 4 | */ 5 | define( 6 | ['ojs/ojcore', 'knockout', 'data/data'], function (oj, ko, data) { 7 | 'use strict'; 8 | 9 | function ExampleComponentModel(context) { 10 | var self = this; 11 | self.personProfile = ko.observableArray([]); 12 | self.averagePerformance = ko.observable(); 13 | self.averagePotential = ko.observable(); 14 | self.ready = ko.observable(false); 15 | 16 | self.composite = context.element; 17 | //Example observable 18 | self.messageText = ko.observable('Hello from Example Component'); 19 | 20 | context.props.then(function (propertyMap) { 21 | //Store a reference to the properties for any later use 22 | self.properties = propertyMap; 23 | 24 | //Parse your component properties here 25 | 26 | }); 27 | 28 | data.fetchData('js/data/employee100.json').then(function (person) { 29 | self.personProfile(person); 30 | self.ready(true); 31 | self.formatAverages(); 32 | }).fail(function (error) { 33 | console.log('Error: ' + error.message); 34 | }); 35 | 36 | self.formatAverages = function () { 37 | self.averagePerformance(self.personProfile().groupAvgRating.toPrecision(2)); 38 | self.averagePotential(self.personProfile().groupAvgPotential.toPrecision(2)); 39 | }; 40 | 41 | }; 42 | 43 | //Lifecycle methods - uncomment and implement if necessary 44 | //ExampleComponentModel.prototype.activated = function(context){ 45 | //}; 46 | 47 | //ExampleComponentModel.prototype.attached = function(context){ 48 | //}; 49 | 50 | //ExampleComponentModel.prototype.bindingsApplied = function(context){ 51 | //}; 52 | 53 | //ExampleComponentModel.prototype.detached = function(context){ 54 | //}; 55 | 56 | return ExampleComponentModel; 57 | }); -------------------------------------------------------------------------------- /adv-finished/src/js/jet-composites/demo-team-activities/README.md: -------------------------------------------------------------------------------- 1 | # ojet component template 2 | 3 | ## Usage 4 | Refer to the oj.Composite jsdoc 5 | http://www.oracle.com/webfolder/technetwork/jet/jsdocs/oj.Composite.html -------------------------------------------------------------------------------- /adv-finished/src/js/jet-composites/demo-team-activities/component.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "demo-team-activities", 3 | "displayName": "demo-team-activities", 4 | "description": "Describe your component here", 5 | "version": "1.0.0", 6 | "jetVersion": ">=3.0.0", 7 | "properties": { 8 | }, 9 | "methods": { 10 | 11 | }, 12 | "events": { 13 | 14 | }, 15 | "slots": { 16 | 17 | } 18 | } -------------------------------------------------------------------------------- /adv-finished/src/js/jet-composites/demo-team-activities/loader.js: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright (c) 2015, 2017, Oracle and/or its affiliates. 3 | The Universal Permissive License (UPL), Version 1.0 4 | */ 5 | define(['ojs/ojcore', 'text!./view.html', './viewModel', 'text!./component.json', 'css!./styles', 'ojs/ojcomposite'], 6 | function(oj, view, viewModel, metadata) { 7 | oj.Composite.register('demo-team-activities', { 8 | view: {inline: view}, 9 | viewModel: {inline: viewModel}, 10 | metadata: {inline: JSON.parse(metadata)} 11 | }); 12 | } 13 | ); -------------------------------------------------------------------------------- /adv-finished/src/js/jet-composites/demo-team-activities/styles.css: -------------------------------------------------------------------------------- 1 | demo-team-activities:not(.oj-complete){ 2 | visibility: hidden; 3 | } 4 | 5 | demo-team-activities{ 6 | 7 | } -------------------------------------------------------------------------------- /adv-finished/src/js/jet-composites/demo-team-activities/view.html: -------------------------------------------------------------------------------- 1 | 5 |
6 | My Org Activities 7 |
8 |
9 |
10 |
10
11 |
12 | Meetings 13 |
14 |
15 |
16 |
2
17 |
18 | Training 19 |
20 |
21 |
22 |
23 |
24 |
15
25 |
26 | Events 27 |
28 |
29 |
30 |
2
31 |
32 | Time Off 33 |
34 |
35 |
-------------------------------------------------------------------------------- /adv-finished/src/js/jet-composites/demo-team-activities/viewModel.js: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright (c) 2015, 2017, Oracle and/or its affiliates. 3 | The Universal Permissive License (UPL), Version 1.0 4 | */ 5 | define( 6 | ['ojs/ojcore', 'knockout', 'data/data'], function (oj, ko, data) { 7 | 'use strict'; 8 | 9 | function ExampleComponentModel(context) { 10 | var self = this; 11 | self.personProfile = ko.observableArray([]); 12 | self.ready = ko.observable(false); 13 | self.averagePerformance = ko.observable(); 14 | self.averagePotential = ko.observable(); 15 | 16 | self.composite = context.element; 17 | //Example observable 18 | self.messageText = ko.observable('Hello from Example Component'); 19 | 20 | context.props.then(function (propertyMap) { 21 | //Store a reference to the properties for any later use 22 | self.properties = propertyMap; 23 | 24 | //Parse your component properties here 25 | 26 | }); 27 | 28 | data.fetchData('js/data/employee100.json').then(function (person) { 29 | self.personProfile(person); 30 | self.ready(true); 31 | self.formatAverages(); 32 | }).fail(function (error) { 33 | console.log('Error: ' + error.message); 34 | }); 35 | 36 | self.formatAverages = function () { 37 | self.averagePerformance(self.personProfile().groupAvgRating.toPrecision(2)); 38 | self.averagePotential(self.personProfile().groupAvgPotential.toPrecision(2)); 39 | }; 40 | 41 | }; 42 | 43 | //Lifecycle methods - uncomment and implement if necessary 44 | //ExampleComponentModel.prototype.activated = function(context){ 45 | //}; 46 | 47 | //ExampleComponentModel.prototype.attached = function(context){ 48 | //}; 49 | 50 | //ExampleComponentModel.prototype.bindingsApplied = function(context){ 51 | //}; 52 | 53 | //ExampleComponentModel.prototype.detached = function(context){ 54 | //}; 55 | 56 | return ExampleComponentModel; 57 | }); -------------------------------------------------------------------------------- /adv-finished/src/js/jet-composites/demo-team/README.md: -------------------------------------------------------------------------------- 1 | # ojet component template 2 | 3 | ## Usage 4 | Refer to the oj.Composite jsdoc 5 | http://www.oracle.com/webfolder/technetwork/jet/jsdocs/oj.Composite.html -------------------------------------------------------------------------------- /adv-finished/src/js/jet-composites/demo-team/component.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "demo-team", 3 | "displayName": "demo-team", 4 | "description": "Describe your component here", 5 | "version": "1.0.0", 6 | "jetVersion": ">=3.0.0", 7 | "properties": { 8 | "messagetext" : { 9 | "type": "string" 10 | }, 11 | "profile" : { 12 | "type": "any" 13 | } 14 | }, 15 | "methods": { 16 | 17 | }, 18 | "events": { 19 | 20 | }, 21 | "slots": { 22 | 23 | } 24 | } -------------------------------------------------------------------------------- /adv-finished/src/js/jet-composites/demo-team/loader.js: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright (c) 2015, 2017, Oracle and/or its affiliates. 3 | The Universal Permissive License (UPL), Version 1.0 4 | */ 5 | define(['ojs/ojcore', 'text!./view.html', './viewModel', 'text!./component.json', 'css!./styles', 'ojs/ojcomposite'], 6 | function(oj, view, viewModel, metadata) { 7 | oj.Composite.register('demo-team', { 8 | view: {inline: view}, 9 | viewModel: {inline: viewModel}, 10 | metadata: {inline: JSON.parse(metadata)} 11 | }); 12 | } 13 | ); -------------------------------------------------------------------------------- /adv-finished/src/js/jet-composites/demo-team/styles.css: -------------------------------------------------------------------------------- 1 | demo-team:not(.oj-complete){ 2 | visibility: hidden; 3 | } 4 | 5 | demo-team{ 6 | 7 | } -------------------------------------------------------------------------------- /adv-finished/src/js/jet-composites/demo-team/view.html: -------------------------------------------------------------------------------- 1 | 5 | 6 |
7 |

8 | My Organization 9 |

10 | 11 |
12 |
13 |
100
14 | Total
15 |
16 |
10
17 | Directs
18 |
19 |
Open Headcount
20 |
New Hires
21 |
Terminations
22 |
23 |
24 | 25 |
current quarter
26 |
-------------------------------------------------------------------------------- /adv-finished/src/js/jet-composites/demo-team/viewModel.js: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright (c) 2015, 2017, Oracle and/or its affiliates. 3 | The Universal Permissive License (UPL), Version 1.0 4 | */ 5 | define( 6 | ['ojs/ojcore', 'knockout', 'data/data'], function (oj, ko, data) { 7 | 'use strict'; 8 | 9 | function ExampleComponentModel(context) { 10 | var self = this; 11 | 12 | self.averagePerformance = ko.observable(); 13 | self.averagePotential = ko.observable(); 14 | self.ready = ko.observable(false); 15 | self.personProfile = ko.observableArray([]); 16 | 17 | self.composite = context.element; 18 | //Example observable 19 | self.messageText = ko.observable('Hello from Example Component'); 20 | 21 | context.props.then(function (propertyMap) { 22 | //Store a reference to the properties for any later use 23 | self.props = propertyMap; 24 | 25 | }); 26 | 27 | self.router = oj.Router.rootInstance; 28 | var converterFactory = oj.Validation.converterFactory('number'); 29 | self.percentConverter = converterFactory.createConverter({style: 'decimal', maximumFractionDigits: 0}); 30 | 31 | data.fetchData('js/data/employee100.json').then(function (person) { 32 | self.personProfile(person); 33 | self.ready(true); 34 | }).fail(function (error) { 35 | console.log('Error: ' + error.message); 36 | }); 37 | 38 | self.onEnterLoadPeople = function(){}; 39 | 40 | }; 41 | 42 | //Lifecycle methods - uncomment and implement if necessary 43 | //ExampleComponentModel.prototype.activated = function(context){ 44 | //}; 45 | 46 | //ExampleComponentModel.prototype.attached = function(context){ 47 | //}; 48 | 49 | //ExampleComponentModel.prototype.bindingsApplied = function(context){ 50 | //}; 51 | 52 | //ExampleComponentModel.prototype.detached = function(context){ 53 | //}; 54 | 55 | return ExampleComponentModel; 56 | }); -------------------------------------------------------------------------------- /adv-finished/src/js/main-release-paths.json: -------------------------------------------------------------------------------- 1 | { 2 | "knockout": "libs/knockout/knockout-3.4.0", 3 | "jquery": "libs/jquery/jquery-3.1.1.min", 4 | "jqueryui-amd": "libs/jquery/jqueryui-amd-1.12.0.min", 5 | "promise": "libs/es6-promise/es6-promise.min", 6 | "hammerjs": "libs/hammer/hammer-2.0.8.min", 7 | "ojdnd": "libs/dnd-polyfill/dnd-polyfill-1.0.0.min", 8 | "ojs": "libs/oj/v3.1.0/min", 9 | "ojL10n": "libs/oj/v3.1.0/ojL10n", 10 | "ojtranslations": "libs/oj/v3.1.0/resources", 11 | "text": "libs/require/text", 12 | "signals": "libs/js-signals/signals.min", 13 | "customElements": "libs/webcomponents/custom-elements.min", 14 | "proj4": "libs/proj4js/dist/proj4", 15 | "css": "libs/require-css/css.min" 16 | } -------------------------------------------------------------------------------- /adv-finished/src/js/main.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2014, 2017, Oracle and/or its affiliates. 3 | * The Universal Permissive License (UPL), Version 1.0 4 | */ 5 | 'use strict'; 6 | 7 | /* 8 | //injector:mainReleasePaths 9 | //endinjector 10 | */ 11 | 12 | 13 | /** 14 | * A top-level require call executed by the Application. 15 | * Although 'ojcore' and 'knockout' would be loaded in any case (they are specified as dependencies 16 | * by the modules themselves), we are listing them explicitly to get the references to the 'oj' and 'ko' 17 | * objects in the callback 18 | */ 19 | require(['ojs/ojcore', 'knockout', 'appController', 'ojs/ojknockout', 20 | 'ojs/ojmodule', 'ojs/ojrouter', 'ojs/ojnavigationlist', 'ojs/ojbutton', 'ojs/ojtoolbar'], 21 | function (oj, ko, app) { // this callback gets executed when all required modules are loaded 22 | 23 | $(function () { 24 | 25 | function init() { 26 | oj.Router.sync().then( 27 | function () { 28 | // Bind your ViewModel for the content of the whole page body. 29 | ko.applyBindings(app, document.getElementById('globalBody')); 30 | }, 31 | function (error) { 32 | oj.Logger.error('Error in root start: ' + error.message); 33 | } 34 | ); 35 | } 36 | 37 | // If running in a hybrid (e.g. Cordova) environment, we need to wait for the deviceready 38 | // event before executing any code that might interact with Cordova APIs or plugins. 39 | if ($(document.body).hasClass('oj-hybrid')) { 40 | document.addEventListener("deviceready", init); 41 | } else { 42 | init(); 43 | } 44 | 45 | }); 46 | 47 | } 48 | ); 49 | 50 | /** 51 | * Example of Require.js boostrap javascript using JET CDN 52 | */ 53 | 54 | 55 | function _getCDNPath(paths) { 56 | var cdnPath = "https://static.oracle.com/cdn/jet/"; 57 | var ojPath = "v4.1.0/default/js/"; 58 | var thirdpartyPath = "v4.1.0/3rdparty/"; 59 | var keys = Object.keys(paths); 60 | var newPaths = {}; 61 | function _isoj(key) { 62 | return (key.indexOf('oj') === 0 && key !== 'ojdnd'); 63 | } 64 | keys.forEach(function (key) { 65 | newPaths[key] = cdnPath + (_isoj(key) ? ojPath : thirdpartyPath) + paths[key]; 66 | }); 67 | return newPaths; 68 | } 69 | 70 | requirejs.config({ 71 | paths: _getCDNPath({ 72 | 'knockout': 'knockout/knockout-3.4.0.debug', 73 | 'jquery': 'jquery/jquery-3.1.1', 74 | 'jqueryui-amd': 'jquery/jqueryui-amd-1.12.0.min', 75 | 'promise': 'es6-promise/es6-promise.min', 76 | 'ojs': 'debug', 77 | 'ojL10n': 'ojL10n', 78 | 'ojtranslations': 'resources', 79 | 'signals': 'js-signals/signals.min', 80 | 'text': 'require/text', 81 | 'hammerjs': 'hammer/hammer-2.0.8.min', 82 | 'ojdnd': 'dnd-polyfill/dnd-polyfill-1.0.0.min', 83 | 'css': 'require-css/css', 84 | 'customElements': 'webcomponents/custom-elements.min' 85 | }), 86 | // Shim configurations for modules that do not expose AMD 87 | shim: { 88 | 'jquery': { 89 | exports: ['jQuery', '$'] 90 | } 91 | } 92 | }); 93 | 94 | 95 | /* 96 | Adding local libraries that are not available on the CDN 97 | */ 98 | 99 | requirejs.config( 100 | { 101 | baseUrl: 'js', 102 | 103 | // Path mappings for the logical module names 104 | paths: 105 | { 106 | 'socketio': 'libs/socketio-client/socket.io' 107 | } 108 | , 109 | // Shim configurations for modules that do not expose AMD 110 | shim: 111 | { 112 | 'socketio': { 113 | exports: 'io' 114 | } 115 | } 116 | } 117 | ); -------------------------------------------------------------------------------- /adv-finished/src/js/sockethandler.js: -------------------------------------------------------------------------------- 1 | var apiHost = window.location.hostname || 'localhost'; 2 | var apiPort = apiHost.match(/localhost/) ? ':3000' : ''; 3 | const socket = io(apiHost+":"+apiPort,{autoConnect: false}); 4 | 5 | function cb(err, timestamp){ 6 | if (err){ 7 | console.log('Subscriber Error: '+err); 8 | }else{ 9 | console.log('The server says: '+ timestamp); 10 | } 11 | }; 12 | 13 | function startConnection() { 14 | socket.connect(); 15 | }; 16 | 17 | function subscribeToTimer() { 18 | socket.on('timer', timestamp => cb(null, timestamp)); 19 | socket.emit('subscribeToTimer', 2000); 20 | } 21 | 22 | function subscribeToNotifications() { 23 | socket.on('notify', timestamp => cb(null, timestamp)); 24 | socket.emit('subscribeToNotifications', 2000); 25 | } 26 | 27 | function closeConnection(){ 28 | console.log('Connection id: '+socket.id+' closed'); 29 | socket.close() 30 | }; 31 | 32 | socket.on('connect', () => { 33 | console.log('Connection started with id: '+socket.id); 34 | }); 35 | 36 | socket.on('connect_error', (error) => { 37 | console.log('Connection Error: '+error); 38 | }); 39 | -------------------------------------------------------------------------------- /adv-finished/src/js/viewModels/dashboard.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2014, 2017, Oracle and/or its affiliates. 3 | * The Universal Permissive License (UPL), Version 1.0 4 | */ 5 | /* 6 | * Your dashboard ViewModel code goes here 7 | */ 8 | define( 9 | ['ojs/ojcore', 'knockout', 'data/data', 'ojs/ojchart', 10 | 'ojs/ojmasonrylayout', 11 | 'jet-composites/demo-team/loader', 12 | 'jet-composites/demo-about-me/loader', 13 | 'jet-composites/demo-attrition/loader', 14 | 'jet-composites/demo-comp-ratio/loader', 15 | 'jet-composites/demo-my-activities/loader', 16 | 'jet-composites/demo-notifications/loader', 17 | 'jet-composites/demo-comp/loader', 18 | 'jet-composites/demo-ratings/loader', 19 | 'jet-composites/demo-team-activities/loader', 20 | 'data/data'], 21 | (oj, ko, data) => { 22 | function DashboardViewModel() { 23 | const self = this; 24 | 25 | self.personProfile = ko.observableArray([]); 26 | self.avatarSrc = ko.observable(); 27 | 28 | data.fetchData('js/data/employee100.json').then((person) => { 29 | self.personProfile(person); 30 | if (self.personProfile().empId < 188) { 31 | self.avatarSrc(`css/images/people/${self.personProfile().empId}.png`); 32 | } else { 33 | self.avatarSrc('css/images/people/nopic.png'); 34 | } 35 | }).fail((error) => { 36 | console.log(`Error: ${error.message}`); 37 | }); 38 | 39 | self.averagePerformance = ko.observable(); 40 | self.averagePotential = ko.observable(); 41 | self.ready = ko.observable(false); 42 | self.personProfile = ko.observableArray([]); 43 | 44 | 45 | // Categories 46 | const categories = ['Initial', 'Qualification', 'Meeting', 'Proposal', 'Close']; 47 | self.highlightedCategoriesValue = ko.observableArray([]); 48 | 49 | /* chart data */ 50 | const barSeries = [{ name: categories[0], items: [42, 34] }, 51 | { name: categories[1], items: [55, 30] }, 52 | { name: categories[2], items: [36, 50] }, 53 | { name: categories[3], items: [22, 46] }, 54 | { name: categories[4], items: [22, 46] }]; 55 | 56 | const barGroups = ['Group A', 'Group B']; 57 | 58 | self.barSeriesValue = ko.observableArray(barSeries); 59 | self.barGroupsValue = ko.observableArray(barGroups); 60 | 61 | /* chart data */ 62 | const bubbleSeries = [{ name: categories[0], items: [{ x: 15, y: 25, z: 5 }, { x: 25, y: 30, z: 12 }, { x: 25, y: 45, z: 12 }] }, 63 | { name: categories[1], items: [{ x: 15, y: 15, z: 8 }, { x: 20, y: 35, z: 14 }, { x: 40, y: 55, z: 35 }] }, 64 | { name: categories[2], items: [{ x: 10, y: 10, z: 8 }, { x: 18, y: 55, z: 10 }, { x: 40, y: 50, z: 18 }] }, 65 | { name: categories[3], items: [{ x: 8, y: 20, z: 6 }, { x: 11, y: 30, z: 8 }, { x: 30, y: 40, z: 15 }] }, 66 | { name: categories[4], items: [{ x: 4, y: 17, z: 2 }, { x: 35, y: 10, z: 15 }, { x: 22, y: 22, z: 13 }] }]; 67 | 68 | const bubbleGroups = ['Group A', 'Group B', 'Group C']; 69 | 70 | 71 | this.bubbleSeriesValue = ko.observableArray(bubbleSeries); 72 | this.bubbleGroupsValue = ko.observableArray(bubbleGroups); 73 | 74 | self.loadData = function () { 75 | data.fetchData('js/data/employee100.json').then((person) => { 76 | self.personProfile(person); 77 | self.ready(true); 78 | self.formatAverages(); 79 | }).fail((error) => { 80 | console.log(`Error: ${error.message}`); 81 | }); 82 | }; 83 | 84 | self.formatAverages = function () { 85 | self.averagePerformance(self.personProfile().groupAvgRating.toPrecision(2)); 86 | self.averagePotential(self.personProfile().groupAvgPotential.toPrecision(2)); 87 | }; 88 | 89 | 90 | // Below are a subset of the ViewModel methods invoked by the ojModule binding 91 | // Please reference the ojModule jsDoc for additionaly available methods. 92 | 93 | /** 94 | * Optional ViewModel method invoked when this ViewModel is about to be 95 | * used for the View transition. The application can put data fetch logic 96 | * here that can return a Promise which will delay the handleAttached function 97 | * call below until the Promise is resolved. 98 | * @param {Object} info - An object with the following key-value pairs: 99 | * @param {Node} info.element - DOM element or where the binding is attached. 100 | * This may be a 'virtual' element (comment node). 101 | * @param {Function} info.valueAccessor - The binding's value accessor. 102 | * @return {Promise|undefined} - If the callback returns a Promise, 103 | * the next phase (attaching DOM) will be delayed until the promise is resolved 104 | */ 105 | self.handleActivated = function (info) { 106 | self.loadData(); 107 | }; 108 | 109 | /** 110 | * Optional ViewModel method invoked after the View is inserted into the 111 | * document DOM. The application can put logic that requires the DOM being 112 | * attached here. 113 | * @param {Object} info - An object with the following key-value pairs: 114 | * @param {Node} info.element - DOM element or where the binding is attached. This may be a 'virtual' element (comment node). 115 | * @param {Function} info.valueAccessor - The binding's value accessor. 116 | * @param {boolean} info.fromCache - A boolean indicating whether the module was retrieved from cache. 117 | */ 118 | self.handleAttached = function (info) { 119 | document.getElementById('AboutMe').addEventListener( 120 | 'demoAboutMeDrill', 121 | (event) => { 122 | const router = oj.Router.rootInstance; 123 | router.go('profile'); 124 | } 125 | ); 126 | }; 127 | 128 | 129 | /** 130 | * Optional ViewModel method invoked after the bindings are applied on this View. 131 | * If the current View is retrieved from cache, the bindings will not be re-applied 132 | * and this callback will not be invoked. 133 | * @param {Object} info - An object with the following key-value pairs: 134 | * @param {Node} info.element - DOM element or where the binding is attached. This may be a 'virtual' element (comment node). 135 | * @param {Function} info.valueAccessor - The binding's value accessor. 136 | */ 137 | self.handleBindingsApplied = function (info) { 138 | // Implement if needed 139 | }; 140 | 141 | /* 142 | * Optional ViewModel method invoked after the View is removed from the 143 | * document DOM. 144 | * @param {Object} info - An object with the following key-value pairs: 145 | * @param {Node} info.element - DOM element or where the binding is attached. This may be a 'virtual' element (comment node). 146 | * @param {Function} info.valueAccessor - The binding's value accessor. 147 | * @param {Array} info.cachedNodes - An Array containing cached nodes for the View if the cache is enabled. 148 | */ 149 | self.handleDetached = function (info) { 150 | // Implement if needed 151 | }; 152 | } 153 | 154 | /* 155 | * Returns a constructor for the ViewModel so that the ViewModel is constrcuted 156 | * each time the view is displayed. Return an instance of the ViewModel if 157 | * only one instance of the ViewModel is needed. 158 | */ 159 | return new DashboardViewModel(); 160 | } 161 | ); 162 | -------------------------------------------------------------------------------- /adv-finished/src/js/viewModels/profile.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2014, 2017, Oracle and/or its affiliates. 3 | * The Universal Permissive License (UPL), Version 1.0 4 | */ 5 | /* 6 | * Your customer ViewModel code goes here 7 | */ 8 | define(['ojs/ojcore', 'knockout', 'jquery', 'data/data', 'ojs/ojvalidation', 'ojs/ojtagcloud', 'ojs/ojchart'], 9 | function (oj, ko, $, jsonData) { 10 | 11 | 12 | 13 | 14 | function EmployeeViewModel() { 15 | var self = this; 16 | self.firstTime = true; 17 | self.data = ko.observable(); 18 | self.personProfile = ko.observableArray([]); 19 | self.employeePhoto = ko.observable(); 20 | self.empId = ko.observable(''); 21 | 22 | function getEmpURL(id) { 23 | var url; 24 | if (id) { 25 | url = "js/data/employee" + id + ".json"; 26 | } else { 27 | url = "js/data/employee100.json"; 28 | } 29 | return url; 30 | } 31 | 32 | // canEnter requires a promise that resolve as true or false 33 | self.loadData = function (id) { 34 | return new Promise(function (resolve, reject) { 35 | jsonData.fetchData(getEmpURL(id)).then(function (person) { 36 | self.personProfile(person); 37 | resolve(true); 38 | }).fail(function (error) { 39 | console.log('Error: ' + error.message); 40 | resolve(false); 41 | }); 42 | }); 43 | }; 44 | 45 | self.getPhoto = function (id) { 46 | var src; 47 | // We only have images for employees below 188 for now. Use the nopic avatar for those above 18 48 | if (id < 188) { 49 | src = 'css/images/people/' + id + '.png'; 50 | } else { 51 | src = 'css/images/people/nopic.png'; 52 | } 53 | return src; 54 | }; 55 | 56 | self.getEmail = function () { 57 | return "mailto:" + self.personProfile().email + '@example.net'; 58 | }; 59 | 60 | self.getHireDate = function () { 61 | var hireDate = self.personProfile().hireDate; 62 | var dateOptions = { formatStyle: 'date', dateFormat: 'medium' }; 63 | var dateConverter = oj.Validation.converterFactory("datetime").createConverter(dateOptions); 64 | var startDate = oj.IntlConverterUtils.dateToLocalIso(moment(hireDate).toDate()); 65 | hireDate = dateConverter.format(startDate); 66 | return hireDate; 67 | }; 68 | 69 | self.formatAddress = function () { 70 | var street = self.personProfile().address; 71 | var city = self.personProfile().city; 72 | var state = self.personProfile().state; 73 | var postal = self.personProfile().postal; 74 | var country = self.personProfile().country; 75 | return street + '
' + city + '
' + state + ' ' + postal + ' ' + country; 76 | }; 77 | 78 | 79 | // Below are a subset of the ViewModel methods invoked by the ojModule binding 80 | // Please reference the ojModule jsDoc for additionaly available methods. 81 | 82 | /** 83 | * Optional ViewModel method invoked when this ViewModel is about to be 84 | * used for the View transition. The application can put data fetch logic 85 | * here that can return a Promise which will delay the handleAttached function 86 | * call below until the Promise is resolved. 87 | * @param {Object} info - An object with the following key-value pairs: 88 | * @param {Node} info.element - DOM element or where the binding is attached. This may be a 'virtual' element (comment node). 89 | * @param {Function} info.valueAccessor - The binding's value accessor. 90 | * @return {Promise|undefined} - If the callback returns a Promise, the next phase (attaching DOM) will be delayed until 91 | * the promise is resolved 92 | */ 93 | self.handleActivated = function (info) { 94 | // Implement if needed 95 | self.loadData(); 96 | }; 97 | 98 | /** 99 | * Optional ViewModel method invoked after the View is inserted into the 100 | * document DOM. The application can put logic that requires the DOM being 101 | * attached here. 102 | * @param {Object} info - An object with the following key-value pairs: 103 | * @param {Node} info.element - DOM element or where the binding is attached. This may be a 'virtual' element (comment node). 104 | * @param {Function} info.valueAccessor - The binding's value accessor. 105 | * @param {boolean} info.fromCache - A boolean indicating whether the module was retrieved from cache. 106 | */ 107 | self.handleAttached = function (info) { 108 | 109 | }; 110 | 111 | 112 | /** 113 | * Optional ViewModel method invoked after the bindings are applied on this View. 114 | * If the current View is retrieved from cache, the bindings will not be re-applied 115 | * and this callback will not be invoked. 116 | * @param {Object} info - An object with the following key-value pairs: 117 | * @param {Node} info.element - DOM element or where the binding is attached. This may be a 'virtual' element (comment node). 118 | * @param {Function} info.valueAccessor - The binding's value accessor. 119 | */ 120 | self.handleBindingsApplied = function (info) { 121 | // Implement if needed 122 | }; 123 | 124 | /* 125 | * Optional ViewModel method invoked after the View is removed from the 126 | * document DOM. 127 | * @param {Object} info - An object with the following key-value pairs: 128 | * @param {Node} info.element - DOM element or where the binding is attached. This may be a 'virtual' element (comment node). 129 | * @param {Function} info.valueAccessor - The binding's value accessor. 130 | * @param {Array} info.cachedNodes - An Array containing cached nodes for the View if the cache is enabled. 131 | */ 132 | self.handleDetached = function (info) { 133 | // Implement if needed 134 | }; 135 | } 136 | 137 | /* 138 | * Returns a constructor for the ViewModel so that the ViewModel is constrcuted 139 | * each time the view is displayed. Return an instance of the ViewModel if 140 | * only one instance of the ViewModel is needed. 141 | */ 142 | return new EmployeeViewModel(); 143 | } 144 | ); 145 | -------------------------------------------------------------------------------- /adv-finished/src/js/viewModels/websockets.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2014, 2017, Oracle and/or its affiliates. 3 | * The Universal Permissive License (UPL), Version 1.0 4 | */ 5 | /* 6 | * Your about ViewModel code goes here 7 | */ 8 | define(['ojs/ojcore', 'knockout', 'jquery','socketio','ojs/ojgauge','ojs/ojswitch'], 9 | function(oj, ko, $, io) { 10 | 11 | function AboutViewModel() { 12 | var self = this; 13 | self.thresholdValues = [{max: 15, color:'#00CC00'}, {max: 30, color:'#FDEF22'}, {color:'#FF0000'}]; 14 | self.value = ko.observable(5); 15 | self.isChecked = ko.observable(); 16 | self.status = ko.observable('Not connected'); 17 | 18 | var apiHost = "https://websocketservice2-paas124.apaas.em2.oraclecloud.com" //window.location.hostname || 'localhost'; 19 | var apiPort = '' // apiHost.match(/localhost/) ? ':3000' : ''; 20 | const socket = io(apiHost+":"+apiPort,{autoConnect: false}); 21 | 22 | var converterFactory = oj.Validation.converterFactory('number'); 23 | self.customConverter = {rendered:'on', converter: converterFactory.createConverter({style: 'decimal', decimalFormat: 'standard'})}; 24 | 25 | function cb(err, value){ 26 | if (err){ 27 | console.log('Subscriber Error: '+err); 28 | self.status('Connection Error: '+err); 29 | }else{ 30 | console.log('The server says: '+ value); 31 | self.value(value); 32 | 33 | } 34 | }; 35 | 36 | self.toggleConnection = ko.pureComputed(function(){ 37 | self.isChecked() ? self.startConnection() : self.closeConnection(); 38 | }) 39 | 40 | self.startConnection = function() { 41 | socket.connect(); 42 | }; 43 | 44 | self.subscribeToTimer = function() { 45 | socket.on('timer', value => cb(null, value)); 46 | socket.emit('subscribeToTimer', 2000); 47 | } 48 | 49 | self.closeConnection = function(){ 50 | if (socket.id !== undefined){ 51 | console.log('Connection id: '+socket.id+' closed'); 52 | self.status('Connection id: '+socket.id+' closed'); 53 | socket.close() 54 | } 55 | }; 56 | 57 | socket.on('connect', () => { 58 | console.log('Connection started with id: '+socket.id); 59 | self.status('Connection started with id: '+socket.id); 60 | }); 61 | 62 | socket.on('connect_error', (error) => { 63 | console.log('Connection Error: '+error); 64 | self.status('Connection Error: '+error); 65 | }); 66 | 67 | 68 | 69 | // Below are a subset of the ViewModel methods invoked by the ojModule binding 70 | // Please reference the ojModule jsDoc for additionaly available methods. 71 | 72 | /** 73 | * Optional ViewModel method invoked when this ViewModel is about to be 74 | * used for the View transition. The application can put data fetch logic 75 | * here that can return a Promise which will delay the handleAttached function 76 | * call below until the Promise is resolved. 77 | * @param {Object} info - An object with the following key-value pairs: 78 | * @param {Node} info.element - DOM element or where the binding is attached. This may be a 'virtual' element (comment node). 79 | * @param {Function} info.valueAccessor - The binding's value accessor. 80 | * @return {Promise|undefined} - If the callback returns a Promise, the next phase (attaching DOM) will be delayed until 81 | * the promise is resolved 82 | */ 83 | self.handleActivated = function(info) { 84 | // Implement if needed 85 | }; 86 | 87 | /** 88 | * Optional ViewModel method invoked after the View is inserted into the 89 | * document DOM. The application can put logic that requires the DOM being 90 | * attached here. 91 | * @param {Object} info - An object with the following key-value pairs: 92 | * @param {Node} info.element - DOM element or where the binding is attached. This may be a 'virtual' element (comment node). 93 | * @param {Function} info.valueAccessor - The binding's value accessor. 94 | * @param {boolean} info.fromCache - A boolean indicating whether the module was retrieved from cache. 95 | */ 96 | self.handleAttached = function(info) { 97 | // Implement if needed 98 | }; 99 | 100 | 101 | /** 102 | * Optional ViewModel method invoked after the bindings are applied on this View. 103 | * If the current View is retrieved from cache, the bindings will not be re-applied 104 | * and this callback will not be invoked. 105 | * @param {Object} info - An object with the following key-value pairs: 106 | * @param {Node} info.element - DOM element or where the binding is attached. This may be a 'virtual' element (comment node). 107 | * @param {Function} info.valueAccessor - The binding's value accessor. 108 | */ 109 | self.handleBindingsApplied = function(info) { 110 | // Implement if needed 111 | }; 112 | 113 | /* 114 | * Optional ViewModel method invoked after the View is removed from the 115 | * document DOM. 116 | * @param {Object} info - An object with the following key-value pairs: 117 | * @param {Node} info.element - DOM element or where the binding is attached. This may be a 'virtual' element (comment node). 118 | * @param {Function} info.valueAccessor - The binding's value accessor. 119 | * @param {Array} info.cachedNodes - An Array containing cached nodes for the View if the cache is enabled. 120 | */ 121 | self.handleDetached = function(info) { 122 | // Implement if needed 123 | }; 124 | } 125 | 126 | /* 127 | * Returns a constructor for the ViewModel so that the ViewModel is constrcuted 128 | * each time the view is displayed. Return an instance of the ViewModel if 129 | * only one instance of the ViewModel is needed. 130 | */ 131 | return new AboutViewModel(); 132 | } 133 | ); 134 | -------------------------------------------------------------------------------- /adv-finished/src/js/views/dashboard.html: -------------------------------------------------------------------------------- 1 | 5 |
6 |

Dashboard Content Area

7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 |
-------------------------------------------------------------------------------- /adv-finished/src/js/views/employees.html: -------------------------------------------------------------------------------- 1 | 5 |
6 |

Employee List

7 |
8 |
9 | 15 | 16 |
17 | (Click on an Employee Name to edit it) 18 |
19 |
20 | 21 |
22 |
23 |
24 | 25 |
26 | 27 |
28 |
29 |

New Employee

30 |
31 | Employee Number 32 | 33 | Employee Name 34 | 35 |
36 | Add Employee 37 |
38 |
39 |
40 |
41 | 60 |
61 |
62 | 75 |
-------------------------------------------------------------------------------- /adv-finished/src/js/views/profile.html: -------------------------------------------------------------------------------- 1 | 5 |
6 |

My Profile

7 |
8 |
9 |
10 | 12 |
13 |
14 |

15 |

16 |

17 |
18 |
19 |
20 |
21 | phone 22 |
23 |
24 |
25 | mobile phone 26 |
27 |
28 |
29 | email 30 |
31 | 32 |
33 |
34 |
35 |
36 |
37 | Twitter 38 |
39 |
40 |
41 | Facebook 42 |
43 |
44 |
45 | LinkedIn 46 |
47 |
48 |
49 |
50 |
51 |
52 |
-------------------------------------------------------------------------------- /adv-finished/src/js/views/websockets.html: -------------------------------------------------------------------------------- 1 | 5 |
6 |

WebSocket Example

7 |
8 |

Below is an example of starting a connection to a WebSocket server, making a request from that service, and then closing the connection. 9 | The WebSocket service used in this example simply returns a random number at an interval that can be set by passing a value to the service request.

10 |

Start by toggling the WebSocket Connection on. 11 | Then request the timer to start with the Request Service button. 12 | To stop the updates, toggle the connection closed.

13 |

You can see the code for this example in the /js/views/websockets.html and /js/viewModels/websockets.js files. 14 | Opening the browser console window will show you the connection start, output, and connection close messages.

15 |
16 | 17 | 18 | WebSocket Connection 19 | 20 | 21 | Request Service 22 | 23 | 24 |
25 |
26 | 38 | 39 |
40 |
41 | Socket status: 42 | 43 |
44 |
45 |
46 | -------------------------------------------------------------------------------- /adv-start/README.md: -------------------------------------------------------------------------------- 1 | # Advanced Hands-On-Lab 2018 2 | 3 | ## Currently Under Development, please keep watching this page for more details. 4 | 5 | ### Prerequisites 6 | * Please complete the [beginners HOL](/beginners-start) before attempting this version. 7 | * All pre-reqs defined in the [root of this repository](/README.md) apply to this version as well. 8 | 9 | -------------------------------------------------------------------------------- /adv-start/images/empty.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/adv-start/images/empty.txt -------------------------------------------------------------------------------- /beginners-finished/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/* 2 | /web 3 | /themes 4 | /nbproject/* 5 | /.vscode/* 6 | 7 | /hybrid/platforms 8 | /hybrid/www/* 9 | 10 | !hybrid/plugins 11 | hybrid/plugins/* 12 | !hybrid/plugins/fetch.json 13 | 14 | .DS_Store 15 | Thumbs.db -------------------------------------------------------------------------------- /beginners-finished/Gruntfile.js: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright (c) 2015, 2017, Oracle and/or its affiliates. 3 | The Universal Permissive License (UPL), Version 1.0 4 | */ 5 | 'use strict'; 6 | 7 | var path = require('path'); 8 | 9 | module.exports = function(grunt) { 10 | 11 | require('load-grunt-config')(grunt, { 12 | configPath: path.join(process.cwd(), 'scripts/grunt/config') 13 | }); 14 | 15 | grunt.loadNpmTasks("@oracle/grunt-oraclejet"); 16 | 17 | grunt.registerTask("build", "Public task. Calls oraclejet-build to build the oraclejet application. Can be customized with additional build tasks.", function (buildType) { 18 | grunt.task.run([`oraclejet-build:${buildType}`]); 19 | }); 20 | 21 | grunt.registerTask("serve", "Public task. Calls oraclejet-serve to serve the oraclejet application. Can be customized with additional serve tasks.", function (buildType) { 22 | grunt.task.run([`oraclejet-serve:${buildType}`]); 23 | }); 24 | }; 25 | 26 | -------------------------------------------------------------------------------- /beginners-finished/README.md: -------------------------------------------------------------------------------- 1 | ### Prerequisites 2 | * Node 4+ (preferably the LTS release) 3 | * If running on a Mac, you will need to include "sudo" in front of all global npm commands shown in the lab 4 | * Oracle JET CLI tooling installed globally. Follow the [README](../README.md) steps at the root of this repository for how to install. 5 | 6 | 7 | >**NOTE** 8 | NPM v5 has known bugs that will cause the JET CLI tool to fail on installation. Make sure you are on an earlier version of NPM than 5.x 9 | To check your NPM version, type: `npm --version` 10 | 11 | 12 | ### Installation 13 | Clone the project and run the following command from the root of the project folder: 14 | 15 | ``` 16 | npm install 17 | ojet serve 18 | ``` 19 | The `ojet serve` command will build and run the application in your system default browser 20 | 21 | For a step by step guide on how to build this project from scratch, follow the [Beginners Hands On Lab](../beginners-start) 22 | -------------------------------------------------------------------------------- /beginners-finished/oraclejetconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "paths": { 3 | "source": { 4 | "common": "src", 5 | "web": "src-web", 6 | "hybrid": "src-hybrid", 7 | "javascript": "js", 8 | "styles": "css", 9 | "themes": "themes", 10 | "tests": "tests" 11 | }, 12 | "staging": { 13 | "web": "web", 14 | "hybrid": "hybrid", 15 | "themes": "themes" 16 | } 17 | }, 18 | "defaultBrowser": "chrome", 19 | "generatorVersion": "4.1.0" 20 | } 21 | -------------------------------------------------------------------------------- /beginners-finished/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Oracle_JET_2017_HOL_for_Beginners", 3 | "version": "1.0.0", 4 | "description": "An Oracle JavaScript Extension Toolkit(JET) web app", 5 | "dependencies": { 6 | "@oracle/oraclejet": "^4.1.0" 7 | }, 8 | "devDependencies": { 9 | "grunt": "^1.0.1", 10 | "@oracle/grunt-oraclejet": "^4.1.0", 11 | "load-grunt-config": "0.19.2", 12 | "qunit-reporter-junit": "^1.1.1", 13 | "qunitjs": "^2.3.3" 14 | }, 15 | "engines": { 16 | "node": ">=5" 17 | }, 18 | "private": true 19 | } 20 | -------------------------------------------------------------------------------- /beginners-finished/scripts/config/oraclejet-build.js: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright (c) 2015, 2017, Oracle and/or its affiliates. 3 | The Universal Permissive License (UPL), Version 1.0 4 | */ 5 | 'use strict'; 6 | /** 7 | * # oraclejet-build.js 8 | * This script allows users to configure and customize the grunt build tasks. 9 | * Configurable tasks include: 10 | * copySrcToStaging 11 | * copyCustomLibsToStaging 12 | * injectTheme 13 | * injectPaths 14 | * uglify 15 | * requireJs 16 | * sass 17 | * To configure a task, uncomment the corresponding sections below, and pass in your configurations. 18 | * Any options will be merged with default configuration found in node_modules/@oracle/oraclejet-tooling/lib/defaultconfig.js 19 | * Any fileList options will replace the corresponding option defined by the default configuration in its entirety - ie. arrays are not merged. 20 | */ 21 | 22 | module.exports = function () { 23 | return { 24 | 25 | /** 26 | * # copyCustomLibsToStaging 27 | * This task copies any custom libraries that are not provided by JET to staging directory. 28 | * This task supports a single option: fileList. The fileList option defines an array of file objects. 29 | * Each file object contains the following properties: 30 | * cwd, current working directory 31 | * dest, destination path 32 | * src, array of source file patterns 33 | * rename, function to return the full path of desired destination 34 | * If a fileList value is specified, it completely replaces the default fileList value defined by JET 35 | * Example: {cwd: 'app', src: ['**', '!test.js'], dest: 'staging', rename: function (dest, file) {return renamed path}} 36 | */ 37 | // copyCustomLibsToStaging: { 38 | // fileList: [ 39 | // { 40 | // cwd:'node_modules/oraclejet/', 41 | // src: ['*'], 42 | // dest: 'web/js/libs/oraclejet' 43 | // } 44 | // ] 45 | // } 46 | 47 | /** 48 | * # copySrcToStaging 49 | * This task copies all source files and libraries to staging directory. 50 | * This task supports a single option: fileList. The fileList option defines an array of file objects. 51 | * See descriptions and example in copyCustomLibsToStaging for configuring the fileList. 52 | */ 53 | // copySrcToStaging: { 54 | // fileList: [], 55 | // }, 56 | 57 | /** 58 | * # injectTheme 59 | * This task injects css stylesheet links for the current theme into index.html using the injection start and end markers defined below. 60 | */ 61 | // injectTheme: { 62 | // startTag: '', 63 | // endTag: '' 64 | // } 65 | 66 | /** 67 | * # injectPaths 68 | * Configuration for path injection during build in release mode 69 | * This task reads the release paths from the mainReleasePaths json file and injects the path configuration in main.js when run in release mode. 70 | */ 71 | // injectPaths: paths => ({ 72 | // startTag: '//injector:mainReleasePaths', 73 | // endTag: '//endinjector', 74 | // mainJs: 'path to mainjs', 75 | // destMainJs: 'path to the inject destination', 76 | // mainReleasePaths: 'path to the main-release-paths.json' 77 | // }), 78 | 79 | /** 80 | * # uglify 81 | * This task minifies source files and libraries that don't have minified distributions. 82 | * It runs only when build in release mode. Support input of fileList that contains an array of file objects. 83 | * See the example in copyCustomLibsToStaging for configuring the fileList. 84 | * See detailed uglify options at https://github.com/mishoo/UglifyJS 85 | */ 86 | // uglify: { 87 | // fileList: [{}], 88 | // options: {} 89 | // }, 90 | 91 | /** 92 | * # requireJs 93 | * This task runs requirejs optimizer to bundle all scripts in to a large minified main.js for release. 94 | * It runs only when build in release mode. 95 | * The task mirrors the configuration in this link https://github.com/gruntjs/grunt-contrib-requirejs 96 | */ 97 | // requireJs: { 98 | // baseUrl: 'path to the js directory in staging area', 99 | // name: 'the main.js file name', 100 | // mainConfigFile: `the main configuration file`, 101 | // optimize: 'option for optimize', 102 | // out: 'output file path' 103 | // }, 104 | 105 | /** 106 | * # sass 107 | * This task runs sass compile for scss files. 108 | * It takes a fileList as input, see copyCustomLibsToStaging section for examples of fileList 109 | * See detailed node sass options available here https://github.com/sass/node-sass 110 | */ 111 | // sass: { 112 | // fileList: [], 113 | // options: {} 114 | // }, 115 | 116 | /** 117 | * This is the web specific configuration. You can specify configurations targeted only for web apps. 118 | * The web specific configurations will override the general configuration. 119 | */ 120 | web: { 121 | // copyCustomLibsToStaging: { 122 | // fileList: [ 123 | // { 124 | // cwd:'node_modules/oraclejet/', 125 | // src: ['*'], 126 | // dest: 'web/js/libs/oraclejet' 127 | // } 128 | // ] 129 | // } 130 | }, 131 | 132 | /** 133 | * This is the hybrid specific configuration. You can specify configurations targeted only hybrid apps. 134 | * The hybrid specific configurations will override the general configuration. 135 | */ 136 | hybrid: { 137 | // copyCustomLibsToStaging: { 138 | // fileList: [ 139 | // { 140 | // cwd:'node_modules/oraclejet/', 141 | // src: ['*'], 142 | // dest: 'hybrid/www/js/libs/oraclejet' 143 | // } 144 | // ] 145 | // } 146 | } 147 | }; 148 | }; 149 | -------------------------------------------------------------------------------- /beginners-finished/scripts/config/oraclejet-serve.js: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright (c) 2015, 2017, Oracle and/or its affiliates. 3 | The Universal Permissive License (UPL), Version 1.0 4 | */ 5 | 'use strict'; 6 | /** 7 | * # oraclejet-serve.js 8 | * This script allows users to configure and customize the grunt serve tasks. 9 | * Configurable tasks: connect, watch. 10 | * To configure a task, uncomment the corresponding sections below, and pass in your configurations. 11 | * Any options will be merged with default configuration found in node_modules/@oracle/oraclejet-tooling/lib/defaultconfig.js 12 | * Any fileList will replace the default configuration. 13 | */ 14 | 15 | module.exports = function () { 16 | return { 17 | /** 18 | * # watch 19 | * This task watches a set of files and defines a series of customizable tasks if a change is detected. 20 | * Within the watch task config, by default there are three targets, sourceFiles, sass, themes. 21 | * Users are encouraged to edit or add their own watch targets, be careful if rewrite the three default targets. 22 | * Within each watch target, users can specify three properties. 23 | * 1. The files entry takes a list of glob patterns that identifies the set of files to watch 24 | * 2. The options.livereload specifies a boolean that indicates whether the browser should reload when files in this target are modified. 25 | * 3. The options.tasks property specifies custom commands to run. 'compileSass' and 'copyThemes' are reserved internal tasks. 26 | * Example commands: ['grunt copy', 'mocha test]. Once a change is detected, it will run grunt copy followed by mocha test 27 | * once the custom tasks completed, tooling will reload the browser if liverealod is set to true, then resume watching 28 | */ 29 | // // Sub task watch default options 30 | // watch: { 31 | // sourceFiles: 32 | // { 33 | // files: [], 34 | // options: { 35 | // livereload: true 36 | // } 37 | // }, 38 | 39 | // sass: { 40 | // files: [], 41 | // commands: ['compileSass'] 42 | // }, 43 | 44 | // themes: { 45 | // files: [], 46 | // options: { 47 | // livereload: true 48 | // }, 49 | // commands: ['copyThemes'] 50 | // }, 51 | // } 52 | 53 | /** 54 | * This is the web specific configuration. You can specify configurations targeted only for web apps. 55 | * The web specific configurations will override the general configuration. 56 | */ 57 | web: { 58 | /** 59 | * # connect 60 | * This task launches a web server for web App, does not work for hybrid App. 61 | * Support five connect options: 62 | * port, port number, default 8000 63 | * hostname, a string of the domain name, default localhost 64 | * livereload, a boolean for livereload, default true in dev mode, false in release mode (overwritten when ) 65 | * open, a blooean for wheather to launch browser, default to true 66 | * base, a string of the target directory to be served, default to the staging area 67 | */ 68 | // connect: { 69 | // options: {} 70 | // }, 71 | }, 72 | 73 | /** 74 | * This is the hybrid specific configuration. You can specify configurations targeted only for hybrid apps. 75 | * The hybrid specific configurations will override the general configuration. 76 | */ 77 | hybrid: { 78 | } 79 | }; 80 | }; 81 | -------------------------------------------------------------------------------- /beginners-finished/scripts/grunt/config/oraclejet-build.js: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright (c) 2015, 2017, Oracle and/or its affiliates. 3 | The Universal Permissive License (UPL), Version 1.0 4 | */ 5 | /** 6 | * # oraclejet-build.js 7 | * This script allows users to configure and customize the grunt build tasks. 8 | * Configurable tasks include: 9 | * copySrcToStaging 10 | * copyCustomLibsToStaging 11 | * injectTheme 12 | * injectPaths 13 | * uglify 14 | * requireJs 15 | * sass 16 | * To configure a task, uncomment the corresponding sections below, and pass in your configurations. 17 | * Any options will be merged with default configuration found in node_modules/oraclejet-tooling/lib/defaultconfig.js 18 | * Any fileList options will replace the corresponding option defined by the default configuration in its entirety - ie. arrays are not merged. 19 | */ 20 | 21 | module.exports = function (grunt) { 22 | return { 23 | 24 | /** 25 | * # copyCustomLibsToStaging 26 | * This task copies any custom libraries that are not provided by JET to staging directory. 27 | * This task supports a single option: fileList. The fileList option defines an array of file objects. 28 | * Each file object contains the following properties: 29 | * cwd, current working directory 30 | * dest, destination path 31 | * src, array of source file patterns 32 | * rename, function to return the full path of desired destination 33 | * If a fileList value is specified, it completely replaces the default fileList value defined by JET 34 | * Example: {cwd: 'app', src: ['**', '!test.js'], dest: 'staging', rename: function (dest, file) {return renamed path}} 35 | */ 36 | // copyCustomLibsToStaging: { 37 | // fileList: [] 38 | // }, 39 | 40 | /** 41 | * # copySrcToStaging 42 | * This task copies all source files and libraries to staging directory. 43 | * This task supports a single option: fileList. The fileList option defines an array of file objects. 44 | * See descriptions and example in copyCustomLibsToStaging for configuring the fileList. 45 | */ 46 | // copySrcToStaging: { 47 | // fileList: [], 48 | // }, 49 | 50 | /** 51 | * # injectTheme 52 | * This task injects css stylesheet links for the current theme into index.html using the injection start and end markers defined below. 53 | */ 54 | // injectTheme: { 55 | // startTag: '', 56 | // endTag: '' 57 | // } 58 | 59 | /** 60 | * # injectPaths 61 | * Configuration for path injection during build in release mode 62 | * This task reads the release paths from the mainReleasePaths json file and injects the path configuration in main.js when run in release mode. 63 | */ 64 | // injectPaths: paths => ({ 65 | // startTag: '//injector:mainReleasePaths', 66 | // endTag: '//endinjector', 67 | // mainJs: 'path to mainjs', 68 | // destMainJs: 'path to the inject destination', 69 | // mainReleasePaths: 'path to the main-release-paths.json' 70 | // }), 71 | 72 | /** 73 | * # uglify 74 | * This task minifies source files and libraries that don't have minified distributions. 75 | * It runs only when build in release mode. Support input of fileList that contains an array of file objects. 76 | * See the example in copyCustomLibsToStaging for configuring the fileList. 77 | * See detailed uglify options at https://github.com/mishoo/UglifyJS 78 | */ 79 | // uglify: { 80 | // fileList: [{}], 81 | // options: {} 82 | // }, 83 | 84 | /** 85 | * # requireJs 86 | * This task runs requirejs optimizer to bundle all scripts in to a large minified main.js for release. 87 | * It runs only when build in release mode. 88 | * The task mirrors the configuration in this link https://github.com/gruntjs/grunt-contrib-requirejs 89 | */ 90 | // requireJs: { 91 | // baseUrl: 'path to the js directory in staging area', 92 | // name: 'the main.js file name', 93 | // mainConfigFile: `the main configuration file`, 94 | // optimize: 'option for optimize', 95 | // out: 'output file path' 96 | // }, 97 | 98 | /** 99 | * # sass 100 | * This task runs sass compile for scss files. 101 | * It takes a fileList as input, see copyCustomLibsToStaging section for examples of fileList 102 | * See detailed node sass options available here https://github.com/sass/node-sass 103 | */ 104 | // sass: { 105 | // fileList: [], 106 | // options: {} 107 | // }, 108 | 109 | /** 110 | * This is the web specific configuration. You can specify configurations targeted only for web apps. 111 | * The web specific configurations will override the general configuration. 112 | */ 113 | web: { 114 | 115 | }, 116 | 117 | /** 118 | * This is the hybrid specific configuration. You can specify configurations targeted only hybrid apps. 119 | * The hybrid specific configurations will override the general configuration. 120 | */ 121 | hybrid: { 122 | 123 | } 124 | }; 125 | }; 126 | -------------------------------------------------------------------------------- /beginners-finished/scripts/grunt/config/oraclejet-serve.js: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright (c) 2015, 2017, Oracle and/or its affiliates. 3 | The Universal Permissive License (UPL), Version 1.0 4 | */ 5 | /** 6 | * # oraclejet-serve.js 7 | * This script allows users to configure and customize the grunt serve tasks. 8 | * Configurable tasks: connect, watch. 9 | * To configure a task, uncomment the corresponding sections below, and pass in your configurations. 10 | * Any options will be merged with default configuration found in node_modules/oraclejet-tooling/lib/defaultconfig.js 11 | * Any fileList will replace the default configuration. 12 | */ 13 | 14 | module.exports = function () { 15 | return { 16 | /** 17 | * # watch 18 | * This task watches a set of files and defines a series of customizable tasks if a change is detected. 19 | * Within the watch task config, by default there are three targets, sourceFiles, sass, themes. 20 | * Users are encouraged to edit or add their own watch targets, be careful if rewrite the three default targets. 21 | * Within each watch target, users can specify three properties. 22 | * 1. The files entry takes a list of glob patterns that identifies the set of files to watch 23 | * 2. The options.livereload specifies a boolean that indicates whether the browser should reload when files in this target are modified. 24 | * 3. The options.tasks property specifies custom commands to run. 'compileSass' and 'copyThemes' are reserved internal tasks. 25 | * Example commands: ['grunt copy', 'mocha test]. Once a change is detected, it will run grunt copy followed by mocha test 26 | * once the custom tasks completed, tooling will reload the browser if liverealod is set to true, then resume watching 27 | */ 28 | // // Sub task watch default options 29 | // watch: { 30 | // sourceFiles: 31 | // { 32 | // files: [], 33 | // options: { 34 | // livereload: true 35 | // } 36 | // }, 37 | 38 | // sass: { 39 | // files: [], 40 | // commands: ['compileSass'] 41 | // }, 42 | 43 | // themes: { 44 | // files: [], 45 | // options: { 46 | // livereload: true 47 | // }, 48 | // commands: ['copyThemes'] 49 | // }, 50 | // } 51 | 52 | /** 53 | * This is the web specific configuration. You can specify configurations targeted only for web apps. 54 | * The web specific configurations will override the general configuration. 55 | */ 56 | web: { 57 | /** 58 | * # connect 59 | * This task launches a web server for web App, does not work for hybrid App. 60 | * Support five connect options: 61 | * port, port number, default 8000 62 | * hostname, a string of the domain name, default localhost 63 | * livereload, a boolean for livereload, default true in dev mode, false in release mode (overwritten when ) 64 | * open, a blooean for wheather to launch browser, default to true 65 | * base, a string of the target directory to be served, default to the staging area 66 | */ 67 | // connect: { 68 | // options: {} 69 | // }, 70 | }, 71 | 72 | /** 73 | * This is the hybrid specific configuration. You can specify configurations targeted only for hybrid apps. 74 | * The hybrid specific configurations will override the general configuration. 75 | */ 76 | hybrid: { 77 | } 78 | }; 79 | }; 80 | -------------------------------------------------------------------------------- /beginners-finished/src/css/app.css: -------------------------------------------------------------------------------- 1 | /* 2 | Document : override 3 | Created on : 4 | Author : 5 | Description: 6 | This is where any of your application specific styles should be included 7 | */ -------------------------------------------------------------------------------- /beginners-finished/src/css/fonts/App_iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/beginners-finished/src/css/fonts/App_iconfont.woff -------------------------------------------------------------------------------- /beginners-finished/src/css/images/avatar_24px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/beginners-finished/src/css/images/avatar_24px.png -------------------------------------------------------------------------------- /beginners-finished/src/css/images/avatar_24px_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/beginners-finished/src/css/images/avatar_24px_2x.png -------------------------------------------------------------------------------- /beginners-finished/src/css/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/beginners-finished/src/css/images/favicon.ico -------------------------------------------------------------------------------- /beginners-finished/src/css/images/oracle_logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 21 | 22 | -------------------------------------------------------------------------------- /beginners-finished/src/js/appController.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2014, 2017, Oracle and/or its affiliates. 3 | * The Universal Permissive License (UPL), Version 1.0 4 | */ 5 | /* 6 | * Your application specific code will go here 7 | */ 8 | define(['ojs/ojcore', 'knockout', 'ojs/ojrouter', 'ojs/ojknockout', 'ojs/ojarraytabledatasource', 9 | 'ojs/ojoffcanvas'], 10 | function(oj, ko) { 11 | function ControllerViewModel() { 12 | var self = this; 13 | 14 | // Media queries for repsonsive layouts 15 | var smQuery = oj.ResponsiveUtils.getFrameworkQuery(oj.ResponsiveUtils.FRAMEWORK_QUERY_KEY.SM_ONLY); 16 | self.smScreen = oj.ResponsiveKnockoutUtils.createMediaQueryObservable(smQuery); 17 | var mdQuery = oj.ResponsiveUtils.getFrameworkQuery(oj.ResponsiveUtils.FRAMEWORK_QUERY_KEY.MD_UP); 18 | self.mdScreen = oj.ResponsiveKnockoutUtils.createMediaQueryObservable(mdQuery); 19 | 20 | // Router setup 21 | self.router = oj.Router.rootInstance; 22 | self.router.configure({ 23 | 'dashboard': {label: 'Dashboard', isDefault: true}, 24 | 'incidents': {label: 'Incidents'}, 25 | 'customers': {label: 'Customers'}, 26 | 'about': {label: 'About'} 27 | }); 28 | oj.Router.defaults['urlAdapter'] = new oj.Router.urlParamAdapter(); 29 | 30 | // Navigation setup 31 | var navData = [ 32 | {name: 'Dashboard', id: 'dashboard', 33 | iconClass: 'oj-navigationlist-item-icon demo-icon-font-24 demo-chart-icon-24'}, 34 | {name: 'Incidents', id: 'incidents', 35 | iconClass: 'oj-navigationlist-item-icon demo-icon-font-24 demo-fire-icon-24'}, 36 | {name: 'Customers', id: 'customers', 37 | iconClass: 'oj-navigationlist-item-icon demo-icon-font-24 demo-people-icon-24'}, 38 | {name: 'About', id: 'about', 39 | iconClass: 'oj-navigationlist-item-icon demo-icon-font-24 demo-info-icon-24'} 40 | ]; 41 | self.navDataSource = new oj.ArrayTableDataSource(navData, {idAttribute: 'id'}); 42 | 43 | // Drawer 44 | // Close offcanvas on medium and larger screens 45 | self.mdScreen.subscribe(function() {oj.OffcanvasUtils.close(self.drawerParams);}); 46 | self.drawerParams = { 47 | displayMode: 'push', 48 | selector: '#navDrawer', 49 | content: '#pageContent' 50 | }; 51 | // Called by navigation drawer toggle button and after selection of nav drawer item 52 | self.toggleDrawer = function() { 53 | return oj.OffcanvasUtils.toggle(self.drawerParams); 54 | } 55 | // Add a close listener so we can move focus back to the toggle button when the drawer closes 56 | $("#navDrawer").on("ojclose", function() { $('#drawerToggleButton').focus(); }); 57 | 58 | // Header 59 | // Application Name used in Branding Area 60 | self.appName = ko.observable("App Name"); 61 | // User Info used in Global Navigation area 62 | self.userLogin = ko.observable("john.hancock@oracle.com"); 63 | 64 | // Footer 65 | function footerLink(name, id, linkTarget) { 66 | this.name = name; 67 | this.linkId = id; 68 | this.linkTarget = linkTarget; 69 | } 70 | self.footerLinks = ko.observableArray([ 71 | new footerLink('About Oracle', 'aboutOracle', 'http://www.oracle.com/us/corporate/index.html#menu-about'), 72 | new footerLink('Contact Us', 'contactUs', 'http://www.oracle.com/us/corporate/contact/index.html'), 73 | new footerLink('Legal Notices', 'legalNotices', 'http://www.oracle.com/us/legal/index.html'), 74 | new footerLink('Terms Of Use', 'termsOfUse', 'http://www.oracle.com/us/legal/terms/index.html'), 75 | new footerLink('Your Privacy Rights', 'yourPrivacyRights', 'http://www.oracle.com/us/legal/privacy/index.html') 76 | ]); 77 | } 78 | 79 | return new ControllerViewModel(); 80 | } 81 | ); 82 | -------------------------------------------------------------------------------- /beginners-finished/src/js/jet-composites/my-chart/README.md: -------------------------------------------------------------------------------- 1 | # ojet component template 2 | 3 | ## Usage 4 | Refer to the oj.Composite jsdoc 5 | http://www.oracle.com/webfolder/technetwork/jet/jsdocs/oj.Composite.html -------------------------------------------------------------------------------- /beginners-finished/src/js/jet-composites/my-chart/component.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "my-chart", 3 | "displayName": "my-chart", 4 | "description": "Describe your component here", 5 | "version": "1.0.0", 6 | "jetVersion": "^4.0.0", 7 | "properties": { 8 | "myMessage": { 9 | "type": "string" 10 | }, 11 | "chartType": { 12 | "type": "string" 13 | } 14 | }, 15 | "methods": { 16 | 17 | }, 18 | "events": { 19 | 20 | }, 21 | "slots": { 22 | 23 | } 24 | } -------------------------------------------------------------------------------- /beginners-finished/src/js/jet-composites/my-chart/loader.js: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright (c) 2015, 2017, Oracle and/or its affiliates. 3 | The Universal Permissive License (UPL), Version 1.0 4 | */ 5 | define(['ojs/ojcore', 'text!./view.html', './viewModel', 'text!./component.json', 'css!./styles', 'ojs/ojcomposite'], 6 | function(oj, view, viewModel, metadata) { 7 | oj.Composite.register('my-chart', { 8 | view: {inline: view}, 9 | viewModel: {inline: viewModel}, 10 | metadata: {inline: JSON.parse(metadata)} 11 | }); 12 | } 13 | ); -------------------------------------------------------------------------------- /beginners-finished/src/js/jet-composites/my-chart/styles.css: -------------------------------------------------------------------------------- 1 | my-chart:not(.oj-complete){ 2 | visibility: hidden; 3 | } 4 | 5 | my-chart{ 6 | 7 | } -------------------------------------------------------------------------------- /beginners-finished/src/js/jet-composites/my-chart/view.html: -------------------------------------------------------------------------------- 1 | 5 |

6 | 7 | Pie 8 | Bar 9 | Line 10 | 11 | 19 | -------------------------------------------------------------------------------- /beginners-finished/src/js/jet-composites/my-chart/viewModel.js: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright (c) 2015, 2017, Oracle and/or its affiliates. 3 | The Universal Permissive License (UPL), Version 1.0 4 | */ 5 | define(['ojs/ojcore', 'knockout', 'jquery', 'ojs/ojchart', 'ojs/ojselectcombobox'], function (oj, ko, $) { 6 | 'use strict'; 7 | 8 | function ExampleComponentModel(context) { 9 | var self = this; 10 | self.composite = context.element; 11 | //Example observable 12 | self.messageText = ko.observable('Hello from Example Component'); 13 | self.chartType = ko.observable("bar"); 14 | 15 | context.props.then(function (propertyMap) { 16 | //Store a reference to the properties for any later use 17 | self.properties = propertyMap; 18 | //Parse your component properties here 19 | self.messageText(self.properties.myMessage); 20 | self.chartType(self.properties.chartType); 21 | 22 | }); 23 | 24 | /* chart data */ 25 | var barSeries = [{name: "Series 1", items: [42, 34]}, 26 | {name: "Series 2", items: [55, 30]}, 27 | {name: "Series 3", items: [36, 50]}, 28 | {name: "Series 4", items: [22, 46]}, 29 | {name: "Series 5", items: [22, 46]}]; 30 | 31 | var barGroups = ["Group A", "Group B"]; 32 | 33 | self.barSeriesValue = ko.observableArray(barSeries); 34 | self.barGroupsValue = ko.observableArray(barGroups); 35 | } 36 | 37 | //Lifecycle methods - uncomment and implement if necessary 38 | //ExampleComponentModel.prototype.activated = function(context){ 39 | //}; 40 | 41 | //ExampleComponentModel.prototype.attached = function(context){ 42 | //}; 43 | 44 | //ExampleComponentModel.prototype.bindingsApplied = function(context){ 45 | //}; 46 | 47 | //ExampleComponentModel.prototype.detached = function(context){ 48 | //}; 49 | 50 | return ExampleComponentModel; 51 | }); -------------------------------------------------------------------------------- /beginners-finished/src/js/main-release-paths.json: -------------------------------------------------------------------------------- 1 | { 2 | "knockout": "libs/knockout/knockout-3.4.0", 3 | "jquery": "libs/jquery/jquery-3.1.1.min", 4 | "jqueryui-amd": "libs/jquery/jqueryui-amd-1.12.0.min", 5 | "promise": "libs/es6-promise/es6-promise.min", 6 | "hammerjs": "libs/hammer/hammer-2.0.8.min", 7 | "ojdnd": "libs/dnd-polyfill/dnd-polyfill-1.0.0.min", 8 | "ojs": "libs/oj/v4.1.0/min", 9 | "ojL10n": "libs/oj/v4.1.0/ojL10n", 10 | "ojtranslations": "libs/oj/v4.1.0/resources", 11 | "text": "libs/require/text", 12 | "signals": "libs/js-signals/signals.min", 13 | "customElements": "libs/webcomponents/custom-elements.min", 14 | "proj4": "libs/proj4js/dist/proj4", 15 | "css": "libs/require-css/css.min" 16 | } -------------------------------------------------------------------------------- /beginners-finished/src/js/main.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2014, 2017, Oracle and/or its affiliates. 3 | * The Universal Permissive License (UPL), Version 1.0 4 | */ 5 | 'use strict'; 6 | 7 | /** 8 | * Example of Require.js boostrap javascript 9 | */ 10 | 11 | requirejs.config( 12 | { 13 | baseUrl: 'js', 14 | 15 | // Path mappings for the logical module names 16 | // Update the main-release-paths.json for release mode when updating the mappings 17 | paths: 18 | //injector:mainReleasePaths 19 | { 20 | 'knockout': 'libs/knockout/knockout-3.4.0.debug', 21 | 'jquery': 'libs/jquery/jquery-3.1.1', 22 | 'jqueryui-amd': 'libs/jquery/jqueryui-amd-1.12.0', 23 | 'promise': 'libs/es6-promise/es6-promise', 24 | 'hammerjs': 'libs/hammer/hammer-2.0.8', 25 | 'ojdnd': 'libs/dnd-polyfill/dnd-polyfill-1.0.0', 26 | 'ojs': 'libs/oj/v4.1.0/debug', 27 | 'ojL10n': 'libs/oj/v4.1.0/ojL10n', 28 | 'ojtranslations': 'libs/oj/v4.1.0/resources', 29 | 'text': 'libs/require/text', 30 | 'signals': 'libs/js-signals/signals', 31 | 'customElements': 'libs/webcomponents/custom-elements.min', 32 | 'proj4': 'libs/proj4js/dist/proj4-src', 33 | 'css': 'libs/require-css/css', 34 | } 35 | //endinjector 36 | , 37 | // Shim configurations for modules that do not expose AMD 38 | shim: 39 | { 40 | 'jquery': 41 | { 42 | exports: ['jQuery', '$'] 43 | } 44 | } 45 | } 46 | ); 47 | 48 | /** 49 | * A top-level require call executed by the Application. 50 | * Although 'ojcore' and 'knockout' would be loaded in any case (they are specified as dependencies 51 | * by the modules themselves), we are listing them explicitly to get the references to the 'oj' and 'ko' 52 | * objects in the callback 53 | */ 54 | require(['ojs/ojcore', 'knockout', 'appController', 'ojs/ojknockout', 55 | 'ojs/ojmodule', 'ojs/ojrouter', 'ojs/ojnavigationlist', 'ojs/ojbutton', 'ojs/ojtoolbar'], 56 | function (oj, ko, app) { // this callback gets executed when all required modules are loaded 57 | 58 | $(function() { 59 | 60 | function init() { 61 | oj.Router.sync().then( 62 | function () { 63 | // Bind your ViewModel for the content of the whole page body. 64 | ko.applyBindings(app, document.getElementById('globalBody')); 65 | }, 66 | function (error) { 67 | oj.Logger.error('Error in root start: ' + error.message); 68 | } 69 | ); 70 | } 71 | 72 | // If running in a hybrid (e.g. Cordova) environment, we need to wait for the deviceready 73 | // event before executing any code that might interact with Cordova APIs or plugins. 74 | if ($(document.body).hasClass('oj-hybrid')) { 75 | document.addEventListener("deviceready", init); 76 | } else { 77 | init(); 78 | } 79 | 80 | }); 81 | 82 | } 83 | ); 84 | -------------------------------------------------------------------------------- /beginners-finished/src/js/viewModels/about.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2014, 2017, Oracle and/or its affiliates. 3 | * The Universal Permissive License (UPL), Version 1.0 4 | */ 5 | /* 6 | * Your about ViewModel code goes here 7 | */ 8 | define(['ojs/ojcore', 'knockout', 'jquery'], 9 | function(oj, ko, $) { 10 | 11 | function AboutViewModel() { 12 | var self = this; 13 | // Below are a subset of the ViewModel methods invoked by the ojModule binding 14 | // Please reference the ojModule jsDoc for additional available methods. 15 | 16 | /** 17 | * Optional ViewModel method invoked when this ViewModel is about to be 18 | * used for the View transition. The application can put data fetch logic 19 | * here that can return a Promise which will delay the handleAttached function 20 | * call below until the Promise is resolved. 21 | * @param {Object} info - An object with the following key-value pairs: 22 | * @param {Node} info.element - DOM element or where the binding is attached. This may be a 'virtual' element (comment node). 23 | * @param {Function} info.valueAccessor - The binding's value accessor. 24 | * @return {Promise|undefined} - If the callback returns a Promise, the next phase (attaching DOM) will be delayed until 25 | * the promise is resolved 26 | */ 27 | self.handleActivated = function(info) { 28 | // Implement if needed 29 | }; 30 | 31 | /** 32 | * Optional ViewModel method invoked after the View is inserted into the 33 | * document DOM. The application can put logic that requires the DOM being 34 | * attached here. 35 | * @param {Object} info - An object with the following key-value pairs: 36 | * @param {Node} info.element - DOM element or where the binding is attached. This may be a 'virtual' element (comment node). 37 | * @param {Function} info.valueAccessor - The binding's value accessor. 38 | * @param {boolean} info.fromCache - A boolean indicating whether the module was retrieved from cache. 39 | */ 40 | self.handleAttached = function(info) { 41 | // Implement if needed 42 | }; 43 | 44 | 45 | /** 46 | * Optional ViewModel method invoked after the bindings are applied on this View. 47 | * If the current View is retrieved from cache, the bindings will not be re-applied 48 | * and this callback will not be invoked. 49 | * @param {Object} info - An object with the following key-value pairs: 50 | * @param {Node} info.element - DOM element or where the binding is attached. This may be a 'virtual' element (comment node). 51 | * @param {Function} info.valueAccessor - The binding's value accessor. 52 | */ 53 | self.handleBindingsApplied = function(info) { 54 | // Implement if needed 55 | }; 56 | 57 | /* 58 | * Optional ViewModel method invoked after the View is removed from the 59 | * document DOM. 60 | * @param {Object} info - An object with the following key-value pairs: 61 | * @param {Node} info.element - DOM element or where the binding is attached. This may be a 'virtual' element (comment node). 62 | * @param {Function} info.valueAccessor - The binding's value accessor. 63 | * @param {Array} info.cachedNodes - An Array containing cached nodes for the View if the cache is enabled. 64 | */ 65 | self.handleDetached = function(info) { 66 | // Implement if needed 67 | }; 68 | } 69 | 70 | /* 71 | * Returns a constructor for the ViewModel so that the ViewModel is constructed 72 | * each time the view is displayed. Return an instance of the ViewModel if 73 | * only one instance of the ViewModel is needed. 74 | */ 75 | return new AboutViewModel(); 76 | } 77 | ); 78 | -------------------------------------------------------------------------------- /beginners-finished/src/js/viewModels/customers.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2014, 2017, Oracle and/or its affiliates. 3 | * The Universal Permissive License (UPL), Version 1.0 4 | */ 5 | /* 6 | * Your customer ViewModel code goes here 7 | */ 8 | define(['ojs/ojcore', 'knockout', 'jquery'], 9 | function(oj, ko, $) { 10 | 11 | function CustomerViewModel() { 12 | var self = this; 13 | // Below are a subset of the ViewModel methods invoked by the ojModule binding 14 | // Please reference the ojModule jsDoc for additional available methods. 15 | 16 | /** 17 | * Optional ViewModel method invoked when this ViewModel is about to be 18 | * used for the View transition. The application can put data fetch logic 19 | * here that can return a Promise which will delay the handleAttached function 20 | * call below until the Promise is resolved. 21 | * @param {Object} info - An object with the following key-value pairs: 22 | * @param {Node} info.element - DOM element or where the binding is attached. This may be a 'virtual' element (comment node). 23 | * @param {Function} info.valueAccessor - The binding's value accessor. 24 | * @return {Promise|undefined} - If the callback returns a Promise, the next phase (attaching DOM) will be delayed until 25 | * the promise is resolved 26 | */ 27 | self.handleActivated = function(info) { 28 | // Implement if needed 29 | }; 30 | 31 | /** 32 | * Optional ViewModel method invoked after the View is inserted into the 33 | * document DOM. The application can put logic that requires the DOM being 34 | * attached here. 35 | * @param {Object} info - An object with the following key-value pairs: 36 | * @param {Node} info.element - DOM element or where the binding is attached. This may be a 'virtual' element (comment node). 37 | * @param {Function} info.valueAccessor - The binding's value accessor. 38 | * @param {boolean} info.fromCache - A boolean indicating whether the module was retrieved from cache. 39 | */ 40 | self.handleAttached = function(info) { 41 | // Implement if needed 42 | }; 43 | 44 | 45 | /** 46 | * Optional ViewModel method invoked after the bindings are applied on this View. 47 | * If the current View is retrieved from cache, the bindings will not be re-applied 48 | * and this callback will not be invoked. 49 | * @param {Object} info - An object with the following key-value pairs: 50 | * @param {Node} info.element - DOM element or where the binding is attached. This may be a 'virtual' element (comment node). 51 | * @param {Function} info.valueAccessor - The binding's value accessor. 52 | */ 53 | self.handleBindingsApplied = function(info) { 54 | // Implement if needed 55 | }; 56 | 57 | /* 58 | * Optional ViewModel method invoked after the View is removed from the 59 | * document DOM. 60 | * @param {Object} info - An object with the following key-value pairs: 61 | * @param {Node} info.element - DOM element or where the binding is attached. This may be a 'virtual' element (comment node). 62 | * @param {Function} info.valueAccessor - The binding's value accessor. 63 | * @param {Array} info.cachedNodes - An Array containing cached nodes for the View if the cache is enabled. 64 | */ 65 | self.handleDetached = function(info) { 66 | // Implement if needed 67 | }; 68 | } 69 | 70 | /* 71 | * Returns a constructor for the ViewModel so that the ViewModel is constructed 72 | * each time the view is displayed. Return an instance of the ViewModel if 73 | * only one instance of the ViewModel is needed. 74 | */ 75 | return new CustomerViewModel(); 76 | } 77 | ); 78 | -------------------------------------------------------------------------------- /beginners-finished/src/js/viewModels/dashboard.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2014, 2017, Oracle and/or its affiliates. 3 | * The Universal Permissive License (UPL), Version 1.0 4 | */ 5 | /* 6 | * Your dashboard ViewModel code goes here 7 | */ 8 | define(['ojs/ojcore', 'knockout', 'jquery', 'jet-composites/my-chart/loader'], 9 | function(oj, ko, $) { 10 | 11 | function DashboardViewModel() { 12 | var self = this; 13 | // Below are a subset of the ViewModel methods invoked by the ojModule binding 14 | // Please reference the ojModule jsDoc for additional available methods. 15 | 16 | /** 17 | * Optional ViewModel method invoked when this ViewModel is about to be 18 | * used for the View transition. The application can put data fetch logic 19 | * here that can return a Promise which will delay the handleAttached function 20 | * call below until the Promise is resolved. 21 | * @param {Object} info - An object with the following key-value pairs: 22 | * @param {Node} info.element - DOM element or where the binding is attached. This may be a 'virtual' element (comment node). 23 | * @param {Function} info.valueAccessor - The binding's value accessor. 24 | * @return {Promise|undefined} - If the callback returns a Promise, the next phase (attaching DOM) will be delayed until 25 | * the promise is resolved 26 | */ 27 | self.handleActivated = function(info) { 28 | // Implement if needed 29 | }; 30 | 31 | /** 32 | * Optional ViewModel method invoked after the View is inserted into the 33 | * document DOM. The application can put logic that requires the DOM being 34 | * attached here. 35 | * @param {Object} info - An object with the following key-value pairs: 36 | * @param {Node} info.element - DOM element or where the binding is attached. This may be a 'virtual' element (comment node). 37 | * @param {Function} info.valueAccessor - The binding's value accessor. 38 | * @param {boolean} info.fromCache - A boolean indicating whether the module was retrieved from cache. 39 | */ 40 | self.handleAttached = function(info) { 41 | // Implement if needed 42 | }; 43 | 44 | 45 | /** 46 | * Optional ViewModel method invoked after the bindings are applied on this View. 47 | * If the current View is retrieved from cache, the bindings will not be re-applied 48 | * and this callback will not be invoked. 49 | * @param {Object} info - An object with the following key-value pairs: 50 | * @param {Node} info.element - DOM element or where the binding is attached. This may be a 'virtual' element (comment node). 51 | * @param {Function} info.valueAccessor - The binding's value accessor. 52 | */ 53 | self.handleBindingsApplied = function(info) { 54 | // Implement if needed 55 | }; 56 | 57 | /* 58 | * Optional ViewModel method invoked after the View is removed from the 59 | * document DOM. 60 | * @param {Object} info - An object with the following key-value pairs: 61 | * @param {Node} info.element - DOM element or where the binding is attached. This may be a 'virtual' element (comment node). 62 | * @param {Function} info.valueAccessor - The binding's value accessor. 63 | * @param {Array} info.cachedNodes - An Array containing cached nodes for the View if the cache is enabled. 64 | */ 65 | self.handleDetached = function(info) { 66 | // Implement if needed 67 | }; 68 | } 69 | 70 | /* 71 | * Returns a constructor for the ViewModel so that the ViewModel is constructed 72 | * each time the view is displayed. Return an instance of the ViewModel if 73 | * only one instance of the ViewModel is needed. 74 | */ 75 | return new DashboardViewModel(); 76 | } 77 | ); 78 | -------------------------------------------------------------------------------- /beginners-finished/src/js/viewModels/incidents.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2014, 2017, Oracle and/or its affiliates. 3 | * The Universal Permissive License (UPL), Version 1.0 4 | */ 5 | /* 6 | * Your incidents ViewModel code goes here 7 | */ 8 | define(['ojs/ojcore', 'knockout', 'jquery'], 9 | function(oj, ko, $) { 10 | 11 | function IncidentsViewModel() { 12 | var self = this; 13 | // Below are a subset of the ViewModel methods invoked by the ojModule binding 14 | // Please reference the ojModule jsDoc for additional available methods. 15 | 16 | /** 17 | * Optional ViewModel method invoked when this ViewModel is about to be 18 | * used for the View transition. The application can put data fetch logic 19 | * here that can return a Promise which will delay the handleAttached function 20 | * call below until the Promise is resolved. 21 | * @param {Object} info - An object with the following key-value pairs: 22 | * @param {Node} info.element - DOM element or where the binding is attached. This may be a 'virtual' element (comment node). 23 | * @param {Function} info.valueAccessor - The binding's value accessor. 24 | * @return {Promise|undefined} - If the callback returns a Promise, the next phase (attaching DOM) will be delayed until 25 | * the promise is resolved 26 | */ 27 | self.handleActivated = function(info) { 28 | // Implement if needed 29 | }; 30 | 31 | /** 32 | * Optional ViewModel method invoked after the View is inserted into the 33 | * document DOM. The application can put logic that requires the DOM being 34 | * attached here. 35 | * @param {Object} info - An object with the following key-value pairs: 36 | * @param {Node} info.element - DOM element or where the binding is attached. This may be a 'virtual' element (comment node). 37 | * @param {Function} info.valueAccessor - The binding's value accessor. 38 | * @param {boolean} info.fromCache - A boolean indicating whether the module was retrieved from cache. 39 | */ 40 | self.handleAttached = function(info) { 41 | // Implement if needed 42 | }; 43 | 44 | 45 | /** 46 | * Optional ViewModel method invoked after the bindings are applied on this View. 47 | * If the current View is retrieved from cache, the bindings will not be re-applied 48 | * and this callback will not be invoked. 49 | * @param {Object} info - An object with the following key-value pairs: 50 | * @param {Node} info.element - DOM element or where the binding is attached. This may be a 'virtual' element (comment node). 51 | * @param {Function} info.valueAccessor - The binding's value accessor. 52 | */ 53 | self.handleBindingsApplied = function(info) { 54 | // Implement if needed 55 | }; 56 | 57 | /* 58 | * Optional ViewModel method invoked after the View is removed from the 59 | * document DOM. 60 | * @param {Object} info - An object with the following key-value pairs: 61 | * @param {Node} info.element - DOM element or where the binding is attached. This may be a 'virtual' element (comment node). 62 | * @param {Function} info.valueAccessor - The binding's value accessor. 63 | * @param {Array} info.cachedNodes - An Array containing cached nodes for the View if the cache is enabled. 64 | */ 65 | self.handleDetached = function(info) { 66 | // Implement if needed 67 | }; 68 | } 69 | 70 | /* 71 | * Returns a constructor for the ViewModel so that the ViewModel is constructed 72 | * each time the view is displayed. Return an instance of the ViewModel if 73 | * only one instance of the ViewModel is needed. 74 | */ 75 | return new IncidentsViewModel(); 76 | } 77 | ); 78 | -------------------------------------------------------------------------------- /beginners-finished/src/js/views/about.html: -------------------------------------------------------------------------------- 1 | 5 |
6 |

About Content Area

7 |
8 | To change the content of this section, you will make edits to the about.html file located in the /js/views folder. 9 |
10 |
11 | -------------------------------------------------------------------------------- /beginners-finished/src/js/views/customers.html: -------------------------------------------------------------------------------- 1 | 5 |
6 |

Customers Content Area

7 |
8 | To change the content of this section, you will make edits to the customers.html file located in the /js/views folder. 9 |
10 |
11 | -------------------------------------------------------------------------------- /beginners-finished/src/js/views/dashboard.html: -------------------------------------------------------------------------------- 1 | 5 |
6 |

Dashboard Content Area

7 |
8 |
9 | 10 |
11 |
12 | 13 |
14 |
15 |
-------------------------------------------------------------------------------- /beginners-finished/src/js/views/incidents.html: -------------------------------------------------------------------------------- 1 | 5 |
6 |

Incidents Content Area

7 |
8 | To change the content of this section, you will make edits to the incidents.html file located in the /js/views folder. 9 |
10 |
11 | -------------------------------------------------------------------------------- /beginners-finished/src/tests/index.html: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | Oracle JET Starter QUnit - Common Composite Component 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 | 32 |

Composite Component Tests

33 | 34 |

35 |
36 |

37 |
    38 |
    39 | 40 |
    41 | 42 |
    43 | 44 | 57 | 58 |
    59 | 60 | 61 | 62 | -------------------------------------------------------------------------------- /beginners-finished/src/tests/js/main.js: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright (c) 2015, 2017, Oracle and/or its affiliates. 3 | The Universal Permissive License (UPL), Version 1.0 4 | */ 5 | 'use strict'; 6 | 7 | requirejs.config( 8 | { 9 | baseUrl : '../../js', 10 | // Path mappings for the logical module names 11 | paths : 12 | { 13 | 'knockout' : 'libs/knockout/knockout-3.4.0.debug', 14 | 'jquery' : 'libs/jquery/jquery-3.1.1', 15 | 'jqueryui-amd' : 'libs/jquery/jqueryui-amd-1.12.0', 16 | 'promise' : 'libs/es6-promise/es6-promise', 17 | 'hammerjs' : 'libs/hammer/hammer-2.0.8', 18 | 'ojdnd' : 'libs/dnd-polyfill/dnd-polyfill-1.0.0', 19 | 'ojs' : 'libs/oj/v4.0.0/debug', 20 | 'ojL10n' : 'libs/oj/v4.0.0/ojL10n', 21 | 'ojtranslations' : 'libs/oj/v4.0.0/resources', 22 | 'text' : 'libs/require/text', 23 | 'css' : 'libs/require-css/css', 24 | 'signals' : 'libs/js-signals/signals', 25 | 'customElements': 'libs/webcomponents/custom-elements.min', 26 | 'test' : '../tests/js/test' 27 | } 28 | , 29 | // Shim configurations for modules that do not expose AMD 30 | shim : 31 | { 32 | 'jquery' : 33 | { 34 | exports : ['jQuery', '$'] 35 | }, 36 | 'simulate' : 37 | { 38 | deps : ['jquery'] 39 | }, 40 | 'test' : 41 | { 42 | deps : ['jquery', 'knockout', 'ojs/ojcore', 'ojs/ojknockout', 'ojs/ojcomponentcore'] 43 | } 44 | } 45 | } 46 | ); 47 | 48 | require(['ojs/ojcore', 'knockout', 'ojs/ojknockout', 'test'], 49 | function (oj, ko) 50 | { 51 | $(function () 52 | { 53 | QUnit.load(); 54 | QUnit.start(); 55 | }); 56 | } 57 | ); 58 | -------------------------------------------------------------------------------- /beginners-finished/src/tests/js/test.js: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright (c) 2015, 2017, Oracle and/or its affiliates. 3 | The Universal Permissive License (UPL), Version 1.0 4 | */ 5 | (function ($) 6 | { 7 | QUnit.module("composite component"); 8 | QUnit.test("example test", function (assert) 9 | { 10 | var done = assert.async(); 11 | assert.expect(1); 12 | assert.ok(true); 13 | done(); 14 | }); 15 | })(jQuery); -------------------------------------------------------------------------------- /beginners-start/images/image-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/beginners-start/images/image-1.png -------------------------------------------------------------------------------- /beginners-start/images/image-10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/beginners-start/images/image-10.png -------------------------------------------------------------------------------- /beginners-start/images/image-11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/beginners-start/images/image-11.png -------------------------------------------------------------------------------- /beginners-start/images/image-12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/beginners-start/images/image-12.png -------------------------------------------------------------------------------- /beginners-start/images/image-13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/beginners-start/images/image-13.png -------------------------------------------------------------------------------- /beginners-start/images/image-14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/beginners-start/images/image-14.png -------------------------------------------------------------------------------- /beginners-start/images/image-15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/beginners-start/images/image-15.png -------------------------------------------------------------------------------- /beginners-start/images/image-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/beginners-start/images/image-16.png -------------------------------------------------------------------------------- /beginners-start/images/image-17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/beginners-start/images/image-17.png -------------------------------------------------------------------------------- /beginners-start/images/image-18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/beginners-start/images/image-18.png -------------------------------------------------------------------------------- /beginners-start/images/image-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/beginners-start/images/image-2.png -------------------------------------------------------------------------------- /beginners-start/images/image-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/beginners-start/images/image-3.png -------------------------------------------------------------------------------- /beginners-start/images/image-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/beginners-start/images/image-4.png -------------------------------------------------------------------------------- /beginners-start/images/image-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/beginners-start/images/image-5.png -------------------------------------------------------------------------------- /beginners-start/images/image-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/beginners-start/images/image-6.png -------------------------------------------------------------------------------- /beginners-start/images/image-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/beginners-start/images/image-7.png -------------------------------------------------------------------------------- /beginners-start/images/image-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/beginners-start/images/image-8.png -------------------------------------------------------------------------------- /beginners-start/images/image-9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/peppertech/HOL2017/f55521e5857b143aac533f69a25b09e12e8a961e/beginners-start/images/image-9.png -------------------------------------------------------------------------------- /troubleshooting.md: -------------------------------------------------------------------------------- 1 | ## Troubleshooting common issues 2 | 3 | 4 | ### Setup 5 | Cloning this project using Git will give you the directory structure described throughout the Labs. 6 | 7 | ``` 8 | git clone https://github.com/peppertech/HOL2017.git 9 | ``` 10 | 11 | Change to the `beginners-finnished` folder to see the completed application and compare your code against this working example. 12 | --------------------------------------------------------------------------------