Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FLOE-471: Transfer pouchPersisted and eventInTimeAware grades from Learning Dashboard prototype to new MyL3 repo #1

Closed
wants to merge 209 commits into from
Closed
Show file tree
Hide file tree
Changes from 195 commits
Commits
Show all changes
209 commits
Select commit Hold shift + click to select a range
9ce7223
commit initial prototyping work
waharnum May 31, 2016
09f8936
Commit latest work
waharnum Jun 1, 2016
4971d18
Some refactoring
waharnum Jun 1, 2016
29f4c09
Split into separate files
waharnum Jun 1, 2016
7ee0a5e
Wrap stuff
waharnum Jun 1, 2016
ffdc613
eventInTimeAware refactoring
waharnum Jun 1, 2016
24d8e34
A bunch of refactoring to use eventInTimeAware
waharnum Jun 1, 2016
6e0cf7e
use Date.toJSON() instead of Date.now()
waharnum Jun 2, 2016
dd93770
rename journal -> page
waharnum Jun 2, 2016
06b0290
Latest code
waharnum Jun 2, 2016
6be1698
Refactor so note uses persistence grade
waharnum Jun 2, 2016
a1cc31c
Save latest
waharnum Jun 2, 2016
8c93803
more accurate date rendering for testing
waharnum Jun 2, 2016
d4e8968
Latest
waharnum Jun 3, 2016
77b59e2
awareness of time
waharnum Jun 3, 2016
0b9c432
Better date stuff
waharnum Jun 3, 2016
ac57068
A whole bunch of prototyping work, including awareness of preference …
waharnum Jun 7, 2016
f48a6d6
A whole bunch of prototyping work, including awareness of preference …
waharnum Jun 7, 2016
5f9dc4f
day-to-day nav
waharnum Jun 8, 2016
92f7747
Extracting base grade
waharnum Jun 9, 2016
780d248
More refactoring
waharnum Jun 9, 2016
06c790b
More refactoring
waharnum Jun 9, 2016
b536682
separate type for preferencechanges
waharnum Jun 9, 2016
3823abf
Building out tests
waharnum Jun 10, 2016
8744102
more tests
waharnum Jun 10, 2016
5b9177b
Factor out separate syncable grade
waharnum Jun 10, 2016
bb9d980
Cleanup
waharnum Jun 14, 2016
a6c25d4
FLOE-456: package.json, grunt-based front end build process, and othe…
waharnum Jun 14, 2016
421c23a
FLOE-456: use ESLint for linting
waharnum Jun 14, 2016
97f611d
FLOE-456: removing stray file
waharnum Jun 14, 2016
1993441
FLOE-456: a whole bunch of linting
waharnum Jun 14, 2016
7b0278e
FLOE-456: more linter fixes
waharnum Jun 14, 2016
6da3795
FLOE-456: update names changed based on linting
waharnum Jun 14, 2016
f575eae
FLOE-456: update names changed based on linting
waharnum Jun 14, 2016
a749d1d
FLOE-456: fire 'undefined' onPouchDocRetrieved when 404ing
waharnum Jun 14, 2016
cf75e89
FLOE-456: linter-friendly promises syntax
waharnum Jun 14, 2016
3cdab23
FLOE-456: slight restructure
waharnum Jun 14, 2016
ca5b76d
FLOE-457: restructure demo files
waharnum Jun 14, 2016
4fa2471
FLOE-457: remove non-infusion Normalize.css
waharnum Jun 14, 2016
5dd946d
FLOE-455: add README and LICENSE - this branch is the main developmen…
waharnum Jun 14, 2016
ae7a18f
FLOE-458: rename note -> entry
waharnum Jun 14, 2016
eb0ab17
FLOE-458: fix couch sync problem
waharnum Jun 14, 2016
c764df4
FLOE-458: use pouchPersisted instead of couchSyncing as base for entries
waharnum Jun 14, 2016
c67ea06
FLOE-458: unique radio button names
waharnum Jun 14, 2016
1ad9e6f
FLOE-458: start adding note tests
waharnum Jun 14, 2016
dd0e76f
FLOE-459: building out note tests
waharnum Jun 15, 2016
3c72d63
FLOE-458: basic note tests
waharnum Jun 15, 2016
74e946b
FLOE-458: linting
waharnum Jun 15, 2016
1f44bf4
FLOE-458: still building out note tests
waharnum Jun 15, 2016
b332cc2
FLOE-458: note tests
waharnum Jun 16, 2016
6cb17de
FLOE-458: linting and removing console statements
waharnum Jun 16, 2016
a8d6460
FLOE-459: begin adding test coverage for preferenceChange
waharnum Jun 16, 2016
a51df73
FLOE-459: updated all-tests
waharnum Jun 17, 2016
fe859b3
FLOE-459: test refactoring
waharnum Jun 17, 2016
746744b
FLOE-459: initial 'helps with' checkbox implementation
waharnum Jun 20, 2016
464c7c4
FLOE-459: use fluid.get
waharnum Jun 20, 2016
930775c
FLOE-459: correct camelcase
waharnum Jun 20, 2016
dbda0d7
FLOE-459: helps me with / does not help me with for preferenceChange,…
waharnum Jun 21, 2016
d288773
FLOE-459: checkboxes get unique labels
waharnum Jun 21, 2016
ee86a5d
FLOE-459: radio buttons get unique labels; generate radio buttons fro…
waharnum Jun 21, 2016
c282cd5
FLOE-459: comment
waharnum Jun 21, 2016
c6709a0
FLOE-459: linting
waharnum Jun 21, 2016
6dfd2fd
FLOE-459: test for rendering of radio buttons and checkboxes
waharnum Jun 22, 2016
f596ba0
FLOE-459: update listener name
waharnum Jun 22, 2016
4a91cab
FLOE-459: refactoring radiobutton and checkbox template rendering
waharnum Jun 22, 2016
e1a5b78
FLOE-459: replace separate radio/checkbox generation with a single ge…
waharnum Jun 22, 2016
da6b9f6
FLOE-459: replace separate control binding with a single function
waharnum Jun 22, 2016
1f4c921
FLOE-459: default false values to model
waharnum Jun 22, 2016
bd34c1e
FLOE-459: single function for setting checkbox/radio checked from model
waharnum Jun 22, 2016
6ba48a2
FLOE-459: namespace refactoring
waharnum Jun 22, 2016
bbc70b8
FLOE-459: tests for setting checkables from model
waharnum Jun 22, 2016
b2eb151
FLOE-459: update to latest testing lib from Infusion
waharnum Jun 23, 2016
5dae7bc
FLOE-459: further entry tests
waharnum Jun 23, 2016
04c11f4
FLOE-462: revising page demo behaviour
waharnum Jun 23, 2016
3fd84e3
FLOE-462: revising page demo behaviour
waharnum Jun 23, 2016
467aa44
FLOE-462: tweaks from meeting
waharnum Jun 23, 2016
e1a8ef3
FLOE-462: fix container remove on delete
waharnum Jun 23, 2016
45607e0
FLOE-462: checkbox visibility based on isHelpful value
waharnum Jun 23, 2016
2d040d7
FLOE-462: friendlier times/dates
waharnum Jun 23, 2016
a23fc30
FLOE-462: formatted journal date
waharnum Jun 24, 2016
1a02f2b
FLOE-462: use allocateGuid for entry IDs
waharnum Jun 24, 2016
a79a384
FLOE-462: name -> journalName
waharnum Jun 24, 2016
715eaca
FLOE-462: use stringTemplates
waharnum Jun 24, 2016
a7c2f1f
FLOE-462: begin refactoring to journal -> page structure
waharnum Jun 24, 2016
03059d4
FLOE-462: continue refactoring to journal -> page structure
waharnum Jun 24, 2016
8d12e1d
FLOE-462: better preferenceChange entry format
waharnum Jun 24, 2016
f64050a
FLOE-459: very ugly implementation of human-readable messages for pre…
waharnum Jun 24, 2016
c03137c
FLOE-463: basic demo css
waharnum Jul 13, 2016
32e9183
FLOE-459: better nav implementation
waharnum Jul 13, 2016
2d18cb2
Merge branch 'FLOE-463' into FLOE-459
waharnum Jul 13, 2016
826f510
FLOE-459: restructuring template
waharnum Jul 13, 2016
95f7f8d
FLOE-463: more demo CSS
waharnum Jul 13, 2016
32635d6
FLOE-463: tweaking CSS
waharnum Jul 13, 2016
7d9456d
FLOE-463: add 'Today' nav link (also fix a surfaced bug)
waharnum Jul 13, 2016
085e3d5
FLOE-463: update entry language
waharnum Jul 13, 2016
52a288a
FLOE-464: implement basic mood tracking type
waharnum Jul 13, 2016
6a7b45d
FLOE-464: modify preferenceChange template slightly
waharnum Jul 13, 2016
d089515
FLOE-455: really basic goal implementation, because why not? Caveat: …
waharnum Jul 13, 2016
048546b
FLOE-455: placeholder date text
waharnum Jul 13, 2016
d2c2611
FLOE-455: refactor retrieval into several separate functions (a bit m…
waharnum Jul 14, 2016
45717d4
FLOE-455: hacky goals sidebar
waharnum Jul 14, 2016
dd5c875
FLOE-455: invokerizing addEntry
waharnum Jul 14, 2016
bc2101f
FLOE-455: rename preference tracking functionality
waharnum Jul 14, 2016
f9d3ec6
FLOE-455: beginning to factor base PouchDB entries grade
waharnum Jul 14, 2016
150b3a8
FLOE-455: continue base PouchDB entries grade refactor
waharnum Jul 14, 2016
be00977
FLOE-455: more refactor
waharnum Jul 14, 2016
ce48f63
FLOE-455: more refactoring
waharnum Jul 14, 2016
55f2ccd
FLOE-455: fix date display bug introduced by refactoring
waharnum Jul 14, 2016
2c45703
FLOE-455: remove various logging statements
waharnum Jul 14, 2016
00e9334
FLOE-455: fix regression in preference tracking
waharnum Jul 14, 2016
ea72d59
FLOE-455: more CSS tweaks
waharnum Jul 14, 2016
9a2fccf
FLOE-455: fix goal date sort
waharnum Jul 14, 2016
97b3690
FLOE-455: refactoring towards an overall 'lab' type
waharnum Jul 14, 2016
abd058d
FLOE-455: rename an event
waharnum Jul 14, 2016
9edc88a
FLOE-455: starting to have goal adding working
waharnum Jul 14, 2016
9fdbe1e
FLOE-455: goal in goal list is deleted if corresponding journal entry…
waharnum Jul 15, 2016
e8b3ef1
FLOE-455: whole buncha CSS
waharnum Jul 18, 2016
cccaf84
FLOE-455: ugly panel hide/show
waharnum Jul 18, 2016
33111c6
FLOE-455: use icons from assets
waharnum Jul 19, 2016
291254c
FLOE-455: update build tasks
waharnum Jul 19, 2016
2be1a3e
FLOE-455: add aria-live to template
waharnum Jul 19, 2016
a7e106c
FLOE-455: user switching
waharnum Jul 20, 2016
8cff019
FLOE-455: hacked in user switchin
waharnum Jul 20, 2016
21d2c0e
FLOE-455: update CSS
waharnum Jul 20, 2016
98a0193
FLOE-455: fix breaking entry test; remove last emoji icon
waharnum Jul 26, 2016
b3ce905
FLOE-455: rename from old implementation
waharnum Jul 26, 2016
df31713
FLOE-455: spelling correction
waharnum Jul 26, 2016
aa87d19
FLOE-455: test refactoring of DB config
waharnum Jul 26, 2016
50db006
FLOE-455: add copyright statement
waharnum Jul 26, 2016
42a509e
FLOE-455: linting
waharnum Jul 26, 2016
1947eee
FLOE-471: update package.json
waharnum Aug 11, 2016
28d1ef4
FLOE-471: clean up license and README
waharnum Aug 11, 2016
e00e60c
FLOE-471: update Gruntfile
waharnum Aug 11, 2016
82e4ac7
FLOE-471: Learning Dashboard -> My Lifelong Learning Lab
waharnum Aug 11, 2016
0ebfb8b
FLOE-471: remove entry test files
waharnum Aug 11, 2016
6f8f562
FLOE-471: remove demos directory
waharnum Aug 11, 2016
840590a
FLOE-471: remove HTML/img directories
waharnum Aug 11, 2016
2c85046
FLOE-471: remove non-relevant Javascript files
waharnum Aug 11, 2016
a17b1a6
FLOE-471: merge dashboard prototype
waharnum Aug 11, 2016
06425d3
FLOE-471: remove logging statements
waharnum Aug 11, 2016
ac22b03
FLOE-471: clean up time-based tests
waharnum Aug 11, 2016
ed2ae5e
FLOE-471: add many comments
waharnum Aug 11, 2016
fdd90c7
FLOE-471: add a very simple example using inlineEdit
waharnum Aug 11, 2016
ff7cd8c
FLOE-471: fix sequencing issue
waharnum Aug 11, 2016
8e6abce
FLOE-471: logging for demo
waharnum Aug 11, 2016
2833a3f
FLOE-471: remove unneeded Infusion source files
waharnum Aug 15, 2016
e569578
FLOE-471: make it possible to pass options to PouchDB when using retr…
waharnum Aug 15, 2016
7ad7fb1
FLOE-471: update example
waharnum Aug 15, 2016
460802a
FLOE-471: add comment about the example's use of a fixed ID
waharnum Aug 16, 2016
5e85cff
FLOE-471: refactoring to match existing dataSource grades
waharnum Aug 16, 2016
9872ade
FLOE-471: add browser-sync script that I used for local development t…
waharnum Aug 16, 2016
332ede8
FLOE-471: more refactoring to match dataSource
waharnum Aug 16, 2016
0f48da2
FLOE-471: remove persistenceInformation/typeName
waharnum Aug 17, 2016
686413b
FLOE-471: linting
waharnum Aug 17, 2016
131f0a0
FLOE-471: exclude node_modules directories from jsonlint
waharnum Aug 22, 2016
73391a9
FLOE-471: begin refactoring to use gpii-pouchdb
waharnum Aug 22, 2016
1787fc7
FLOE-471: localName -> name
waharnum Aug 23, 2016
5397d5e
FLOE-471: midway through DataSource refactor
waharnum Aug 23, 2016
9118fbe
FLOE-471: implement delete functionality
waharnum Aug 23, 2016
02c6edf
FLOE-471: properly exclude /lib directories from linting; implement d…
waharnum Aug 23, 2016
1b76739
FLOE-471: remove kettle namespace
waharnum Aug 23, 2016
550c937
FLOE-471: update comment
waharnum Aug 23, 2016
50cb800
FLOE-471: correct transform event for del
waharnum Aug 23, 2016
80cdf82
FLOE-471: update example
waharnum Aug 23, 2016
72b9159
FLOE-471: concat .eslintignore contents to the Gruntfile eslint file …
waharnum Aug 23, 2016
69b2eaf
FLOE-471: try/catch for if no .eslintignore file exists
waharnum Aug 23, 2016
a0a94fc
FLOE-471: rollback eslint change
waharnum Aug 24, 2016
df1bd1b
FLOE-471: update to newest fluid-grunt-eslint
waharnum Aug 29, 2016
a147e36
FLOE-471: implement writable behaviour properly.
waharnum Sep 2, 2016
11aeaf7
FLOE-471: factor out deletable as a separate variant grade.
waharnum Sep 2, 2016
ffb5f99
FLOE-471: remove some console statements.
waharnum Sep 2, 2016
043c1fd
FLOE-471: updating comments
waharnum Sep 2, 2016
0fc1399
FLOE-471: refactor eventInTimeAware grade to have no default model li…
waharnum Sep 2, 2016
e76bbb9
FLOE-471: clean up comments
waharnum Sep 2, 2016
61a006f
FLOE-471: 'persist' convenience method.
waharnum Sep 2, 2016
8a8eb42
FLOE-471: use persist method in test.
waharnum Sep 2, 2016
0b4b979
FLOE-471: comment update
waharnum Sep 2, 2016
96f7e31
FLOE-471: use persist throughout tests.
waharnum Sep 2, 2016
6c2b02d
FLOE-471: return string messages on error for get/set/delete
waharnum Sep 6, 2016
8f046ba
FLOE-471: better logging in demo
waharnum Sep 7, 2016
7a5bb38
FLOE-471: delete control for demo.
waharnum Sep 7, 2016
131d920
FLOE-471: remove console statement
waharnum Sep 7, 2016
13d9358
FLOE-471: add a get error event.
waharnum Sep 8, 2016
aeb7153
FLOE-471: implement error event firing for promise failure scenarios.
waharnum Sep 8, 2016
568ba29
FLOE-471: comments.
waharnum Sep 8, 2016
e96cd95
FLOE-471: start adding error test cases.
waharnum Sep 8, 2016
5378473
FLOE-471: add GET before DELETE error test cases.
waharnum Sep 8, 2016
1dfe40f
FLOE-471: clean up test cases.
waharnum Sep 8, 2016
1770c60
FLOE-471: remove console log statements.
waharnum Sep 8, 2016
d92c750
FLOE-471: better message for storage tests.
waharnum Sep 8, 2016
2def545
FLOE-471: SET error test.
waharnum Sep 8, 2016
2c0bd9f
FLOE-471: second SET error test.
waharnum Sep 8, 2016
6d0b4f0
FLOE-471: update Infusion; add source map.
waharnum Sep 8, 2016
f6e7f38
FLOE-471: update Infusion test framework files.
waharnum Sep 8, 2016
22d5900
FLOE-471: steps to build and install Infusion automatically from node…
waharnum Sep 9, 2016
b93394a
FLOE-471: split out dataSource.pouchDB into separate file.
waharnum Sep 9, 2016
c0d2c69
FLOE-471: time/date formatting as transforms.
waharnum Sep 9, 2016
29d6657
FLOE-471: pouchPersistedInlineEdit definition for demo to separate co…
waharnum Sep 12, 2016
d659a62
FLOE-471: remove Maven-esque 'snapshot'.
waharnum Sep 12, 2016
23b1da1
FLOE-471: use 'del' instead of the reserved 'delete' keyword.
waharnum Sep 12, 2016
da2d983
FLOE-471: remove onSetPouchID event.
waharnum Sep 12, 2016
597d40e
FLOE-471: excude tests/lib from jsonlint.
waharnum Sep 12, 2016
1b38ed8
FLOE-471: committing to show readOnlyGrade issue.
waharnum Nov 10, 2016
5f7f169
FLOE-471: starting to make tests work with new datasource use.
waharnum Nov 11, 2016
a2dc4f3
FLOE-471: updating example to new setup.
waharnum Nov 11, 2016
f86cf79
FLOE-471: linting.
waharnum Nov 11, 2016
8941c89
FLOE-471: update installFrontEnd build script.
waharnum Nov 11, 2016
67eccc9
FLOE-471: add delete functionality.
waharnum Nov 11, 2016
2e67e8e
FLOE-471: console statement removed.
waharnum Nov 11, 2016
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .eslintignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
**/lib/**
80 changes: 80 additions & 0 deletions .eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
{
"env": {
"browser": true,
"jquery": true
},
"globals": {
"fluid_2_0_0": true
},
"rules": {
"block-scoped-var": "error",
"comma-style": [
"error",
"last"
],
"curly": [
"error",
"all"
],
"dot-notation": [
"error",
{
"allowKeywords": false
}
],
"eol-last": "error",
"eqeqeq": [
"error",
"allow-null"
],
"indent": ["error", 4],
"new-cap": ["error", { "properties": false }],
"no-caller": "error",
"no-cond-assign": [
"error",
"except-parens"
],
"no-debugger": "error",
"no-empty": ["error", {"allowEmptyCatch": true}],
"no-eval": "error",
"no-extend-native": "error",
"no-extra-parens": "off",
"no-irregular-whitespace": "error",
"no-iterator": "error",
"no-loop-func": "error",
"no-multi-str": "error",
"no-new": "error",
"no-proto": "error",
"no-script-url": "error",
"no-sequences": "error",
"no-trailing-spaces": "error",
"no-undef": "error",
"no-unused-vars": "error",
"no-with": "error",
"quotes": [
"error",
"double"
],
"semi": [
"error",
"always"
],
"space-before-blocks": ["error", "always"],
"space-before-function-paren": ["error", {"anonymous": "always", "named": "never"}],
"space-infix-ops": "error",
"space-unary-ops": [
"error", {
"words": true,
"nonwords": false,
"overrides": {
"typeof": false
}
}],
"strict": ["error", "safe"],
"valid-typeof": "error",
"wrap-iife": [
"error",
"inside"
]
}
}
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
browser-sync.sh
node_modules/
src/lib/
tests/lib/
66 changes: 66 additions & 0 deletions Gruntfile.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
/*
Copyright 2016 OCAD University
Licensed under the Educational Community License (ECL), Version 2.0 or the New
BSD license. You may not use this file except in compliance with one these
Licenses.
You may obtain a copy of the ECL 2.0 License and BSD License at
https://raw.githubusercontent.com/fluid-project/chartAuthoring/master/LICENSE.txt
*/

// Declare dependencies
/* global module */

module.exports = function (grunt) {
"use strict";

// Project configuration.
grunt.initConfig({
// Project package file destination.
pkg: grunt.file.readJSON("package.json"),
eslint: {
all: ["src/**/*.js", "tests/**/*.js", "demos/**/*.js", "examples/**/*.js"]
},
jsonlint: {
all: ["package.json", ".jshintrc", "tests/**/*.json", "demos/**/*.json", "src/**/*.json", "!src/lib/**"]
},
copy: {
// Copy external front end dependencies into appropriate directories
frontEndDependencies: {
files: [
// PouchDB
{expand: true, cwd: "./node_modules/pouchdb/", src: "**", dest: "./src/lib/pouchdb/"},
// jsonlint
{expand: true, cwd: "./node_modules/jsonlint/", src: "**", dest: "./src/lib/jsonlint/"},
// gpii-pouchdb
{expand: true, cwd: "./node_modules/gpii-pouchdb/", src: "**", dest: "./src/lib/gpii-pouchdb/"},
// Infusion
{expand: true, cwd: "./node_modules/infusion/build", src: "**", dest: "./src/lib/infusion"},
// Infusion testing framework
{expand: true, cwd: "./node_modules/infusion/build/tests", src: "**", dest: "./tests/lib/infusion"}
]
}
},
exec: {
infusionInstall: {
command: "npm install",
cwd: "./node_modules/infusion"
},
infusionBuild: {
command: "grunt build",
cwd: "./node_modules/infusion"
}
}
});

// Load the plugin(s):
grunt.loadNpmTasks("fluid-grunt-eslint");
grunt.loadNpmTasks("grunt-jsonlint");
grunt.loadNpmTasks("grunt-contrib-copy");
grunt.loadNpmTasks("grunt-exec");

// Custom tasks:

grunt.registerTask("default", ["lint"]);
grunt.registerTask("lint", "Apply eslint and jsonlint", ["eslint", "jsonlint"]);
grunt.registerTask("installFrontEnd", "Install front-end dependencies from the node_modules directory after 'npm install'", ["exec:infusionInstall", "exec:infusionBuild", "copy:frontEndDependencies"]);
};
227 changes: 227 additions & 0 deletions LICENSE.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,227 @@
The My Lifelong Learning Lab code is available under either the terms of the New BSD license or the
Educational Community License, Version 2.0. As a recipient of My Lifelong Learning Lab, you may
choose which license to receive this code under (except as noted in per-module
LICENSE files). All modules are Copyright 2016 OCAD University except
where noted otherwise in the code itself, or if the modules reside in a separate
directory, they may contain explicit declarations of copyright in both the
LICENSE file in the directory in which they reside and in the code itself. No
external contributions are allowed under licenses which are fundamentally
incompatible with the ECL or BSD licenses that the My Lifelong Learning Lab is distributed under.

The text of the ECL and BSD licenses is reproduced below.

Educational Community License, Version 2.0
*************************************
Copyright 2016 OCAD University

Educational Community License, Version 2.0, April 2007

The Educational Community License version 2.0 ("ECL") consists of the Apache 2.0
license, modified to change the scope of the patent grant in section 3 to be
specific to the needs of the education communities using this license. The
original Apache 2.0 license can be found at:
http://www.apache.org/licenses/LICENSE-2.0

TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

1. Definitions.

"License" shall mean the terms and conditions for use, reproduction, and
distribution as defined by Sections 1 through 9 of this document.

"Licensor" shall mean the copyright owner or entity authorized by the copyright
owner that is granting the License.

"Legal Entity" shall mean the union of the acting entity and all other entities
that control, are controlled by, or are under common control with that entity.
For the purposes of this definition, "control" means (i) the power, direct or
indirect, to cause the direction or management of such entity, whether by
contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.

"You" (or "Your") shall mean an individual or Legal Entity exercising
permissions granted by this License.

"Source" form shall mean the preferred form for making modifications, including
but not limited to software source code, documentation source, and configuration
files.

"Object" form shall mean any form resulting from mechanical transformation or
translation of a Source form, including but not limited to compiled object code,
generated documentation, and conversions to other media types.

"Work" shall mean the work of authorship, whether in Source or Object form, made
available under the License, as indicated by a copyright notice that is included
in or attached to the work (an example is provided in the Appendix below).

"Derivative Works" shall mean any work, whether in Source or Object form, that
is based on (or derived from) the Work and for which the editorial revisions,
annotations, elaborations, or other modifications represent, as a whole, an
original work of authorship. For the purposes of this License, Derivative Works
shall not include works that remain separable from, or merely link (or bind by
name) to the interfaces of, the Work and Derivative Works thereof.

"Contribution" shall mean any work of authorship, including the original version
of the Work and any modifications or additions to that Work or Derivative Works
thereof, that is intentionally submitted to Licensor for inclusion in the Work
by the copyright owner or by an individual or Legal Entity authorized to submit
on behalf of the copyright owner. For the purposes of this definition,
"submitted" means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems, and
issue tracking systems that are managed by, or on behalf of, the Licensor for
the purpose of discussing and improving the Work, but excluding communication
that is conspicuously marked or otherwise designated in writing by the copyright
owner as "Not a Contribution."

"Contributor" shall mean Licensor and any individual or Legal Entity on behalf
of whom a Contribution has been received by Licensor and subsequently
incorporated within the Work.

2. Grant of Copyright License.

Subject to the terms and conditions of this License, each Contributor hereby
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
irrevocable copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the Work and such
Derivative Works in Source or Object form.

3. Grant of Patent License.

Subject to the terms and conditions of this License, each Contributor hereby
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
irrevocable (except as stated in this section) patent license to make, have
made, use, offer to sell, sell, import, and otherwise transfer the Work, where
such license applies only to those patent claims licensable by such Contributor
that are necessarily infringed by their Contribution(s) alone or by combination
of their Contribution(s) with the Work to which such Contribution(s) was
submitted. If You institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work or a
Contribution incorporated within the Work constitutes direct or contributory
patent infringement, then any patent licenses granted to You under this License
for that Work shall terminate as of the date such litigation is filed. Any
patent license granted hereby with respect to contributions by an individual
employed by an institution or organization is limited to patent claims where the
individual that is the author of the Work is also the inventor of the patent
claims licensed, and where the organization or institution has the right to
grant such license under applicable grant and research funding agreements. No
other express or implied licenses are granted.

4. Redistribution.

You may reproduce and distribute copies of the Work or Derivative Works thereof
in any medium, with or without modifications, and in Source or Object form,
provided that You meet the following conditions:

1. You must give any other recipients of the Work or Derivative Works a copy
of this License; and
2. You must cause any modified files to carry prominent notices stating that
You changed the files; and
3. You must retain, in the Source form of any Derivative Works that You
distribute, all copyright, patent, trademark, and attribution notices from
the Source form of the Work, excluding those notices that do not pertain to
any part of the Derivative Works; and
4. If the Work includes a "NOTICE" text file as part of its distribution,
then any Derivative Works that You distribute must include a readable copy of
the attribution notices contained within such NOTICE file, excluding those
notices that do not pertain to any part of the Derivative Works, in at least
one of the following places: within a NOTICE text file distributed as part of
the Derivative Works; within the Source form or documentation, if provided
along with the Derivative Works; or, within a display generated by the
Derivative Works, if and wherever such third-party notices normally appear.
The contents of the NOTICE file are for informational purposes only and do
not modify the License. You may add Your own attribution notices within
Derivative Works that You distribute, alongside or as an addendum to the
NOTICE text from the Work, provided that such additional attribution notices
cannot be construed as modifying the License.

You may add Your own copyright statement to Your modifications and may provide
additional or different license terms and conditions for use, reproduction, or
distribution of Your modifications, or for any such Derivative Works as a whole,
provided Your use, reproduction, and distribution of the Work otherwise complies
with the conditions stated in this License.

5. Submission of Contributions.

Unless You explicitly state otherwise, any Contribution intentionally submitted
for inclusion in the Work by You to the Licensor shall be under the terms and
conditions of this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify the terms of
any separate license agreement you may have executed with Licensor regarding
such Contributions.

6. Trademarks.

This License does not grant permission to use the trade names, trademarks,
service marks, or product names of the Licensor, except as required for
reasonable and customary use in describing the origin of the Work and
reproducing the content of the NOTICE file.

7. Disclaimer of Warranty.

Unless required by applicable law or agreed to in writing, Licensor provides the
Work (and each Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,
including, without limitation, any warranties or conditions of TITLE,
NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are
solely responsible for determining the appropriateness of using or
redistributing the Work and assume any risks associated with Your exercise of
permissions under this License.

8. Limitation of Liability.

In no event and under no legal theory, whether in tort (including negligence),
contract, or otherwise, unless required by applicable law (such as deliberate
and grossly negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special, incidental,
or consequential damages of any character arising as a result of this License or
out of the use or inability to use the Work (including but not limited to
damages for loss of goodwill, work stoppage, computer failure or malfunction, or
any and all other commercial damages or losses), even if such Contributor has
been advised of the possibility of such damages.

9. Accepting Warranty or Additional Liability.

While redistributing the Work or Derivative Works thereof, You may choose to
offer, and charge a fee for, acceptance of support, warranty, indemnity, or
other liability obligations and/or rights consistent with this License. However,
in accepting such obligations, You may act only on Your own behalf and on Your
sole responsibility, not on behalf of any other Contributor, and only if You
agree to indemnify, defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason of your
accepting any such warranty or additional liability.

END OF TERMS AND CONDITIONS FOR ECL 2.0

The New BSD license
**********************

Copyright 2016 OCAD University

All rights reserved.

Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name of OCAD University nor the names of its
contributors may be used to endorse or promote products derived from this
software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
OF SUCH DAMAGE.

END OF TERMS AND CONDITIONS FOR THE NEW BSD LICENSE
Loading