From 361a65902780073c012d7ef3dd115f190808e5ba Mon Sep 17 00:00:00 2001 From: Eugen Neuber <eugen.neuber@tugraz.at> Date: Wed, 7 Aug 2019 17:20:23 +0200 Subject: [PATCH] Add files --- packages/data-table-view/.gitignore | 5 ++ packages/data-table-view/.gitmodules | 6 ++ packages/data-table-view/.idea/.gitignore | 2 + packages/data-table-view/README.md | 33 ++++++++- packages/data-table-view/assets/favicon.ico | Bin 0 -> 2550 bytes packages/data-table-view/assets/index.html | 12 ++++ packages/data-table-view/package.json | 49 ++++++++++++++ packages/data-table-view/rollup.config.js | 45 ++++++++++++ .../data-table-view/src/data-table-view.js | 64 ++++++++++++++++++ packages/data-table-view/src/demo.js | 51 ++++++++++++++ 10 files changed, 266 insertions(+), 1 deletion(-) create mode 100644 packages/data-table-view/.gitignore create mode 100644 packages/data-table-view/.gitmodules create mode 100644 packages/data-table-view/.idea/.gitignore create mode 100644 packages/data-table-view/assets/favicon.ico create mode 100644 packages/data-table-view/assets/index.html create mode 100644 packages/data-table-view/package.json create mode 100644 packages/data-table-view/rollup.config.js create mode 100644 packages/data-table-view/src/data-table-view.js create mode 100644 packages/data-table-view/src/demo.js diff --git a/packages/data-table-view/.gitignore b/packages/data-table-view/.gitignore new file mode 100644 index 00000000..e62f92aa --- /dev/null +++ b/packages/data-table-view/.gitignore @@ -0,0 +1,5 @@ +dist +node_modules +.idea +npm-debug.log +package-lock.json diff --git a/packages/data-table-view/.gitmodules b/packages/data-table-view/.gitmodules new file mode 100644 index 00000000..1b2847ad --- /dev/null +++ b/packages/data-table-view/.gitmodules @@ -0,0 +1,6 @@ +[submodule "vendor/common"] + path = vendor/common + url = git@gitlab.tugraz.at:VPU/WebComponents/Common.git +[submodule "vendor/auth"] + path = vendor/auth + url = git@gitlab.tugraz.at:VPU/WebComponents/Auth.git diff --git a/packages/data-table-view/.idea/.gitignore b/packages/data-table-view/.idea/.gitignore new file mode 100644 index 00000000..5c98b428 --- /dev/null +++ b/packages/data-table-view/.idea/.gitignore @@ -0,0 +1,2 @@ +# Default ignored files +/workspace.xml \ No newline at end of file diff --git a/packages/data-table-view/README.md b/packages/data-table-view/README.md index ccc15d9d..08e3f863 100644 --- a/packages/data-table-view/README.md +++ b/packages/data-table-view/README.md @@ -1,2 +1,33 @@ -# DataTableView +# VPU DataTableView Web Component +[GitLab Repository](https://gitlab.tugraz.at/VPU/WebComponents/KnowledgeBaseWebPageElementView) + +# Usage + +```html +<vpu-data-table-view></vpu-data-table-view> +``` + +# Attributes +- `value`: api request + - example `<vpu-data-table-view value="api/request"></vpu-data-table-view>` +- `lang` (optional, default: `de`): set to `de` or `en` for German or English + - example `<vpu-data-table-view lang="de"></vpu-data-table-view>` +- `entry-point-url` (optional, default is the TU Graz entry point url): entry point url to access the api + - example `<vpu-data-table-view entry-point-url="http://127.0.0.1:8000"></vpu-data-table-view>` + +# Local development +```bash +# get the source +git clone git@gitlab.tugraz.at:VPU/WebComponents/DataTableView.git +cd DataTableView +git submodule update --init + +# install dependencies (make sure you have npm version 4+ installed, so symlinks to the git submodules are created automatically) +npm install + +# constantly build dist/bundle.js and run a local web-server on port 8003 +npm run watch-local +``` + +Jump to <http://localhost:8003> and you should get a demo page. diff --git a/packages/data-table-view/assets/favicon.ico b/packages/data-table-view/assets/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..f6cf22d1afc22f071d2b64c7779bc5214c3adae5 GIT binary patch literal 2550 zcmeH{J!@1^5Qg9Qfi}@C1S=tFL@SHw1R=k|!X_wkl3I{dku4;hA_M{lL{exWVu~Os z1S^fr9!$4EB!X-a459`s0v5+-W+QHv-9Sty-ek_b^WOP*?wq?<8qpCo8sdCX)5oRr z(yl+I>0{D;v<t3bW0=SJF)<RS?$UEzYelP?S6lT<(cAVnwKq5Q;OTQ@<6gotRwQ?g z#n24RTqEB@5_;kyp(pf&?r9l4qi39qp3ym}pcnLlUJwd;#jp6aMA=G1qqtGXNHRDb z$zU)T3<iV2U<f1_3<iV2U@#a069$99U@#aAhCqkGU@#aA27|$9U~m{5796$vctMi5 z&RD_F{gGiwG*2{26iu+i7`U0ZNU$VWVk~eZI1(HQjs!=H3XTLrf+4}+qf2lk7!nM{ zpPMyCNT2Q>evH?r0~Nh9Q88+IXP7cgGYv9KnckV3nIf6qnclG-(Houqnf{snzD1e- znb~9*G7Opb#J7#9#M7g2X7z1k28DhFwgN|?Uu>;&FoOa|aSk3Vwwt5^OM#^TQD_*i z04#;XLQp{{u<(yjhdn8<6rV@1_}k#SfCfW_p~6sMs4!F*;&p<dz))eRFccUlgAory zg`vVwVW2dI4nu{Z!cYOI^e+^vBvyhFH4=V;qeg9yNgCG^O-@c~W@binb8}i)SWv6g z((>}M*4Njyv9X~}r=zW{Ep2aaYiDOi-+xv;UR+eO*<`x@8}JkL!t=WBRy}G@sd4mn z*v(Pt!_taYX0PkU*(t3qz1IAzdA*#yrz<B$_5Rc|T|0M2FK(UD)yp6C?%`L>uKv*H zOH*2FtjRhnYF&IoheIDnIC_ih_1%j@zADy!zenswML;)xxAGnbt>5njILLK(wlVIQ z^CxEQ)*SEJUA~iU_4KaAUi^vQ`<)$&))Rb#{~!BJpnvN7#SXgnxB2~fgM9DTum5J~ r*9Z9r$sZIutmdHDLE3)#9zX2p&l?suOh0V?u)6<--anm#erJ9GA@oeM literal 0 HcmV?d00001 diff --git a/packages/data-table-view/assets/index.html b/packages/data-table-view/assets/index.html new file mode 100644 index 00000000..ef937cf1 --- /dev/null +++ b/packages/data-table-view/assets/index.html @@ -0,0 +1,12 @@ +<!doctype html> +<html> +<head> + <meta charset="UTF-8"> + <script type="module" id="vpu-data-table-view-wc-src" src="bundle.js"></script> +</head> + +<body> + +<vpu-data-table-view-demo lang="de"></vpu-data-table-view-demo> +</body> +</html> diff --git a/packages/data-table-view/package.json b/packages/data-table-view/package.json new file mode 100644 index 00000000..6dadfc9e --- /dev/null +++ b/packages/data-table-view/package.json @@ -0,0 +1,49 @@ +{ + "name": "vpu-data-table-view", + "version": "1.0.0", + "main": "src/index.js", + "devDependencies": { + "karma": "^4.2.0", + "karma-chai": "^0.1.0", + "karma-chrome-launcher": "^3.0.0", + "karma-mocha": "^1.3.0", + "node-sass": "^4.12.0", + "puppeteer": "^1.15.0", + "mocha": "^6.2.0", + "chai": "^4.2.0", + "rollup": "^1.11.3", + "rollup-plugin-commonjs": "^9.3.4", + "rollup-plugin-copy": "^2.0.1", + "rollup-plugin-node-resolve": "^4.2.3", + "rollup-plugin-postcss": "^2.0.3", + "rollup-plugin-serve": "^1.0.1", + "rollup-plugin-terser": "^4.0.4", + "rollup-plugin-json": "^4.0.0", + "rollup-plugin-replace": "^2.2.0", + "rollup-plugin-multi-entry": "^2.1.0", + "i18next-scanner": "^2.10.2", + "vpu-auth": "file:./vendor/auth", + "vpu-common": "file:./vendor/common" + }, + "dependencies": { + "@webcomponents/webcomponentsjs": "^2.2.10", + "i18next": "^17.0.3", + "lit-element": "^2.1.0", + "lit-html": "^1.1.1", + "jquery": "^3.4.1" + }, + "scripts": { + "clean": "rm dist/*", + "build": "npm run build-local", + "build-local": "rollup -c", + "build-dev": "rollup -c --environment BUILD:development", + "build-prod": "rollup -c --environment BUILD:production", + "build-demo": "rollup -c --environment BUILD:demo", + "build-test": "rollup -c --environment BUILD:test", + "i18next": "i18next-scanner", + "watch": "npm run watch-local", + "watch-local": "rollup -c --watch", + "watch-dev": "rollup -c --watch --environment BUILD:development", + "test": "npm run build-test && karma start --singleRun" + } +} diff --git a/packages/data-table-view/rollup.config.js b/packages/data-table-view/rollup.config.js new file mode 100644 index 00000000..fbae1e07 --- /dev/null +++ b/packages/data-table-view/rollup.config.js @@ -0,0 +1,45 @@ +import resolve from 'rollup-plugin-node-resolve'; +import commonjs from 'rollup-plugin-commonjs'; +import postcss from 'rollup-plugin-postcss'; +import copy from 'rollup-plugin-copy'; +import {terser} from "rollup-plugin-terser"; +import json from 'rollup-plugin-json'; +import replace from "rollup-plugin-replace"; +import serve from 'rollup-plugin-serve'; +import multiEntry from 'rollup-plugin-multi-entry'; + +const build = (typeof process.env.BUILD !== 'undefined') ? process.env.BUILD : 'local'; +console.log("build: " + build); + +export default { + input: (build != 'test') ? 'src/demo.js' : 'test/**/*.js', + output: { + file: 'dist/bundle.js', + format: 'esm' + }, + plugins: [ + multiEntry(), + resolve(), + commonjs({ + include: 'node_modules/**' + }), + json(), + replace({ + "process.env.BUILD": '"' + build + '"', + }), + postcss({ + inject: false, + minimize: false, + plugins: [] + }), + (build !== 'local' && build !== 'test') ? terser() : false, + copy({ + targets: [ + 'assets/index.html', + 'assets/favicon.ico' + ], + outputFolder: 'dist' + }), + (process.env.ROLLUP_WATCH === 'true') ? serve({contentBase: 'dist', host: '127.0.0.1', port: 8003}) : false + ] +}; diff --git a/packages/data-table-view/src/data-table-view.js b/packages/data-table-view/src/data-table-view.js new file mode 100644 index 00000000..17c787f4 --- /dev/null +++ b/packages/data-table-view/src/data-table-view.js @@ -0,0 +1,64 @@ +import $ from 'jquery'; +import dt from 'datatables.net'; +import {setting, getAPiUrl} from './utils.js'; +import {i18n} from './i18n'; +import {html, LitElement} from 'lit-element'; +import commonUtils from 'vpu-common/utils'; + +dt(window, $); + +class DataTableView extends LitElement { + constructor() { + super(); + this.lang = 'de'; + } + + static get properties() { + return { + lang: { type: String }, + value: { type: String }, + entryPointUrl: { type: String, attribute: 'entry-point-url' }, + }; + } + + loadWebPageElement() { + if (window.VPUAuthToken === undefined || window.VPUAuthToken === "") { + return; + } + + const apiUrl = this.entryPointUrl + this.value; // TODO + var that = this; + + fetch(apiUrl, { + headers: { + 'Content-Type': 'application/ld+json', + 'Authorization': 'Bearer ' + window.VPUAuthToken, + }, + }) + .then(res => res.json()) + .then() // TODO + .catch(); + } + + update(changedProperties) { + changedProperties.forEach((oldValue, propName) => { + if (propName === "lang") { + i18n.changeLanguage(this.lang); + } + }); + + super.update(changedProperties); + } + + render() { + return html` + <style> + </style> + <table> + <tr><th>TODO..</th></tr> + </table> + `; + } +} + +commonUtils.defineCustomElement('vpu-data-table-view', DataTableView); diff --git a/packages/data-table-view/src/demo.js b/packages/data-table-view/src/demo.js new file mode 100644 index 00000000..d02f77de --- /dev/null +++ b/packages/data-table-view/src/demo.js @@ -0,0 +1,51 @@ +import 'vpu-auth'; +import './vpu-data-table-view.js'; +import {setting, getAPiUrl} from './utils.js'; +import {i18n} from './i18n'; +import {html, LitElement} from 'lit-element'; +import commonUtils from 'vpu-common/utils'; + +class DataTableViewDemo extends LitElement { + constructor() { + super(); + this.lang = 'de'; + } + + static get properties() { + return { + lang: { type: String }, + }; + } + + update(changedProperties) { + changedProperties.forEach((oldValue, propName) => { + if (propName === "lang") { + i18n.changeLanguage(this.lang); + } + }); + + super.update(changedProperties); + } + + render() { + return html` + <style> + </style> + <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.5/css/bulma.min.css"> + + <section class="section"> + <div class="content"> + <h1 class="title">DataTableView-Demo</h1> + </div> + <div class="content"> + <vpu-auth lang="${this.lang}" client-id="${setting('keyCloakClientId')}" load-person force-login></vpu-auth> + </div> + <div class="content"> + <data-table-view lang="${this.lang}" value=""></data-table-view> + </div> + </section> + `; + } +} + +commonUtils.defineCustomElement('vpu-data-table-view-demo', DataTableViewDemo); -- GitLab