* parametered animation for slideshow direction

* keyboard control
* angular2 update
This commit is contained in:
Dávid Danyi 2018-09-14 17:06:12 +02:00
parent 270a55f6b9
commit 6af8ccbf7a
14 changed files with 345 additions and 225 deletions

308
package-lock.json generated
View File

@ -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",

View File

@ -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
View 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
View 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
View 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;
}
}

View File

@ -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,

View File

@ -1,7 +1,8 @@
:host {
display: inline-block;
height: 100vh;
overflow: hidden;
overflow-x: hidden;
overflow-y: scroll;
background-color: #444;
padding: 10px;
}

View File

@ -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,

View File

@ -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() {

View File

@ -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({});
}

View File

@ -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,

View File

@ -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,
}

View File

@ -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
View 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}}%)'
}))
])
]);