* parametered animation for slideshow direction
* keyboard control * angular2 update
This commit is contained in:
parent
270a55f6b9
commit
6af8ccbf7a
308
package-lock.json
generated
308
package-lock.json
generated
@ -125,9 +125,9 @@
|
||||
}
|
||||
},
|
||||
"@angular/animations": {
|
||||
"version": "6.1.6",
|
||||
"resolved": "https://registry.npmjs.org/@angular/animations/-/animations-6.1.6.tgz",
|
||||
"integrity": "sha512-fK7onQeVsPgUx/sFcBvcGisuIuxvodzATpoKV9SnsQc6xWE5qsvJRZijrzZIN+Hxy/DgsLaVWRCPn1hG75/D2Q==",
|
||||
"version": "6.1.7",
|
||||
"resolved": "https://registry.npmjs.org/@angular/animations/-/animations-6.1.7.tgz",
|
||||
"integrity": "sha512-bjX3VEVEh5scGDDmxEKPzYI8DWUbqOFA34aYDY2cHPnDkLM0I7pEtO44qb72FSbWwXn77sYlby/dx2gtRayOOA==",
|
||||
"requires": {
|
||||
"tslib": "^1.9.0"
|
||||
}
|
||||
@ -174,25 +174,25 @@
|
||||
}
|
||||
},
|
||||
"@angular/common": {
|
||||
"version": "6.1.6",
|
||||
"resolved": "https://registry.npmjs.org/@angular/common/-/common-6.1.6.tgz",
|
||||
"integrity": "sha512-aFQcfCB2vFfNqR6/e6R34JjFpIFmF3zqr6Ubti1PJOsRuhITZHG/qRYIYA7mh1KVkkf0VXC56B+8QzYbdGcKOQ==",
|
||||
"version": "6.1.7",
|
||||
"resolved": "https://registry.npmjs.org/@angular/common/-/common-6.1.7.tgz",
|
||||
"integrity": "sha512-zFK2xM0hqR2ZWIfUsn+06jg+0K5PolzTxPjfUtVQDCZo+JHHKTVHEwtfORUaMTMfH9EqKrvfB3t6fCwK0523ag==",
|
||||
"requires": {
|
||||
"tslib": "^1.9.0"
|
||||
}
|
||||
},
|
||||
"@angular/compiler": {
|
||||
"version": "6.1.6",
|
||||
"resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-6.1.6.tgz",
|
||||
"integrity": "sha512-Z9Og0DVH5krG/xMhfcRJMr5GF2HzqnG3f6Hr+e6d6FB8oehnCX/w9b34zZfVGUWAydAYj32SpXJLE6fQm/ljzA==",
|
||||
"version": "6.1.7",
|
||||
"resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-6.1.7.tgz",
|
||||
"integrity": "sha512-JKuK/fzKNCF+mNPmPmGQjr0uHVpfxmrOqXBriJMklCtdsKeQW94BLUoNjn8h1H10rFbUqYuD5v9AAKdH77FgnA==",
|
||||
"requires": {
|
||||
"tslib": "^1.9.0"
|
||||
}
|
||||
},
|
||||
"@angular/compiler-cli": {
|
||||
"version": "6.1.6",
|
||||
"resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-6.1.6.tgz",
|
||||
"integrity": "sha512-CvgQXuuUJDfmCwnuhZec41aMAiY7nJMSMJxvZWNbFLRiwq+05LiHc7EJYDc6uVQmddWmSqGwfyghjVaiaKJGMg==",
|
||||
"version": "6.1.7",
|
||||
"resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-6.1.7.tgz",
|
||||
"integrity": "sha512-HzrwmtvrgKwUowfkPTsb6AOqdoQajY3Uso3i0jNc9/bXvpeikH0vj0YIKuQzAJDemluHsowHk/ImEsVGGr2w9g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"chokidar": "^1.4.2",
|
||||
@ -335,77 +335,77 @@
|
||||
}
|
||||
},
|
||||
"@angular/core": {
|
||||
"version": "6.1.6",
|
||||
"resolved": "https://registry.npmjs.org/@angular/core/-/core-6.1.6.tgz",
|
||||
"integrity": "sha512-RFkxNDq8iIfO1SaOuUYqOGD/pujMqifJ9FeVg8M2v7ucW01coXAG0IwqUEMMShQj3GGJGHj+F9BNswN7aD2uvw==",
|
||||
"version": "6.1.7",
|
||||
"resolved": "https://registry.npmjs.org/@angular/core/-/core-6.1.7.tgz",
|
||||
"integrity": "sha512-3MtS8EQy+saNcImDWghphOr/h3l5CpFnZW6aaHiL8T5CpTBNdB86uEmAwtiNQkJ0UeO+cztF1zNCzhm9R93/3w==",
|
||||
"requires": {
|
||||
"tslib": "^1.9.0"
|
||||
}
|
||||
},
|
||||
"@angular/forms": {
|
||||
"version": "6.1.6",
|
||||
"resolved": "https://registry.npmjs.org/@angular/forms/-/forms-6.1.6.tgz",
|
||||
"integrity": "sha512-6ddk8bhsEtSONctj9PUrEJnTTRL1xHCULaxo2N4GQh5XyV8ScRM0ewOTLcpoL0IU4lgtQmU0VsLWdQvKr3g3Ng==",
|
||||
"version": "6.1.7",
|
||||
"resolved": "https://registry.npmjs.org/@angular/forms/-/forms-6.1.7.tgz",
|
||||
"integrity": "sha512-McCElnn6Abr+HAjwxa1ldvIMs101TT0NGq8EHXLyF9QcKG24dU7425+MdLuW0OrtgBql2+RjlqnSiKuxDQHxJA==",
|
||||
"requires": {
|
||||
"tslib": "^1.9.0"
|
||||
}
|
||||
},
|
||||
"@angular/http": {
|
||||
"version": "6.1.6",
|
||||
"resolved": "https://registry.npmjs.org/@angular/http/-/http-6.1.6.tgz",
|
||||
"integrity": "sha512-V4qF68tUSsc3cKvQERJmpfXgZSKgxhb67I2jAfmwU9mEH66wh9FNfZ0b0GPV9hXoCulw3POz4ZUwZZ1E6mLy4A==",
|
||||
"version": "6.1.7",
|
||||
"resolved": "https://registry.npmjs.org/@angular/http/-/http-6.1.7.tgz",
|
||||
"integrity": "sha512-N0wXHpEL/CsNM4l44Z+dU51Y994mBEHjt9yb0SeKf02mdrsTJK+cEvfZ0JkVDjGddqdWHvWFn3zSmkR79qLrSQ==",
|
||||
"requires": {
|
||||
"tslib": "^1.9.0"
|
||||
}
|
||||
},
|
||||
"@angular/language-service": {
|
||||
"version": "6.1.6",
|
||||
"resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-6.1.6.tgz",
|
||||
"integrity": "sha512-EEtM6mJtiEgmmm3VjzJxv5BavvonaBFtBrPUcevIW851DtIqn4CS8yDcLcGFiSvSLtAYxRX8dkacPv9vvM1Khg==",
|
||||
"version": "6.1.7",
|
||||
"resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-6.1.7.tgz",
|
||||
"integrity": "sha512-L6upXuyO42Z5XhtvbDoDuQEmXEOdSYeGOBmXSxb3ywb/0eh8kHk1Xft+8aaKKtazYjol0t+M+DlZgehqvk4vEA==",
|
||||
"dev": true
|
||||
},
|
||||
"@angular/platform-browser": {
|
||||
"version": "6.1.6",
|
||||
"resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-6.1.6.tgz",
|
||||
"integrity": "sha512-fwI/w+MhdolVJEfdoCSZFarQo+SctG1pNa+V3PxMkXhxnAbv7oWPQdxzdCrhTWdxJTJ5enSfumMmlJEZtg1bag==",
|
||||
"version": "6.1.7",
|
||||
"resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-6.1.7.tgz",
|
||||
"integrity": "sha512-YOYg944aefCWElJhnma8X+3wJDb6nHf6aBAVN+YPg0bUplEFacR4y6PeM9QR8vjh5Y0kbGG9ZPGDT/WwP2t4sQ==",
|
||||
"requires": {
|
||||
"tslib": "^1.9.0"
|
||||
}
|
||||
},
|
||||
"@angular/platform-browser-dynamic": {
|
||||
"version": "6.1.6",
|
||||
"resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-6.1.6.tgz",
|
||||
"integrity": "sha512-Ep4vq2ssb1r8XOAw7dJW530vzFKKVY5fj0CYp7VMPfDkwYolEG4TBKQ/ouJkF8n/jdDVFP73+MzU1TLa9/lMQQ==",
|
||||
"version": "6.1.7",
|
||||
"resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-6.1.7.tgz",
|
||||
"integrity": "sha512-sSF7n4SpwPiP1fMwocu/RUegpp/45jHK/+r9biXUXUBD12zO5QMcLHU393sjoNi7e6+meuXEH0pnWa66dTznjw==",
|
||||
"requires": {
|
||||
"tslib": "^1.9.0"
|
||||
}
|
||||
},
|
||||
"@angular/router": {
|
||||
"version": "6.1.6",
|
||||
"resolved": "https://registry.npmjs.org/@angular/router/-/router-6.1.6.tgz",
|
||||
"integrity": "sha512-fOFeOe3uBrSRUYhXdWxHjDPf80eq3ZNCeWfujzfBADtcmiezlO7cxc1v5Eu81t577frU/3z+w8JvmF257p4RZg==",
|
||||
"version": "6.1.7",
|
||||
"resolved": "https://registry.npmjs.org/@angular/router/-/router-6.1.7.tgz",
|
||||
"integrity": "sha512-YaOTq2icKAd9FDls2qo2Qp8FrmLGke3eA+bZ3FvOhFydxyUAvlU96N9Y9Gb05tXTtBaQNzAInov2bbp2YMFEFA==",
|
||||
"requires": {
|
||||
"tslib": "^1.9.0"
|
||||
}
|
||||
},
|
||||
"@babel/code-frame": {
|
||||
"version": "7.0.0-beta.51",
|
||||
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.51.tgz",
|
||||
"integrity": "sha1-vXHZsZKvl435FYKdOdQJRFZDmgw=",
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz",
|
||||
"integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/highlight": "7.0.0-beta.51"
|
||||
"@babel/highlight": "^7.0.0"
|
||||
}
|
||||
},
|
||||
"@babel/generator": {
|
||||
"version": "7.0.0-beta.51",
|
||||
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.51.tgz",
|
||||
"integrity": "sha1-bHV1/952HQdIXgS67cA5LG2eMPY=",
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0.tgz",
|
||||
"integrity": "sha512-/BM2vupkpbZXq22l1ALO7MqXJZH2k8bKVv8Y+pABFnzWdztDB/ZLveP5At21vLz5c2YtSE6p7j2FZEsqafMz5Q==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/types": "7.0.0-beta.51",
|
||||
"@babel/types": "^7.0.0",
|
||||
"jsesc": "^2.5.1",
|
||||
"lodash": "^4.17.5",
|
||||
"lodash": "^4.17.10",
|
||||
"source-map": "^0.5.0",
|
||||
"trim-right": "^1.0.1"
|
||||
},
|
||||
@ -419,88 +419,94 @@
|
||||
}
|
||||
},
|
||||
"@babel/helper-function-name": {
|
||||
"version": "7.0.0-beta.51",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.51.tgz",
|
||||
"integrity": "sha1-IbSHSiJ8+Z7K/MMKkDAtpaJkBWE=",
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0.tgz",
|
||||
"integrity": "sha512-Zo+LGvfYp4rMtz84BLF3bavFTdf8y4rJtMPTe2J+rxYmnDOIeH8le++VFI/pRJU+rQhjqiXxE4LMaIau28Tv1Q==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/helper-get-function-arity": "7.0.0-beta.51",
|
||||
"@babel/template": "7.0.0-beta.51",
|
||||
"@babel/types": "7.0.0-beta.51"
|
||||
"@babel/helper-get-function-arity": "^7.0.0",
|
||||
"@babel/template": "^7.0.0",
|
||||
"@babel/types": "^7.0.0"
|
||||
}
|
||||
},
|
||||
"@babel/helper-get-function-arity": {
|
||||
"version": "7.0.0-beta.51",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.51.tgz",
|
||||
"integrity": "sha1-MoGy0EWvlcFyzpGyCCXYXqRnZBE=",
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz",
|
||||
"integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/types": "7.0.0-beta.51"
|
||||
"@babel/types": "^7.0.0"
|
||||
}
|
||||
},
|
||||
"@babel/helper-split-export-declaration": {
|
||||
"version": "7.0.0-beta.51",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.51.tgz",
|
||||
"integrity": "sha1-imw/ZsTSZTUvwHdIT59ugKUauXg=",
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz",
|
||||
"integrity": "sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/types": "7.0.0-beta.51"
|
||||
"@babel/types": "^7.0.0"
|
||||
}
|
||||
},
|
||||
"@babel/highlight": {
|
||||
"version": "7.0.0-beta.51",
|
||||
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.51.tgz",
|
||||
"integrity": "sha1-6IRK4loVlcz9QriWI7Q3bKBtIl0=",
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz",
|
||||
"integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"chalk": "^2.0.0",
|
||||
"esutils": "^2.0.2",
|
||||
"js-tokens": "^3.0.0"
|
||||
"js-tokens": "^4.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"js-tokens": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
|
||||
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"@babel/parser": {
|
||||
"version": "7.0.0-beta.51",
|
||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.0.0-beta.51.tgz",
|
||||
"integrity": "sha1-J87C30Cd9gr1gnDtj2qlVAnqhvY=",
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.0.0.tgz",
|
||||
"integrity": "sha512-RgJhNdRinpO8zibnoHbzTTexNs4c8ROkXFBanNDZTLHjwbdLk8J5cJSKulx/bycWTLYmKVNCkxRtVCoJnqPk+g==",
|
||||
"dev": true
|
||||
},
|
||||
"@babel/template": {
|
||||
"version": "7.0.0-beta.51",
|
||||
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.51.tgz",
|
||||
"integrity": "sha1-lgKkCuvPNXrpZ34lMu9fyBD1+/8=",
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0.tgz",
|
||||
"integrity": "sha512-VLQZik/G5mjYJ6u19U3W2u7eM+rA/NGzH+GtHDFFkLTKLW66OasFrxZ/yK7hkyQcswrmvugFyZpDFRW0DjcjCw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/code-frame": "7.0.0-beta.51",
|
||||
"@babel/parser": "7.0.0-beta.51",
|
||||
"@babel/types": "7.0.0-beta.51",
|
||||
"lodash": "^4.17.5"
|
||||
"@babel/code-frame": "^7.0.0",
|
||||
"@babel/parser": "^7.0.0",
|
||||
"@babel/types": "^7.0.0"
|
||||
}
|
||||
},
|
||||
"@babel/traverse": {
|
||||
"version": "7.0.0-beta.51",
|
||||
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.51.tgz",
|
||||
"integrity": "sha1-mB2vLOw0emIx06odnhgDsDqqpKg=",
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0.tgz",
|
||||
"integrity": "sha512-ka/lwaonJZTlJyn97C4g5FYjPOx+Oxd3ab05hbDr1Mx9aP1FclJ+SUHyLx3Tx40sGmOVJApDxE6puJhd3ld2kw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/code-frame": "7.0.0-beta.51",
|
||||
"@babel/generator": "7.0.0-beta.51",
|
||||
"@babel/helper-function-name": "7.0.0-beta.51",
|
||||
"@babel/helper-split-export-declaration": "7.0.0-beta.51",
|
||||
"@babel/parser": "7.0.0-beta.51",
|
||||
"@babel/types": "7.0.0-beta.51",
|
||||
"@babel/code-frame": "^7.0.0",
|
||||
"@babel/generator": "^7.0.0",
|
||||
"@babel/helper-function-name": "^7.0.0",
|
||||
"@babel/helper-split-export-declaration": "^7.0.0",
|
||||
"@babel/parser": "^7.0.0",
|
||||
"@babel/types": "^7.0.0",
|
||||
"debug": "^3.1.0",
|
||||
"globals": "^11.1.0",
|
||||
"invariant": "^2.2.0",
|
||||
"lodash": "^4.17.5"
|
||||
"lodash": "^4.17.10"
|
||||
},
|
||||
"dependencies": {
|
||||
"debug": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
|
||||
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
|
||||
"version": "3.2.5",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.5.tgz",
|
||||
"integrity": "sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ms": "2.0.0"
|
||||
"ms": "^2.1.1"
|
||||
}
|
||||
},
|
||||
"globals": {
|
||||
@ -508,17 +514,23 @@
|
||||
"resolved": "https://registry.npmjs.org/globals/-/globals-11.7.0.tgz",
|
||||
"integrity": "sha512-K8BNSPySfeShBQXsahYB/AbbWruVOTyVpgoIDnl8odPpeSfP2J5QO2oLFFdl2j7GfDCtZj2bMKar2T49itTPCg==",
|
||||
"dev": true
|
||||
},
|
||||
"ms": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
|
||||
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"@babel/types": {
|
||||
"version": "7.0.0-beta.51",
|
||||
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.51.tgz",
|
||||
"integrity": "sha1-2AK3tUO1g2x3iqaReXq/APPZfqk=",
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0.tgz",
|
||||
"integrity": "sha512-5tPDap4bGKTLPtci2SUl/B7Gv8RnuJFuQoWx26RJobS0fFrz4reUA3JnwIM+HVHEmWE0C1mzKhDtTp8NsWY02Q==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"esutils": "^2.0.2",
|
||||
"lodash": "^4.17.5",
|
||||
"lodash": "^4.17.10",
|
||||
"to-fast-properties": "^2.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
@ -576,9 +588,9 @@
|
||||
}
|
||||
},
|
||||
"@types/jasmine": {
|
||||
"version": "2.8.6",
|
||||
"resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-2.8.6.tgz",
|
||||
"integrity": "sha512-clg9raJTY0EOo5pVZKX3ZlMjlYzVU73L71q5OV1jhE2Uezb7oF94jh4CvwrW6wInquQAdhOxJz5VDF2TLUGmmA==",
|
||||
"version": "2.8.8",
|
||||
"resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-2.8.8.tgz",
|
||||
"integrity": "sha512-OJSUxLaxXsjjhob2DBzqzgrkLmukM3+JMpRp0r0E4HTdT1nwDCWhaswjYxazPij6uOdzHCJfNbDjmQ1/rnNbCg==",
|
||||
"dev": true
|
||||
},
|
||||
"@types/jasminewd2": {
|
||||
@ -603,7 +615,7 @@
|
||||
},
|
||||
"@types/q": {
|
||||
"version": "0.0.32",
|
||||
"resolved": "https://registry.npmjs.org/@types/q/-/q-0.0.32.tgz",
|
||||
"resolved": "http://registry.npmjs.org/@types/q/-/q-0.0.32.tgz",
|
||||
"integrity": "sha1-vShOV8hPEyXacCur/IKlMoGQwMU=",
|
||||
"dev": true
|
||||
},
|
||||
@ -3042,9 +3054,9 @@
|
||||
}
|
||||
},
|
||||
"es6-promise": {
|
||||
"version": "4.2.4",
|
||||
"resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz",
|
||||
"integrity": "sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ==",
|
||||
"version": "4.2.5",
|
||||
"resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.5.tgz",
|
||||
"integrity": "sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg==",
|
||||
"dev": true
|
||||
},
|
||||
"es6-promisify": {
|
||||
@ -4868,13 +4880,19 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"debug": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
|
||||
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
|
||||
"version": "3.2.5",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.5.tgz",
|
||||
"integrity": "sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ms": "2.0.0"
|
||||
"ms": "^2.1.1"
|
||||
}
|
||||
},
|
||||
"ms": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
|
||||
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -5411,9 +5429,9 @@
|
||||
}
|
||||
},
|
||||
"istanbul-api": {
|
||||
"version": "2.0.5",
|
||||
"resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-2.0.5.tgz",
|
||||
"integrity": "sha512-GE5gqFpZsHKgsAbVsgPXlcWKV7fAKP7Bbrma4BJbzBQ+O7KVd/o94WjXOTn4m6eThMhBjWOGOKmaWPwJ3tHVIA==",
|
||||
"version": "2.0.6",
|
||||
"resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-2.0.6.tgz",
|
||||
"integrity": "sha512-8W5oeAGWXhtTJjAyVfvavOLVyZCTNCKsyF6GON/INKlBdO7uJ/bv3qnPj5M6ERKzmMCJS1kntnjjGuJ86fn3rQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"async": "^2.6.1",
|
||||
@ -5421,10 +5439,10 @@
|
||||
"fileset": "^2.0.3",
|
||||
"istanbul-lib-coverage": "^2.0.1",
|
||||
"istanbul-lib-hook": "^2.0.1",
|
||||
"istanbul-lib-instrument": "^2.3.2",
|
||||
"istanbul-lib-report": "^2.0.1",
|
||||
"istanbul-lib-instrument": "^3.0.0",
|
||||
"istanbul-lib-report": "^2.0.2",
|
||||
"istanbul-lib-source-maps": "^2.0.1",
|
||||
"istanbul-reports": "^2.0.0",
|
||||
"istanbul-reports": "^2.0.1",
|
||||
"js-yaml": "^3.12.0",
|
||||
"make-dir": "^1.3.0",
|
||||
"once": "^1.4.0"
|
||||
@ -5446,16 +5464,16 @@
|
||||
"dev": true
|
||||
},
|
||||
"istanbul-lib-instrument": {
|
||||
"version": "2.3.2",
|
||||
"resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-2.3.2.tgz",
|
||||
"integrity": "sha512-l7TD/VnBsIB2OJvSyxaLW/ab1+92dxZNH9wLH7uHPPioy3JZ8tnx2UXUdKmdkgmP2EFPzg64CToUP6dAS3U32Q==",
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.0.0.tgz",
|
||||
"integrity": "sha512-eQY9vN9elYjdgN9Iv6NS/00bptm02EBBk70lRMaVjeA6QYocQgenVrSgC28TJurdnZa80AGO3ASdFN+w/njGiQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/generator": "7.0.0-beta.51",
|
||||
"@babel/parser": "7.0.0-beta.51",
|
||||
"@babel/template": "7.0.0-beta.51",
|
||||
"@babel/traverse": "7.0.0-beta.51",
|
||||
"@babel/types": "7.0.0-beta.51",
|
||||
"@babel/generator": "^7.0.0",
|
||||
"@babel/parser": "^7.0.0",
|
||||
"@babel/template": "^7.0.0",
|
||||
"@babel/traverse": "^7.0.0",
|
||||
"@babel/types": "^7.0.0",
|
||||
"istanbul-lib-coverage": "^2.0.1",
|
||||
"semver": "^5.5.0"
|
||||
}
|
||||
@ -5538,9 +5556,9 @@
|
||||
}
|
||||
},
|
||||
"istanbul-lib-report": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.1.tgz",
|
||||
"integrity": "sha512-pXYOWwpDNc5AHIY93WjFTuxzkDOOZ7B8eSa0cBHTmTnKRst5ccc/xBfWu/5wcNJqB6/Qy0lDMhpn+Uy0qyyUjA==",
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.2.tgz",
|
||||
"integrity": "sha512-rJ8uR3peeIrwAxoDEbK4dJ7cqqtxBisZKCuwkMtMv0xYzaAnsAi3AHrHPAAtNXzG/bcCgZZ3OJVqm1DTi9ap2Q==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"istanbul-lib-coverage": "^2.0.1",
|
||||
@ -5570,12 +5588,12 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"debug": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
|
||||
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
|
||||
"version": "3.2.5",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.5.tgz",
|
||||
"integrity": "sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ms": "2.0.0"
|
||||
"ms": "^2.1.1"
|
||||
}
|
||||
},
|
||||
"istanbul-lib-coverage": {
|
||||
@ -5584,6 +5602,12 @@
|
||||
"integrity": "sha512-nPvSZsVlbG9aLhZYaC3Oi1gT/tpyo3Yt5fNyf6NmcKIayz4VV/txxJFFKAK/gU4dcNn8ehsanBbVHVl0+amOLA==",
|
||||
"dev": true
|
||||
},
|
||||
"ms": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
|
||||
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
|
||||
"dev": true
|
||||
},
|
||||
"source-map": {
|
||||
"version": "0.6.1",
|
||||
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
|
||||
@ -5593,9 +5617,9 @@
|
||||
}
|
||||
},
|
||||
"istanbul-reports": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.0.0.tgz",
|
||||
"integrity": "sha512-d2YRSnAOHHb+6vMc5qjJEyPN4VapkgUMhKlMmr3BzKdMDWdJbyYGEi/7m5AjDjkvRRTjs68ttPRZ7W2jBZ31SQ==",
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.0.1.tgz",
|
||||
"integrity": "sha512-CT0QgMBJqs6NJLF678ZHcquUAZIoBIUNzdJrRJfpkI9OnzG6MkUfHxbJC3ln981dMswC7/B1mfX3LNkhgJxsuw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"handlebars": "^4.0.11"
|
||||
@ -5760,7 +5784,7 @@
|
||||
},
|
||||
"es6-promise": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.0.2.tgz",
|
||||
"resolved": "http://registry.npmjs.org/es6-promise/-/es6-promise-3.0.2.tgz",
|
||||
"integrity": "sha1-AQ1YWEI6XxGJeWZfRkhqlcbuK7Y=",
|
||||
"dev": true
|
||||
},
|
||||
@ -5772,7 +5796,7 @@
|
||||
},
|
||||
"readable-stream": {
|
||||
"version": "2.0.6",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz",
|
||||
"resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz",
|
||||
"integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
@ -5971,9 +5995,9 @@
|
||||
}
|
||||
},
|
||||
"karma-coverage-istanbul-reporter": {
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-2.0.3.tgz",
|
||||
"integrity": "sha512-UVs9IDulfwkBxjEnUzfR/nIc3oBneOPuorpLVBvEMtz2hy0wnVLhCMxpkqAtuQWqvOZRQlGqs+dDtMUeRydTQA==",
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-2.0.4.tgz",
|
||||
"integrity": "sha512-xJS7QSQIVU6VK9HuJ/ieE5yynxKhjCCkd96NLY/BX/HXsx0CskU9JJiMQbd4cHALiddMwI4OWh1IIzeWrsavJw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"istanbul-api": "^2.0.5",
|
||||
@ -5981,9 +6005,9 @@
|
||||
}
|
||||
},
|
||||
"karma-jasmine": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-1.1.1.tgz",
|
||||
"integrity": "sha1-b+hA51oRYAydkehLM8RY4cRqNSk=",
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-1.1.2.tgz",
|
||||
"integrity": "sha1-OU8rJf+0pkS5rabyLUQ+L9CIhsM=",
|
||||
"dev": true
|
||||
},
|
||||
"karma-jasmine-html-reporter": {
|
||||
@ -7662,9 +7686,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"protractor": {
|
||||
"version": "5.4.0",
|
||||
"resolved": "https://registry.npmjs.org/protractor/-/protractor-5.4.0.tgz",
|
||||
"integrity": "sha512-6TSYqMhUUzxr4/wN0ttSISqPMKvcVRXF4k8jOEpGWD8OioLak4KLgfzHK9FJ49IrjzRrZ+Mx1q2Op8Rk0zEcnQ==",
|
||||
"version": "5.4.1",
|
||||
"resolved": "https://registry.npmjs.org/protractor/-/protractor-5.4.1.tgz",
|
||||
"integrity": "sha512-ORey5ewQMYiXQxcQohsqEiKYOg/r5yJoJbt0tuROmmgajdg/CA3gTOZNIFJncUVMAJIk5YFqBBLUjKVmQO6tfA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/node": "^6.0.46",
|
||||
@ -7681,7 +7705,7 @@
|
||||
"saucelabs": "^1.5.0",
|
||||
"selenium-webdriver": "3.6.0",
|
||||
"source-map-support": "~0.4.0",
|
||||
"webdriver-js-extender": "2.0.0",
|
||||
"webdriver-js-extender": "2.1.0",
|
||||
"webdriver-manager": "^12.0.6"
|
||||
},
|
||||
"dependencies": {
|
||||
@ -8361,9 +8385,9 @@
|
||||
}
|
||||
},
|
||||
"rxjs": {
|
||||
"version": "6.3.1",
|
||||
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.1.tgz",
|
||||
"integrity": "sha512-hRVfb1Mcf8rLXq1AZEjYpzBnQbO7Duveu1APXkWRTvqzhmkoQ40Pl2F9Btacx+gJCOqsMiugCGG4I2HPQgJRtA==",
|
||||
"version": "6.3.2",
|
||||
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.2.tgz",
|
||||
"integrity": "sha512-hV7criqbR0pe7EeL3O66UYVg92IR0XsA97+9y+BWTePK9SKmEI5Qd3Zj6uPnGkNzXsBywBQWTvujPl+1Kn9Zjw==",
|
||||
"requires": {
|
||||
"tslib": "^1.9.0"
|
||||
}
|
||||
@ -10171,9 +10195,9 @@
|
||||
}
|
||||
},
|
||||
"webdriver-js-extender": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/webdriver-js-extender/-/webdriver-js-extender-2.0.0.tgz",
|
||||
"integrity": "sha512-fbyKiVu3azzIc5d4+26YfuPQcFTlgFQV5yQ/0OQj4Ybkl4g1YQuIPskf5v5wqwRJhHJnPHthB6tqCjWHOKLWag==",
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/webdriver-js-extender/-/webdriver-js-extender-2.1.0.tgz",
|
||||
"integrity": "sha512-lcUKrjbBfCK6MNsh7xaY2UAUmZwe+/ib03AjVOpFobX4O7+83BUveSrLfU0Qsyb1DaKJdQRbuU+kM9aZ6QUhiQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/selenium-webdriver": "^3.0.0",
|
||||
|
||||
32
package.json
32
package.json
@ -11,31 +11,31 @@
|
||||
},
|
||||
"private": true,
|
||||
"dependencies": {
|
||||
"@angular/animations": "^6.1.0",
|
||||
"@angular/common": "^6.1.0",
|
||||
"@angular/compiler": "^6.1.0",
|
||||
"@angular/core": "^6.1.0",
|
||||
"@angular/forms": "^6.1.0",
|
||||
"@angular/http": "^6.1.0",
|
||||
"@angular/platform-browser": "^6.1.0",
|
||||
"@angular/platform-browser-dynamic": "^6.1.0",
|
||||
"@angular/router": "^6.1.0",
|
||||
"@angular/animations": "^6.1.7",
|
||||
"@angular/common": "^6.1.7",
|
||||
"@angular/compiler": "^6.1.7",
|
||||
"@angular/core": "^6.1.7",
|
||||
"@angular/forms": "^6.1.7",
|
||||
"@angular/http": "^6.1.7",
|
||||
"@angular/platform-browser": "^6.1.7",
|
||||
"@angular/platform-browser-dynamic": "^6.1.7",
|
||||
"@angular/router": "^6.1.7",
|
||||
"@types/date-fns": "^2.6.0",
|
||||
"@types/marked": "^0.4.1",
|
||||
"core-js": "^2.5.4",
|
||||
"date-fns": "^1.29.0",
|
||||
"marked": "^0.5.0",
|
||||
"ng2-semantic-ui": "^0.9.7",
|
||||
"rxjs": "^6.0.0",
|
||||
"rxjs": "^6.3.2",
|
||||
"semantic-ui-css": "^2.3.3",
|
||||
"zone.js": "~0.8.26"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@angular-devkit/build-angular": "~0.7.0",
|
||||
"@angular/cli": "~6.1.5",
|
||||
"@angular/compiler-cli": "^6.1.0",
|
||||
"@angular/language-service": "^6.1.0",
|
||||
"@types/jasmine": "~2.8.6",
|
||||
"@angular/compiler-cli": "^6.1.7",
|
||||
"@angular/language-service": "^6.1.7",
|
||||
"@types/jasmine": "^2.8.8",
|
||||
"@types/jasminewd2": "~2.0.3",
|
||||
"@types/node": "~8.9.4",
|
||||
"codelyzer": "~4.2.1",
|
||||
@ -43,10 +43,10 @@
|
||||
"jasmine-spec-reporter": "~4.2.1",
|
||||
"karma": "~1.7.1",
|
||||
"karma-chrome-launcher": "~2.2.0",
|
||||
"karma-coverage-istanbul-reporter": "~2.0.0",
|
||||
"karma-jasmine": "~1.1.1",
|
||||
"karma-coverage-istanbul-reporter": "^2.0.4",
|
||||
"karma-jasmine": "^1.1.2",
|
||||
"karma-jasmine-html-reporter": "^0.2.2",
|
||||
"protractor": "~5.4.0",
|
||||
"protractor": "^5.4.1",
|
||||
"ts-node": "~5.0.1",
|
||||
"tslint": "~5.9.1",
|
||||
"typescript": "~2.7.2"
|
||||
|
||||
9
src/app/app.component.css
Normal file → Executable file
9
src/app/app.component.css
Normal file → Executable file
@ -0,0 +1,9 @@
|
||||
.pause-indicator {
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
z-index: 999;
|
||||
background-color: lightgrey;
|
||||
color: red;
|
||||
text-align: center;
|
||||
font-weight: bold;
|
||||
}
|
||||
3
src/app/app.component.html
Normal file → Executable file
3
src/app/app.component.html
Normal file → Executable file
@ -1 +1,2 @@
|
||||
<router-outlet></router-outlet>
|
||||
<div class="pause-indicator" *ngIf="paused">Slideshow is paused</div>
|
||||
<router-outlet></router-outlet>
|
||||
|
||||
28
src/app/app.component.ts
Normal file → Executable file
28
src/app/app.component.ts
Normal file → Executable file
@ -1,5 +1,6 @@
|
||||
import { Component, OnInit } from '@angular/core';
|
||||
import { Component, HostListener, OnInit } from '@angular/core';
|
||||
import { TimerService } from './shared/service/timer.service';
|
||||
import { SlideShowService } from './display/slide-show.service';
|
||||
|
||||
@Component({
|
||||
selector: 'app-root',
|
||||
@ -7,6 +8,29 @@ import { TimerService } from './shared/service/timer.service';
|
||||
styleUrls: ['./app.component.css']
|
||||
})
|
||||
export class AppComponent implements OnInit {
|
||||
constructor(private timerService: TimerService) {}
|
||||
constructor(private timerService: TimerService,
|
||||
private slideShowService: SlideShowService) {}
|
||||
|
||||
public ngOnInit() {}
|
||||
|
||||
@HostListener('document:keyup', ['$event.key'])
|
||||
private keyPressed(key: string) {
|
||||
switch (key) {
|
||||
case ' ':
|
||||
this.timerService.togglePause();
|
||||
break;
|
||||
case 'ArrowLeft':
|
||||
this.timerService.pause();
|
||||
this.slideShowService.prevSlide();
|
||||
break;
|
||||
case 'ArrowRight':
|
||||
this.timerService.pause();
|
||||
this.slideShowService.nextSlide();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public get paused(): boolean {
|
||||
return this.timerService.paused;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,16 +1,16 @@
|
||||
import { Component, HostBinding, OnDestroy, OnInit } from '@angular/core';
|
||||
import { Title } from '@angular/platform-browser';
|
||||
import { ActivatedRoute } from '@angular/router';
|
||||
import { Subscription, timer } from 'rxjs';
|
||||
import {Component, HostBinding, OnDestroy, OnInit} from '@angular/core';
|
||||
import {Title} from '@angular/platform-browser';
|
||||
import {ActivatedRoute} from '@angular/router';
|
||||
import {Subscription, timer} from 'rxjs';
|
||||
|
||||
import { slideInOutAnimation } from '../../shared/slide-in-out-animation';
|
||||
import { CommitTrackerService } from '../../shared/service/commit-tracker.service';
|
||||
import { SettingsService } from '../../shared/service/settings.service';
|
||||
import { Commit } from '../../shared/commit';
|
||||
import { CommitStatus } from '../../shared/commit-status.enum';
|
||||
import { Result } from '../../shared/result.enum';
|
||||
import { Build } from '../../shared/build';
|
||||
import { environment } from '../../../environments/environment';
|
||||
import {slideInOutAnimation} from '../../shared/slide-in-out-animation';
|
||||
import {CommitTrackerService} from '../../shared/service/commit-tracker.service';
|
||||
import {AnimationDirection, SettingsService} from '../../shared/service/settings.service';
|
||||
import {Commit} from '../../shared/commit';
|
||||
import {CommitStatus} from '../../shared/commit-status.enum';
|
||||
import {Result} from '../../shared/result.enum';
|
||||
import {Build} from '../../shared/build';
|
||||
import {environment} from '../../../environments/environment';
|
||||
|
||||
const TIMER_COMMITTRACKER_REFRESH = 10000;
|
||||
const DEFAULT_AVATAR = '/assets/riddler.png';
|
||||
@ -27,7 +27,11 @@ export class CommitTrackerComponent implements OnInit, OnDestroy {
|
||||
private refreshCommitTrackerTimer: Subscription;
|
||||
|
||||
@HostBinding('@slideInOutAnimation')
|
||||
slideIn = false;
|
||||
public get slideInOutAnimation() {
|
||||
return this.settings.animationDirection === AnimationDirection.RIGHT
|
||||
? {value: 'right', params: {offsetEnter: 100, offsetLeave: -100}}
|
||||
: {value: 'left', params: {offsetEnter: -100, offsetLeave: 100}};
|
||||
}
|
||||
|
||||
constructor(private commitTrackerService: CommitTrackerService,
|
||||
private settings: SettingsService,
|
||||
|
||||
3
src/app/display/kanban-board/kanban-board.component.css
Normal file → Executable file
3
src/app/display/kanban-board/kanban-board.component.css
Normal file → Executable file
@ -1,7 +1,8 @@
|
||||
:host {
|
||||
display: inline-block;
|
||||
height: 100vh;
|
||||
overflow: hidden;
|
||||
overflow-x: hidden;
|
||||
overflow-y: scroll;
|
||||
background-color: #444;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
@ -1,10 +1,10 @@
|
||||
import { Component, HostBinding, OnInit } from '@angular/core';
|
||||
import { Title } from '@angular/platform-browser';
|
||||
import { ActivatedRoute } from '@angular/router';
|
||||
import {Component, HostBinding, OnInit} from '@angular/core';
|
||||
import {Title} from '@angular/platform-browser';
|
||||
import {ActivatedRoute} from '@angular/router';
|
||||
|
||||
import { KanbanBoard, KanbanEntry, KanbanService, } from '../shared';
|
||||
import { slideInOutAnimation } from '../../shared/slide-in-out-animation';
|
||||
import { SettingsService } from '../../shared/service/settings.service';
|
||||
import {KanbanBoard, KanbanEntry, KanbanService,} from '../shared';
|
||||
import {slideInOutAnimation} from '../../shared/slide-in-out-animation';
|
||||
import {AnimationDirection, SettingsService} from '../../shared/service/settings.service';
|
||||
|
||||
@Component({
|
||||
selector: 'app-kanban-board',
|
||||
@ -15,7 +15,11 @@ import { SettingsService } from '../../shared/service/settings.service';
|
||||
export class KanbanBoardComponent implements OnInit {
|
||||
|
||||
@HostBinding('@slideInOutAnimation')
|
||||
slideIn = true;
|
||||
public get slideInOutAnimation() {
|
||||
return this.settingService.animationDirection === AnimationDirection.RIGHT
|
||||
? {value: 'right', params: {offsetEnter: 100, offsetLeave: -100}}
|
||||
: {value: 'left', params: {offsetEnter: -100, offsetLeave: 100}};
|
||||
}
|
||||
|
||||
constructor(private titleService: Title,
|
||||
private route: ActivatedRoute,
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Slide, SlideVisibility } from '../shared/slide';
|
||||
import { SlideService } from '../shared/service/slide.service';
|
||||
import { Router } from '@angular/router';
|
||||
import { SettingsService } from '../shared/service/settings.service';
|
||||
import {Injectable} from '@angular/core';
|
||||
import {Slide, SlideVisibility} from '../shared/slide';
|
||||
import {SlideService} from '../shared/service/slide.service';
|
||||
import {Router} from '@angular/router';
|
||||
import {AnimationDirection, SettingsService} from '../shared/service/settings.service';
|
||||
|
||||
@Injectable()
|
||||
export class SlideShowService {
|
||||
@ -17,30 +17,52 @@ export class SlideShowService {
|
||||
this.reloadSlides();
|
||||
}
|
||||
|
||||
public nextSlide() {
|
||||
switch (this.currentSlideIndex) {
|
||||
case this.slides.length - 1:
|
||||
this.currentSlideIndex++;
|
||||
this.router.navigate(['/kanban']);
|
||||
break;
|
||||
case this.slides.length:
|
||||
this.currentSlideIndex++;
|
||||
this.router.navigate(['/commit-tracker']);
|
||||
break;
|
||||
case this.slides.length + 1:
|
||||
this.currentSlideIndex = -1;
|
||||
this.reloadSlides();
|
||||
this.router.navigate(['/watchers']);
|
||||
break;
|
||||
default:
|
||||
this.oddEven = !this.oddEven;
|
||||
this.currentSlideIndex++;
|
||||
this.router.navigate([
|
||||
this.oddEven ? '/slideshow-odd' : '/slideshow-even',
|
||||
this.slides[this.currentSlideIndex].id
|
||||
]);
|
||||
break;
|
||||
public prevSlide() {
|
||||
this.settingsService.animationDirection = AnimationDirection.LEFT;
|
||||
console.log('prev-in', this.slides.length, this.currentSlideIndex);
|
||||
if (this.currentSlideIndex > this.slides.length) {
|
||||
this.currentSlideIndex = this.slides.length;
|
||||
this.router.navigate(['/watchers']);
|
||||
} else if (this.currentSlideIndex === this.slides.length) {
|
||||
this.currentSlideIndex--;
|
||||
this.router.navigate(['/commit-tracker']);
|
||||
} else if (this.currentSlideIndex < 0) {
|
||||
this.currentSlideIndex = this.slides.length + 1;
|
||||
this.reloadSlides();
|
||||
this.router.navigate(['/kanban']);
|
||||
} else {
|
||||
this.oddEven = !this.oddEven;
|
||||
this.router.navigate([
|
||||
this.oddEven ? '/slideshow-odd' : '/slideshow-even',
|
||||
this.slides[this.currentSlideIndex].id
|
||||
]);
|
||||
this.currentSlideIndex--;
|
||||
}
|
||||
console.log('prev-out', this.slides.length, this.currentSlideIndex);
|
||||
}
|
||||
|
||||
public nextSlide() {
|
||||
this.settingsService.animationDirection = AnimationDirection.RIGHT;
|
||||
console.log('next-in', this.slides.length, this.currentSlideIndex);
|
||||
if (this.currentSlideIndex < 0) {
|
||||
this.currentSlideIndex++;
|
||||
this.router.navigate(['/kanban']);
|
||||
} else if (this.currentSlideIndex === this.slides.length) {
|
||||
this.currentSlideIndex++;
|
||||
this.router.navigate(['/commit-tracker']);
|
||||
} else if (this.currentSlideIndex > this.slides.length) {
|
||||
this.currentSlideIndex = -1;
|
||||
this.reloadSlides();
|
||||
this.router.navigate(['/watchers']);
|
||||
} else {
|
||||
this.oddEven = !this.oddEven;
|
||||
this.router.navigate([
|
||||
this.oddEven ? '/slideshow-odd' : '/slideshow-even',
|
||||
this.slides[this.currentSlideIndex].id
|
||||
]);
|
||||
this.currentSlideIndex++;
|
||||
}
|
||||
console.log('next-out', this.slides.length, this.currentSlideIndex);
|
||||
}
|
||||
|
||||
private reloadSlides() {
|
||||
|
||||
@ -3,8 +3,9 @@ import {ActivatedRoute} from '@angular/router';
|
||||
import {Title} from '@angular/platform-browser';
|
||||
|
||||
import * as marked from 'marked';
|
||||
import {slideInOutAnimation} from '../../shared/slide-in-out-animation';
|
||||
import {Slide, SlideType} from '../../shared/slide';
|
||||
import {slideInOutAnimation} from '../../shared/slide-in-out-animation';
|
||||
import {AnimationDirection, SettingsService} from '../../shared/service/settings.service';
|
||||
|
||||
@Component({
|
||||
selector: 'app-slide-show',
|
||||
@ -17,10 +18,15 @@ export class SlideShowComponent implements OnInit {
|
||||
public slide: Slide;
|
||||
|
||||
@HostBinding('@slideInOutAnimation')
|
||||
slideIn = true;
|
||||
public get slideInOutAnimation() {
|
||||
return this.settings.animationDirection === AnimationDirection.RIGHT
|
||||
? {value: 'right', params: {offsetEnter: 100, offsetLeave: -100}}
|
||||
: {value: 'left', params: {offsetEnter: -100, offsetLeave: 100}};
|
||||
}
|
||||
|
||||
constructor(private route: ActivatedRoute,
|
||||
private titleService: Title) {
|
||||
private titleService: Title,
|
||||
private settings: SettingsService) {
|
||||
this.md = marked.setOptions({});
|
||||
}
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import {Component, HostBinding, OnInit} from '@angular/core';
|
||||
import { Title } from '@angular/platform-browser';
|
||||
import { ActivatedRoute } from '@angular/router';
|
||||
import { SettingsService } from '../../shared/service/settings.service';
|
||||
import {Title} from '@angular/platform-browser';
|
||||
import {ActivatedRoute} from '@angular/router';
|
||||
import {AnimationDirection, SettingsService} from '../../shared/service/settings.service';
|
||||
import {slideInOutAnimation} from '../../shared/slide-in-out-animation';
|
||||
import {WatcherService} from '../shared/watcher.service';
|
||||
import {WatchedIssue} from '../shared/watched-issue.model';
|
||||
@ -18,7 +18,11 @@ const DEFAULT_AVATAR = '/assets/riddler.png';
|
||||
export class WatchersComponent implements OnInit {
|
||||
|
||||
@HostBinding('@slideInOutAnimation')
|
||||
slideIn = true;
|
||||
public get slideInOutAnimation() {
|
||||
return this.settingService.animationDirection === AnimationDirection.RIGHT
|
||||
? {value: 'right', params: {offsetEnter: 100, offsetLeave: -100}}
|
||||
: {value: 'left', params: {offsetEnter: -100, offsetLeave: 100}};
|
||||
}
|
||||
|
||||
constructor(private titleService: Title,
|
||||
private route: ActivatedRoute,
|
||||
|
||||
@ -13,6 +13,8 @@ export class SettingsService {
|
||||
private teamSubject: Subject<Team> = new Subject<Team>();
|
||||
private intervalSubject: Subject<number> = new Subject<number>();
|
||||
|
||||
public animationDirection: AnimationDirection = AnimationDirection.RIGHT;
|
||||
|
||||
constructor() {}
|
||||
|
||||
get team(): Team {
|
||||
@ -51,3 +53,8 @@ export class SettingsService {
|
||||
return this.teamSubject.asObservable();
|
||||
}
|
||||
}
|
||||
|
||||
export enum AnimationDirection {
|
||||
LEFT,
|
||||
RIGHT,
|
||||
}
|
||||
|
||||
@ -14,6 +14,7 @@ const TIME_SEPARATOR = ':';
|
||||
|
||||
@Injectable()
|
||||
export class TimerService implements OnDestroy {
|
||||
public paused = false;
|
||||
private autoSwitch = false;
|
||||
private slideShowTimer: Subscription;
|
||||
private selfUpdateCheckerTimer: Subscription;
|
||||
@ -52,19 +53,32 @@ export class TimerService implements OnDestroy {
|
||||
}
|
||||
|
||||
private changeSlide() {
|
||||
if (this.autoSwitch && this.isDuringDailyStandup()) {
|
||||
this.router.navigate(['/kanban']);
|
||||
if (!this.paused) {
|
||||
if (this.autoSwitch && this.isDuringDailyStandup()) {
|
||||
this.router.navigate(['/kanban']);
|
||||
}
|
||||
if (this.autoSwitch && !this.isDuringDailyStandup()) {
|
||||
this.slideShowService.nextSlide();
|
||||
}
|
||||
this.setSlideTimer(this.settings.slideInterval);
|
||||
}
|
||||
if (this.autoSwitch && !this.isDuringDailyStandup()) {
|
||||
this.slideShowService.nextSlide();
|
||||
}
|
||||
this.setSlideTimer(this.settings.slideInterval);
|
||||
}
|
||||
|
||||
public setSlideTimer(delay: number) {
|
||||
this.slideTimerSubject.next(delay);
|
||||
}
|
||||
|
||||
public togglePause() {
|
||||
this.paused = !this.paused;
|
||||
if (!this.paused) {
|
||||
this.setSlideTimer(this.settings.slideInterval);
|
||||
}
|
||||
}
|
||||
|
||||
public pause() {
|
||||
this.paused = true;
|
||||
}
|
||||
|
||||
private isDuringDailyStandup(): boolean {
|
||||
if (this.settings.team.dailyLockEnabled) {
|
||||
const now = new Date();
|
||||
|
||||
4
src/app/shared/slide-in-out-animation.ts
Normal file → Executable file
4
src/app/shared/slide-in-out-animation.ts
Normal file → Executable file
@ -21,7 +21,7 @@ export const slideInOutAnimation =
|
||||
style({
|
||||
// start with the content positioned off the right of the screen,
|
||||
// -400% is required instead of -100% because the negative position adds to the width of the element
|
||||
transform: 'translateX(100%)'
|
||||
transform: 'translateX({{offsetEnter}}%)'
|
||||
}),
|
||||
|
||||
// animation and styles at end of transition
|
||||
@ -36,7 +36,7 @@ export const slideInOutAnimation =
|
||||
// animation and styles at end of transition
|
||||
animate('.75s cubic-bezier(0.175, 0.885, 0.32, 1.275)', style({
|
||||
// transition the right position to -400% which slides the content out of view
|
||||
transform: 'translateX(-100%)'
|
||||
transform: 'translateX({{offsetLeave}}%)'
|
||||
}))
|
||||
])
|
||||
]);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user