├── .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 |
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 3
10 |
In Range 30
11 |
Below Range 1
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 |
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 |
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 3
10 |
Waiting 30
11 |
Rejected 1
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 |
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 |
15 |
18 |
19 |
Open Headcount 3
20 |
New Hires 30
21 |
Terminations 1
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 |
Remove Employee
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 |
43 |
44 |
45 |
46 | Change Employee Name
47 |
48 |
49 |
50 |
51 | Employee Name
52 |
53 |
54 |
55 |
56 | Change
57 | Cancel
58 |
59 |
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 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
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 |
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 |
--------------------------------------------------------------------------------