@@ -16,6 +16,7 @@ | |||
"devDependencies": { | |||
"@vue/cli-plugin-babel": "~4.5.15", | |||
"@vue/cli-plugin-eslint": "~4.5.15", | |||
"@vue/cli-plugin-router": "~4.5.15", | |||
"@vue/cli-service": "~4.5.15", | |||
"babel-eslint": "^10.1.0", | |||
"eslint": "^6.7.2", | |||
@@ -2542,98 +2543,6 @@ | |||
"strip-ansi": "^6.0.0" | |||
} | |||
}, | |||
"node_modules/@vue/compiler-core": { | |||
"version": "3.2.39", | |||
"resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.39.tgz", | |||
"integrity": "sha512-mf/36OWXqWn0wsC40nwRRGheR/qoID+lZXbIuLnr4/AngM0ov8Xvv8GHunC0rKRIkh60bTqydlqTeBo49rlbqw==", | |||
"dev": true, | |||
"optional": true, | |||
"peer": true, | |||
"dependencies": { | |||
"@babel/parser": "^7.16.4", | |||
"@vue/shared": "3.2.39", | |||
"estree-walker": "^2.0.2", | |||
"source-map": "^0.6.1" | |||
} | |||
}, | |||
"node_modules/@vue/compiler-dom": { | |||
"version": "3.2.39", | |||
"resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.39.tgz", | |||
"integrity": "sha512-HMFI25Be1C8vLEEv1hgEO1dWwG9QQ8LTTPmCkblVJY/O3OvWx6r1+zsox5mKPMGvqYEZa6l8j+xgOfUspgo7hw==", | |||
"dev": true, | |||
"optional": true, | |||
"peer": true, | |||
"dependencies": { | |||
"@vue/compiler-core": "3.2.39", | |||
"@vue/shared": "3.2.39" | |||
} | |||
}, | |||
"node_modules/@vue/compiler-sfc": { | |||
"version": "3.2.39", | |||
"resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.39.tgz", | |||
"integrity": "sha512-fqAQgFs1/BxTUZkd0Vakn3teKUt//J3c420BgnYgEOoVdTwYpBTSXCMJ88GOBCylmUBbtquGPli9tVs7LzsWIA==", | |||
"dev": true, | |||
"optional": true, | |||
"peer": true, | |||
"dependencies": { | |||
"@babel/parser": "^7.16.4", | |||
"@vue/compiler-core": "3.2.39", | |||
"@vue/compiler-dom": "3.2.39", | |||
"@vue/compiler-ssr": "3.2.39", | |||
"@vue/reactivity-transform": "3.2.39", | |||
"@vue/shared": "3.2.39", | |||
"estree-walker": "^2.0.2", | |||
"magic-string": "^0.25.7", | |||
"postcss": "^8.1.10", | |||
"source-map": "^0.6.1" | |||
} | |||
}, | |||
"node_modules/@vue/compiler-sfc/node_modules/picocolors": { | |||
"version": "1.0.0", | |||
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", | |||
"integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", | |||
"dev": true, | |||
"optional": true, | |||
"peer": true | |||
}, | |||
"node_modules/@vue/compiler-sfc/node_modules/postcss": { | |||
"version": "8.4.16", | |||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz", | |||
"integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==", | |||
"dev": true, | |||
"funding": [ | |||
{ | |||
"type": "opencollective", | |||
"url": "https://opencollective.com/postcss/" | |||
}, | |||
{ | |||
"type": "tidelift", | |||
"url": "https://tidelift.com/funding/github/npm/postcss" | |||
} | |||
], | |||
"optional": true, | |||
"peer": true, | |||
"dependencies": { | |||
"nanoid": "^3.3.4", | |||
"picocolors": "^1.0.0", | |||
"source-map-js": "^1.0.2" | |||
}, | |||
"engines": { | |||
"node": "^10 || ^12 || >=14" | |||
} | |||
}, | |||
"node_modules/@vue/compiler-ssr": { | |||
"version": "3.2.39", | |||
"resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.39.tgz", | |||
"integrity": "sha512-EoGCJ6lincKOZGW+0Ky4WOKsSmqL7hp1ZYgen8M7u/mlvvEQUaO9tKKOy7K43M9U2aA3tPv0TuYYQFrEbK2eFQ==", | |||
"dev": true, | |||
"optional": true, | |||
"peer": true, | |||
"dependencies": { | |||
"@vue/compiler-dom": "3.2.39", | |||
"@vue/shared": "3.2.39" | |||
} | |||
}, | |||
"node_modules/@vue/component-compiler-utils": { | |||
"version": "3.3.0", | |||
"resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.3.0.tgz", | |||
@@ -2688,29 +2597,6 @@ | |||
"webpack": ">=4.0.0" | |||
} | |||
}, | |||
"node_modules/@vue/reactivity-transform": { | |||
"version": "3.2.39", | |||
"resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.39.tgz", | |||
"integrity": "sha512-HGuWu864zStiWs9wBC6JYOP1E00UjMdDWIG5W+FpUx28hV3uz9ODOKVNm/vdOy/Pvzg8+OcANxAVC85WFBbl3A==", | |||
"dev": true, | |||
"optional": true, | |||
"peer": true, | |||
"dependencies": { | |||
"@babel/parser": "^7.16.4", | |||
"@vue/compiler-core": "3.2.39", | |||
"@vue/shared": "3.2.39", | |||
"estree-walker": "^2.0.2", | |||
"magic-string": "^0.25.7" | |||
} | |||
}, | |||
"node_modules/@vue/shared": { | |||
"version": "3.2.39", | |||
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.39.tgz", | |||
"integrity": "sha512-D3dl2ZB9qE6mTuWPk9RlhDeP1dgNRUKC3NJxji74A4yL8M2MwlhLKUC/49WHjrNzSPug58fWx/yFbaTzGAQSBw==", | |||
"dev": true, | |||
"optional": true, | |||
"peer": true | |||
}, | |||
"node_modules/@vue/web-component-wrapper": { | |||
"version": "1.3.0", | |||
"resolved": "https://registry.npmjs.org/@vue/web-component-wrapper/-/web-component-wrapper-1.3.0.tgz", | |||
@@ -6534,14 +6420,6 @@ | |||
"node": ">=4.0" | |||
} | |||
}, | |||
"node_modules/estree-walker": { | |||
"version": "2.0.2", | |||
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", | |||
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", | |||
"dev": true, | |||
"optional": true, | |||
"peer": true | |||
}, | |||
"node_modules/esutils": { | |||
"version": "2.0.3", | |||
"resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", | |||
@@ -9348,17 +9226,6 @@ | |||
"yallist": "^3.0.2" | |||
} | |||
}, | |||
"node_modules/magic-string": { | |||
"version": "0.25.9", | |||
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", | |||
"integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", | |||
"dev": true, | |||
"optional": true, | |||
"peer": true, | |||
"dependencies": { | |||
"sourcemap-codec": "^1.4.8" | |||
} | |||
}, | |||
"node_modules/make-dir": { | |||
"version": "3.1.0", | |||
"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", | |||
@@ -12892,14 +12759,6 @@ | |||
"deprecated": "See https://github.com/lydell/source-map-url#deprecated", | |||
"dev": true | |||
}, | |||
"node_modules/sourcemap-codec": { | |||
"version": "1.4.8", | |||
"resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", | |||
"integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", | |||
"dev": true, | |||
"optional": true, | |||
"peer": true | |||
}, | |||
"node_modules/spdx-correct": { | |||
"version": "3.1.1", | |||
"resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", | |||
@@ -17659,8 +17518,7 @@ | |||
"version": "4.5.19", | |||
"resolved": "https://registry.npmjs.org/@vue/cli-plugin-vuex/-/cli-plugin-vuex-4.5.19.tgz", | |||
"integrity": "sha512-DUmfdkG3pCdkP7Iznd87RfE9Qm42mgp2hcrNcYQYSru1W1gX2dG/JcW8bxmeGSa06lsxi9LEIc/QD1yPajSCZw==", | |||
"dev": true, | |||
"requires": {} | |||
"dev": true | |||
}, | |||
"@vue/cli-service": { | |||
"version": "4.5.19", | |||
@@ -17746,87 +17604,6 @@ | |||
"strip-ansi": "^6.0.0" | |||
} | |||
}, | |||
"@vue/compiler-core": { | |||
"version": "3.2.39", | |||
"resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.39.tgz", | |||
"integrity": "sha512-mf/36OWXqWn0wsC40nwRRGheR/qoID+lZXbIuLnr4/AngM0ov8Xvv8GHunC0rKRIkh60bTqydlqTeBo49rlbqw==", | |||
"dev": true, | |||
"optional": true, | |||
"peer": true, | |||
"requires": { | |||
"@babel/parser": "^7.16.4", | |||
"@vue/shared": "3.2.39", | |||
"estree-walker": "^2.0.2", | |||
"source-map": "^0.6.1" | |||
} | |||
}, | |||
"@vue/compiler-dom": { | |||
"version": "3.2.39", | |||
"resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.39.tgz", | |||
"integrity": "sha512-HMFI25Be1C8vLEEv1hgEO1dWwG9QQ8LTTPmCkblVJY/O3OvWx6r1+zsox5mKPMGvqYEZa6l8j+xgOfUspgo7hw==", | |||
"dev": true, | |||
"optional": true, | |||
"peer": true, | |||
"requires": { | |||
"@vue/compiler-core": "3.2.39", | |||
"@vue/shared": "3.2.39" | |||
} | |||
}, | |||
"@vue/compiler-sfc": { | |||
"version": "3.2.39", | |||
"resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.39.tgz", | |||
"integrity": "sha512-fqAQgFs1/BxTUZkd0Vakn3teKUt//J3c420BgnYgEOoVdTwYpBTSXCMJ88GOBCylmUBbtquGPli9tVs7LzsWIA==", | |||
"dev": true, | |||
"optional": true, | |||
"peer": true, | |||
"requires": { | |||
"@babel/parser": "^7.16.4", | |||
"@vue/compiler-core": "3.2.39", | |||
"@vue/compiler-dom": "3.2.39", | |||
"@vue/compiler-ssr": "3.2.39", | |||
"@vue/reactivity-transform": "3.2.39", | |||
"@vue/shared": "3.2.39", | |||
"estree-walker": "^2.0.2", | |||
"magic-string": "^0.25.7", | |||
"postcss": "^8.1.10", | |||
"source-map": "^0.6.1" | |||
}, | |||
"dependencies": { | |||
"picocolors": { | |||
"version": "1.0.0", | |||
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", | |||
"integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", | |||
"dev": true, | |||
"optional": true, | |||
"peer": true | |||
}, | |||
"postcss": { | |||
"version": "8.4.16", | |||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz", | |||
"integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==", | |||
"dev": true, | |||
"optional": true, | |||
"peer": true, | |||
"requires": { | |||
"nanoid": "^3.3.4", | |||
"picocolors": "^1.0.0", | |||
"source-map-js": "^1.0.2" | |||
} | |||
} | |||
} | |||
}, | |||
"@vue/compiler-ssr": { | |||
"version": "3.2.39", | |||
"resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.39.tgz", | |||
"integrity": "sha512-EoGCJ6lincKOZGW+0Ky4WOKsSmqL7hp1ZYgen8M7u/mlvvEQUaO9tKKOy7K43M9U2aA3tPv0TuYYQFrEbK2eFQ==", | |||
"dev": true, | |||
"optional": true, | |||
"peer": true, | |||
"requires": { | |||
"@vue/compiler-dom": "3.2.39", | |||
"@vue/shared": "3.2.39" | |||
} | |||
}, | |||
"@vue/component-compiler-utils": { | |||
"version": "3.3.0", | |||
"resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.3.0.tgz", | |||
@@ -17872,31 +17649,7 @@ | |||
"version": "1.1.2", | |||
"resolved": "https://registry.npmjs.org/@vue/preload-webpack-plugin/-/preload-webpack-plugin-1.1.2.tgz", | |||
"integrity": "sha512-LIZMuJk38pk9U9Ur4YzHjlIyMuxPlACdBIHH9/nGYVTsaGKOSnSuELiE8vS9wa+dJpIYspYUOqk+L1Q4pgHQHQ==", | |||
"dev": true, | |||
"requires": {} | |||
}, | |||
"@vue/reactivity-transform": { | |||
"version": "3.2.39", | |||
"resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.39.tgz", | |||
"integrity": "sha512-HGuWu864zStiWs9wBC6JYOP1E00UjMdDWIG5W+FpUx28hV3uz9ODOKVNm/vdOy/Pvzg8+OcANxAVC85WFBbl3A==", | |||
"dev": true, | |||
"optional": true, | |||
"peer": true, | |||
"requires": { | |||
"@babel/parser": "^7.16.4", | |||
"@vue/compiler-core": "3.2.39", | |||
"@vue/shared": "3.2.39", | |||
"estree-walker": "^2.0.2", | |||
"magic-string": "^0.25.7" | |||
} | |||
}, | |||
"@vue/shared": { | |||
"version": "3.2.39", | |||
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.39.tgz", | |||
"integrity": "sha512-D3dl2ZB9qE6mTuWPk9RlhDeP1dgNRUKC3NJxji74A4yL8M2MwlhLKUC/49WHjrNzSPug58fWx/yFbaTzGAQSBw==", | |||
"dev": true, | |||
"optional": true, | |||
"peer": true | |||
"dev": true | |||
}, | |||
"@vue/web-component-wrapper": { | |||
"version": "1.3.0", | |||
@@ -18111,8 +17864,7 @@ | |||
"version": "5.3.2", | |||
"resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", | |||
"integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", | |||
"dev": true, | |||
"requires": {} | |||
"dev": true | |||
}, | |||
"acorn-walk": { | |||
"version": "7.2.0", | |||
@@ -18142,15 +17894,13 @@ | |||
"version": "1.0.1", | |||
"resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", | |||
"integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", | |||
"dev": true, | |||
"requires": {} | |||
"dev": true | |||
}, | |||
"ajv-keywords": { | |||
"version": "3.5.2", | |||
"resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", | |||
"integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", | |||
"dev": true, | |||
"requires": {} | |||
"dev": true | |||
}, | |||
"alphanum-sort": { | |||
"version": "1.0.2", | |||
@@ -20961,14 +20711,6 @@ | |||
"integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", | |||
"dev": true | |||
}, | |||
"estree-walker": { | |||
"version": "2.0.2", | |||
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", | |||
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", | |||
"dev": true, | |||
"optional": true, | |||
"peer": true | |||
}, | |||
"esutils": { | |||
"version": "2.0.3", | |||
"resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", | |||
@@ -23141,17 +22883,6 @@ | |||
"yallist": "^3.0.2" | |||
} | |||
}, | |||
"magic-string": { | |||
"version": "0.25.9", | |||
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", | |||
"integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", | |||
"dev": true, | |||
"optional": true, | |||
"peer": true, | |||
"requires": { | |||
"sourcemap-codec": "^1.4.8" | |||
} | |||
}, | |||
"make-dir": { | |||
"version": "3.1.0", | |||
"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", | |||
@@ -26083,14 +25814,6 @@ | |||
"integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", | |||
"dev": true | |||
}, | |||
"sourcemap-codec": { | |||
"version": "1.4.8", | |||
"resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", | |||
"integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", | |||
"dev": true, | |||
"optional": true, | |||
"peer": true | |||
}, | |||
"spdx-correct": { | |||
"version": "3.1.1", | |||
"resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", | |||
@@ -27598,8 +27321,7 @@ | |||
"vuewordcloud": { | |||
"version": "18.7.12", | |||
"resolved": "https://registry.npmjs.org/vuewordcloud/-/vuewordcloud-18.7.12.tgz", | |||
"integrity": "sha512-0oqqI47bGj+PxHSFrFe+8EAj1Vwb2lXj0EYFz9a1PO7CuGDCPjxdYKOPN4TlWuXYsstZX8lQTVRkCPEjE55PiA==", | |||
"requires": {} | |||
"integrity": "sha512-0oqqI47bGj+PxHSFrFe+8EAj1Vwb2lXj0EYFz9a1PO7CuGDCPjxdYKOPN4TlWuXYsstZX8lQTVRkCPEjE55PiA==" | |||
}, | |||
"watchpack": { | |||
"version": "1.7.5", | |||
@@ -16,6 +16,7 @@ | |||
"devDependencies": { | |||
"@vue/cli-plugin-babel": "~4.5.15", | |||
"@vue/cli-plugin-eslint": "~4.5.15", | |||
"@vue/cli-plugin-router": "~4.5.15", | |||
"@vue/cli-service": "~4.5.15", | |||
"babel-eslint": "^10.1.0", | |||
"eslint": "^6.7.2", | |||
@@ -1,228 +1,12 @@ | |||
<template> | |||
<div id="app"> | |||
<div class="selection-text">{{selectionText}}</div> | |||
<div class="otf" id="teilnehmen"> | |||
<!-- <h1 style="padding-top:1em">Party</h1> --> | |||
<div class="form-wrapper"> | |||
</div> | |||
<form v-if="!success" class="input-form" @submit.prevent="onClickTheButton" style="margin-top: 5vh"> | |||
<div class="input-headline">reservation</div> | |||
<input class="input-text" v-model="anzeigename" placeholder="nickname (public)" size="1" /> | |||
<input class="input-text" v-model="name" placeholder="real name" size="1" /> | |||
<input class="input-text" v-model="email" placeholder="email" size="1" /> | |||
<!-- <label class="input-cb" for="newsletter"> | |||
<input name="newsletter" id="newsletter" type="checkbox" class="input-checkbox" />stay informed | |||
</label> --> | |||
<input class="input-btn" type="submit" :value="(sending ? 'send ...' : 'reserve')" /> | |||
<div v-if="error">oh no something went wrong!</div> | |||
</form> | |||
<div v-if="showHelp" style="margin-bottom: 1em;"> | |||
*robot voice* give us your data for the reservation! | |||
</div> | |||
<div v-if="success"> | |||
<p style="font-size: 8vw"> | |||
Thanks! | |||
</p> | |||
<button @click="resetForm" class="input-btn">✓ see you there!</button> | |||
</div> | |||
<vue-word-cloud class="wordcloud" style="height: 70vh; width: 80%" :words="words" | |||
:color="() => { return nameColors[Math.floor(Math.random() * nameColors.length)] }" | |||
font-family="'JetBrains Mono'" /> | |||
</div> | |||
<!-- <div class="details" ref="details"> | |||
TEXT! | |||
</div> --> | |||
<div | |||
@click="share" | |||
style="cursor: pointer; margin-top: 5em;" | |||
> | |||
<svg | |||
style="fill: #fff" | |||
version="1.1" | |||
id="svg5225" | |||
xml:space="preserve" | |||
width="350.21805" | |||
height="180.67772" | |||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |||
xmlns="http://www.w3.org/2000/svg" | |||
xmlns:svg="http://www.w3.org/2000/svg"><defs | |||
id="defs5229" /><sodipodi:namedview | |||
id="namedview5227" | |||
pagecolor="#ffffff" | |||
bordercolor="#999999" | |||
borderopacity="1" | |||
inkscape:showpageshadow="0" | |||
inkscape:pageopacity="0" | |||
inkscape:pagecheckerboard="0" | |||
inkscape:deskcolor="#d1d1d1" /><inkscape:clipboard | |||
min="622.8099,381.05079" | |||
max="973.02795,561.72851" | |||
geom-min="622.8099,381.05079" | |||
geom-max="973.02795,561.72851" /><g | |||
id="g5231" | |||
transform="translate(-622.8099,-392.30077)"><path | |||
id="rect666" | |||
style="opacity:1;stroke-width:0;paint-order:stroke fill markers;" | |||
d="m 659.49419,392.30077 v 16.42729 h -16.29894 v 19.18185 H 622.8099 v 50.60456 h 21.94223 v 18.91764 h 17.1749 v 19.63024 h 55.25355 l -37.05351,55.91614 h 30.5701 l 37.05351,-55.91614 H 938.594 v -16.05974 h 15.9914 v -18.04835 h 18.44255 v -50.6054 h -19.99946 v -20.0503 h -16.86734 v -19.99779 z m 6.9343,23.4191 h 263.36676 v 19.99779 h 19.99946 v 41.86585 h -18.44255 v 16.05974 H 667.98538 v -19.63024 h -21.94223 v -41.86584 h 20.38534 z" /><g | |||
aria-label="WILLTEILEN" | |||
id="text1443" | |||
style="font-size:96px;line-height:1.25;letter-spacing:0px;word-spacing:0px" | |||
transform="matrix(0.42672625,0,0,0.42672625,457.42597,276.68463)"><path | |||
d="m 590.70676,451.06763 h -21.89063 l -6.5625,-29.85938 q -0.46875,-1.875 -1.5,-7.45312 -0.98437,-5.57813 -1.45312,-9.32813 -0.375,3.04688 -1.21875,7.59375 -0.84375,4.5 -1.6875,8.29688 -0.79688,3.79687 -6.79688,30.75 h -21.89062 l -16.96875,-68.53125 h 17.85937 l 7.45313,34.35937 q 2.53125,11.39063 3.46875,18.14063 0.60937,-4.78125 2.15625,-12.98438 1.59375,-8.20312 2.95312,-13.59375 l 6.04688,-25.92187 h 17.15625 l 5.85937,25.92187 q 1.5,6.23438 3.04688,14.39063 1.54687,8.15625 2.0625,12.1875 0.60937,-5.20313 3.32812,-18.04688 l 7.59375,-34.45312 h 17.85938 z" | |||
style="font-weight:bold;font-family:'Open Sans ExtraBold';-inkscape-font-specification:'Open Sans ExtraBold, Bold'" | |||
id="path4358" /><path | |||
d="m 616.44113,451.06763 v -68.53125 h 18.60938 v 68.53125 z" | |||
style="font-weight:bold;font-family:'Open Sans ExtraBold';-inkscape-font-specification:'Open Sans ExtraBold, Bold'" | |||
id="path4360" /><path | |||
d="m 649.86301,451.06763 v -68.53125 h 18.51562 v 53.57812 h 26.39063 v 14.95313 z" | |||
style="font-weight:bold;font-family:'Open Sans ExtraBold';-inkscape-font-specification:'Open Sans ExtraBold, Bold'" | |||
id="path4362" /><path | |||
d="m 705.73801,451.06763 v -68.53125 h 18.51562 v 53.57812 h 26.39063 v 14.95313 z" | |||
style="font-weight:bold;font-family:'Open Sans ExtraBold';-inkscape-font-specification:'Open Sans ExtraBold, Bold'" | |||
id="path4364" /><path | |||
d="M 791.84738,451.06763 H 773.33176 V 397.677 h -16.73438 v -15.14062 h 51.9375 V 397.677 h -16.6875 z" | |||
style="font-weight:bold;font-family:'Open Sans ExtraBold';-inkscape-font-specification:'Open Sans ExtraBold, Bold'" | |||
id="path4366" /><path | |||
d="m 859.01926,451.06763 h -40.6875 v -68.53125 h 40.6875 v 14.85937 H 836.84738 V 408.177 h 20.53125 v 14.85938 h -20.53125 v 12.9375 h 22.17188 z" | |||
style="font-weight:bold;font-family:'Open Sans ExtraBold';-inkscape-font-specification:'Open Sans ExtraBold, Bold'" | |||
id="path4368" /><path | |||
d="m 871.01926,451.06763 v -68.53125 h 18.60937 v 68.53125 z" | |||
style="font-weight:bold;font-family:'Open Sans ExtraBold';-inkscape-font-specification:'Open Sans ExtraBold, Bold'" | |||
id="path4370" /><path | |||
d="m 904.44113,451.06763 v -68.53125 h 18.51563 v 53.57812 h 26.39062 v 14.95313 z" | |||
style="font-weight:bold;font-family:'Open Sans ExtraBold';-inkscape-font-specification:'Open Sans ExtraBold, Bold'" | |||
id="path4372" /><path | |||
d="m 1001.0036,451.06763 h -40.68747 v -68.53125 h 40.68747 v 14.85937 H 978.83176 V 408.177 h 20.53125 v 14.85938 h -20.53125 v 12.9375 h 22.17184 z" | |||
style="font-weight:bold;font-family:'Open Sans ExtraBold';-inkscape-font-specification:'Open Sans ExtraBold, Bold'" | |||
id="path4374" /><path | |||
d="m 1078.2536,451.06763 h -24.2812 l -25.0313,-48.28125 h -0.4218 q 0.8906,11.39062 0.8906,17.39062 v 30.89063 h -16.4063 v -68.53125 h 24.1875 l 24.9375,47.625 h 0.2813 q -0.6563,-10.35938 -0.6563,-16.64063 v -30.98437 h 16.5 z" | |||
style="font-weight:bold;font-family:'Open Sans ExtraBold';-inkscape-font-specification:'Open Sans ExtraBold, Bold'" | |||
id="path4376" /></g></g></svg> | |||
</div> | |||
</div> | |||
<router-view/> | |||
</template> | |||
<script> | |||
import VueWordCloud from 'vuewordcloud'; | |||
export default { | |||
name: 'App', | |||
data() { | |||
return { | |||
anzeigename: '', | |||
name: '', | |||
email: '', | |||
newsletter: false, | |||
guests: [], | |||
sending: false, | |||
showHelp: false, | |||
selection: null, | |||
selectionText: null, | |||
success: false, | |||
error: false, | |||
} | |||
}, | |||
components: { | |||
[VueWordCloud.name]: VueWordCloud, | |||
}, | |||
computed: { | |||
nameColors() { | |||
return ['DeepPink', 'Crimson', 'Blue', 'BlueViolet', 'Fuchsia', 'Navy', 'Indigo'] | |||
}, | |||
words() { | |||
const names = this.guests.map(guest => { | |||
return guest.anzeigename | |||
}) | |||
const nameLengths = names.map(name => { | |||
return name.length | |||
}) | |||
const maxNameLength = Math.max(...nameLengths) | |||
return this.guests.map(guest => { | |||
const nameLength = guest.anzeigename.length | |||
let size = maxNameLength - nameLength + 12 | |||
return [` ${guest.anzeigename} `, size] | |||
}) | |||
}, | |||
// guestlist() { | |||
// return this.guests.map( (g) => { | |||
// g.name = g.anzeigename | |||
// return g | |||
// }) | |||
// } | |||
}, | |||
methods: { | |||
async fetchGuests() { | |||
const response = await fetch('/api/guest') | |||
const data = await response.json() | |||
this.guests = data | |||
}, | |||
async onClickTheButton() { | |||
if (this.name.length == 0) { | |||
this.showHelp = true | |||
return false | |||
} | |||
this.showHelp = false | |||
this.sending = true | |||
let data = { | |||
anzeigename: this.anzeigename, | |||
name: this.name, | |||
email: this.email, | |||
newsletter: false, | |||
} | |||
const response = await fetch( | |||
'/api/guest', { | |||
method: 'POST', | |||
headers: { | |||
'Content-Type': 'application/json', | |||
}, | |||
body: JSON.stringify(data), | |||
} | |||
) | |||
if (response.status === 200) { | |||
this.anzeigename = '' | |||
this.name = '' | |||
this.email = '' | |||
this.success = true | |||
this.fetchGuests() | |||
} else { | |||
this.anzeigename = '' | |||
this.name = '' | |||
this.email = '' | |||
this.success = true | |||
this.fetchGuests() | |||
// this.error = true | |||
} | |||
this.sending = false | |||
return false | |||
}, | |||
resetForm () { | |||
this.anzeigename = '' | |||
this.name = '' | |||
this.email = '' | |||
this.success = false | |||
}, | |||
async share () { | |||
location.href = "#"; | |||
location.href = "#teilnehmen"; | |||
try { | |||
await navigator.share({ url:"https://reservation.ck.si/" }) | |||
} catch (err) { | |||
console.log(`Error: ${err}`) | |||
} | |||
} | |||
}, | |||
mounted() { | |||
this.fetchGuests() | |||
document.addEventListener('selectionchange', () => { | |||
this.selection = document.getSelection() | |||
// console.log(this.selection) | |||
if (this.selection) { | |||
this.selectionText = this.selection.toString() | |||
} | |||
}); | |||
// this.$refs.details.$el | |||
}, | |||
} | |||
</script> | |||
@@ -248,22 +32,16 @@ | |||
background: #000; | |||
} | |||
body { | |||
background-color: rgb(167, 204, 247); | |||
font-family: 'JetBrains Mono', monospace; | |||
background-color: rgb(0, 0, 0); | |||
background-image: url('bg.gif'); | |||
background-size: cover; | |||
background-position: center center; | |||
background-attachment: fixed; | |||
color: #000; | |||
color: rgb(251, 251, 251); | |||
margin: 0 0 100px; | |||
} | |||
.otf { | |||
width: 100%; | |||
/* background-color: rgb(167, 204, 247); */ | |||
/* background-image: url('bg.gif'); */ | |||
background-size: cover; | |||
} | |||
#app { | |||
font-family: 'JetBrains Mono', monospace; | |||
-webkit-font-smoothing: antialiased; | |||
@@ -274,110 +52,4 @@ | |||
align-items: center; | |||
} | |||
.otf { | |||
display: flex; | |||
flex-direction: column; | |||
align-items: center; | |||
min-height: 100vh; | |||
position: relative; | |||
} | |||
.input-headline { | |||
color: rgb(255, 255, 255); | |||
font-size: 2.8vh; | |||
margin-bottom: .8vh; | |||
} | |||
.input-form { | |||
display: flex; | |||
flex-direction: column; | |||
width: 100%; | |||
max-width: 800px; | |||
mix-blend-mode: exclusion; | |||
margin-top: 4vh; | |||
z-index: 9; | |||
position: relative; | |||
} | |||
.input-text, | |||
.input-btn, | |||
.input-cb { | |||
color: #000; | |||
background: #fff; | |||
font-size: 2.8vh; | |||
font-family: 'JetBrains Mono', monospace; | |||
border: 0; | |||
padding: .5em 1em; | |||
line-height: 1.4; | |||
max-width: 100%; | |||
} | |||
.input-btn { | |||
color: #fff; | |||
background-color: #1e3a8e; | |||
border-top: 2px solid rgb(0, 0, 0); | |||
cursor: pointer; | |||
} | |||
.input-btn:hover { | |||
color: rgb(87, 87, 87); | |||
background: rgb(255, 255, 255); | |||
border-top: 2px solid rgb(207, 207, 207); | |||
} | |||
.input-checkbox { | |||
margin: 0 1em 0 0; | |||
} | |||
@media screen and (max-width: 1000px) { | |||
.form-wrapper { | |||
margin-top: 4em; | |||
} | |||
.input-text, | |||
.input-btn { | |||
width: 100%; | |||
max-width: 100%; | |||
min-width: 0; | |||
text-align: center; | |||
} | |||
/* .input-form { | |||
position: absolute; | |||
bottom: 0; | |||
display: flex; | |||
flex-direction: column; | |||
} */ | |||
} | |||
.input-text { | |||
width: auto; | |||
flex-grow: 1; | |||
} | |||
.details { | |||
color: #fff; | |||
background-color: #000; | |||
font-size: 10vw; | |||
max-width: 80em; | |||
margin: 3% 3% 200px; | |||
padding: 3%; | |||
} | |||
.selection-text { | |||
position: fixed; | |||
z-index: 9999; | |||
font-size: 10vh; | |||
line-height: 1em; | |||
pointer-events: none; | |||
color: #ec4b73; | |||
mix-blend-mode: multiply; | |||
top: 10%; | |||
} | |||
</style> |
@@ -1,8 +1,10 @@ | |||
import Vue from 'vue' | |||
import App from './App.vue' | |||
import router from './router' | |||
Vue.config.productionTip = false | |||
new Vue({ | |||
render: h => h(App), | |||
router, | |||
render: h => h(App) | |||
}).$mount('#app') |
@@ -0,0 +1,29 @@ | |||
import Vue from 'vue' | |||
import VueRouter from 'vue-router' | |||
import Home from '../views/Home.vue' | |||
Vue.use(VueRouter) | |||
const routes = [ | |||
{ | |||
path: '/', | |||
name: 'Home', | |||
component: Home | |||
}, | |||
{ | |||
path: '/cancel/:token', | |||
name: 'Cancel', | |||
// route level code-splitting | |||
// this generates a separate chunk (about.[hash].js) for this route | |||
// which is lazy-loaded when the route is visited. | |||
component: () => import(/* webpackChunkName: "about" */ '../views/Cancel.vue') | |||
} | |||
] | |||
const router = new VueRouter({ | |||
mode: 'history', | |||
base: process.env.BASE_URL, | |||
routes | |||
}) | |||
export default router |
@@ -0,0 +1,63 @@ | |||
<template> | |||
<div class="cancel"> | |||
<h1 v-if="!success">cancelling reservation {{$route.params.token}} ...</h1> | |||
<h1 v-else> | |||
Your reservation got cancelled.<br> | |||
thanks for letting us know! | |||
</h1> | |||
<div v-if="error"> | |||
<h2> | |||
Oh no! sth went wrong. | |||
</h2> | |||
<p> | |||
{{error.detail}} | |||
</p> | |||
<p> | |||
please send us an email with your reservation token <span class="color: #0ff">{{$route.params.token}}</span>, so we can have a look at it:<br> | |||
reservation@ck.si | |||
</p> | |||
</div> | |||
</div> | |||
</template> | |||
<script> | |||
export default { | |||
name: 'Cancel', | |||
data() { | |||
return { | |||
success: false, | |||
error: false, | |||
} | |||
}, | |||
methods: { | |||
async cancel() { | |||
let data = { | |||
token: this.$route.params.token | |||
} | |||
const response = await fetch( | |||
`http://localhost:1234/api/guest/cancel`, { | |||
method: 'POST', | |||
headers: { 'Content-Type': 'application/json' }, | |||
body: JSON.stringify(data), | |||
} | |||
) | |||
if (response.status === 200) { | |||
this.success = true | |||
} else { | |||
this.error = await response.json() | |||
} | |||
} | |||
}, | |||
mounted () { | |||
this.cancel() | |||
}, | |||
} | |||
</script> | |||
<style> | |||
</style> |
@@ -0,0 +1,340 @@ | |||
<template> | |||
<div id="app"> | |||
<div class="selection-text">{{selectionText}}</div> | |||
<div class="otf" id="teilnehmen"> | |||
<!-- <h1 style="padding-top:1em">Party</h1> --> | |||
<div class="form-wrapper"> | |||
</div> | |||
<form v-if="!success" class="input-form" @submit.prevent="onClickTheButton" style="margin-top: 5vh"> | |||
<div class="input-headline">reservation</div> | |||
<input class="input-text" v-model="anzeigename" placeholder="nickname (public)" size="1" /> | |||
<input class="input-text" v-model="name" placeholder="real name" size="1" /> | |||
<input class="input-text" v-model="email" placeholder="email" size="1" /> | |||
<!-- <label class="input-cb" for="newsletter"> | |||
<input name="newsletter" id="newsletter" type="checkbox" class="input-checkbox" />stay informed | |||
</label> --> | |||
<input class="input-btn" type="submit" :value="(sending ? 'send ...' : 'reserve')" /> | |||
<div v-if="error">oh no something went wrong!</div> | |||
</form> | |||
<div v-if="showHelp" style="margin-bottom: 1em;"> | |||
*robot voice* give us your data for the reservation! | |||
</div> | |||
<div v-if="success"> | |||
<p style="font-size: 8vw"> | |||
Thanks! | |||
</p> | |||
<button @click="resetForm" class="input-btn">✓ see you there!</button> | |||
</div> | |||
<vue-word-cloud class="wordcloud" style="height: 70vh; width: 80%" :words="words" | |||
:color="() => { return nameColors[Math.floor(Math.random() * nameColors.length)] }" | |||
font-family="'JetBrains Mono'" /> | |||
</div> | |||
<!-- <div class="details" ref="details"> | |||
TEXT! | |||
</div> --> | |||
<div | |||
@click="share" | |||
style="cursor: pointer; margin-top: 5em;" | |||
> | |||
<svg | |||
style="fill: #fff" | |||
version="1.1" | |||
id="svg5225" | |||
xml:space="preserve" | |||
width="350.21805" | |||
height="180.67772" | |||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | |||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | |||
xmlns="http://www.w3.org/2000/svg" | |||
xmlns:svg="http://www.w3.org/2000/svg"><defs | |||
id="defs5229" /><sodipodi:namedview | |||
id="namedview5227" | |||
pagecolor="#ffffff" | |||
bordercolor="#999999" | |||
borderopacity="1" | |||
inkscape:showpageshadow="0" | |||
inkscape:pageopacity="0" | |||
inkscape:pagecheckerboard="0" | |||
inkscape:deskcolor="#d1d1d1" /><inkscape:clipboard | |||
min="622.8099,381.05079" | |||
max="973.02795,561.72851" | |||
geom-min="622.8099,381.05079" | |||
geom-max="973.02795,561.72851" /><g | |||
id="g5231" | |||
transform="translate(-622.8099,-392.30077)"><path | |||
id="rect666" | |||
style="opacity:1;stroke-width:0;paint-order:stroke fill markers;" | |||
d="m 659.49419,392.30077 v 16.42729 h -16.29894 v 19.18185 H 622.8099 v 50.60456 h 21.94223 v 18.91764 h 17.1749 v 19.63024 h 55.25355 l -37.05351,55.91614 h 30.5701 l 37.05351,-55.91614 H 938.594 v -16.05974 h 15.9914 v -18.04835 h 18.44255 v -50.6054 h -19.99946 v -20.0503 h -16.86734 v -19.99779 z m 6.9343,23.4191 h 263.36676 v 19.99779 h 19.99946 v 41.86585 h -18.44255 v 16.05974 H 667.98538 v -19.63024 h -21.94223 v -41.86584 h 20.38534 z" /><g | |||
aria-label="WILLTEILEN" | |||
id="text1443" | |||
style="font-size:96px;line-height:1.25;letter-spacing:0px;word-spacing:0px" | |||
transform="matrix(0.42672625,0,0,0.42672625,457.42597,276.68463)"><path | |||
d="m 590.70676,451.06763 h -21.89063 l -6.5625,-29.85938 q -0.46875,-1.875 -1.5,-7.45312 -0.98437,-5.57813 -1.45312,-9.32813 -0.375,3.04688 -1.21875,7.59375 -0.84375,4.5 -1.6875,8.29688 -0.79688,3.79687 -6.79688,30.75 h -21.89062 l -16.96875,-68.53125 h 17.85937 l 7.45313,34.35937 q 2.53125,11.39063 3.46875,18.14063 0.60937,-4.78125 2.15625,-12.98438 1.59375,-8.20312 2.95312,-13.59375 l 6.04688,-25.92187 h 17.15625 l 5.85937,25.92187 q 1.5,6.23438 3.04688,14.39063 1.54687,8.15625 2.0625,12.1875 0.60937,-5.20313 3.32812,-18.04688 l 7.59375,-34.45312 h 17.85938 z" | |||
style="font-weight:bold;font-family:'Open Sans ExtraBold';-inkscape-font-specification:'Open Sans ExtraBold, Bold'" | |||
id="path4358" /><path | |||
d="m 616.44113,451.06763 v -68.53125 h 18.60938 v 68.53125 z" | |||
style="font-weight:bold;font-family:'Open Sans ExtraBold';-inkscape-font-specification:'Open Sans ExtraBold, Bold'" | |||
id="path4360" /><path | |||
d="m 649.86301,451.06763 v -68.53125 h 18.51562 v 53.57812 h 26.39063 v 14.95313 z" | |||
style="font-weight:bold;font-family:'Open Sans ExtraBold';-inkscape-font-specification:'Open Sans ExtraBold, Bold'" | |||
id="path4362" /><path | |||
d="m 705.73801,451.06763 v -68.53125 h 18.51562 v 53.57812 h 26.39063 v 14.95313 z" | |||
style="font-weight:bold;font-family:'Open Sans ExtraBold';-inkscape-font-specification:'Open Sans ExtraBold, Bold'" | |||
id="path4364" /><path | |||
d="M 791.84738,451.06763 H 773.33176 V 397.677 h -16.73438 v -15.14062 h 51.9375 V 397.677 h -16.6875 z" | |||
style="font-weight:bold;font-family:'Open Sans ExtraBold';-inkscape-font-specification:'Open Sans ExtraBold, Bold'" | |||
id="path4366" /><path | |||
d="m 859.01926,451.06763 h -40.6875 v -68.53125 h 40.6875 v 14.85937 H 836.84738 V 408.177 h 20.53125 v 14.85938 h -20.53125 v 12.9375 h 22.17188 z" | |||
style="font-weight:bold;font-family:'Open Sans ExtraBold';-inkscape-font-specification:'Open Sans ExtraBold, Bold'" | |||
id="path4368" /><path | |||
d="m 871.01926,451.06763 v -68.53125 h 18.60937 v 68.53125 z" | |||
style="font-weight:bold;font-family:'Open Sans ExtraBold';-inkscape-font-specification:'Open Sans ExtraBold, Bold'" | |||
id="path4370" /><path | |||
d="m 904.44113,451.06763 v -68.53125 h 18.51563 v 53.57812 h 26.39062 v 14.95313 z" | |||
style="font-weight:bold;font-family:'Open Sans ExtraBold';-inkscape-font-specification:'Open Sans ExtraBold, Bold'" | |||
id="path4372" /><path | |||
d="m 1001.0036,451.06763 h -40.68747 v -68.53125 h 40.68747 v 14.85937 H 978.83176 V 408.177 h 20.53125 v 14.85938 h -20.53125 v 12.9375 h 22.17184 z" | |||
style="font-weight:bold;font-family:'Open Sans ExtraBold';-inkscape-font-specification:'Open Sans ExtraBold, Bold'" | |||
id="path4374" /><path | |||
d="m 1078.2536,451.06763 h -24.2812 l -25.0313,-48.28125 h -0.4218 q 0.8906,11.39062 0.8906,17.39062 v 30.89063 h -16.4063 v -68.53125 h 24.1875 l 24.9375,47.625 h 0.2813 q -0.6563,-10.35938 -0.6563,-16.64063 v -30.98437 h 16.5 z" | |||
style="font-weight:bold;font-family:'Open Sans ExtraBold';-inkscape-font-specification:'Open Sans ExtraBold, Bold'" | |||
id="path4376" /></g></g></svg> | |||
</div> | |||
</div> | |||
</template> | |||
<script> | |||
import VueWordCloud from 'vuewordcloud'; | |||
export default { | |||
name: 'App', | |||
data() { | |||
return { | |||
anzeigename: '', | |||
name: '', | |||
email: '', | |||
newsletter: false, | |||
guests: [], | |||
sending: false, | |||
showHelp: false, | |||
selection: null, | |||
selectionText: null, | |||
success: false, | |||
error: false, | |||
} | |||
}, | |||
components: { | |||
[VueWordCloud.name]: VueWordCloud, | |||
}, | |||
computed: { | |||
nameColors() { | |||
return ['DeepPink', 'Crimson', 'Blue', 'BlueViolet', 'Fuchsia', 'Navy', 'Indigo'] | |||
}, | |||
words() { | |||
const names = this.guests.map(guest => { | |||
return guest.anzeigename | |||
}) | |||
const nameLengths = names.map(name => { | |||
return name.length | |||
}) | |||
const maxNameLength = Math.max(...nameLengths) | |||
return this.guests.map(guest => { | |||
const nameLength = guest.anzeigename.length | |||
let size = maxNameLength - nameLength + 12 | |||
return [` ${guest.anzeigename} `, size] | |||
}) | |||
}, | |||
// guestlist() { | |||
// return this.guests.map( (g) => { | |||
// g.name = g.anzeigename | |||
// return g | |||
// }) | |||
// } | |||
}, | |||
methods: { | |||
async fetchGuests() { | |||
const response = await fetch('/api/guest') | |||
const data = await response.json() | |||
this.guests = data | |||
}, | |||
async onClickTheButton() { | |||
if (this.name.length == 0) { | |||
this.showHelp = true | |||
return false | |||
} | |||
this.showHelp = false | |||
this.sending = true | |||
let data = { | |||
anzeigename: this.anzeigename, | |||
name: this.name, | |||
email: this.email, | |||
newsletter: false, | |||
} | |||
const response = await fetch( | |||
'/api/guest', { | |||
method: 'POST', | |||
headers: { | |||
'Content-Type': 'application/json', | |||
}, | |||
body: JSON.stringify(data), | |||
} | |||
) | |||
if (response.status === 200) { | |||
this.anzeigename = '' | |||
this.name = '' | |||
this.email = '' | |||
this.success = true | |||
this.fetchGuests() | |||
} else { | |||
this.anzeigename = '' | |||
this.name = '' | |||
this.email = '' | |||
this.success = true | |||
this.fetchGuests() | |||
// this.error = true | |||
} | |||
this.sending = false | |||
return false | |||
}, | |||
resetForm () { | |||
this.anzeigename = '' | |||
this.name = '' | |||
this.email = '' | |||
this.success = false | |||
}, | |||
async share () { | |||
location.href = "#"; | |||
location.href = "#teilnehmen"; | |||
try { | |||
await navigator.share({ url:"https://reservation.ck.si/" }) | |||
} catch (err) { | |||
console.log(`Error: ${err}`) | |||
} | |||
} | |||
}, | |||
mounted() { | |||
this.fetchGuests() | |||
document.addEventListener('selectionchange', () => { | |||
this.selection = document.getSelection() | |||
// console.log(this.selection) | |||
if (this.selection) { | |||
this.selectionText = this.selection.toString() | |||
} | |||
}); | |||
// this.$refs.details.$el | |||
}, | |||
} | |||
</script> | |||
<style> | |||
.otf { | |||
width: 100%; | |||
/* background-color: rgb(167, 204, 247); */ | |||
/* background-image: url('bg.gif'); */ | |||
background-size: cover; | |||
display: flex; | |||
flex-direction: column; | |||
align-items: center; | |||
min-height: 100vh; | |||
position: relative; | |||
} | |||
.input-headline { | |||
color: rgb(255, 255, 255); | |||
font-size: 2.8vh; | |||
margin-bottom: .8vh; | |||
} | |||
.input-form { | |||
display: flex; | |||
flex-direction: column; | |||
width: 100%; | |||
max-width: 800px; | |||
mix-blend-mode: exclusion; | |||
margin-top: 4vh; | |||
z-index: 9; | |||
position: relative; | |||
} | |||
.input-text, | |||
.input-btn, | |||
.input-cb { | |||
color: #000; | |||
background: #fff; | |||
font-size: 2.8vh; | |||
font-family: 'JetBrains Mono', monospace; | |||
border: 0; | |||
padding: .5em 1em; | |||
line-height: 1.4; | |||
max-width: 100%; | |||
} | |||
.input-btn { | |||
color: #fff; | |||
background-color: #1e3a8e; | |||
border-top: 2px solid rgb(0, 0, 0); | |||
cursor: pointer; | |||
} | |||
.input-btn:hover { | |||
color: rgb(87, 87, 87); | |||
background: rgb(255, 255, 255); | |||
border-top: 2px solid rgb(207, 207, 207); | |||
} | |||
.input-checkbox { | |||
margin: 0 1em 0 0; | |||
} | |||
@media screen and (max-width: 1000px) { | |||
.form-wrapper { | |||
margin-top: 4em; | |||
} | |||
.input-text, | |||
.input-btn { | |||
width: 100%; | |||
max-width: 100%; | |||
min-width: 0; | |||
text-align: center; | |||
} | |||
/* .input-form { | |||
position: absolute; | |||
bottom: 0; | |||
display: flex; | |||
flex-direction: column; | |||
} */ | |||
} | |||
.input-text { | |||
width: auto; | |||
flex-grow: 1; | |||
} | |||
.details { | |||
color: #fff; | |||
background-color: #000; | |||
font-size: 10vw; | |||
max-width: 80em; | |||
margin: 3% 3% 200px; | |||
padding: 3%; | |||
} | |||
.selection-text { | |||
position: fixed; | |||
z-index: 9999; | |||
font-size: 10vh; | |||
line-height: 1em; | |||
pointer-events: none; | |||
color: #ec4b73; | |||
mix-blend-mode: multiply; | |||
top: 10%; | |||
} | |||
</style> |