diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..00103a1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/WikiApp/node_modules/* +/.idea \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..de914c0 --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# prfed_2021-v2b-iv +prfed_2021-v2b-iv created by GitHub Classroom diff --git a/WikiApp/package-lock.json b/WikiApp/package-lock.json new file mode 100644 index 0000000..7b4535d --- /dev/null +++ b/WikiApp/package-lock.json @@ -0,0 +1,1109 @@ +{ + "name": "wikiapp", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@polymer/lit-element": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@polymer/lit-element/-/lit-element-0.7.1.tgz", + "integrity": "sha512-aYSzVhC19l7xSm73aHI06VPcD/H+GxpFNZrhbJ+zVIpgAveOgGp5Ga7UtTBHQCdHlJbZ0dMlaBXMZ3twgXCokg==", + "dev": true, + "requires": { + "lit-html": "^1.0.0-rc.2" + } + }, + "@zeit/schemas": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@zeit/schemas/-/schemas-2.6.0.tgz", + "integrity": "sha512-uUrgZ8AxS+Lio0fZKAipJjAh415JyrOZowliZAzmnJSsf7piVL5w+G0+gFJ0KSu3QRhvui/7zuvpLz03YjXAhg==" + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "ajv": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz", + "integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==", + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-align": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", + "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", + "requires": { + "string-width": "^2.0.0" + } + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "arch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==" + }, + "arg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arg/-/arg-2.0.0.tgz", + "integrity": "sha512-XxNTUzKnz1ctK3ZIcI2XUPlD96wbHP2nGqkPKpvk/HNRlPveYrXIVSTk9m3LcqOgDPg3B1nMvdV/K8wZd7PG4w==" + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "binary-extensions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", + "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==" + }, + "boxen": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", + "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", + "requires": { + "ansi-align": "^2.0.0", + "camelcase": "^4.0.0", + "chalk": "^2.0.1", + "cli-boxes": "^1.0.0", + "string-width": "^2.0.0", + "term-size": "^1.2.0", + "widest-line": "^2.0.0" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" + }, + "call-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.0.tgz", + "integrity": "sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.0" + } + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chokidar": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.3.tgz", + "integrity": "sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ==", + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + } + }, + "cli-boxes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", + "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=" + }, + "clipboardy": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-1.2.3.tgz", + "integrity": "sha512-2WNImOvCRe6r63Gk9pShfkwXsVtKCroMAevIbiae021mS850UkWPbevxsBz3tnvjZIEGvlwaqCPsw+4ulzNgJA==", + "requires": { + "arch": "^2.1.0", + "execa": "^0.8.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz", + "integrity": "sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=", + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + } + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.3.tgz", + "integrity": "sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg==", + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.14", + "debug": "2.6.9", + "on-headers": "~1.0.1", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "requires": { + "object-keys": "^1.0.12" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.18.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", + "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.0", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + } + } + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "fast-url-parser": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", + "integrity": "sha1-9K8+qfNNiicc9YrSs3WfQx8LMY0=", + "requires": { + "punycode": "^1.3.2" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + } + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "get-intrinsic": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.1.tgz", + "integrity": "sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "requires": { + "is-glob": "^4.0.1" + } + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" + }, + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==" + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-callable": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", + "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==" + }, + "is-core-module": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "requires": { + "has": "^1.0.3" + } + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==" + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==" + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "is-regex": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "requires": { + "has-symbols": "^1.0.1" + } + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "lit-element": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-2.4.0.tgz", + "integrity": "sha512-pBGLglxyhq/Prk2H91nA0KByq/hx/wssJBQFiYqXhGDvEnY31PRGYf1RglVzyLeRysu0IHm2K0P196uLLWmwFg==", + "requires": { + "lit-html": "^1.1.1" + } + }, + "lit-html": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-1.3.0.tgz", + "integrity": "sha512-0Q1bwmaFH9O14vycPHw8C/IeHMk/uSDldVLIefu/kfbTBGIc44KGH6A8p1bDfxUfHdc8q6Ct7kQklWoHgr4t1Q==" + }, + "livereload": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/livereload/-/livereload-0.9.1.tgz", + "integrity": "sha512-9g7sua11kkyZNo2hLRCG3LuZZwqexoyEyecSlV8cAsfAVVCZqLzVir6XDqmH0r+Vzgnd5LrdHDMyjtFnJQLAYw==", + "requires": { + "chokidar": "^3.3.0", + "livereload-js": "^3.1.0", + "opts": ">= 1.2.0", + "ws": "^6.2.1" + } + }, + "livereload-js": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-3.3.1.tgz", + "integrity": "sha512-CBu1gTEfzVhlOK1WASKAAJ9Qx1fHECTq0SUB67sfxwQssopTyvzqTlgl+c0h9pZ6V+Fzd2rc510ppuNusg9teQ==" + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=" + }, + "mime-db": { + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" + }, + "mime-types": { + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "requires": { + "mime-db": "1.44.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "npm-run-all": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", + "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", + "requires": { + "ansi-styles": "^3.2.1", + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "memorystream": "^0.3.1", + "minimatch": "^3.0.4", + "pidtree": "^0.3.0", + "read-pkg": "^3.0.0", + "shell-quote": "^1.6.1", + "string.prototype.padend": "^3.0.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "requires": { + "path-key": "^2.0.0" + } + }, + "object-inspect": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", + "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==" + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" + }, + "opts": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/opts/-/opts-2.0.2.tgz", + "integrity": "sha512-k41FwbcLnlgnFh69f4qdUfvDQ+5vaSDnVPFI/y5XuhKRq97EnVVneO9F1ESVCdiVu4fCS2L8usX3mU331hB7pg==" + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + }, + "path-to-regexp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz", + "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==" + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "requires": { + "pify": "^3.0.0" + } + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==" + }, + "pidtree": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", + "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==" + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "readdirp": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "requires": { + "picomatch": "^2.2.1" + } + }, + "registry-auth-token": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", + "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", + "requires": { + "rc": "^1.1.6", + "safe-buffer": "^5.0.1" + } + }, + "registry-url": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", + "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", + "requires": { + "rc": "^1.0.1" + } + }, + "resolve": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", + "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", + "requires": { + "is-core-module": "^2.1.0", + "path-parse": "^1.0.6" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "serve": { + "version": "11.3.2", + "resolved": "https://registry.npmjs.org/serve/-/serve-11.3.2.tgz", + "integrity": "sha512-yKWQfI3xbj/f7X1lTBg91fXBP0FqjJ4TEi+ilES5yzH0iKJpN5LjNb1YzIfQg9Rqn4ECUS2SOf2+Kmepogoa5w==", + "requires": { + "@zeit/schemas": "2.6.0", + "ajv": "6.5.3", + "arg": "2.0.0", + "boxen": "1.3.0", + "chalk": "2.4.1", + "clipboardy": "1.2.3", + "compression": "1.7.3", + "serve-handler": "6.1.3", + "update-check": "1.5.2" + }, + "dependencies": { + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } + } + }, + "serve-handler": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.3.tgz", + "integrity": "sha512-FosMqFBNrLyeiIDvP1zgO6YoTzFYHxLDEIavhlmQ+knB2Z7l1t+kGLHkZIDN7UVWqQAmKI3D20A6F6jo3nDd4w==", + "requires": { + "bytes": "3.0.0", + "content-disposition": "0.5.2", + "fast-url-parser": "1.1.3", + "mime-types": "2.1.18", + "minimatch": "3.0.4", + "path-is-inside": "1.0.2", + "path-to-regexp": "2.2.1", + "range-parser": "1.2.0" + }, + "dependencies": { + "mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" + }, + "mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "requires": { + "mime-db": "~1.33.0" + } + } + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + }, + "shell-quote": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", + "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==" + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz", + "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==" + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "string.prototype.padend": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.1.tgz", + "integrity": "sha512-eCzTASPnoCr5Ht+Vn1YXgm8SB015hHKgEIMu9Nr9bQmLhRBxKRfmzSj/IQsxDFc8JInJDDFA0qXwK+xxI7wDkg==", + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1" + } + }, + "string.prototype.trimend": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz", + "integrity": "sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw==", + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz", + "integrity": "sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg==", + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "term-size": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", + "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", + "requires": { + "execa": "^0.7.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + }, + "update-check": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/update-check/-/update-check-1.5.2.tgz", + "integrity": "sha512-1TrmYLuLj/5ZovwUS7fFd1jMH3NnFDN1y1A8dboedIDt7zs/zJMo6TwwlhYKkSeEwzleeiSBV5/3c9ufAQWDaQ==", + "requires": { + "registry-auth-token": "3.3.2", + "registry-url": "3.1.0" + } + }, + "uri-js": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", + "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", + "requires": { + "punycode": "^2.1.0" + } + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + }, + "widest-line": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz", + "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==", + "requires": { + "string-width": "^2.1.1" + } + }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "requires": { + "async-limiter": "~1.0.0" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + } + } +} diff --git a/WikiApp/package.json b/WikiApp/package.json new file mode 100644 index 0000000..219448c --- /dev/null +++ b/WikiApp/package.json @@ -0,0 +1,32 @@ +{ + "name": "wikiapp", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "livereload": "livereload src", + "serve": "serve src", + "start": "npm-run-all --parallel --print-label livereload serve", + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/HU-SD-SV2PRFED-studenten-2021/prfed_2021-v2b-iv.git" + }, + "author": "", + "license": "ISC", + "dependencies": { + "lit-element": "^2.4.0", + "livereload": "0.9.1", + "npm-run-all": "4.1.5", + "serve": "11.3.2" + }, + "bugs": { + "url": "https://github.com/HU-SD-SV2PRFED-studenten-2021/prfed_2021-v2b-iv/issues" + }, + "homepage": "https://github.com/HU-SD-SV2PRFED-studenten-2021/prfed_2021-v2b-iv#readme", + "devDependencies": { + "@polymer/lit-element": "^0.7.1", + "lit-html": "^1.3.0" + } +} diff --git a/WikiApp/src/artikel.html b/WikiApp/src/artikel.html new file mode 100644 index 0000000..b05866c --- /dev/null +++ b/WikiApp/src/artikel.html @@ -0,0 +1,64 @@ + + + + + + + Hbo-i Wiki website | Artikel + + + + +
+ + +
+ + + + + + diff --git a/WikiApp/src/category.html b/WikiApp/src/category.html new file mode 100644 index 0000000..93eb491 --- /dev/null +++ b/WikiApp/src/category.html @@ -0,0 +1,72 @@ + + + + + + + Hbo-i Wiki website | Categorie artikelen + + + + + +
+ + + + +
+ + + + \ No newline at end of file diff --git a/WikiApp/src/components/article-history.js b/WikiApp/src/components/article-history.js new file mode 100644 index 0000000..5a5c4b4 --- /dev/null +++ b/WikiApp/src/components/article-history.js @@ -0,0 +1,122 @@ +import { LitElement, html, css } from 'https://cdn.skypack.dev/lit-element@2.3.1'; +import getData from "../utils/get-data.js"; + +class ArtikelHistory extends LitElement { + static get properties() { + return { + id: { type: String, attribute: 'id', reflect: true }, + category: {attribute: 'category'}, + versies: { type: Array } + } + } + + connectedCallback() { + super.connectedCallback(); + } + + firstUpdated() { + getData('categories') + .then(({categories}) => { + const categoryPromises = categories.map(category => getData(category)) + return Promise.all(categoryPromises) + }) + .then(articleData => { + const categoryLijst = articleData.find(category => category.id === this.category) + const artikel = categoryLijst.artikelen.find(artikel => artikel.id === this.id) + console.log(artikel) + + this.versies = artikel.geschiedenis + this.versies.forEach(versie => { + versie.collapsed = false; + }) + }) + } + + + constructor() { + super(); + this.versies = []; + } + + + static get styles() { + + return css ` + ul { + list-style: none; + } + .geschiedenis-cont { + padding: 2em; + height: 100%; + } + h2 { + font-size: 2em; + } + h3 { + margin: .1em; + } + .list-cont { + background: #f9f9f9; + box-shadow: rgba(0, 0, 0, 0.16) 0px 1px 4px; + padding: 1em; + height: 600px; + overflow-y: scroll; + border-radius: 10px; + + } + .def { + display: flex; + flex-direction: row; + justify-content: space-between; + padding: 0 1.2em; + } + #placeholder { + width: 2em; + } + `; + } + + _toggleCollapesed(e) { + + this.versies = this.versies.map((versie, index) => { + return index === e.detail ? {...versie, collapsed: !versie.collapsed } : versie; + }); + } + + render() { + return html` +
+

Bewerkgeschiedenis

+
+
+

+ Username +

+

+ Bewerkingsdatum +

+

+

+
+ +
+
+ `; + } +} + +window.customElements.define('article-history', ArtikelHistory); diff --git a/WikiApp/src/components/article-toevoegen.js b/WikiApp/src/components/article-toevoegen.js new file mode 100644 index 0000000..43b6802 --- /dev/null +++ b/WikiApp/src/components/article-toevoegen.js @@ -0,0 +1,148 @@ +import { LitElement, html, css } from 'https://cdn.skypack.dev/lit-element@2.3.1'; +import getData from "../utils/get-data.js"; + + + +class articleToevoegen extends LitElement{ + + static get styles(){ + return css` + + h2 { + padding-left: 1.3em; + } + + + .form-cont { + padding: 2em; + background: #fbfbfb; + margin: 1em 2em; + border: 1px solid #efefef; + border-radius: 15px; + box-shadow: rgba(99, 99, 99, 0.2) 0px 2px 8px 0px; + max-width: 800px; + padding-bottom: 100px; + } + + + .form-row-cont { + display: flex; + flex-direction: column; + margin-bottom: 1.5em; + } + + fieldset { + border: none; + } + + legend { + display: none; + } + + .form-input { + font-size: .9em; + box-sizing: border-box; + border: 1px solid #C2C2C2; + border-radius: 3px; + padding: .7em; + margin-left: .5em; + outline: none; + } + + + + .form-input:focus { + border: 1px solid #000000; + } + + #select-field { + margin-top: .5em; + max-width: 280px; + } + + #tekstarea-label { + display: none; + } + + + textarea { + font-family: sans-serif; + resize: vertical; + height: 100%; + min-height: 10em; + } + + ` + } + + static get properties() { + return { + articleData: { type: Array }, + titel: { type: String }, + category: {type:String }, + text: { type:String } + } + } + + constructor() { + super(); + this.titel = ''; + this.text=''; + this.category=''; + } + + titelInput(e) { + this.titel = e.target.value; + console.log(this.titel) + } + + categoryInput(e) { + this.category = e.target.value; + console.log(this.category) + } + + textInput(e) { + this.text = e.target.value; + console.log(this.titel) + } + + + + render(){ + return html` +

Nieuwe artikel toevoegen

+
+
+ Nieuwe artikel toevoegen +
+ + +
+
+ + +
+
+ + +
+ +
+ +
+ ` + } + + + +} + + +window.customElements.define('article-toevoegen', articleToevoegen); diff --git a/WikiApp/src/components/artikel-bewerken.js b/WikiApp/src/components/artikel-bewerken.js new file mode 100644 index 0000000..d987fe5 --- /dev/null +++ b/WikiApp/src/components/artikel-bewerken.js @@ -0,0 +1,313 @@ +import { LitElement, html, css } from 'https://cdn.skypack.dev/lit-element@2.3.1'; +import getData from "../utils/get-data.js"; + + + +class artikelBewerken extends LitElement{ + + static get styles() { + return css` + .confirm { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(0, 0, 0, 0.6); + padding: 10px; + box-sizing: border-box; + + opacity: 0; + animation-name: confirm---open; + animation-duration: 0.2s; + animation-fill-mode: forwards; + + display: flex; + align-items: center; + justify-content: center; + } + + .confirm--close { + animation-name: confirm---close; + } + + .confirm__window { + position: fixed; + width: 100%; + max-width: 600px; + background: white; + font-size: 14px; + font-family: 'Noto Sans', sans-serif; + border-radius: 5px; + overflow: hidden; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.3); + + opacity:0; + } + + .confirm div.confirm__window{ + opacity:0; + transform: scale(0.75); + animation-name: confirm__window---open; + animation-duration: 0.2s; + animation-fill-mode: forwards; + animation-delay: 0.2s; + + } + + + + .confirm__titlebar, + .confirm__content, + .confirm__buttons { + padding: 1.25em; + } + + .confirm__titlebar { + background: #0840FF; + color: #ffffff; + display: flex; + align-items: center; + justify-content: space-between; + } + + .confirm__title { + font-weight: bold; + font-size: 1.1em; + } + + .confirm__close { + background: none; + outline: none; + border: none; + transform: scale(2.5); + color: #ffffff; + transition: color 0.15s; + } + + .confirm__close:hover { + color: #ff0000; + cursor: pointer; + } + + .confirm__content { + line-height: 1.8em; + } + + .confirm__buttons { + background: #eeeeee; + display: flex; + justify-content: flex-end; + } + + .confirm__button { + text-decoration: none; + padding: 0.4em 0.8em; + border: 0.5px solid #000000; + border-radius: 5px; + background: #446EFF; + color: #ffffff; + font-weight: bold; + font-size: 1.1em; + font-family: 'Noto Sans', sans-serif; + margin-left: 0.6em; + cursor: pointer; + outline: none; + width: 80px; + } + + .confirm__button--fill { + background: #446EFF; + color: #ffffff; + } + + .confirm__button:focus { + box-shadow: 0 0 3px rgba(0, 0, 0, 0.5); + } + + @keyframes confirm---open { + from { opacity: 0 } + to { opacity: 1 } + } + + @keyframes confirm---close { + from { opacity: 1 } + to { opacity: 0 } + } + + @keyframes confirm__window---open { + to { + opacity: 1; + transform: scale(1); + } + } + + .primary-btn { + color: #ffffff; + font-weight: bold; + font-size: 1.1em; + font-family: 'Noto Sans', sans-serif; + background-color: #4690ff; + border: 1px solid black; + } + + .nav-btn:active { + border: 3px solid black; + } + + .nav-btn { + box-sizing: border-box; + padding: 10px 0 10px 0; + margin: .5em; + font-size: .8em; + min-width: 175px; + border-radius: 3px; + cursor: pointer; + } + .submit{ + text-decoration: underline; + color: darkblue; + } + + .submit:visited { + color: purple; + } + + .form-row-cont { + display: flex; + flex-direction: column; + margin-bottom: 1.5em; + margin-left: 1em; + margin-right: 1em; + } + + fieldset { + border: none; + } + + legend { + display: none; + } + + .form-input { + font-size: .9em; + box-sizing: border-box; + border: 1px solid #C2C2C2; + border-radius: 3px; + padding: .7em; + margin-left: .5em; + outline: none; + } + + + + .form-input:focus { + border: 1px solid #000000; + } + + #select-field { + margin-top: .5em; + max-width: 280px; + } + + #tekstarea-label { + display: none; + } + + + textarea { + font-family: sans-serif; + resize: vertical; + height: 100%; + min-height: 10em; + height: 280px; + } + + form { + margin-bottom: -200px; + } + + #gast{ + display: none; + } + ` + } + + static get properties() { + return { + state: { type:String, reflect:true }, + rol: {type: String} + } + } + + connectedCallback() { + super.connectedCallback(); + this.rol = localStorage.getItem('role') + if (this.rol === null){ + this.rol = "gast" + } + } + + bewerkt(){ + this.state = this.state + ' confirm--close' + this.state = '' + alert('artikel wordt bewerkt en toegevoegd naar geschiedenis') + } + + + open(){ + this.state = 'confirm' + } + + close() { + + this.state = this.state + ' confirm--close' + this.state = '' + + + } + + + render(){ + return html` +

bewerken +

+
+
+ Bewerken +
+ Nieuwe artikel toevoegen +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+ ` + } + + + +} + + +window.customElements.define('article-bewerken', artikelBewerken); diff --git a/WikiApp/src/components/category-articles.js b/WikiApp/src/components/category-articles.js new file mode 100644 index 0000000..610b86b --- /dev/null +++ b/WikiApp/src/components/category-articles.js @@ -0,0 +1,85 @@ +import { LitElement, html, css } from 'https://cdn.skypack.dev/lit-element@2.3.1'; + +const styles = css` + .suggestie-container { + display: flex; + flex-direction: column; + } + + a { + text-decoration: none; + } + + + h3 { + color: #155a96; + margin: 0; + padding: 0; + } + + p { + margin: 0; + padding: 0; + color: #051635; + } + + li { + list-style: none; + padding: .6em 1em; + } + + li:hover { + background-color: #f5f5f5; + } + + + + +` + +class categoryArticles extends LitElement{ + + static get styles(){ + return styles; + } + + static get properties(){ + return{ + category: {attribute: 'category'}, + articleData: {type: Array} + } + } + + constructor() { + super(); + } + + connectedCallback() { + super.connectedCallback(); + } + + + render(){ + this.articleData = this.articleData.filter(category => category.name === this.category) + + return html` +

Alle artikelen van ${this.category}

+
+ ${this.articleData.map( category => html` + ${category.artikelen.map( artikel => html` +
  • + +

    ${artikel.title}

    +

    ${artikel.text.substr(0,70) + '...'}

    +
    +
  • `)} + ` + )}
    + ` + } + + +} + + +window.customElements.define('category-articles', categoryArticles); diff --git a/WikiApp/src/components/category-list.js b/WikiApp/src/components/category-list.js new file mode 100644 index 0000000..4d34884 --- /dev/null +++ b/WikiApp/src/components/category-list.js @@ -0,0 +1,50 @@ +import { LitElement, html, css } from 'https://cdn.skypack.dev/lit-element@2.3.1'; +import getData from "../utils/get-data.js"; + +const styles = css` + :host { + width: 20em; + background: rgb(249 249 249); + margin: 1em; + text-align: center; + box-shadow: rgba(50, 50, 93, 0.25) 0px 2px 5px -1px, rgba(0, 0, 0, 0.3) 0px 1px 3px -1px; + transition: box-shadow 300ms; + } + a { + text-decoration: none; + color: black; + padding: 5px; + text-align: center; + margin: 0; + } +` + + +class categoryList extends LitElement { + + static get styles() { + return styles; + } + + static get properties() { + return { + listTitle: { type: String, attribute: 'list-title', reflect: true }, + test: { type: String, attribute: "test"} + } + } + + render() { + return html` +

    + + ${this.listTitle} + +

    +
    + +
    + ` + } +} + +window.customElements.define('category-list', categoryList) \ No newline at end of file diff --git a/WikiApp/src/components/category-redirect.js b/WikiApp/src/components/category-redirect.js new file mode 100644 index 0000000..20a20fb --- /dev/null +++ b/WikiApp/src/components/category-redirect.js @@ -0,0 +1,52 @@ +import { LitElement, html, css } from 'https://cdn.skypack.dev/lit-element@2.3.1'; + +const styles = css` + + a { + padding: 5px; + text-align: center; + margin: 0; + border-top: 1px solid rgb(207 207 207 / 84%); + } + + a:hover { + background-color: rgb(223 223 223); + } + + + a { + text-decoration: none; + color: black; + } +` + +class categoryRedirect extends LitElement{ + static get styles(){ + return styles; + } + + static get properties(){ + return{ + category: {attribute: 'category'}, + link: {type: String } + } + } + + connectedCallback() { + super.connectedCallback(); + this.link = `/category?category=${this.getAttribute('category')}`; + } + + + render(){ + return html` + ${this.category} + + ` + } + + +} + + +window.customElements.define('category-redirect', categoryRedirect); \ No newline at end of file diff --git a/WikiApp/src/components/deleteArticle.js b/WikiApp/src/components/deleteArticle.js new file mode 100644 index 0000000..6c0fda1 --- /dev/null +++ b/WikiApp/src/components/deleteArticle.js @@ -0,0 +1,234 @@ +import { LitElement, html, css } from 'https://cdn.skypack.dev/lit-element@2.3.1'; + +const styles = css` + +.confirm { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(0, 0, 0, 0.6); + padding: 10px; + box-sizing: border-box; + + opacity: 0; + animation-name: confirm---open; + animation-duration: 0.2s; + animation-fill-mode: forwards; + + display: flex; + align-items: center; + justify-content: center; +} + +.confirm--close { + animation-name: confirm---close; +} + +.confirm__window { + position: fixed; + width: 100%; + max-width: 600px; + background: white; + font-size: 14px; + font-family: 'Noto Sans', sans-serif; + border-radius: 5px; + overflow: hidden; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.3); + + opacity:0; +} + +.confirm div.confirm__window{ + opacity:0; + transform: scale(0.75); + animation-name: confirm__window---open; + animation-duration: 0.2s; + animation-fill-mode: forwards; + animation-delay: 0.2s; + +} + + + +.confirm__titlebar, +.confirm__content, +.confirm__buttons { + padding: 1.25em; +} + +.confirm__titlebar { + background: #0840FF; + color: #ffffff; + display: flex; + align-items: center; + justify-content: space-between; +} + +.confirm__title { + font-weight: bold; + font-size: 1.1em; +} + +.confirm__close { + background: none; + outline: none; + border: none; + transform: scale(2.5); + color: #ffffff; + transition: color 0.15s; +} + +.confirm__close:hover { + color: #ff0000; + cursor: pointer; +} + +.confirm__content { + line-height: 1.8em; +} + +.confirm__buttons { + background: #eeeeee; + display: flex; + justify-content: flex-end; +} + +.confirm__button { + text-decoration: none; + padding: 0.4em 0.8em; + border: 0.5px solid #000000; + border-radius: 5px; + background: #446EFF; + color: #ffffff; + font-weight: bold; + font-size: 1.1em; + font-family: 'Noto Sans', sans-serif; + margin-left: 0.6em; + cursor: pointer; + outline: none; +} + +.confirm__button--fill { + background: #446EFF; + color: #ffffff; +} + +.confirm__button:focus { + box-shadow: 0 0 3px rgba(0, 0, 0, 0.5); +} + +@keyframes confirm---open { + from { opacity: 0 } + to { opacity: 1 } +} + +@keyframes confirm---close { + from { opacity: 1 } + to { opacity: 0 } +} + +@keyframes confirm__window---open { + to { + opacity: 1; + transform: scale(1); + } +} + +.primary-btn { + color: #ffffff; + font-weight: bold; + font-size: 1.1em; + font-family: 'Noto Sans', sans-serif; + background-color: #4690ff; + border: 1px solid black; +} + +.nav-btn:active { + border: 3px solid black; +} + +.nav-btn { + box-sizing: border-box; + padding: 10px 0 10px 0; + margin: .5em; + font-size: .8em; + min-width: 175px; + border-radius: 3px; + cursor: pointer; +} + +.geenDocent { + display: none; +} + + + +` + +class deleteArticle extends LitElement{ + static get styles(){ + return styles; + } + + static get properties(){ + return{ + state: { type: String }, + titel: {type: String}, + rol: {type: String} + } + } + + constructor() { + super(); + this.state = '' + } + + connectedCallback() { + super.connectedCallback(); + + const rol = localStorage.getItem('role') + this.rol = rol + if(this.rol === null || this.rol=== "student"){ + this.rol = "geenDocent" + } + } + + close(){ + this.state = this.state + ' confirm--close' + this.state = '' + } + + open(){ + this.state = 'confirm' + } + + delete(){ + } + + + + render(){ + return html` + +
    +
    +
    + Bevestiging +
    +
    Weet u zeker dat u het artikel "${this.titel}" wilt verwijderen?
    + Als u op 'ja' klikt word het artikel verwijderd en zal u teruggestuurd worden naar de hoofdpagina +
    +
    + Ja + +
    +
    +
    + ` + } +} + + +window.customElements.define('delete-article', deleteArticle); diff --git a/WikiApp/src/components/edit-versie.js b/WikiApp/src/components/edit-versie.js new file mode 100644 index 0000000..3978765 --- /dev/null +++ b/WikiApp/src/components/edit-versie.js @@ -0,0 +1,151 @@ +import { LitElement, html, css } from 'https://cdn.skypack.dev/lit-element@2.3.1'; + +class EditVersion extends LitElement { + static get properties() { + return { + username: { + type: String, + reflect: true + }, + date: { + type: String, + reflect: true + }, + time: { + type: String, + reflect: true + }, + tekst: { + type: String, + reflect: true + }, + title: { + type: String, + reflect: true + }, + collapsed: { + type: Boolean, + reflect: true + }, + index: { + type: Number + } + } + } + + + + static get styles() { + return css` + + :host { + display: block; + } + + + .item { + display: flex; + flex-direction: row; + justify-content: space-between; + cursor: pointer; + border: solid 1px #969696; + border-radius: 13px; + padding: 10px 1.2em; + margin: .6em 0; + background: #f1f1f1; + margin-bottom: 0px; + user-select: none; + } + + .arrow-box { + height: 2em; + width: 2em; + text-align: center; + background: #f9f9f9; + border-radius: 7px; + + } + + svg { + height: inherit; + width: inherit; + } + + .slider { + height: min-content; + max-height: 450px; + overflow-y: scroll; + padding: 1.3em; + margin: .3em; + margin-bottom: 1em; + margin-top: 0; + border: 1px solid #969696; + border-top: 0; + border-bottom-left-radius: 7px; + border-bottom-right-radius: 7px; + transition: linear .1s; + background: #ffffff; + box-shadow: rgba(0, 0, 0, 0.05) 0px 6px 24px 0px, rgba(0, 0, 0, 0.08) 0px 0px 0px 1px; + } + .collapsed { + height: 0; + padding: 0; + margin: 0; + border: 0; + margin-left: .3em; + margin-right: .3em; + box-shadow: none; + transition: linear .1s + } + ` + } + + constructor() { + super(); + this.date = ""; + this.time = ""; + this.title = ""; + this.tekst = ""; + this.username = ""; + } + + + + _fire(e) { + this.dispatchEvent(new CustomEvent(e, { detail: this.index })); + } + + + + _handleEnterKeypress(e) { + if (e.key === 'Enter') { + this._fire('onToggle'); + } + } + + render() { + return html` +
  • +
    this._fire('onToggle')} @keyup="${this._handleEnterKeypress}" tabindex="1"> +
    ${this.username}
    +
    ${this.date}, ${this.time}
    +
    + +
    +
    + +
    +
    +

    ${this.title}

    +

    ${this.tekst}

    +
    +
    +
  • + ` + } + + +} + +window.customElements.define('edit-versie', EditVersion); + diff --git a/WikiApp/src/components/radio-button.js b/WikiApp/src/components/radio-button.js new file mode 100644 index 0000000..314bcd5 --- /dev/null +++ b/WikiApp/src/components/radio-button.js @@ -0,0 +1,138 @@ +import {LitElement, html, css} from 'https://cdn.skypack.dev/lit-element@2.3.1' + +const styles = css` + + + :host { + display: flex; + flex-direction: column; + } + + + .radio-button-container { + display: flex; + flex-direction: row; + flex-flow: wrap; + padding: .5em 1.5em 1.7em 1.5em; + justify-content: center; + } + + label, input { + cursor: pointer; + } + legend { + display: none; + } + + .filter-rb-cont { + display: flex; + flex-direction: row-reverse; + align-items: center; + padding: 5px 10px; + border-radius: 35px; + width: min-content; + } + + + label { + font-size: 1em; + font-family: sans-serif; + font-weight: bold; + margin-left: .4em; + user-select: none; + } + + .filter-rb-cont:hover { + background-color: #e4e4e4; + } + + + @media only screen and (max-width: 768px) { + .radio-button-container{ + flex-direction: column; + justify-self: center; + width: min-content; + align-self: center; + } + + label { + margin-left: 2em; + } + .filter-rb-cont { + width: 160px; + justify-content: flex-end; + } + + } + + + +` + +const VisibilityFilter = { + SHOW_ANALYSEREN : 'analyseren', + SHOW_ADVIESEREN : 'adviseren', + SHOW_ONTWERPEN : 'ontwerpen', + SHOW_REALISEREN : 'realiseren', + SHOW_MANAGE : 'manage', + SHOW_ALL : 'all' +} + +class radioButton extends LitElement { + + static get properties() { + return { + filter: {type: String, reflect: true} + }; + } + + static get styles() { + return styles + } + + constructor() { + super(); + this.filter = VisibilityFilter.SHOW_ALL; + } + + filterChanged(e) { + this.filter = e.target.value; + } + + get filteren() { + return this.filter + } + + + get categories() { + return this.filter; + } + + emitChange = () => { + const event = new CustomEvent('change') + this.dispatchEvent(event) + } + + + + + render() { + return html` + Categorien filter +
    + + ${Object.values(VisibilityFilter).map(filter => + html` +
    + + +
    + ` + )} +
    + `; + } + +} +customElements.define('radio-button', radioButton); \ No newline at end of file diff --git a/WikiApp/src/components/search-bar.js b/WikiApp/src/components/search-bar.js new file mode 100644 index 0000000..da57898 --- /dev/null +++ b/WikiApp/src/components/search-bar.js @@ -0,0 +1,158 @@ +import {LitElement, html, css} from 'https://cdn.skypack.dev/lit-element@2.3.1' +import filterSuggesties from "../utils/search-bar-filter.js"; +import getData from "../utils/get-data.js"; + + +class SearchBar extends LitElement { + static get styles() { + return css` + label { + display: none; + } + + input { + max-width: 300px; + height: 2.3em; + border: 1px solid #656565; + border-radius: 20px; + font-size: .8em; + font-family: sans-serif; + padding: .4em 1em; + } + + input::placeholder { + color: gray; + } + + .suggestie-container { + position: absolute; + display: block; + right: 10px; + margin-top: 10px; + max-height: 25em; + width: 22em; + box-shadow: rgba(0, 0, 0, 0.35) 0px 5px 15px; + border-radius: 6px; + overflow: auto; + background-color: #ffffff; + } + + a { + text-decoration: none; + } + + h3 { + color: #155a96; + margin: 0; + padding: 0; + } + + p { + color: #051635; + margin: 0; + padding: 0; + padding-left: .5em; + padding-bottom: .5em; + } + + li { + list-style: none; + padding-left: .5em; + padding-right: .5em; + margin-top: .7em; + margin-bottom: .7em; + } + + li:hover { + background-color: #f5f5f5; + border-top: 1px solid #d4d4d4; + border-bottom: 1px solid #d4d4d4; + } + + `} + + static get properties(){ + return { + inputValue: { type: String }, + suggesties: { type: Array }, + articleData: {type: Array}, + category : {type: String} + }; + } + + connectedCallback() { + super.connectedCallback(); + getData('categories') + .then(({categories}) => { + const categoryPromises = categories.map(category => getData(category)) + return Promise.all(categoryPromises) + }) + .then(articleData => { + this.articleData = articleData + }) + } + + + constructor() { + super(); + this.inputValue = ''; + this.suggesties = []; + } + + + inputSuggestion(){ + this.inputValue = this.shadowRoot.querySelector('.search-input').value; + } + + + updated(changedProperties) { + if (changedProperties.has('inputValue')) { + if (this.inputValue === '') { + this.suggesties = []; + } else { + this.suggesties = filterSuggesties(this.inputValue, this.articleData); + } + } + } + + redirect(e) { + if (e.key === 'Enter') { + // const urlParam = new URLSearchParams(window.location.search); + // // urlParam.delete('value'); + let url = '/zoekPagina?value=' + this.inputValue; + window.location = url; + } + } + + render() { + + // const urlParams = new URLSearchParams(window.location.search); + return html` +
    + + +
    + ${this.suggesties.map(artikel => html` + ${this.articleData.map(category => { + const vindArtikel = category.artikelen.find(randomArtikel => randomArtikel.id === artikel.id) + if (vindArtikel !== undefined){ + this.category = category.id + } + })} + +
  • +

    ${artikel.title}

    +

    ${artikel.text} +

  • +
    + + `)} +
    +
    + ` + } +} + +customElements.define('search-bar', SearchBar); \ No newline at end of file diff --git a/WikiApp/src/components/toevoegen-bevestiging.js b/WikiApp/src/components/toevoegen-bevestiging.js new file mode 100644 index 0000000..ec16748 --- /dev/null +++ b/WikiApp/src/components/toevoegen-bevestiging.js @@ -0,0 +1,254 @@ +import {LitElement, html, css} from 'https://cdn.skypack.dev/lit-element@2.3.1' +import { connect } from 'https://cdn.skypack.dev/pwa-helpers@0.9.1/connect-mixin.js'; +import store from '../redux/index.js' +import { open as show, close as hidden} from '../redux/popup.js' + + + + + + + +class toevoegenBevestiging extends connect(store)(LitElement) { + + + + static get styles() { + return css` + + .confirm { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(0, 0, 0, 0.6); + padding: 10px; + box-sizing: border-box; + + opacity: 0; + animation-name: confirm---open; + animation-duration: 0.2s; + animation-fill-mode: forwards; + + display: flex; + align-items: center; + justify-content: center; + } + + .confirm--close { + animation-name: confirm---close; + } + + .confirm__window { + position: fixed; + width: 100%; + max-width: 600px; + background: white; + font-size: 14px; + font-family: 'Noto Sans', sans-serif; + border-radius: 5px; + overflow: hidden; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.3); + + opacity:0; + } + + .confirm div.confirm__window{ + opacity:0; + transform: scale(0.75); + animation-name: confirm__window---open; + animation-duration: 0.2s; + animation-fill-mode: forwards; + animation-delay: 0.2s; + + } + + + + .confirm__titlebar, + .confirm__content, + .confirm__buttons { + padding: 1.25em; + } + + .confirm__titlebar { + background: #0840FF; + color: #ffffff; + display: flex; + align-items: center; + justify-content: space-between; + } + + .confirm__title { + font-weight: bold; + font-size: 1.1em; + } + + .confirm__close { + background: none; + outline: none; + border: none; + transform: scale(2.5); + color: #ffffff; + transition: color 0.15s; + } + + .confirm__close:hover { + color: #ff0000; + cursor: pointer; + } + + .confirm__content { + line-height: 1.8em; + } + + .confirm__buttons { + background: #eeeeee; + display: flex; + justify-content: flex-end; + } + + .confirm__button { + text-decoration: none; + padding: 0.4em 0.8em; + border: 0.5px solid #000000; + border-radius: 5px; + background: #446EFF; + color: #ffffff; + font-weight: bold; + font-size: 1.1em; + font-family: 'Noto Sans', sans-serif; + margin-left: 0.6em; + cursor: pointer; + outline: none; + } + + .confirm__button--fill { + background: #446EFF; + color: #ffffff; + } + + .confirm__button:focus { + box-shadow: 0 0 3px rgba(0, 0, 0, 0.5); + } + + @keyframes confirm---open { + from { opacity: 0 } + to { opacity: 1 } + } + + @keyframes confirm---close { + from { opacity: 1 } + to { opacity: 0 } + } + + @keyframes confirm__window---open { + to { + opacity: 1; + transform: scale(1); + } + } + + .primary-btn { + color: #ffffff; + font-weight: bold; + font-size: 1.1em; + font-family: 'Noto Sans', sans-serif; + background-color: #4690ff; + border: 1px solid black; + } + + .nav-btn:active { + border: 3px solid black; + } + + .nav-btn { + box-sizing: border-box; + padding: 10px 0 10px 0; + margin: .5em; + font-size: .8em; + min-width: 175px; + border-radius: 3px; + cursor: pointer; + } + .submit{ + width: 40%; + background: #2A88AD; + padding: 8px 20px 8px 20px; + border-radius: 5px; + float: right; + height:60px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + color: #fff; + text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.12); + font: normal 30px 'Bitter', serif; + -moz-box-shadow: inset 0px 2px 2px 0px rgba(255, 255, 255, 0.17); + -webkit-box-shadow: inset 0px 2px 2px 0px rgba(255, 255, 255, 0.17); + box-shadow: inset 0px 2px 2px 0px rgba(255, 255, 255, 0.17); + border: 1px solid #257C9E; + font-size: 15px; + + + } + .submit:hover{ + opacity: .9; + } + ` + } + + static get properties() { + return { + zicht : {type: String} + } + } + + + open(){ + store.dispatch(show()) + + } + + close() { + store.dispatch(hidden()) + } + + stateChanged(state) { + + if (state.popup === true) { + this.zicht = 'confirm' + } else { + this.zicht = this.state + ' confirm--close' + this.zicht = '' + + } + } + + + + + render() { + + return html` + +
    +
    +
    + Bevestiging +
    +
    Weet u zeker dat u het artikel ${this.titel} naar categorie ${this.category} wilt toevoegen?
    +

    ${this.titel}

    +

    ${this.text}

    +
    +
    + Ja + +
    +
    +
    + ` + } +} + +customElements.define('toevoegen-bevestiging', toevoegenBevestiging); \ No newline at end of file diff --git a/WikiApp/src/components/view-index.js b/WikiApp/src/components/view-index.js new file mode 100644 index 0000000..b1a2385 --- /dev/null +++ b/WikiApp/src/components/view-index.js @@ -0,0 +1,99 @@ +import { LitElement, html, css } from 'https://cdn.skypack.dev/lit-element@2.3.1'; +import getData from "../utils/get-data.js"; + + + +class viewIndex extends LitElement { + static get styles() { + return css` + + :host { + display: flex; + flex-direction: column; + } + + .category-container { + display: flex; + flex-flow: row wrap; + justify-content: space-around; + } + + + category-list:hover { + background-color: #fdfdfd; + box-shadow: rgba(0, 0, 0, 0.19) 0px 10px 20px, rgba(0, 0, 0, 0.23) 0px 6px 6px; + } + ` + + } + static get properties(){ + return{ + articleData: { type: Array }, + filteren:{type: String, reflect:true}, + artikelList:{type:Array}, + filter_:{type : String, reflect: true} + } + } + + constructor(){ + super(); + this.articleData = [] + this.artikelList = [] + this.filter_ = 'all' + + } + + // get myprop() { + // return this._myprop; + // } + // set myprop(val) { + // const oldVal = this._myprop; + // if (oldVal !== val) { + // this._myprop = val; + // this._someprop += 1; + // this.requestUpdate('myprop', oldVal); + // } + // } + setFilterValues = () => { + const filterElement = this.shadowRoot.querySelector('radio-button') + this.filter_ = filterElement.categories; + + } + + + render() { + + return html` + +
    + ${this.articleData.map(category => html` + + + ${this.filter_ != 'all' ? category.artikelen.slice(0, 3).filter(artikel => artikel.rol === this.filter_).map(artikel => html` + + + + `) : + category.artikelen.slice(0, 3).map(artikel => html` + + + + `)} + +
    + `)} + + + + `} +} + +window.customElements.define('view-index', viewIndex); \ No newline at end of file diff --git a/WikiApp/src/components/wiki-article.js b/WikiApp/src/components/wiki-article.js new file mode 100644 index 0000000..7317e3c --- /dev/null +++ b/WikiApp/src/components/wiki-article.js @@ -0,0 +1,102 @@ +import { LitElement, html, css } from 'https://cdn.skypack.dev/lit-element@2.3.1'; +import getData from "../utils/get-data.js"; +import artikelData from "../utils/article-data.js"; + +class WikiArtikel extends LitElement { + static get properties() { + return { + id: { type: String, attribute: 'id', reflect: true }, + titel: { type: String, reflect: true }, + tekst: { type: String}, + category: {type: String}, + rol: {type: String} + } + } + + static get styles() { + return css` + #artikel-cont { + padding: 1.5em; + } + + #artikel-header-cont { + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; + } + + ul { + list-style: none; + } + + #titel-link { + text-decoration: none; + color: #000000; + } + + #titel-link:hover { + text-decoration: underline; + } + + .gast{ + display: none; + } + `; + } + constructor() { + super(); + } + + connectedCallback() { + super.connectedCallback(); + getData('categories') + .then(({categories}) => { + const categoryPromises = categories.map(category => getData(category)) + return Promise.all(categoryPromises) + }) + .then(articleData => { + const categoryLijst = articleData.find(category => category.id === this.category) + const artikel = categoryLijst.artikelen.find(artikel => artikel.id === this.id) + this.titel = artikel.title + this.tekst = artikel.text + + const tekstCont = this.shadowRoot.querySelector("#tekst-cont"); + tekstCont.innerHTML = this.tekst; + }) + + this.rol = localStorage.getItem('role') + if(this.rol === null){ + this.rol = "gast" + } + + } + + + render() { + console.log(this.artikelData) + return html` +
    +
    + +

    ${this.titel}

    +
    + +
    +
    + +
    + `; + } +} + +window.customElements.define('wiki-article', WikiArtikel); \ No newline at end of file diff --git a/WikiApp/src/components/wiki-footer.js b/WikiApp/src/components/wiki-footer.js new file mode 100644 index 0000000..327c806 --- /dev/null +++ b/WikiApp/src/components/wiki-footer.js @@ -0,0 +1,106 @@ +import {LitElement, html, css} from 'https://cdn.skypack.dev/lit-element@2.3.1' + + +class Footer extends LitElement { + + + + static get styles() { + return css` + :host { + display: flex; + flex-direction: row; + justify-content: center; + grid-area: footer; + background-color: rgb(28 63 93); + color: #bce0ff; + height: min-content; + min-height:50px; + padding: 1.2em; + } + + + :host > ul > * { + list-style: none; + } + + + #github-logo { + height: 40px; + width: 40px; + } + + .footer-links { + color: inherit; + } + + + #repo-link { + color: rgb(28 63 93); + text-decoration: none; + } + + #github-ref-cont { + display: inline-flex; + flex-direction: row; + background-color: #ffffff; + padding: 7px; + width: min-content; + height: min-content; + align-items: center; + margin-right: 3px; + border-radius: 50px; + } + + #github-ref-cont:hover { + background-color: #ebf6ff; + } + + #github-ref-cont:active { + border-bottom: 4px solid rgb(101, 224, 255); + border-left: 2px solid rgb(101, 224, 255); + } + ` + } + + + + + + + render() { + + return html` + +

    We zijn Open Source! Kijk ons project eens op + + + Github + + + +

    + + + + ` + } +} + +customElements.define('wiki-footer', Footer); \ No newline at end of file diff --git a/WikiApp/src/components/wiki-header.js b/WikiApp/src/components/wiki-header.js new file mode 100644 index 0000000..ce248d7 --- /dev/null +++ b/WikiApp/src/components/wiki-header.js @@ -0,0 +1,105 @@ +import {LitElement, html, css} from 'https://cdn.skypack.dev/lit-element@2.3.1' + + +class wikiHeader extends LitElement { + + + + static get styles() { + return css` + :host { + height: 5em; + padding: 1em; + background-color: rgb(29 113 185); + grid-area: header; + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; + } + + /* Titel */ + + #titel-heading { + display: none; + } + + a { + user-select: none; + } + + + /* logo */ + + #wiki-logo-cont { + display: block; + } + + #wiki-logo { + height: 5em; + width: 12em; + border-radius: 70px; + } + + #wiki-logo:hover { + opacity: .9; + } + + #wiki-mini-logo-cont { + display: none; + } + + + @media only screen and (max-width: 768px) { + #wiki-logo-cont { + display: none; + } + #wiki-mini-logo-cont { + display: block; + margin-right: 15px; + height: 60px; + } + + #wiki-mini-logo { + width: 90px; + border-radius: 25px; + } + + + #wiki-mini-logo:hover { + opacity: .9; + } + } + + ` + } + + static get properties() { + return { + articleData: { type:Array } + } + } + + + + + + + render() { + + return html` + + +

    hbo-i Wiki website

    + + + + + + + + ` + } +} + +customElements.define('wiki-header', wikiHeader); \ No newline at end of file diff --git a/WikiApp/src/components/wiki-login.js b/WikiApp/src/components/wiki-login.js new file mode 100644 index 0000000..189b7c4 --- /dev/null +++ b/WikiApp/src/components/wiki-login.js @@ -0,0 +1,110 @@ +import {LitElement, html, css} from 'https://cdn.skypack.dev/lit-element@2.3.1' + +class WikiLogin extends LitElement { + + + static get styles() { + return css` + fieldset { + display: flex; + flex-direction: column; + border: none; + } + + #form-cont { + display: flex; + justify-content: center; + } + + #btn-cont { + display: flex; + justify-content: flex-end; + } + + label, legend { + display: none; + } + + + h2 { + padding: 1em; + } + + input { + padding: 12px; + margin: 5px 0 22px 0; + background: #f1f1f1; + + width: 500px; + height: 2.3em; + border: 1px solid #c5c5c5; + border-radius: 20px; + font-size: 0.8em; + font-family: sans-serif; + padding: 0.4em 1em; + } + + .button { + background-color: rgb(29 113 185); + color: white; + border: none; + border-radius: 20px; + font-size: 0.8em; + font-family: sans-serif; + padding: .5em 1em; + height: min-content; + + } + `} + + constructor() { + super(); + } + + render() { + return html` +

    Inloggen Form

    +
    +
    +
    + Inloggen form + + + + + + +
    +
    + +
    +
    +
    + ` + } + login(event){ + event.preventDefault() + const formData = new FormData(event.target); + firebase + .auth() + .signInWithEmailAndPassword(formData.get("email"),formData.get("password")) + .then((user) => { + console.log(user.user.email); + let loggedInUser = user.user; + localStorage.setItem("email", loggedInUser.email); + if (loggedInUser.email.includes("student")) + localStorage.setItem("role", "student"); + else if (loggedInUser.email.includes("docent")) + localStorage.setItem("role", "docent"); + + }).then(()=>location.replace("index.html")) + .catch((error) => { + var errorCode = error.code; + var errorMessage = error.message; + alert('Deze gebruiker bestaat niet') + console.log(errorMessage); + }); + } +} + +customElements.define('wiki-login', WikiLogin); \ No newline at end of file diff --git a/WikiApp/src/components/wk-article.js b/WikiApp/src/components/wk-article.js new file mode 100644 index 0000000..844321d --- /dev/null +++ b/WikiApp/src/components/wk-article.js @@ -0,0 +1,51 @@ +import { LitElement, html, css } from 'https://cdn.skypack.dev/lit-element@2.3.1'; +import getData from "../utils/get-data.js"; + +const styles = css` + .artikel-titel { + padding: 5px; + text-align: center; + margin: 0; + border-top: 1px solid rgb(207 207 207 / 84%); + } + + .artikel-titel:hover { + background-color: rgb(223 223 223); + } + + + a { + text-decoration: none; + color: black; + }` + +class wkArticle extends LitElement { + + static get styles(){ + return styles; + } + + static get properties(){ + return{ + titel: {type: String}, + link: {type: String}, + rol: {type: String}, + category: {attribute: 'category'} + } + } + + connectedCallback() { + super.connectedCallback(); + this.link = `/artikel?id=${this.getAttribute('id')}&category=${this.category}`; + } + + render() { + return html` + +

    ${this.titel}

    +
    + ` + } +} + +window.customElements.define('wk-article', wkArticle); \ No newline at end of file diff --git a/WikiApp/src/components/zoek-list.js b/WikiApp/src/components/zoek-list.js new file mode 100644 index 0000000..c91e422 --- /dev/null +++ b/WikiApp/src/components/zoek-list.js @@ -0,0 +1,83 @@ +import {LitElement, html, css} from 'https://cdn.skypack.dev/lit-element@2.3.1' +import filterSuggesties from "../utils/search-bar-filter.js"; + + +class searchArtikelen extends LitElement { + + + + static get styles() { + return css` + .suggestie-container { + display: flex; + flex-direction: column; + } + + a { + text-decoration: none; + } + + + h3 { + color: #155a96; + margin: 0; + padding: 0; + } + + p { + margin: 0; + padding: 0; + color: #051635; + } + + li { + list-style: none; + padding: .6em 1em; + } + + li:hover { + background-color: #f5f5f5; + } + + ` + } + + static get properties(){ + return { + articleData : {type: Array}, + category : {type: String} + }; + } + + + + + + + render() { + const urlParams = new URLSearchParams(window.location.search); + let inputValue = urlParams.get('value'); + urlParams.delete('value'); + return html` +
    + ${filterSuggesties(inputValue,this.articleData).map(artikel => html` + ${console.log(artikel)} +
  • + ${this.articleData.map(category => { + const vindArtikel = category.artikelen.find(randomArtikel => randomArtikel.id === artikel.id) + if (vindArtikel !== undefined){ + this.category = category.id + } + })} + +

    ${artikel.title}

    +

    ${artikel.text}

    +
    +
  • + `)} +
    + ` + } +} + +customElements.define('search-artikelen', searchArtikelen); \ No newline at end of file diff --git a/WikiApp/src/data/articles.json b/WikiApp/src/data/articles.json new file mode 100644 index 0000000..83dbb3a --- /dev/null +++ b/WikiApp/src/data/articles.json @@ -0,0 +1,48 @@ +{ + "articles": [ + { "id": "1", + "title": "ICT", + "rol": "adviseren", + "text": "

    ICT, or information and communications technology (or technologies), is the infrastructure and components that enable modern computing.\n\nAlthough there is no single, universal definition of ICT, the term is generally accepted to mean all devices, networking components, applications and systems that combined allow people and organizations (i.e., businesses, nonprofit agencies, governments and criminal enterprises) to interact in the digital world.\n\nComponents of an ICT system\nICT encompasses both the internet-enabled sphere as well as the mobile one powered by wireless networks. It also includes antiquated technologies, such as landline telephones, radio and television broadcast -- all of which are still widely used today alongside cutting-edge ICT pieces such as artificial intelligence and robotics.\n\nICT is sometimes used synonymously with IT (for information technology); however, ICT is generally used to represent a broader, more comprehensive list of all components related to computer and digital technologies than IT.\n\nThe list of ICT components is exhaustive, and it continues to grow. Some components, such as computers and telephones, have existed for decades. Others, such as smartphones, digital TVs and robots, are more recent entries.\n\nICT commonly means more than its list of components, though. It also encompasses the application of all those various components. It's here that the real potential, power and danger of ICT can be found.

    ", + "geschiedenis" : [ + { + "time": "20:21:30", + "date": "2020-10-01", + "editor": { + "username": "anon123" + }, + "title": "advice geven", + "tekst": "test tekst test tekst test tekst" + }, + + { + "time": "22:10:33", + "date": "2020-09-28", + "editor": { + "username": "anon123" + }, + "title": "giving advice", + "tekst": "test tekst test tekst" + } + ] + }, + { "id": "2", "title": "Domeinklasse", "rol": "adviseren", "text": "Neem als uitgangspunt alle use case scenario's of ieder document dat beschrijft wat het systeem moet doen (requirementsdocumenten).\nMarkeer door bijv te onderstrepen ieder zelfstandignaamwoord die je kunt vinden is in de verzamelde documenten. Maak je in dit stadium nog geen zorgen over de naamgeving. Dit zijn kandidaten klassen.\nMaak een lijst van de gevonden naamwoorden en rangschik deze naar betekenis. Van de namen die dezelfde betekenis hebben gebruik slechts 1.\nMaak van de gereduceerde lijst een diagram (rechthoek met de naam van de klasse er in).\nTeken de relaties tussen de klassen door een lijn te trekken tussen elke twee klassen die een relatie hebben. Twee klassen hebben een relatie met elkaar als er een zin bestaat (of te maken) waarin die twee klassen voor komen. Met enig kennis over het te maken systeem zijn de relaties redelijk eenvoudig te vinden.\nOm de methodes behorende bij een klasse te vinden, neem je als uitgangspunt dezelfde documenten en ga je nu opzoek naar de werkwoorden (acties) in deze documenten. Dit zijn de kandidaten methoden\nOm te bepalen bij welke klassen deze kandidaten methoden horen stel je de vraag welke klasse is verantwoordelijk voor welke actie. Net als voor de kandidatenklassen rangschik je de acties naar betekenis." }, + { "id": "3", "title": "Domein ICT", "rol": "adviseren", "text": "ICT Domein is een onderwerp wat veel lijkt op domeinklasse gg." }, + + { "id": "4", "title": "Use case diagram", "rol": "realiseren", "text": "Wat tekst hier en daar hoort erbij"}, + { "id": "5", "title": "Use case template", "rol": "realiseren","text": "Ja een use case template natuurlijk nice."}, + { "id": "6", "title": "Activity diagram", "rol": "realiseren", "text": "Activity diagram is hier wel handig"}, + + { "id": "7", "title": "Java", "rol": "ontwerpen", "text": "Java leukste taal natuurlijk om mee te programmeren" }, + { "id": "8", "title": "Python", "rol": "ontwerpen", "text": "Python, leuke taal 3 maanden maar gehad, mocht langer!" }, + { "id": "9", "title": "CSS", "rol": "ontwerpen", "text": "CSS zijn we nu mee bezig." }, + + { "id": "10", "title": "HTML", "rol": "analyseren", "text": "HTML mag geen programmeertaal genoemd worden"}, + { "id": "11", "title": "JavaScript", "rol": "analyseren", "text": "JavaScript goeie. Het is zeker een veelgebruikte taal."}, + { "id": "12", "title": "Hibernate", "rol": "analyseren", "text": "Hibernate hebben we niet lang gehad, max 2 week."}, + + { "id": "13", "title": "User Stories", "rol": "manage & control", "text": "User stories zijn handig om dingen te doen"}, + { "id": "14", "title": "BPMN", "rol": "manage & control", "text": "BPMN Modellen worden vaak gebruikt in het zakenleven."}, + { "id": "15", "title": "Actor Templates", "rol": "manage & control", "text": "Actor templates om even alle actoren in beeld te brengen."} + ] +} \ No newline at end of file diff --git a/WikiApp/src/data/categories.json b/WikiApp/src/data/categories.json new file mode 100644 index 0000000..ca40e76 --- /dev/null +++ b/WikiApp/src/data/categories.json @@ -0,0 +1,9 @@ +{ + "categories": [ + "gebruikers_interface", + "organisatie_processen", + "software", + "infrastructuur", + "hardware_interfacing" + ] +} \ No newline at end of file diff --git a/WikiApp/src/data/gebruikers_interface.json b/WikiApp/src/data/gebruikers_interface.json new file mode 100644 index 0000000..0f8851e --- /dev/null +++ b/WikiApp/src/data/gebruikers_interface.json @@ -0,0 +1,197 @@ +{ + "id":"gebruikers_interface", + "name": "Gebruikers Interface", + "artikelen": [ + { "id": "1", "title": "ICT", "rol": "analyseren", "text": "Informatietechnologie (IT) of informatie- en communicatietechnologie (ICT) is een vakgebied dat zich bezighoudt met informatiesystemen, telecommunicatie en computers. Hieronder valt het ontwikkelen en beheren van systemen, netwerken, databases en websites. Ook het onderhouden van computers en programmatuur en het schrijven van administratieve software valt hieronder. Vaak gebeurt dit in een bedrijfskundige context.", + "geschiedenis" : [ + { + "time": "20:21:30", + "date": "2020-10-01", + "editor": { + "username": "anon123" + }, + "title": "advice geven", + "tekst": "test tekst test tekst test tekst" + }, + + { + "time": "22:10:33", + "date": "2020-09-28", + "editor": { + "username": "anon123" + }, + "title": "giving advice", + "tekst": "test tekst test tekst" + } + ] + }, + { "id": "2", "title": "Domeinklasse", "rol": "ontwerpen", "text": "Neem als uitgangspunt alle use case scenario's of ieder document dat beschrijft wat het systeem moet doen (requirementsdocumenten).\nMarkeer door bijv te onderstrepen ieder zelfstandignaamwoord die je kunt vinden is in de verzamelde documenten. Maak je in dit stadium nog geen zorgen over de naamgeving. Dit zijn kandidaten klassen.\nMaak een lijst van de gevonden naamwoorden en rangschik deze naar betekenis. Van de namen die dezelfde betekenis hebben gebruik slechts 1.\nMaak van de gereduceerde lijst een diagram (rechthoek met de naam van de klasse er in).\nTeken de relaties tussen de klassen door een lijn te trekken tussen elke twee klassen die een relatie hebben. Twee klassen hebben een relatie met elkaar als er een zin bestaat (of te maken) waarin die twee klassen voor komen. Met enig kennis over het te maken systeem zijn de relaties redelijk eenvoudig te vinden.\nOm de methodes behorende bij een klasse te vinden, neem je als uitgangspunt dezelfde documenten en ga je nu opzoek naar de werkwoorden (acties) in deze documenten. Dit zijn de kandidaten methoden\nOm te bepalen bij welke klassen deze kandidaten methoden horen stel je de vraag welke klasse is verantwoordelijk voor welke actie. Net als voor de kandidatenklassen rangschik je de acties naar betekenis." ,"geschiedenis" : [ + { + "time": "20:21:30", + "date": "2020-10-01", + "editor": { + "username": "anon123" + }, + "title": "advice geven", + "tekst": "test tekst test tekst test tekst" + }, + + { + "time": "22:10:33", + "date": "2020-09-28", + "editor": { + "username": "anon123" + }, + "title": "giving advice", + "tekst": "test tekst test tekst" + } + ]}, + { "id": "3", "title": "Toestandsdiagram", "rol": "adviseren", "text": "Een toestandsdiagram (Engels: state diagram en ook wel state transition diagram) is een netwerkdiagram dat een schematische weergave is van een systeem dat als eindigetoestandsautomaat wordt beschouwd. Het diagram toont de verschillende toestanden waarin een systeem zich kan bevinden als cirkels, en de mogelijke overgangen vanuit een toestand naar een andere toestand als pijlen. Deze pijlen worden doorgaans gelabeld met een logische uitspraak die de conditie beschrijft waaronder het systeem van de ene toestand in de andere overgaat. Pijlen kunnen ook gelabeld worden met een kanswaarde (een getal tussen 0 en 1). In dat geval geeft het toestandsdiagram een Markovketen weer.\n\nEen toestandsdiagram kan snel vragen te beantwoorden als \"Kan het systeem als het eenmaal in toestand A is nog wel in toestand B komen? En zo ja, via welke transitiepaden?\" Een transitiepad van A naar B is dan de opeenvolging van toestanden die het systeem moet aannemen om vanuit toestand A in toestand B te komen." ,"geschiedenis" : [ + { + "time": "20:21:30", + "date": "2020-10-01", + "editor": { + "username": "anon123" + }, + "title": "advice geven", + "tekst": "test tekst test tekst test tekst" + }, + + { + "time": "22:10:33", + "date": "2020-09-28", + "editor": { + "username": "anon123" + }, + "title": "giving advice", + "tekst": "test tekst test tekst" + } + ]}, + { "id": "3", "title": "Domein ICT", "rol": "adviseren", "text": "ICT Domein is een onderwerp wat veel lijkt op domeinklasse gg." ,"geschiedenis" : [ + { + "time": "20:21:30", + "date": "2020-10-01", + "editor": { + "username": "anon123" + }, + "title": "advice geven", + "tekst": "test tekst test tekst test tekst" + }, + + { + "time": "22:10:33", + "date": "2020-09-28", + "editor": { + "username": "anon123" + }, + "title": "giving advice", + "tekst": "test tekst test tekst" + } + ]}, + { "id": "31", "title": "ERP software", "rol": "realiseren", "text": "ERP software (Enterprise Resource Planning) biedt u een geïntegreerde softwareoplossing voor de ondersteuning van meerdere primaire bedrijfsprocessen, zoals inkoop, voorraadbeheer, verkoop, service, productie en financiële administratie. Door de integratie van administratieve, logistieke, commerciële en financiële processen verbeteren de productiviteit, kostenbeheersing en efficiëntie van uw organisatie. Bekende ERP leveranciers zijn SAP, Microsoft, Oracle en Exact, maar er zijn honderden ERP oplossingen waaruit u kunt kiezen. Meer over de keuze en toepassing van ERP software leest u in de ERP box en in de boeken, whitepapers en overige media die het ICT informatiecentrum in samenwerking met ERP specialisten heeft samengesteld." ,"geschiedenis" : [ + { + "time": "20:21:30", + "date": "2020-10-01", + "editor": { + "username": "anon123" + }, + "title": "advice geven", + "tekst": "test tekst test tekst test tekst" + }, + + { + "time": "22:10:33", + "date": "2020-09-28", + "editor": { + "username": "anon123" + }, + "title": "giving advice", + "tekst": "test tekst test tekst" + } + ]}, + { "id": "32", "title": "Boekhoudsoftware", "rol": "manage", "text": "Met boekhoudsoftware automatiseert u administratieve processen. Het ICT informatiecentrum biedt u kennis en informatie waarmee u betere keuzes kunt maken en weet hoe u een boekhoudsoftware project optimaal organiseert en uitvoert." ,"geschiedenis" : [ + { + "time": "20:21:30", + "date": "2020-10-01", + "editor": { + "username": "anon123" + }, + "title": "advice geven", + "tekst": "test tekst test tekst test tekst" + }, + + { + "time": "22:10:33", + "date": "2020-09-28", + "editor": { + "username": "anon123" + }, + "title": "giving advice", + "tekst": "test tekst test tekst" + } + ]}, + { "id": "33", "title": "Blockchain", "rol": "analyseren", "text": "Blockchaintechnologie wordt door velen beschouwd als één van de belangrijkste technologische vernieuwingen na internet. Voor de technologie, die snel bekend is geworden door de opkomst van cryptovaluta, werden veel kansen en toepassingen voorzien voor het bedrijfsleven. Die kansen zijn er nog altijd volop, al neemt het tempo waarin blockchaintoepassingen worden ontwikkeld een beetje af. Lees hier wat blockchain is, wat u ermee kunt, hoe de technologie werkt en wat dit betekent voor uw IT." ,"geschiedenis" : [ + { + "time": "20:21:30", + "date": "2020-10-01", + "editor": { + "username": "anon123" + }, + "title": "advice geven", + "tekst": "test tekst test tekst test tekst" + }, + + { + "time": "22:10:33", + "date": "2020-09-28", + "editor": { + "username": "anon123" + }, + "title": "giving advice", + "tekst": "test tekst test tekst" + } + ]}, + { "id": "34", "title": "Cloud computing", "rol": "adviseren", "text": "Cloud computing is de verzamelnaam van diverse vormen van dienstverlening waarbij het beheer en onderhoud van bedrijfssoftware, infrastructuren en andere ICT oplossingen door een derde partij worden aangeboden. Als ICT gebruiker heeft u via internet toegang tot de aangeboden dienst. Welke kansen cloud computing uw organisatie biedt, wat de voor- en nadelen zijn, welke onzekerheden er zijn, hoe u risico’s afdekt en wat uw overwegingen kunnen zijn meer gebruik te maken van cloud computing, leest u in de gratis informatie hierover van het ICT informatiecentrum." ,"geschiedenis" : [ + { + "time": "20:21:30", + "date": "2020-10-01", + "editor": { + "username": "anon123" + }, + "title": "advice geven", + "tekst": "test tekst test tekst test tekst" + }, + + { + "time": "22:10:33", + "date": "2020-09-28", + "editor": { + "username": "anon123" + }, + "title": "giving advice", + "tekst": "test tekst test tekst" + } + ]}, + { "id": "35", "title": "Cyber security", "rol": "adviseren", "text": "Cyber security vraagt steeds meer uw aandacht. Nu in toenemende mate criminelen het internet gebruiken om publieke opinies te beïnvloeden, informatiestromen te verstoren, informatie te stelen of via afpersing geld te verdienen, zullen overheden, bedrijven en particulieren zich tegen cybercrime moeten wapenen. Cyber security houdt zich daarmee bezig. Als u de zwakke plekken in uw ICT infrastructuur kent, kunt u deze tijdig aanpakken en schade beperken of voorkomen." ,"geschiedenis" : [ + { + "time": "20:21:30", + "date": "2020-10-01", + "editor": { + "username": "anon123" + }, + "title": "advice geven", + "tekst": "test tekst test tekst test tekst" + }, + + { + "time": "22:10:33", + "date": "2020-09-28", + "editor": { + "username": "anon123" + }, + "title": "giving advice", + "tekst": "test tekst test tekst" + } + ]} + ] +} \ No newline at end of file diff --git a/WikiApp/src/data/hardware_interfacing.json b/WikiApp/src/data/hardware_interfacing.json new file mode 100644 index 0000000..290f2a8 --- /dev/null +++ b/WikiApp/src/data/hardware_interfacing.json @@ -0,0 +1,237 @@ +{ + "id":"hardware_interfacing", + "name": "Hardware Interfacing", + "artikelen": [ + { "id": "4", "title": "Use case diagram", "rol": "realiseren", "text": "Een usecasediagram in de Unified Modeling Language is een diagram dat wordt gedefinieerd en verder ontwikkeld door usecase-analyse.[1] Usecasediagrammen worden voornamelijk gebruikt in software engineering om de requirements van een systeem in kaart te brengen.\n\nHet doel van het usecasediagram is om een grafisch overzicht te geven van de functionaliteiten van een systeem in termen van actoren, hun bedoeling uitgedrukt als usecases en de onderlinge relaties tussen deze usecases.","geschiedenis" : [ + { + "time": "20:21:30", + "date": "2020-10-01", + "editor": { + "username": "anon123" + }, + "title": "advice geven", + "tekst": "test tekst test tekst test tekst" + }, + + { + "time": "22:10:33", + "date": "2020-09-28", + "editor": { + "username": "anon123" + }, + "title": "giving advice", + "tekst": "test tekst test tekst" + } + ]}, + { "id": "5", "title": "Use case template", "rol": "realiseren","text": "Een Use Case (Specification) is de uitgewerkte beschrijving van de interactie van een Actor (menselijk of anders) met het te bouwen systeem. Deze beschrijving is zodanig dat ze een resultaat oplevert dat waarde heeft voor de opdrachtgever / gebruiker. De interactiestappen kunnen samenhangend en ononderbroken worden gedaan. Er is één basisscenario, dat wil zeggen, de meest eenvoudige of logische weg naar het resultaat, en optioneel één of meer alternatieve scenario’s waarin alternatieve paden naar het resultaat beschreven worden. Eveneens optioneel één of meer foutscenario’s, waarin wordt vastgelegd wat er gebeurt bij functionele fouten: schending van business rules enzovoorts.","geschiedenis" : [ + { + "time": "20:21:30", + "date": "2020-10-01", + "editor": { + "username": "anon123" + }, + "title": "advice geven", + "tekst": "test tekst test tekst test tekst" + }, + + { + "time": "22:10:33", + "date": "2020-09-28", + "editor": { + "username": "anon123" + }, + "title": "giving advice", + "tekst": "test tekst test tekst" + } + ]}, + { "id": "6", "title": "Activity diagram", "rol": "realiseren", "text": "Een activiteitendiagram is een van de methoden en technieken in de informatica om stapsgewijze bedrijfsprocessen in een diagram weer te geven, als onderdeel van een systeemanalyse. In het algemeen kunnen de activiteiten van een proces worden opgedeeld in:[2]\n\nProducten: de goederen en diensten van een bedrijf\nBewerkingen: activiteiten verricht aan de goederen en diensten\nBeslissingen: beoordelingen over het verdere verloop van de activiteiten", "geschiedenis" : [ + { + "time": "20:21:30", + "date": "2020-10-01", + "editor": { + "username": "anon123" + }, + "title": "advice geven", + "tekst": "test tekst test tekst test tekst" + }, + + { + "time": "22:10:33", + "date": "2020-09-28", + "editor": { + "username": "anon123" + }, + "title": "giving advice", + "tekst": "test tekst test tekst" + } + ]}, + { "id": "4", "title": "ICT", "rol": "adviseren", "text": "ICT, or information and communications technology (or technologies), is the infrastructure and components that enable modern computing.\n\nAlthough there is no single, universal definition of ICT, the term is generally accepted to mean all devices, networking components, applications and systems that combined allow people and organizations (i.e., businesses, nonprofit agencies, governments and criminal enterprises) to interact in the digital world.\n\nComponents of an ICT system\nICT encompasses both the internet-enabled sphere as well as the mobile one powered by wireless networks. It also includes antiquated technologies, such as landline telephones, radio and television broadcast -- all of which are still widely used today alongside cutting-edge ICT pieces such as artificial intelligence and robotics.\n\nICT is sometimes used synonymously with IT (for information technology); however, ICT is generally used to represent a broader, more comprehensive list of all components related to computer and digital technologies than IT.\n\nThe list of ICT components is exhaustive, and it continues to grow. Some components, such as computers and telephones, have existed for decades. Others, such as smartphones, digital TVs and robots, are more recent entries.\n\nICT commonly means more than its list of components, though. It also encompasses the application of all those various components. It's here that the real potential, power and danger of ICT can be found." ,"geschiedenis" : [ + { + "time": "20:21:30", + "date": "2020-10-01", + "editor": { + "username": "anon123" + }, + "title": "advice geven", + "tekst": "test tekst test tekst test tekst" + }, + + { + "time": "22:10:33", + "date": "2020-09-28", + "editor": { + "username": "anon123" + }, + "title": "giving advice", + "tekst": "test tekst test tekst" + } + ]}, + { "id": "5", "title": "Domeinklasse", "rol": "adviseren", "text": "Neem als uitgangspunt alle use case scenario's of ieder document dat beschrijft wat het systeem moet doen (requirementsdocumenten).\nMarkeer door bijv te onderstrepen ieder zelfstandignaamwoord die je kunt vinden is in de verzamelde documenten. Maak je in dit stadium nog geen zorgen over de naamgeving. Dit zijn kandidaten klassen.\nMaak een lijst van de gevonden naamwoorden en rangschik deze naar betekenis. Van de namen die dezelfde betekenis hebben gebruik slechts 1.\nMaak van de gereduceerde lijst een diagram (rechthoek met de naam van de klasse er in).\nTeken de relaties tussen de klassen door een lijn te trekken tussen elke twee klassen die een relatie hebben. Twee klassen hebben een relatie met elkaar als er een zin bestaat (of te maken) waarin die twee klassen voor komen. Met enig kennis over het te maken systeem zijn de relaties redelijk eenvoudig te vinden.\nOm de methodes behorende bij een klasse te vinden, neem je als uitgangspunt dezelfde documenten en ga je nu opzoek naar de werkwoorden (acties) in deze documenten. Dit zijn de kandidaten methoden\nOm te bepalen bij welke klassen deze kandidaten methoden horen stel je de vraag welke klasse is verantwoordelijk voor welke actie. Net als voor de kandidatenklassen rangschik je de acties naar betekenis." ,"geschiedenis" : [ + { + "time": "20:21:30", + "date": "2020-10-01", + "editor": { + "username": "anon123" + }, + "title": "advice geven", + "tekst": "test tekst test tekst test tekst" + }, + + { + "time": "22:10:33", + "date": "2020-09-28", + "editor": { + "username": "anon123" + }, + "title": "giving advice", + "tekst": "test tekst test tekst" + } + ]}, + { "id": "6", "title": "Domein ICT", "rol": "adviseren", "text": "ICT Domein is een onderwerp wat veel lijkt op domeinklasse gg." ,"geschiedenis" : [ + { + "time": "20:21:30", + "date": "2020-10-01", + "editor": { + "username": "anon123" + }, + "title": "advice geven", + "tekst": "test tekst test tekst test tekst" + }, + + { + "time": "22:10:33", + "date": "2020-09-28", + "editor": { + "username": "anon123" + }, + "title": "giving advice", + "tekst": "test tekst test tekst" + } + ]}, + { "id": "36", "title": "Financiële software", "rol": "adviseren", "text": "Waarom zou u kiezen voor een financieel pakket, als ERP software u dezelfde functionaliteit belooft? Hoe zoekt u naar financiële software en kiest u uit talloze aanbieders de oplossing die het best past bij uw administratieve proces? Het ICT informatiecentrum biedt u informatie over het vergelijken, selecteren en implementeren van financiële software." ,"geschiedenis" : [ + { + "time": "20:21:30", + "date": "2020-10-01", + "editor": { + "username": "anon123" + }, + "title": "advice geven", + "tekst": "test tekst test tekst test tekst" + }, + + { + "time": "22:10:33", + "date": "2020-09-28", + "editor": { + "username": "anon123" + }, + "title": "giving advice", + "tekst": "test tekst test tekst" + } + ]}, + { "id": "37", "title": "Digitale transformatie", "rol": "adviseren", "text": "De digitale transformatie van de samenleving, het bedrijfsleven, overheden en business modellen is in volle gang. Nieuwe, snel ontwikkelende IT oplossingen en technologie veranderen de wereld om ons heen met hoge snelheid. Digitaal transformeren of niet is voor steeds meer bedrijven geen keuze meer, maar een noodzaak." ,"geschiedenis" : [ + { + "time": "20:21:30", + "date": "2020-10-01", + "editor": { + "username": "anon123" + }, + "title": "advice geven", + "tekst": "test tekst test tekst test tekst" + }, + + { + "time": "22:10:33", + "date": "2020-09-28", + "editor": { + "username": "anon123" + }, + "title": "giving advice", + "tekst": "test tekst test tekst" + } + ]}, + { "id": "38", "title": "Workflow management", "rol": "adviseren", "text": "De meest letterlijke vertaling van het begrip workflow is het woord ‘werkstroom’. Iedere in regels of procedures vastgelegde afhandeling is te beschouwen als een werkstroom of workflow. Zo worden orders vaak via vaste procedures afgehandeld, maar ook serviceacties of klachtafhandelingen. Voor iedereen in de organisatie die betrokken is bij een werkstroom, is het van belang dat hij of zij kan beschikken over dezelfde informatie en inzicht heeft in de actuele status van de afhandeling. Workflow management software biedt de oplossing daarvoor." ,"geschiedenis" : [ + { + "time": "20:21:30", + "date": "2020-10-01", + "editor": { + "username": "anon123" + }, + "title": "advice geven", + "tekst": "test tekst test tekst test tekst" + }, + + { + "time": "22:10:33", + "date": "2020-09-28", + "editor": { + "username": "anon123" + }, + "title": "giving advice", + "tekst": "test tekst test tekst" + } + ]}, + { "id": "39", "title": "SCM software", "rol": "adviseren", "text": "Wat is supply chain management software, ofwel SCM software? Hoe selecteert u een SCM pakket? Welke SCM systemen zijn er, wat zijn de verschillen en hoe vergelijkt u deze? Hoe kunt u het best SCM implementeren? ICT informatiecentrum biedt u informatie over SCM software die u helpt bij het succesvol uitvoeren van uw softwareproject." ,"geschiedenis" : [ + { + "time": "20:21:30", + "date": "2020-10-01", + "editor": { + "username": "anon123" + }, + "title": "advice geven", + "tekst": "test tekst test tekst test tekst" + }, + + { + "time": "22:10:33", + "date": "2020-09-28", + "editor": { + "username": "anon123" + }, + "title": "giving advice", + "tekst": "test tekst test tekst" + } + ]}, + { "id": "40", "title": "Product information management – PIM", "rol": "adviseren", "text": "Product information management of PIM gaat om het beheer van twee soorten gegevens. Ten eerste zijn dat de gegevens die het product zelf omschrijven, zoals technische specificaties en gebruikstoepassingen. Daarnaast betreft het gegevens die op een andere manier met het product te maken hebben, waaronder logistieke en commerciële informatie. Op steeds meer plaatsen wordt deze productinformatie gecommuniceerd, zoals op websites en in brochures, gebruikshandleidingen, offertes, enz. Het is belangrijk dat de productinformatie op alle plaatsen waar deze gecommuniceerd wordt, gelijkluidend is. Product information management is daarop gericht. Het zorgt voor consistente informatie ongeacht het medium. U realiseert het met PIM software of een PIM systeem.","geschiedenis" : [ + { + "time": "20:21:30", + "date": "2020-10-01", + "editor": { + "username": "anon123" + }, + "title": "advice geven", + "tekst": "test tekst test tekst test tekst" + }, + + { + "time": "22:10:33", + "date": "2020-09-28", + "editor": { + "username": "anon123" + }, + "title": "giving advice", + "tekst": "test tekst test tekst" + } + ] } + ] +} \ No newline at end of file diff --git a/WikiApp/src/data/infrastructuur.json b/WikiApp/src/data/infrastructuur.json new file mode 100644 index 0000000..04d0f97 --- /dev/null +++ b/WikiApp/src/data/infrastructuur.json @@ -0,0 +1,237 @@ +{ + "id":"infrastructuur", + "name": "Infrastructuur", + "artikelen": [ + { "id": "7", "title": "Java", "rol": "ontwerpen", "text": "Java is een objectgeoriënteerde programmeertaal. Java is een platformonafhankelijke taal die qua syntaxis grotendeels gebaseerd is op de (eveneens objectgeoriënteerde) programmeertaal C++. Java beschikt echter over een uitgebreidere klassenbibliotheek dan C++." ,"geschiedenis" : [ + { + "time": "20:21:30", + "date": "2020-10-01", + "editor": { + "username": "anon123" + }, + "title": "advice geven", + "tekst": "test tekst test tekst test tekst" + }, + + { + "time": "22:10:33", + "date": "2020-09-28", + "editor": { + "username": "anon123" + }, + "title": "giving advice", + "tekst": "test tekst test tekst" + } + ]}, + { "id": "8", "title": "Python", "rol": "ontwerpen", "text": "Python is een programmeertaal die begin jaren 90 ontworpen en ontwikkeld werd door Guido van Rossum, destijds verbonden aan het Centrum voor Wiskunde en Informatica (daarvoor Mathematisch Centrum) in Amsterdam. De taal is mede gebaseerd op inzichten van professor Lambert Meertens, die een taal genaamd ABC had ontworpen, bedoeld als alternatief voor BASIC, maar dan met geavanceerde datastructuren. Inmiddels wordt de taal doorontwikkeld door een enthousiaste groep, tot juli 2018 geleid door Van Rossum. Deze groep wordt ondersteund door vrijwilligers op het internet. De ontwikkeling van Python wordt geleid door de Python Software Foundation. Python is vrije software.\n\nPython heeft zijn naam te danken aan het favoriete televisieprogramma van Guido van Rossum, Monty Python's Flying Circus.[1][2]" ,"geschiedenis" : [ + { + "time": "20:21:30", + "date": "2020-10-01", + "editor": { + "username": "anon123" + }, + "title": "advice geven", + "tekst": "test tekst test tekst test tekst" + }, + + { + "time": "22:10:33", + "date": "2020-09-28", + "editor": { + "username": "anon123" + }, + "title": "giving advice", + "tekst": "test tekst test tekst" + } + ]}, + { "id": "9", "title": "CSS", "rol": "ontwerpen", "text": "Cascading Style Sheets (afgekort tot CSS), stijlbladen, zijn een mogelijkheid om de vormgeving van webpagina's los te koppelen van hun feitelijke inhoud en centraal vast te leggen. Het Engelse \"style\" heeft de betekenis van \"opmaak\", niet van schrijfstijl. Het begrip \"cascading\" (als een waterval) verwijst naar de mogelijkheid van het overerven van opmaak-eigenschappen.\n\nDe CSS-informatie voor de vormgeving van het document wordt toegevoegd aan de HTML-code ervan. Die informatie mag in het HTML-bestand zelf staan, maar ook in een apart bestand waar het HTML-document naar verwijst. Een dergelijk extern bestand wordt ook wel stylesheet genoemd.\n\nEen belangrijke reden voor de introductie van Cascading Style Sheets was de eenvoudigere en consistentere vormgeving van webpagina's, met minder webbrowser-specifieke eigenaardigheden. Het World Wide Web Consortium (W3C) heeft daartoe de standaard vastgelegd. De vastgelegde standaard is in de loop van de jaren aanmerkelijk uitgebreid. De oorspronkelijke standaard staat bekend als CSS1. Latere uitbreidingen staan bekend als CSS2 en CSS3. Deze laatste uitbreiding (CSS3) is gedeeltelijk nog in ontwikkeling en is als zodanig geen officiële standaard." ,"geschiedenis" : [ + { + "time": "20:21:30", + "date": "2020-10-01", + "editor": { + "username": "anon123" + }, + "title": "advice geven", + "tekst": "test tekst test tekst test tekst" + }, + + { + "time": "22:10:33", + "date": "2020-09-28", + "editor": { + "username": "anon123" + }, + "title": "giving advice", + "tekst": "test tekst test tekst" + } + ]}, + { "id": "7", "title": "Use case diagram", "rol": "realiseren", "text": "Wat tekst hier en daar hoort erbij","geschiedenis" : [ + { + "time": "20:21:30", + "date": "2020-10-01", + "editor": { + "username": "anon123" + }, + "title": "advice geven", + "tekst": "test tekst test tekst test tekst" + }, + + { + "time": "22:10:33", + "date": "2020-09-28", + "editor": { + "username": "anon123" + }, + "title": "giving advice", + "tekst": "test tekst test tekst" + } + ]}, + { "id": "8", "title": "Use case template", "rol": "realiseren","text": "Ja een use case template natuurlijk nice.","geschiedenis" : [ + { + "time": "20:21:30", + "date": "2020-10-01", + "editor": { + "username": "anon123" + }, + "title": "advice geven", + "tekst": "test tekst test tekst test tekst" + }, + + { + "time": "22:10:33", + "date": "2020-09-28", + "editor": { + "username": "anon123" + }, + "title": "giving advice", + "tekst": "test tekst test tekst" + } + ]}, + { "id": "9", "title": "Activity diagram", "rol": "realiseren", "text": "Activity diagram is hier wel handig","geschiedenis" : [ + { + "time": "20:21:30", + "date": "2020-10-01", + "editor": { + "username": "anon123" + }, + "title": "advice geven", + "tekst": "test tekst test tekst test tekst" + }, + + { + "time": "22:10:33", + "date": "2020-09-28", + "editor": { + "username": "anon123" + }, + "title": "giving advice", + "tekst": "test tekst test tekst" + } + ]}, + { "id": "18", "title": "ICT", "rol": "adviseren", "text": "ICT, or information and communications technology (or technologies), is the infrastructure and components that enable modern computing.\n\nAlthough there is no single, universal definition of ICT, the term is generally accepted to mean all devices, networking components, applications and systems that combined allow people and organizations (i.e., businesses, nonprofit agencies, governments and criminal enterprises) to interact in the digital world.\n\nComponents of an ICT system\nICT encompasses both the internet-enabled sphere as well as the mobile one powered by wireless networks. It also includes antiquated technologies, such as landline telephones, radio and television broadcast -- all of which are still widely used today alongside cutting-edge ICT pieces such as artificial intelligence and robotics.\n\nICT is sometimes used synonymously with IT (for information technology); however, ICT is generally used to represent a broader, more comprehensive list of all components related to computer and digital technologies than IT.\n\nThe list of ICT components is exhaustive, and it continues to grow. Some components, such as computers and telephones, have existed for decades. Others, such as smartphones, digital TVs and robots, are more recent entries.\n\nICT commonly means more than its list of components, though. It also encompasses the application of all those various components. It's here that the real potential, power and danger of ICT can be found." ,"geschiedenis" : [ + { + "time": "20:21:30", + "date": "2020-10-01", + "editor": { + "username": "anon123" + }, + "title": "advice geven", + "tekst": "test tekst test tekst test tekst" + }, + + { + "time": "22:10:33", + "date": "2020-09-28", + "editor": { + "username": "anon123" + }, + "title": "giving advice", + "tekst": "test tekst test tekst" + } + ]}, + { "id": "19", "title": "Domeinklasse", "rol": "adviseren", "text": "Neem als uitgangspunt alle use case scenario's of ieder document dat beschrijft wat het systeem moet doen (requirementsdocumenten).\nMarkeer door bijv te onderstrepen ieder zelfstandignaamwoord die je kunt vinden is in de verzamelde documenten. Maak je in dit stadium nog geen zorgen over de naamgeving. Dit zijn kandidaten klassen.\nMaak een lijst van de gevonden naamwoorden en rangschik deze naar betekenis. Van de namen die dezelfde betekenis hebben gebruik slechts 1.\nMaak van de gereduceerde lijst een diagram (rechthoek met de naam van de klasse er in).\nTeken de relaties tussen de klassen door een lijn te trekken tussen elke twee klassen die een relatie hebben. Twee klassen hebben een relatie met elkaar als er een zin bestaat (of te maken) waarin die twee klassen voor komen. Met enig kennis over het te maken systeem zijn de relaties redelijk eenvoudig te vinden.\nOm de methodes behorende bij een klasse te vinden, neem je als uitgangspunt dezelfde documenten en ga je nu opzoek naar de werkwoorden (acties) in deze documenten. Dit zijn de kandidaten methoden\nOm te bepalen bij welke klassen deze kandidaten methoden horen stel je de vraag welke klasse is verantwoordelijk voor welke actie. Net als voor de kandidatenklassen rangschik je de acties naar betekenis." ,"geschiedenis" : [ + { + "time": "20:21:30", + "date": "2020-10-01", + "editor": { + "username": "anon123" + }, + "title": "advice geven", + "tekst": "test tekst test tekst test tekst" + }, + + { + "time": "22:10:33", + "date": "2020-09-28", + "editor": { + "username": "anon123" + }, + "title": "giving advice", + "tekst": "test tekst test tekst" + } + ]}, + { "id": "20", "title": "Domein ICT", "rol": "adviseren", "text": "ICT Domein is een onderwerp wat veel lijkt op domeinklasse gg." ,"geschiedenis" : [ + { + "time": "20:21:30", + "date": "2020-10-01", + "editor": { + "username": "anon123" + }, + "title": "advice geven", + "tekst": "test tekst test tekst test tekst" + }, + + { + "time": "22:10:33", + "date": "2020-09-28", + "editor": { + "username": "anon123" + }, + "title": "giving advice", + "tekst": "test tekst test tekst" + } + ]}, + { "id": "16", "title": "Domeinklasse", "rol": "adviseren", "text": "Neem als uitgangspunt alle use case scenario's of ieder document dat beschrijft wat het systeem moet doen (requirementsdocumenten).\nMarkeer door bijv te onderstrepen ieder zelfstandignaamwoord die je kunt vinden is in de verzamelde documenten. Maak je in dit stadium nog geen zorgen over de naamgeving. Dit zijn kandidaten klassen.\nMaak een lijst van de gevonden naamwoorden en rangschik deze naar betekenis. Van de namen die dezelfde betekenis hebben gebruik slechts 1.\nMaak van de gereduceerde lijst een diagram (rechthoek met de naam van de klasse er in).\nTeken de relaties tussen de klassen door een lijn te trekken tussen elke twee klassen die een relatie hebben. Twee klassen hebben een relatie met elkaar als er een zin bestaat (of te maken) waarin die twee klassen voor komen. Met enig kennis over het te maken systeem zijn de relaties redelijk eenvoudig te vinden.\nOm de methodes behorende bij een klasse te vinden, neem je als uitgangspunt dezelfde documenten en ga je nu opzoek naar de werkwoorden (acties) in deze documenten. Dit zijn de kandidaten methoden\nOm te bepalen bij welke klassen deze kandidaten methoden horen stel je de vraag welke klasse is verantwoordelijk voor welke actie. Net als voor de kandidatenklassen rangschik je de acties naar betekenis." ,"geschiedenis" : [ + { + "time": "20:21:30", + "date": "2020-10-01", + "editor": { + "username": "anon123" + }, + "title": "advice geven", + "tekst": "test tekst test tekst test tekst" + }, + + { + "time": "22:10:33", + "date": "2020-09-28", + "editor": { + "username": "anon123" + }, + "title": "giving advice", + "tekst": "test tekst test tekst" + } + ]}, + { "id": "17", "title": "Domein ICT", "rol": "adviseren", "text": "ICT Domein is een onderwerp wat veel lijkt op domeinklasse gg." ,"geschiedenis" : [ + { + "time": "20:21:30", + "date": "2020-10-01", + "editor": { + "username": "anon123" + }, + "title": "advice geven", + "tekst": "test tekst test tekst test tekst" + }, + + { + "time": "22:10:33", + "date": "2020-09-28", + "editor": { + "username": "anon123" + }, + "title": "giving advice", + "tekst": "test tekst test tekst" + } + ]} + ] +} \ No newline at end of file diff --git a/WikiApp/src/data/organisatie_processen.json b/WikiApp/src/data/organisatie_processen.json new file mode 100644 index 0000000..fc49906 --- /dev/null +++ b/WikiApp/src/data/organisatie_processen.json @@ -0,0 +1,237 @@ +{ + "id":"organisatie_processen", + "name": "Organisatie Processen", + "artikelen": [ + { "id": "13", "title": "User Stories", "rol": "manage & control", "text": "Een user story is een korte beschrijving (story) van wat een gebruiker (user) wil. User stories worden gebruikt bij het ontwikkelen van software of producten. Een user story bestaat uit enkele zinnen gewone spreektaal van de (computer)gebruiker waarin staat wat de gebruiker doet of moet doen, als onderdeel van z'n werk. User stories worden gebruikt binnen agile software development als een manier om de requirements te beschrijven. Hierin zegt men 'wie', 'wat', 'waarom' wil. Het geheel is weinig gedetailleerd en moet passen op een post-it. Het is de belangrijkste manier waarop de gebruiker invloed heeft op de functionaliteit van het te ontwikkelen systeem of product.\n\nUser stories kunnen ook door ontwikkelaars geschreven worden om niet-functionele eisen vast te leggen bijvoorbeeld op het gebied van beveiliging, kwaliteit en performance,[1] maar de eerstverantwoordelijke voor de verzameling van de user stories is de producteigenaar.","geschiedenis" : [ + { + "time": "20:21:30", + "date": "2020-10-01", + "editor": { + "username": "anon123" + }, + "title": "advice geven", + "tekst": "test tekst test tekst test tekst" + }, + + { + "time": "22:10:33", + "date": "2020-09-28", + "editor": { + "username": "anon123" + }, + "title": "giving advice", + "tekst": "test tekst test tekst" + } + ]}, + { "id": "14", "title": "BPMN", "rol": "manage & control", "text": "Business Proces Model and Notation (BPMN) is een standaard voor het modelleren van bedrijfsprocessen en het weergeven van die bedrijfsprocessen in een Business Proces Diagram (BPD). De gebruikte methodiek lijkt erg op de activiteitendiagrammen van Unified Modeling Language (UML)[1]. Het doel van BPMN is om bedrijfsprocesmanagement te verduidelijken, zowel voor technische als niet-technische gebruikers, door een notatie te gebruiken die intuïtief aanvoelt voor niet-technische gebruikers, maar wel in staat stelt om complexe processemantiek weer te geven. De BPMN-specificatie is ook een brug tussen de grafische weergave en de onderliggende constructies van uitvoerende talen, zoals Business Process Execution Language (BPEL)[2].","geschiedenis" : [ + { + "time": "20:21:30", + "date": "2020-10-01", + "editor": { + "username": "anon123" + }, + "title": "advice geven", + "tekst": "test tekst test tekst test tekst" + }, + + { + "time": "22:10:33", + "date": "2020-09-28", + "editor": { + "username": "anon123" + }, + "title": "giving advice", + "tekst": "test tekst test tekst" + } + ]}, + { "id": "15", "title": "Use Case", "rol": "manage & control", "text": "Een usecase in software engineering en systems engineering is een beschrijving van een gedrag van een systeem, dat reageert op een verzoek dat stamt van buiten het systeem. Met andere woorden, de usecase beschrijft \"wie\" met het betreffende systeem \"wat\" kan doen. De usecasetechniek wordt gebruikt bij de bepaling van de requirements van het gedrag van een bepaald systeem.","geschiedenis" : [ + { + "time": "20:21:30", + "date": "2020-10-01", + "editor": { + "username": "anon123" + }, + "title": "advice geven", + "tekst": "test tekst test tekst test tekst" + }, + + { + "time": "22:10:33", + "date": "2020-09-28", + "editor": { + "username": "anon123" + }, + "title": "giving advice", + "tekst": "test tekst test tekst" + } + ]}, + { "id": "10", "title": "Java", "rol": "ontwerpen", "text": "Java leukste taal natuurlijk om mee te programmeren" ,"geschiedenis" : [ + { + "time": "20:21:30", + "date": "2020-10-01", + "editor": { + "username": "anon123" + }, + "title": "advice geven", + "tekst": "test tekst test tekst test tekst" + }, + + { + "time": "22:10:33", + "date": "2020-09-28", + "editor": { + "username": "anon123" + }, + "title": "giving advice", + "tekst": "test tekst test tekst" + } + ]}, + { "id": "11", "title": "Python", "rol": "ontwerpen", "text": "Python, leuke taal 3 maanden maar gehad, mocht langer!","geschiedenis" : [ + { + "time": "20:21:30", + "date": "2020-10-01", + "editor": { + "username": "anon123" + }, + "title": "advice geven", + "tekst": "test tekst test tekst test tekst" + }, + + { + "time": "22:10:33", + "date": "2020-09-28", + "editor": { + "username": "anon123" + }, + "title": "giving advice", + "tekst": "test tekst test tekst" + } + ] }, + { "id": "12", "title": "CSS", "rol": "ontwerpen", "text": "CSS zijn we nu mee bezig." ,"geschiedenis" : [ + { + "time": "20:21:30", + "date": "2020-10-01", + "editor": { + "username": "anon123" + }, + "title": "advice geven", + "tekst": "test tekst test tekst test tekst" + }, + + { + "time": "22:10:33", + "date": "2020-09-28", + "editor": { + "username": "anon123" + }, + "title": "giving advice", + "tekst": "test tekst test tekst" + } + ]}, + { "id": "30", "title": "Rest API", "rol": "ontwerpen", "text": "Java leukste taal natuurlijk om mee te programmeren","geschiedenis" : [ + { + "time": "20:21:30", + "date": "2020-10-01", + "editor": { + "username": "anon123" + }, + "title": "advice geven", + "tekst": "test tekst test tekst test tekst" + }, + + { + "time": "22:10:33", + "date": "2020-09-28", + "editor": { + "username": "anon123" + }, + "title": "giving advice", + "tekst": "test tekst test tekst" + } + ] }, + { "id": "24", "title": "HTML", "rol": "analyseren", "text": "HTML mag geen programmeertaal genoemd worden","geschiedenis" : [ + { + "time": "20:21:30", + "date": "2020-10-01", + "editor": { + "username": "anon123" + }, + "title": "advice geven", + "tekst": "test tekst test tekst test tekst" + }, + + { + "time": "22:10:33", + "date": "2020-09-28", + "editor": { + "username": "anon123" + }, + "title": "giving advice", + "tekst": "test tekst test tekst" + } + ]}, + { "id": "25", "title": "JavaScript", "rol": "analyseren", "text": "JavaScript goeie. Het is zeker een veelgebruikte taal.","geschiedenis" : [ + { + "time": "20:21:30", + "date": "2020-10-01", + "editor": { + "username": "anon123" + }, + "title": "advice geven", + "tekst": "test tekst test tekst test tekst" + }, + + { + "time": "22:10:33", + "date": "2020-09-28", + "editor": { + "username": "anon123" + }, + "title": "giving advice", + "tekst": "test tekst test tekst" + } + ]}, + { "id": "26", "title": "Hibernate", "rol": "analyseren", "text": "Hibernate hebben we niet lang gehad, max 2 week.","geschiedenis" : [ + { + "time": "20:21:30", + "date": "2020-10-01", + "editor": { + "username": "anon123" + }, + "title": "advice geven", + "tekst": "test tekst test tekst test tekst" + }, + + { + "time": "22:10:33", + "date": "2020-09-28", + "editor": { + "username": "anon123" + }, + "title": "giving advice", + "tekst": "test tekst test tekst" + } + ]}, + { "id": "27", "title": "User Stories", "rol": "manage & control", "text": "User stories zijn handig om dingen te doen","geschiedenis" : [ + { + "time": "20:21:30", + "date": "2020-10-01", + "editor": { + "username": "anon123" + }, + "title": "advice geven", + "tekst": "test tekst test tekst test tekst" + }, + + { + "time": "22:10:33", + "date": "2020-09-28", + "editor": { + "username": "anon123" + }, + "title": "giving advice", + "tekst": "test tekst test tekst" + } + ]} + ] +} \ No newline at end of file diff --git a/WikiApp/src/data/software.json b/WikiApp/src/data/software.json new file mode 100644 index 0000000..e66de55 --- /dev/null +++ b/WikiApp/src/data/software.json @@ -0,0 +1,216 @@ +{ + "id":"software", + "name": "Software", + "artikelen": [ + { "id": "10", "title": "HTML", "rol": "analyseren", "text": "HyperText Markup Language (afgekort HTML) is een op SGML gebaseerde opmaaktaal voor de specificatie van documenten, voornamelijk bedoeld voor het wereldwijde web. Het is de standaard opmaaktaal voor webpagina's. Documenten in HTML kunnen geopend en gelezen worden door een webbrowser om vervolgens als webpagina weergegeven te worden. HTML-documenten bevatten op de eerste plaats semantische structuur en tekstuele inhoud van een webpagina; de opmaak en visuele weergave kunnen er ook in worden beschreven, maar daar wordt tegenwoordig gewoonlijk CSS voor gebruikt.","geschiedenis" : [ + { + "time": "20:21:30", + "date": "2020-10-01", + "editor": { + "username": "anon123" + }, + "title": "advice geven", + "tekst": "test tekst test tekst test tekst" + }, + + { + "time": "22:10:33", + "date": "2020-09-28", + "editor": { + "username": "anon123" + }, + "title": "giving advice", + "tekst": "test tekst test tekst" + } + ]}, + { "id": "11", "title": "JavaScript", "rol": "analyseren", "text": "De eerste versie van JavaScript werd in 1995 ontwikkeld door Brendan Eich van Netscape Communications Corporation voor gebruik in Netscape Navigator. Aanvankelijk was de naam Mocha en vervolgens LiveScript. De taal werd hernoemd tot JavaScript in de tijd dat in de Netscape-browser ook ondersteuning voor Java-applets werd ingebouwd.\n\nMet de introductie van JavaScript ontstonden de eerste mogelijkheden om webpagina's interactief te maken. Dit werd later Dynamic HTML genoemd.\n\nNetscape heeft in een poging om JavaScript als een officiële norm erkend te krijgen en er toch zelf voldoende zeggingskracht over te behouden de taal laten normeren door de European Computer Manufacturers Association (ECMA), waarbij de naam om redenen betreffende het merkrecht is gewijzigd in ECMAScript. De relevante ISO-standaard is ISO 16262 (Internationale Organisatie voor Standaardisatie). De huidige versie van JavaScript is versie ECMAScript 2018 (juni 2018).\n\nMicrosoft heeft een eigen implementatie van JavaScript ontwikkeld onder de naam JScript en Adobe heeft een eigen versie genaamd ActionScript die gebruikt wordt in Flash.","geschiedenis" : [ + { + "time": "20:21:30", + "date": "2020-10-01", + "editor": { + "username": "anon123" + }, + "title": "advice geven", + "tekst": "test tekst test tekst test tekst" + }, + + { + "time": "22:10:33", + "date": "2020-09-28", + "editor": { + "username": "anon123" + }, + "title": "giving advice", + "tekst": "test tekst test tekst" + } + ]}, + { "id": "12", "title": "Hibernate", "rol": "analyseren", "text": "Hibernate is een ORM-bibliotheek voor Java. Het is een opensourceframework dat beschikbaar is onder de LGPL. Hibernate werd gemaakt door een internationaal team van Java-ontwikkelaars. Het is een eenvoudig te gebruiken framework voor het koppelen van een objectgeoriënteerd domeinmodel aan een traditionele relationele database.\n\nHibernate zorgt voor de koppeling van Java-klassen aan databasetabellen (en voor het koppelen van Java-datatypes aan SQL-datatypes). Het zorgt ook voor de ophaalfuncties, wat het ontwikkeltraject aanmerkelijk kan verkorten. De ontwikkelaar hoeft zich met dit framework niet meer bezig te houden met SQL- en JDBC-verbindingen.\n\nHet doel van Hibernate is de ontwikkelaar zo veel mogelijk te vrijwaren van programmeertaken die gerelateerd zijn aan het vastleggen van gegevens. Hibernate is eenvoudig in een project te incorporeren, of dit nu een nieuwe ontwikkeling of het ontsluiten van een bestaand systeem betreft. Hibernate genereert de benodigde SQL-instructies en de ontwikkelaar hoeft geen code op te nemen voor de verwerking van de resultaten en de conversie van gegevenstypes. Daardoor kan een applicatie worden ontwikkeld die eenvoudig portable is te maken naar alle SQL-databases."}, { "id": "28", "title": "BPMN", "rol": "manage & control", "text": "BPMN Modellen worden vaak gebruikt in het zakenleven.","geschiedenis" : [ + { + "time": "20:21:30", + "date": "2020-10-01", + "editor": { + "username": "anon123" + }, + "title": "advice geven", + "tekst": "test tekst test tekst test tekst" + }, + + { + "time": "22:10:33", + "date": "2020-09-28", + "editor": { + "username": "anon123" + }, + "title": "giving advice", + "tekst": "test tekst test tekst" + } + ]}, + { "id": "29", "title": "Actor Templates", "rol": "manage & control", "text": "Actor templates om even alle actoren in beeld te brengen.","geschiedenis" : [ + { + "time": "20:21:30", + "date": "2020-10-01", + "editor": { + "username": "anon123" + }, + "title": "advice geven", + "tekst": "test tekst test tekst test tekst" + }, + + { + "time": "22:10:33", + "date": "2020-09-28", + "editor": { + "username": "anon123" + }, + "title": "giving advice", + "tekst": "test tekst test tekst" + } + ]}, + { "id": "21", "title": "ICT", "rol": "adviseren", "text": "ICT, or information and communications technology (or technologies), is the infrastructure and components that enable modern computing.\n\nAlthough there is no single, universal definition of ICT, the term is generally accepted to mean all devices, networking components, applications and systems that combined allow people and organizations (i.e., businesses, nonprofit agencies, governments and criminal enterprises) to interact in the digital world.\n\nComponents of an ICT system\nICT encompasses both the internet-enabled sphere as well as the mobile one powered by wireless networks. It also includes antiquated technologies, such as landline telephones, radio and television broadcast -- all of which are still widely used today alongside cutting-edge ICT pieces such as artificial intelligence and robotics.\n\nICT is sometimes used synonymously with IT (for information technology); however, ICT is generally used to represent a broader, more comprehensive list of all components related to computer and digital technologies than IT.\n\nThe list of ICT components is exhaustive, and it continues to grow. Some components, such as computers and telephones, have existed for decades. Others, such as smartphones, digital TVs and robots, are more recent entries.\n\nICT commonly means more than its list of components, though. It also encompasses the application of all those various components. It's here that the real potential, power and danger of ICT can be found." ,"geschiedenis" : [ + { + "time": "20:21:30", + "date": "2020-10-01", + "editor": { + "username": "anon123" + }, + "title": "advice geven", + "tekst": "test tekst test tekst test tekst" + }, + + { + "time": "22:10:33", + "date": "2020-09-28", + "editor": { + "username": "anon123" + }, + "title": "giving advice", + "tekst": "test tekst test tekst" + } + ]}, + { "id": "22", "title": "Domeinklasse", "rol": "manage", "text": "Neem als uitgangspunt alle use case scenario's of ieder document dat beschrijft wat het systeem moet doen (requirementsdocumenten).\nMarkeer door bijv te onderstrepen ieder zelfstandignaamwoord die je kunt vinden is in de verzamelde documenten. Maak je in dit stadium nog geen zorgen over de naamgeving. Dit zijn kandidaten klassen.\nMaak een lijst van de gevonden naamwoorden en rangschik deze naar betekenis. Van de namen die dezelfde betekenis hebben gebruik slechts 1.\nMaak van de gereduceerde lijst een diagram (rechthoek met de naam van de klasse er in).\nTeken de relaties tussen de klassen door een lijn te trekken tussen elke twee klassen die een relatie hebben. Twee klassen hebben een relatie met elkaar als er een zin bestaat (of te maken) waarin die twee klassen voor komen. Met enig kennis over het te maken systeem zijn de relaties redelijk eenvoudig te vinden.\nOm de methodes behorende bij een klasse te vinden, neem je als uitgangspunt dezelfde documenten en ga je nu opzoek naar de werkwoorden (acties) in deze documenten. Dit zijn de kandidaten methoden\nOm te bepalen bij welke klassen deze kandidaten methoden horen stel je de vraag welke klasse is verantwoordelijk voor welke actie. Net als voor de kandidatenklassen rangschik je de acties naar betekenis." ,"geschiedenis" : [ + { + "time": "20:21:30", + "date": "2020-10-01", + "editor": { + "username": "anon123" + }, + "title": "advice geven", + "tekst": "test tekst test tekst test tekst" + }, + + { + "time": "22:10:33", + "date": "2020-09-28", + "editor": { + "username": "anon123" + }, + "title": "giving advice", + "tekst": "test tekst test tekst" + } + ]}, + { "id": "23", "title": "Domein ICT", "rol": "adviseren", "text": "ICT Domein is een onderwerp wat veel lijkt op domeinklasse gg." ,"geschiedenis" : [ + { + "time": "20:21:30", + "date": "2020-10-01", + "editor": { + "username": "anon123" + }, + "title": "advice geven", + "tekst": "test tekst test tekst test tekst" + }, + + { + "time": "22:10:33", + "date": "2020-09-28", + "editor": { + "username": "anon123" + }, + "title": "giving advice", + "tekst": "test tekst test tekst" + } + ]}, + { "id": "13", "title": "ICT", "rol": "adviseren", "text": "ICT, or information and communications technology (or technologies), is the infrastructure and components that enable modern computing.\n\nAlthough there is no single, universal definition of ICT, the term is generally accepted to mean all devices, networking components, applications and systems that combined allow people and organizations (i.e., businesses, nonprofit agencies, governments and criminal enterprises) to interact in the digital world.\n\nComponents of an ICT system\nICT encompasses both the internet-enabled sphere as well as the mobile one powered by wireless networks. It also includes antiquated technologies, such as landline telephones, radio and television broadcast -- all of which are still widely used today alongside cutting-edge ICT pieces such as artificial intelligence and robotics.\n\nICT is sometimes used synonymously with IT (for information technology); however, ICT is generally used to represent a broader, more comprehensive list of all components related to computer and digital technologies than IT.\n\nThe list of ICT components is exhaustive, and it continues to grow. Some components, such as computers and telephones, have existed for decades. Others, such as smartphones, digital TVs and robots, are more recent entries.\n\nICT commonly means more than its list of components, though. It also encompasses the application of all those various components. It's here that the real potential, power and danger of ICT can be found." ,"geschiedenis" : [ + { + "time": "20:21:30", + "date": "2020-10-01", + "editor": { + "username": "anon123" + }, + "title": "advice geven", + "tekst": "test tekst test tekst test tekst" + }, + + { + "time": "22:10:33", + "date": "2020-09-28", + "editor": { + "username": "anon123" + }, + "title": "giving advice", + "tekst": "test tekst test tekst" + } + ]}, + { "id": "14", "title": "Domeinklasse", "rol": "adviseren", "text": "Neem als uitgangspunt alle use case scenario's of ieder document dat beschrijft wat het systeem moet doen (requirementsdocumenten).\nMarkeer door bijv te onderstrepen ieder zelfstandignaamwoord die je kunt vinden is in de verzamelde documenten. Maak je in dit stadium nog geen zorgen over de naamgeving. Dit zijn kandidaten klassen.\nMaak een lijst van de gevonden naamwoorden en rangschik deze naar betekenis. Van de namen die dezelfde betekenis hebben gebruik slechts 1.\nMaak van de gereduceerde lijst een diagram (rechthoek met de naam van de klasse er in).\nTeken de relaties tussen de klassen door een lijn te trekken tussen elke twee klassen die een relatie hebben. Twee klassen hebben een relatie met elkaar als er een zin bestaat (of te maken) waarin die twee klassen voor komen. Met enig kennis over het te maken systeem zijn de relaties redelijk eenvoudig te vinden.\nOm de methodes behorende bij een klasse te vinden, neem je als uitgangspunt dezelfde documenten en ga je nu opzoek naar de werkwoorden (acties) in deze documenten. Dit zijn de kandidaten methoden\nOm te bepalen bij welke klassen deze kandidaten methoden horen stel je de vraag welke klasse is verantwoordelijk voor welke actie. Net als voor de kandidatenklassen rangschik je de acties naar betekenis." ,"geschiedenis" : [ + { + "time": "20:21:30", + "date": "2020-10-01", + "editor": { + "username": "anon123" + }, + "title": "advice geven", + "tekst": "test tekst test tekst test tekst" + }, + + { + "time": "22:10:33", + "date": "2020-09-28", + "editor": { + "username": "anon123" + }, + "title": "giving advice", + "tekst": "test tekst test tekst" + } + ]}, + { "id": "15", "title": "Domein ICT", "rol": "adviseren", "text": "ICT Domein is een onderwerp wat veel lijkt op domeinklasse gg.","geschiedenis" : [ + { + "time": "20:21:30", + "date": "2020-10-01", + "editor": { + "username": "anon123" + }, + "title": "advice geven", + "tekst": "test tekst test tekst test tekst" + }, + + { + "time": "22:10:33", + "date": "2020-09-28", + "editor": { + "username": "anon123" + }, + "title": "giving advice", + "tekst": "test tekst test tekst" + } + ] } + ] +} \ No newline at end of file diff --git a/WikiApp/src/geschiedenis.html b/WikiApp/src/geschiedenis.html new file mode 100644 index 0000000..3ee44d3 --- /dev/null +++ b/WikiApp/src/geschiedenis.html @@ -0,0 +1,55 @@ + + + + + + + Hbo-i Wiki website | Geschiedenis + + + + + +
    + +
    + + + + + + \ No newline at end of file diff --git a/WikiApp/src/images/building-blocks.png b/WikiApp/src/images/building-blocks.png new file mode 100644 index 0000000..785f2d4 Binary files /dev/null and b/WikiApp/src/images/building-blocks.png differ diff --git a/WikiApp/src/images/github-logo.png b/WikiApp/src/images/github-logo.png new file mode 100644 index 0000000..6b5d3c7 Binary files /dev/null and b/WikiApp/src/images/github-logo.png differ diff --git a/WikiApp/src/images/wiki-logo-mini.png b/WikiApp/src/images/wiki-logo-mini.png new file mode 100644 index 0000000..e52b133 Binary files /dev/null and b/WikiApp/src/images/wiki-logo-mini.png differ diff --git a/WikiApp/src/images/wiki-logo.png b/WikiApp/src/images/wiki-logo.png new file mode 100644 index 0000000..7ed7dd6 Binary files /dev/null and b/WikiApp/src/images/wiki-logo.png differ diff --git a/WikiApp/src/index.html b/WikiApp/src/index.html new file mode 100644 index 0000000..93cb818 --- /dev/null +++ b/WikiApp/src/index.html @@ -0,0 +1,71 @@ + + + + + + + Hbo-i Wiki website + + + + + +
    + + + + +
    + + + + diff --git a/WikiApp/src/inopbouw.html b/WikiApp/src/inopbouw.html new file mode 100644 index 0000000..90d301c --- /dev/null +++ b/WikiApp/src/inopbouw.html @@ -0,0 +1,36 @@ + + + + + + + Hbo-i Wiki website | In Opbouw + + + + +
    +
    +
    + bouwblokken +
    + +
    +

    In opbouw...

    +
    +
    + + +
    + + + + + diff --git a/WikiApp/src/login.html b/WikiApp/src/login.html new file mode 100644 index 0000000..a181f55 --- /dev/null +++ b/WikiApp/src/login.html @@ -0,0 +1,79 @@ + + + + + + + Hbo-i Wiki website | Inloggen + + + + + +
    + + + +
    + + + + + + + + + + diff --git a/WikiApp/src/main.js b/WikiApp/src/main.js new file mode 100644 index 0000000..f826490 --- /dev/null +++ b/WikiApp/src/main.js @@ -0,0 +1,18 @@ +import './components/search-bar.js' +import './components/wiki-article.js' +import './components/wiki-login.js' +import './components/view-index.js' +import './components/category-list.js' +import './components/wk-article.js' +import './components/radio-button.js' +import './components/zoek-list.js' +import './components/article-history.js' +import './components/edit-versie.js' +import './components/category-articles.js' +import './components/category-redirect.js' +import './components/deleteArticle.js' +import './components/wiki-header.js' +import './components/wiki-footer.js' +import './components/article-toevoegen.js' +import './components/toevoegen-bevestiging.js' +import './components/artikel-bewerken.js' \ No newline at end of file diff --git a/WikiApp/src/redux/index.js b/WikiApp/src/redux/index.js new file mode 100644 index 0000000..2fae6e5 --- /dev/null +++ b/WikiApp/src/redux/index.js @@ -0,0 +1,16 @@ +import { configureStore, combineReducers } from 'https://cdn.skypack.dev/@reduxjs/toolkit@1.2.3'; + +import popup from './popup.js' + + +const store = configureStore({ + reducer: combineReducers({ + popup, + }) +}) + +store.subscribe(() => { + const popup = store.getState().popup +}) + +export default store \ No newline at end of file diff --git a/WikiApp/src/redux/popup.js b/WikiApp/src/redux/popup.js new file mode 100644 index 0000000..3a3a5b2 --- /dev/null +++ b/WikiApp/src/redux/popup.js @@ -0,0 +1,26 @@ +import { createSlice } from 'https://cdn.skypack.dev/@reduxjs/toolkit@^1.2.3'; + + +function show() { + return true + +} +function hidde() { + return false + +} +const popup = createSlice({ + name: 'popup', + initialState: false, + reducers: { + open: show, + close: hidde + } +}) + +export const { + open, + close +} = popup.actions + +export default popup.reducer \ No newline at end of file diff --git a/WikiApp/src/redux/reducer.js b/WikiApp/src/redux/reducer.js new file mode 100644 index 0000000..090503a --- /dev/null +++ b/WikiApp/src/redux/reducer.js @@ -0,0 +1,6 @@ +// import { createReducer, combineReducers } from 'https://cdn.skypack.dev/@reduxjs/toolkit@^1.2.3'; +// import { reducer as menuReducer } from './popup.js' +// +// export default combineReducers({ +// menu: menuReducer, +// }) \ No newline at end of file diff --git a/WikiApp/src/styling/sheets/body.css b/WikiApp/src/styling/sheets/body.css new file mode 100644 index 0000000..cd8cd02 --- /dev/null +++ b/WikiApp/src/styling/sheets/body.css @@ -0,0 +1,40 @@ +html { + height: 100%; +} + +body { + display: grid; + grid-template-rows: auto 1fr auto; + grid-template-columns: 4fr 1fr; + grid-template-areas: + "header header" + "main nav" + "footer footer"; + padding: 0; + margin: 0; + min-height: 100%; + font-family: sans-serif; +} + + +@media only screen and (max-width: 768px) { + /* For mobile phones: */ + body { + /* grid-template-rows: auto auto auto auto; */ + grid-template-columns: auto; + grid-template-areas: + "header" + "nav" + "main" + "footer"; + } + + wiki-footer { + flex-direction: column; + } + + wiki-footer>ul { + padding-left: 0; + } +} + diff --git a/WikiApp/src/styling/sheets/buttons.css b/WikiApp/src/styling/sheets/buttons.css new file mode 100644 index 0000000..257ba1a --- /dev/null +++ b/WikiApp/src/styling/sheets/buttons.css @@ -0,0 +1,34 @@ +.primary-btn { + background-color: #4690ff; + border: 1px solid black; +} + + +.primary-btn:hover { + background-color: #198AB2; +} + + +.secondary-btn { + background-color: #61eaff8f; + border: 1px solid black; +} + + +.secondary-btn:hover { + background-color: #199DCC; +} + +.nav-btn:active { + outline: 2px solid black; +} + +.nav-btn { + color: black; + padding: 10px 0 10px 0; + margin: .5em; + font-size: .8em; + min-width: 350px; + border-radius: 3px; + cursor: pointer; +} \ No newline at end of file diff --git a/WikiApp/src/styling/sheets/inopbouw.css b/WikiApp/src/styling/sheets/inopbouw.css new file mode 100644 index 0000000..0cd1646 --- /dev/null +++ b/WikiApp/src/styling/sheets/inopbouw.css @@ -0,0 +1,20 @@ +#io-img { + height: 300px; + width: 300px; +} + +#io-cont { + display: flex; + flex-direction: row; + padding: 2em; + /* margin-top: -30px; */ +} + +#io-main { + background-color: #f7f7f7; +} + +#in-opbouw { + font-size: 2.6em; + margin-left: 1em; +} \ No newline at end of file diff --git a/WikiApp/src/styling/sheets/main.css b/WikiApp/src/styling/sheets/main.css new file mode 100644 index 0000000..dbed432 --- /dev/null +++ b/WikiApp/src/styling/sheets/main.css @@ -0,0 +1,14 @@ +main { + grid-area: main; + box-sizing: border-box; + padding-top: 2em; + padding-bottom: 2em; + min-height: 800px; +} + + +article { + border: 0.1em solid rgb(46, 42, 42); + margin-top: 3em; + padding: 1em; +} \ No newline at end of file diff --git a/WikiApp/src/styling/sheets/navbar.css b/WikiApp/src/styling/sheets/navbar.css new file mode 100644 index 0000000..23989bb --- /dev/null +++ b/WikiApp/src/styling/sheets/navbar.css @@ -0,0 +1,21 @@ +nav { + width: min-content; + justify-self: right; + align-items: center; + box-sizing: border-box; + grid-area: nav; + display: flex; + flex-direction: column; + padding: 2em; + border-left: 1px solid #e8e8e8; + background-color: #f1f1f1; +} + + +@media only screen and (max-width: 768px) { + /* For mobile phones: */ + nav { + justify-self: center; + width: 100%; + } +} \ No newline at end of file diff --git a/WikiApp/src/styling/style.css b/WikiApp/src/styling/style.css new file mode 100644 index 0000000..bdac144 --- /dev/null +++ b/WikiApp/src/styling/style.css @@ -0,0 +1,5 @@ +@import "./sheets/body.css"; +@import "./sheets/buttons.css"; +@import "./sheets/navbar.css"; +@import "./sheets/main.css"; +@import "./sheets/inopbouw.css" \ No newline at end of file diff --git a/WikiApp/src/toevoegen.html b/WikiApp/src/toevoegen.html new file mode 100644 index 0000000..c263f06 --- /dev/null +++ b/WikiApp/src/toevoegen.html @@ -0,0 +1,78 @@ + + + + + + + + Hbo-i Wiki website | Artikel toevoegen + + + + + + + +
    + +
    + + + + + + + \ No newline at end of file diff --git a/WikiApp/src/utils/article-data.js b/WikiApp/src/utils/article-data.js new file mode 100644 index 0000000..7f5ebda --- /dev/null +++ b/WikiApp/src/utils/article-data.js @@ -0,0 +1,17 @@ +import getData from "./get-data.js"; + + +export default function artikelData(){ + getData('categories') + .then(({categories}) => { + const categoryPromises = categories.map(category => getData(category)) + return Promise.all(categoryPromises) + }) + .then(articleData => { + const artikelenLijst = []; + artikelenLijst.length = 0 + articleData.map(category => artikelenLijst.push(category.artikelen)) + console.log(artikelenLijst) + return artikelenLijst; + }) +} \ No newline at end of file diff --git a/WikiApp/src/utils/get-data.js b/WikiApp/src/utils/get-data.js new file mode 100644 index 0000000..c47ceb7 --- /dev/null +++ b/WikiApp/src/utils/get-data.js @@ -0,0 +1,4 @@ +export default function getData(path) { + return fetch(`/data/${path}.json`) + .then(res => res.json()) +} \ No newline at end of file diff --git a/WikiApp/src/utils/search-bar-filter.js b/WikiApp/src/utils/search-bar-filter.js new file mode 100644 index 0000000..e86cb83 --- /dev/null +++ b/WikiApp/src/utils/search-bar-filter.js @@ -0,0 +1,23 @@ +export default function filterSuggesties(inputValue, artikelData) { + const artikelen = []; + const suggesties = []; + + artikelData + .map(category => category.artikelen + .map(artikel => artikelen.push(artikel))); + + artikelen + .map(artikel => { + if (suggesties.length <= 4){ + if(artikel.text.toLowerCase().includes(inputValue.toLowerCase()) || artikel.title.toLowerCase().includes(inputValue.toLowerCase())){ + const sentenceArray = artikel.text.replace(/([.?!])\s*(?=[A-Z])/g, "$1|").split("|"); + const suggestieZin = sentenceArray.filter(sentence => sentence.toLowerCase().includes(inputValue.toLowerCase())); + const artkl = {title: artikel.title, text: suggestieZin[0] + '..', id: artikel.id}; + if (artkl.text === undefined + '..'){ + artkl.text = artikel.text.substr(0, 40) + '...' + } + suggesties.push(artkl); + } + }}) + return suggesties; +} \ No newline at end of file diff --git a/WikiApp/src/zoekPagina.html b/WikiApp/src/zoekPagina.html new file mode 100644 index 0000000..13d044d --- /dev/null +++ b/WikiApp/src/zoekPagina.html @@ -0,0 +1,67 @@ + + + + + + + Hbo-i Wiki website | Zoekpagina + + + + + +
    + + + +
    + + + + diff --git a/documenten/BPMNWIKI.pdf b/documenten/BPMNWIKI.pdf new file mode 100644 index 0000000..c7b0e0f Binary files /dev/null and b/documenten/BPMNWIKI.pdf differ diff --git a/documenten/Functioneel Ontwerp Document.pdf b/documenten/Functioneel Ontwerp Document.pdf new file mode 100644 index 0000000..fd71db6 Binary files /dev/null and b/documenten/Functioneel Ontwerp Document.pdf differ diff --git a/documenten/Visie Scope Document V2B-IV v1.0.pdf b/documenten/Visie Scope Document V2B-IV v1.0.pdf new file mode 100644 index 0000000..3ad4df6 Binary files /dev/null and b/documenten/Visie Scope Document V2B-IV v1.0.pdf differ diff --git a/package.json b/package.json new file mode 100644 index 0000000..219448c --- /dev/null +++ b/package.json @@ -0,0 +1,32 @@ +{ + "name": "wikiapp", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "livereload": "livereload src", + "serve": "serve src", + "start": "npm-run-all --parallel --print-label livereload serve", + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/HU-SD-SV2PRFED-studenten-2021/prfed_2021-v2b-iv.git" + }, + "author": "", + "license": "ISC", + "dependencies": { + "lit-element": "^2.4.0", + "livereload": "0.9.1", + "npm-run-all": "4.1.5", + "serve": "11.3.2" + }, + "bugs": { + "url": "https://github.com/HU-SD-SV2PRFED-studenten-2021/prfed_2021-v2b-iv/issues" + }, + "homepage": "https://github.com/HU-SD-SV2PRFED-studenten-2021/prfed_2021-v2b-iv#readme", + "devDependencies": { + "@polymer/lit-element": "^0.7.1", + "lit-html": "^1.3.0" + } +}