PDF from RunnerDetail

ref #62
This commit is contained in:
Philipp Dormann 2021-02-20 16:17:20 +01:00
parent ff15308c03
commit 3b18be5874
3 changed files with 36 additions and 5 deletions

View File

@ -1,5 +1,5 @@
<script> <script>
import { _ } from "svelte-i18n"; import { getLocaleFromNavigator, _ } from "svelte-i18n";
import lodashIsEqual from "lodash.isequal"; import lodashIsEqual from "lodash.isequal";
import store from "../../store"; import store from "../../store";
import { import {
@ -14,6 +14,7 @@
export let params; export let params;
const runner_promise = RunnerService.runnerControllerGetOne(params.runnerid); const runner_promise = RunnerService.runnerControllerGetOne(params.runnerid);
$: delete_triggered = false; $: delete_triggered = false;
$: original_data_pdf = {};
$: original_data = {}; $: original_data = {};
$: editable = {}; $: editable = {};
$: changes_performed = !lodashIsEqual(original_data, editable); $: changes_performed = !lodashIsEqual(original_data, editable);
@ -26,6 +27,7 @@
changes_performed && isFirstnameValid && isLastnameValid && isEmailValid; changes_performed && isFirstnameValid && isLastnameValid && isEmailValid;
runner_promise.then((data) => { runner_promise.then((data) => {
data_loaded = true; data_loaded = true;
original_data_pdf = Object.assign(original_data_pdf, data);
original_data = Object.assign(original_data, data); original_data = Object.assign(original_data, data);
original_data.group = original_data.group.id; original_data.group = original_data.group.id;
editable = Object.assign(editable, original_data); editable = Object.assign(editable, original_data);
@ -130,6 +132,35 @@
}} }}
class="w-full justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-blue-400 text-base font-medium text-white sm:w-auto sm:text-sm">{$_('cancel')}</button> class="w-full justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-blue-400 text-base font-medium text-white sm:w-auto sm:text-sm">{$_('cancel')}</button>
{/if} {/if}
<button
on:click={() => {
const locale = getLocaleFromNavigator();
fetch(
`https://dev.lauf-fuer-kaya.de/documents/contracts?locale=${locale}&download=true&key=${config.documentserver_key}`,
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify([original_data_pdf]),
}
)
.then((response) => response.blob())
.then((blob) => {
const url = window.URL.createObjectURL(blob);
let a = document.createElement('a');
a.href = url;
a.download = 'Sponsoring.pdf';
document.body.appendChild(a);
a.click();
a.remove();
})
.catch((err) => {
console.error(err);
});
}}
type="button"
class="w-full justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-gray-600 text-base font-medium text-white hover:bg-gray-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-gray-500 sm:ml-3 sm:w-auto sm:text-sm">{$_('generate-sponsoring-contract')}</button>
{#if !delete_triggered} {#if !delete_triggered}
<button <button
on:click={() => { on:click={() => {

View File

@ -239,9 +239,7 @@
.then((resp) => { .then((resp) => {
current_runners = current_runners.filter((obj) => obj.id !== runner.id); current_runners = current_runners.filter((obj) => obj.id !== runner.id);
}) })
.catch((err) => { .catch((err) => {});
// error deleting user
});
}} }}
tabindex="0" tabindex="0"
class="ml-4 text-red-600 hover:text-red-900 cursor-pointer">{$_('confirm-delete')}</button> class="ml-4 text-red-600 hover:text-red-900 cursor-pointer">{$_('confirm-delete')}</button>
@ -251,7 +249,7 @@
class="px-6 py-4 whitespace-nowrap text-right text-sm font-medium"> class="px-6 py-4 whitespace-nowrap text-right text-sm font-medium">
<a <a
href="./{runner.id}" href="./{runner.id}"
class="text-indigo-600 hover:text-indigo-900">{$_('edit')}</a> class="text-indigo-600 hover:text-indigo-900">{$_('details')}</a>
{#if store.state.jwtinfo.userdetails.permissions.includes('RUNNER:DELETE')} {#if store.state.jwtinfo.userdetails.permissions.includes('RUNNER:DELETE')}
<button <button
on:click={() => { on:click={() => {

View File

@ -85,6 +85,7 @@
"delete-user": "Delete User", "delete-user": "Delete User",
"dependency_name": "Name", "dependency_name": "Name",
"deselect-all": "deselect all", "deselect-all": "deselect all",
"details": "Details",
"distance": "Distance", "distance": "Distance",
"distance-in-km": "Distance in km", "distance-in-km": "Distance in km",
"do-you-want-to-delete-the-organization-delete_org-name": "Do you want to delete the organization {orgname}?", "do-you-want-to-delete-the-organization-delete_org-name": "Do you want to delete the organization {orgname}?",
@ -106,6 +107,7 @@
"geerbte": "inherited", "geerbte": "inherited",
"general-stats": "General Stats", "general-stats": "General Stats",
"general_promise_error": "😢 Error", "general_promise_error": "😢 Error",
"generate-sponsoring-contract": "generate sponsoring contract",
"generate-sponsoring-contracts": "generate sponsoring contracts", "generate-sponsoring-contracts": "generate sponsoring contracts",
"generic-ui-logic-error": "Something went wrong in the UI logic", "generic-ui-logic-error": "Something went wrong in the UI logic",
"go-to-login": "Go To Login", "go-to-login": "Go To Login",