Compare commits
	
		
			10 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						
						
							
						
						2a294cde04
	
				 | 
					
					
						|||
| 
						
						
							
						
						e95420d79c
	
				 | 
					
					
						|||
| 
						
						
							
						
						cffbd17dc7
	
				 | 
					
					
						|||
| 
						
						
							
						
						00de8c3d75
	
				 | 
					
					
						|||
| 
						
						
							
						
						1f4711d07a
	
				 | 
					
					
						|||
| 
						
						
							
						
						30e3396897
	
				 | 
					
					
						|||
| 
						
						
							
						
						5291e049a1
	
				 | 
					
					
						|||
| 
						
						
							
						
						08fbb504c9
	
				 | 
					
					
						|||
| 
						
						
							
						
						e9ca1d3e5d
	
				 | 
					
					
						|||
| 
						
						
							
						
						9fe53b0b9c
	
				 | 
					
					
						
							
								
								
									
										18
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								CHANGELOG.md
									
									
									
									
									
								
							@@ -2,10 +2,28 @@
 | 
			
		||||
 | 
			
		||||
All notable changes to this project will be documented in this file. Dates are displayed in UTC.
 | 
			
		||||
 | 
			
		||||
#### [0.18.2](https://git.odit.services/lfk/frontend/compare/0.18.1...0.18.2)
 | 
			
		||||
 | 
			
		||||
- Added timestamps to scanoverview [`cffbd17`](https://git.odit.services/lfk/frontend/commit/cffbd17dc77054048cc9b14891f960f9a3fd18cb)
 | 
			
		||||
- Push in releaseit [`e95420d`](https://git.odit.services/lfk/frontend/commit/e95420d79c3227c0ca0cf0c0b599970c2b7d690e)
 | 
			
		||||
 | 
			
		||||
#### [0.18.1](https://git.odit.services/lfk/frontend/compare/0.18.0...0.18.1)
 | 
			
		||||
 | 
			
		||||
> 15 April 2023
 | 
			
		||||
 | 
			
		||||
- 🚀RELEASE v0.18.1 [`00de8c3`](https://git.odit.services/lfk/frontend/commit/00de8c3d75e90cd4614f42111f5f45bedde64130)
 | 
			
		||||
- Missing scanstation translations [`30e3396`](https://git.odit.services/lfk/frontend/commit/30e33968978bf33cedb31bcbf63fac273e1664f5)
 | 
			
		||||
- fix: button onclick a11y [`9fe53b0`](https://git.odit.services/lfk/frontend/commit/9fe53b0b9c71e8a6b4aa3f317327ffe729df0834)
 | 
			
		||||
- fix(ConfirmStatsClientDeletion): ScanStationService -> StatsClientService [`5291e04`](https://git.odit.services/lfk/frontend/commit/5291e049a1d2e880fbe277095da91b70d4812c3f)
 | 
			
		||||
- fix(ConfirmScanStationDeletion): donorControllerRemove -> scanStationControllerRemove [`08fbb50`](https://git.odit.services/lfk/frontend/commit/08fbb504c958415ce75e1e426296f870f0f1358d)
 | 
			
		||||
 | 
			
		||||
#### [0.18.0](https://git.odit.services/lfk/frontend/compare/0.17.3...0.18.0)
 | 
			
		||||
 | 
			
		||||
> 12 April 2023
 | 
			
		||||
 | 
			
		||||
- Moved filter function to typed version [`#171`](https://git.odit.services/lfk/frontend/issues/171)
 | 
			
		||||
- ScansOverview: migrate to datatable [`#168`](https://git.odit.services/lfk/frontend/issues/168)
 | 
			
		||||
- 🚀RELEASE v0.18.0 [`eb80406`](https://git.odit.services/lfk/frontend/commit/eb80406fdb8abf3f76bca742095e8f1f03480a56)
 | 
			
		||||
- wip: ScansOverview -> new datatable [`c87561f`](https://git.odit.services/lfk/frontend/commit/c87561f63b90ab951daf91d9b8b54ba96a94cc7f)
 | 
			
		||||
- Basic card table replace [`5662c3b`](https://git.odit.services/lfk/frontend/commit/5662c3b6da67c00c94254bf39f8820e531fc93ef)
 | 
			
		||||
- RunnersOverview: table responsiveness [`bf1e715`](https://git.odit.services/lfk/frontend/commit/bf1e715261c0076fd8543dd1187c516209a73b16)
 | 
			
		||||
 
 | 
			
		||||
@@ -13,7 +13,7 @@
 | 
			
		||||
</head>
 | 
			
		||||
 | 
			
		||||
<body>
 | 
			
		||||
  <span style="display: none;visibility: hidden;" id="buildinfo">RELEASE_INFO-0.18.0-RELEASE_INFO</span>
 | 
			
		||||
  <span style="display: none;visibility: hidden;" id="buildinfo">RELEASE_INFO-0.18.2-RELEASE_INFO</span>
 | 
			
		||||
  <noscript>You need to enable JavaScript to run this app.</noscript>
 | 
			
		||||
  <script src="/env.js"></script>
 | 
			
		||||
  <script type="module" src="/src/main.js"></script>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
	"name": "@odit/lfk-frontend",
 | 
			
		||||
	"version": "0.18.0",
 | 
			
		||||
	"version": "0.18.2",
 | 
			
		||||
	"type": "module",
 | 
			
		||||
	"scripts": {
 | 
			
		||||
		"i18n-order": "node order.js",
 | 
			
		||||
@@ -26,7 +26,7 @@
 | 
			
		||||
			"commit": true,
 | 
			
		||||
			"requireCleanWorkingDir": false,
 | 
			
		||||
			"commitMessage": "🚀RELEASE v${version}",
 | 
			
		||||
			"push": false,
 | 
			
		||||
			"push": true,
 | 
			
		||||
			"tag": true,
 | 
			
		||||
			"tagName": null,
 | 
			
		||||
			"tagAnnotation": "v${version}"
 | 
			
		||||
 
 | 
			
		||||
@@ -119,9 +119,9 @@
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  async function copy() {
 | 
			
		||||
    if(!editable.registrationKey){
 | 
			
		||||
    if (!editable.registrationKey) {
 | 
			
		||||
      Toastify({
 | 
			
		||||
        text: $_('you-have-to-save-your-changes-to-generate-a-link'),
 | 
			
		||||
        text: $_("you-have-to-save-your-changes-to-generate-a-link"),
 | 
			
		||||
        duration: 500,
 | 
			
		||||
        backgroundColor:
 | 
			
		||||
          "linear-gradient(90deg, hsla(281, 37%, 45%, 1) 0%, hsla(1, 62%, 48%, 1) 100%)",
 | 
			
		||||
@@ -167,7 +167,8 @@
 | 
			
		||||
  passed_orgs={[]}
 | 
			
		||||
  passed_org={editable}
 | 
			
		||||
  opened_from="OrgDetail"
 | 
			
		||||
  bind:import_modal_open />
 | 
			
		||||
  bind:import_modal_open
 | 
			
		||||
/>
 | 
			
		||||
<ConfirmOrgDeletion bind:modal_open bind:delete_org />
 | 
			
		||||
{#if data_loaded}
 | 
			
		||||
  <section class="container p-5">
 | 
			
		||||
@@ -176,29 +177,35 @@
 | 
			
		||||
      <span data-id="org_actions_${editable.id}">
 | 
			
		||||
        <GenerateSponsoringContracts
 | 
			
		||||
          bind:sponsoring_contracts_show
 | 
			
		||||
          bind:generate_orgs />
 | 
			
		||||
          bind:generate_orgs
 | 
			
		||||
        />
 | 
			
		||||
        <GenerateRunnerCards bind:cards_show bind:generate_orgs />
 | 
			
		||||
        <GenerateRunnerCertificates bind:certificates_show bind:generate_orgs />
 | 
			
		||||
        {#if store.state.jwtinfo.userdetails.permissions.includes('RUNNER:IMPORT')}
 | 
			
		||||
        {#if store.state.jwtinfo.userdetails.permissions.includes("RUNNER:IMPORT")}
 | 
			
		||||
          <button
 | 
			
		||||
            on:click={() => {
 | 
			
		||||
              import_modal_open = true;
 | 
			
		||||
            }}
 | 
			
		||||
            type="button"
 | 
			
		||||
            class="w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-blue-600 text-base font-medium text-white hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 sm:ml-3 sm:w-auto sm:text-sm">
 | 
			
		||||
            {$_('import-runners')}
 | 
			
		||||
            class="w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-blue-600 text-base font-medium text-white hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 sm:ml-3 sm:w-auto sm:text-sm"
 | 
			
		||||
          >
 | 
			
		||||
            {$_("import-runners")}
 | 
			
		||||
          </button>
 | 
			
		||||
        {/if}
 | 
			
		||||
        {#if store.state.jwtinfo.userdetails.permissions.includes('RUNNER:DELETE')}
 | 
			
		||||
        {#if store.state.jwtinfo.userdetails.permissions.includes("RUNNER:DELETE")}
 | 
			
		||||
          {#if delete_triggered}
 | 
			
		||||
            <button
 | 
			
		||||
              on:click={deleteOrganization}
 | 
			
		||||
              class="w-full justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-red-600 text-base font-medium text-white hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 sm:ml-3 sm:w-auto sm:text-sm">{$_('confirm-delete')}</button>
 | 
			
		||||
              class="w-full justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-red-600 text-base font-medium text-white hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 sm:ml-3 sm:w-auto sm:text-sm"
 | 
			
		||||
              >{$_("confirm-delete")}</button
 | 
			
		||||
            >
 | 
			
		||||
            <button
 | 
			
		||||
              on:click={() => {
 | 
			
		||||
                delete_triggered = !delete_triggered;
 | 
			
		||||
              }}
 | 
			
		||||
              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 !delete_triggered}
 | 
			
		||||
            <button
 | 
			
		||||
@@ -206,7 +213,9 @@
 | 
			
		||||
                delete_triggered = true;
 | 
			
		||||
              }}
 | 
			
		||||
              type="button"
 | 
			
		||||
              class="w-full justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-red-600 text-base font-medium text-white hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 sm:ml-3 sm:w-auto sm:text-sm">{$_('delete-organization')}</button>
 | 
			
		||||
              class="w-full justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-red-600 text-base font-medium text-white hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 sm:ml-3 sm:w-auto sm:text-sm"
 | 
			
		||||
              >{$_("delete-organization")}</button
 | 
			
		||||
            >
 | 
			
		||||
          {/if}
 | 
			
		||||
        {/if}
 | 
			
		||||
        {#if !delete_triggered}
 | 
			
		||||
@@ -215,7 +224,9 @@
 | 
			
		||||
            disabled={!save_enabled}
 | 
			
		||||
            class:opacity-50={!save_enabled}
 | 
			
		||||
            type="button"
 | 
			
		||||
            class="w-full justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-blue-600 text-base font-medium text-white hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 sm:ml-3 sm:w-auto sm:text-sm">{$_('save-changes')}</button>
 | 
			
		||||
            class="w-full justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-blue-600 text-base font-medium text-white hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 sm:ml-3 sm:w-auto sm:text-sm"
 | 
			
		||||
            >{$_("save-changes")}</button
 | 
			
		||||
          >
 | 
			
		||||
        {/if}
 | 
			
		||||
      </span>
 | 
			
		||||
    </div>
 | 
			
		||||
@@ -234,12 +245,13 @@
 | 
			
		||||
                class="h-3 w-3 stroke-current"
 | 
			
		||||
                height="1em"
 | 
			
		||||
                width="1em"
 | 
			
		||||
                xmlns="http://www.w3.org/2000/svg"><path
 | 
			
		||||
                  d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z" />
 | 
			
		||||
                <polyline points="9 22 9 12 15 12 15 22" /></svg>
 | 
			
		||||
                xmlns="http://www.w3.org/2000/svg"
 | 
			
		||||
                ><path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z" />
 | 
			
		||||
                <polyline points="9 22 9 12 15 12 15 22" /></svg
 | 
			
		||||
              >
 | 
			
		||||
            </li>
 | 
			
		||||
            <li class="flex items-center">
 | 
			
		||||
              <a class="mr-2" href="/">{$_('home')}</a><svg
 | 
			
		||||
              <a class="mr-2" href="/">{$_("home")}</a><svg
 | 
			
		||||
                stroke="currentColor"
 | 
			
		||||
                fill="none"
 | 
			
		||||
                stroke-width="2"
 | 
			
		||||
@@ -249,24 +261,25 @@
 | 
			
		||||
                class="h-3 w-3 mr-2 stroke-current"
 | 
			
		||||
                height="1em"
 | 
			
		||||
                width="1em"
 | 
			
		||||
                xmlns="http://www.w3.org/2000/svg"><line
 | 
			
		||||
                  x1="5"
 | 
			
		||||
                  y1="12"
 | 
			
		||||
                  x2="19"
 | 
			
		||||
                  y2="12" />
 | 
			
		||||
                <polyline points="12 5 19 12 12 19" /></svg>
 | 
			
		||||
                xmlns="http://www.w3.org/2000/svg"
 | 
			
		||||
                ><line x1="5" y1="12" x2="19" y2="12" />
 | 
			
		||||
                <polyline points="12 5 19 12 12 19" /></svg
 | 
			
		||||
              >
 | 
			
		||||
            </li>
 | 
			
		||||
            <li class="mr-2 flex items-center">
 | 
			
		||||
              <svg
 | 
			
		||||
                xmlns="http://www.w3.org/2000/svg"
 | 
			
		||||
                viewBox="0 0 24 24"
 | 
			
		||||
                width="24"
 | 
			
		||||
                height="24"><path fill="none" d="M0 0h24v24H0z" />
 | 
			
		||||
                height="24"
 | 
			
		||||
                ><path fill="none" d="M0 0h24v24H0z" />
 | 
			
		||||
                <path
 | 
			
		||||
                  d="M21 20h2v2H1v-2h2V3a1 1 0 0 1 1-1h16a1 1 0 0 1 1 1v17zm-2 0V4H5v16h14zM8 11h3v2H8v-2zm0-4h3v2H8V7zm0 8h3v2H8v-2zm5 0h3v2h-3v-2zm0-4h3v2h-3v-2zm0-4h3v2h-3V7z" /></svg>
 | 
			
		||||
                  d="M21 20h2v2H1v-2h2V3a1 1 0 0 1 1-1h16a1 1 0 0 1 1 1v17zm-2 0V4H5v16h14zM8 11h3v2H8v-2zm0-4h3v2H8V7zm0 8h3v2H8v-2zm5 0h3v2h-3v-2zm0-4h3v2h-3v-2zm0-4h3v2h-3V7z"
 | 
			
		||||
                /></svg
 | 
			
		||||
              >
 | 
			
		||||
            </li>
 | 
			
		||||
            <li class="flex items-center">
 | 
			
		||||
              <a class="mr-2" href="./">{$_('organizations')}</a><svg
 | 
			
		||||
              <a class="mr-2" href="./">{$_("organizations")}</a><svg
 | 
			
		||||
                stroke="currentColor"
 | 
			
		||||
                fill="none"
 | 
			
		||||
                stroke-width="2"
 | 
			
		||||
@@ -276,12 +289,10 @@
 | 
			
		||||
                class="h-3 w-3 mr-2 stroke-current"
 | 
			
		||||
                height="1em"
 | 
			
		||||
                width="1em"
 | 
			
		||||
                xmlns="http://www.w3.org/2000/svg"><line
 | 
			
		||||
                  x1="5"
 | 
			
		||||
                  y1="12"
 | 
			
		||||
                  x2="19"
 | 
			
		||||
                  y2="12" />
 | 
			
		||||
                <polyline points="12 5 19 12 12 19" /></svg>
 | 
			
		||||
                xmlns="http://www.w3.org/2000/svg"
 | 
			
		||||
                ><line x1="5" y1="12" x2="19" y2="12" />
 | 
			
		||||
                <polyline points="12 5 19 12 12 19" /></svg
 | 
			
		||||
              >
 | 
			
		||||
            </li>
 | 
			
		||||
            <li class="flex items-center">
 | 
			
		||||
              <span class="mr-2">Org-Details #{params.orgid}</span>
 | 
			
		||||
@@ -291,35 +302,34 @@
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="text-sm w-full">
 | 
			
		||||
      <label for="name" class="font-medium text-gray-700">{$_('name')}</label>
 | 
			
		||||
      <label for="name" class="font-medium text-gray-700">{$_("name")}</label>
 | 
			
		||||
      <input
 | 
			
		||||
        autocomplete="off"
 | 
			
		||||
        placeholder={$_('name')}
 | 
			
		||||
        placeholder={$_("name")}
 | 
			
		||||
        type="text"
 | 
			
		||||
        bind:value={editable.name}
 | 
			
		||||
        name="name"
 | 
			
		||||
        class="mt-1 focus:ring-indigo-500 focus:border-indigo-500 block w-full shadow-sm rounded-l-md sm:text-sm border-gray-300 border bg-gray-50 text-gray-500 rounded-md p-2" />
 | 
			
		||||
        class="mt-1 focus:ring-indigo-500 focus:border-indigo-500 block w-full shadow-sm rounded-l-md sm:text-sm border-gray-300 border bg-gray-50 text-gray-500 rounded-md p-2"
 | 
			
		||||
      />
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="text-sm w-full">
 | 
			
		||||
      <label
 | 
			
		||||
        for="contact"
 | 
			
		||||
        class="font-medium text-gray-700">{$_('contact')}</label>
 | 
			
		||||
      <label for="contact" class="font-medium text-gray-700"
 | 
			
		||||
        >{$_("contact")}</label
 | 
			
		||||
      >
 | 
			
		||||
      <Select
 | 
			
		||||
        containerClasses="rounded-l-md mt-1 focus:ring-indigo-500 focus:border-indigo-500 block w-full shadow-sm rounded-l-md sm:text-sm border-gray-300 border bg-gray-50 text-gray-500 rounded-md p-2"
 | 
			
		||||
        itemFilter={(label, filterText, option) => label
 | 
			
		||||
            .toLowerCase()
 | 
			
		||||
            .includes(
 | 
			
		||||
              filterText.toLowerCase()
 | 
			
		||||
            ) || option.value.id
 | 
			
		||||
            .toString()
 | 
			
		||||
            .startsWith(filterText.toLowerCase())}
 | 
			
		||||
        itemFilter={(label, filterText, option) =>
 | 
			
		||||
          label.toLowerCase().includes(filterText.toLowerCase()) ||
 | 
			
		||||
          option.value.id.toString().startsWith(filterText.toLowerCase())}
 | 
			
		||||
        items={contacts}
 | 
			
		||||
        showChevron={true}
 | 
			
		||||
        placeholder={$_('no-contact-selected')}
 | 
			
		||||
        noOptionsMessage={$_('no-contact-found')}
 | 
			
		||||
        placeholder={$_("no-contact-selected")}
 | 
			
		||||
        noOptionsMessage={$_("no-contact-found")}
 | 
			
		||||
        bind:selectedValue={contact}
 | 
			
		||||
        on:select={(selectedValue) => (editable.contact = selectedValue.detail.value)}
 | 
			
		||||
        on:clear={() => (editable.contact = null)} />
 | 
			
		||||
        on:select={(selectedValue) =>
 | 
			
		||||
          (editable.contact = selectedValue.detail.value)}
 | 
			
		||||
        on:clear={() => (editable.contact = null)}
 | 
			
		||||
      />
 | 
			
		||||
    </div>
 | 
			
		||||
    <div>
 | 
			
		||||
      <div class="flex items-start mt-2">
 | 
			
		||||
@@ -329,43 +339,51 @@
 | 
			
		||||
            id="toggle_selfservice_feature"
 | 
			
		||||
            name="toggle_selfservice_feature"
 | 
			
		||||
            type="checkbox"
 | 
			
		||||
            class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300 rounded" />
 | 
			
		||||
            class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300 rounded"
 | 
			
		||||
          />
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="ml-3 text-sm">
 | 
			
		||||
          <label
 | 
			
		||||
            for="toggle_selfservice_feature"
 | 
			
		||||
            class="font-medium text-gray-700">{$_('selfservice-registration')}</label>
 | 
			
		||||
            class="font-medium text-gray-700"
 | 
			
		||||
            >{$_("selfservice-registration")}</label
 | 
			
		||||
          >
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div>
 | 
			
		||||
        {#if editable.registrationEnabled}
 | 
			
		||||
          <div class="text-sm w-full">
 | 
			
		||||
            <div on:click={copy} class="inline-flex w-full">
 | 
			
		||||
            <button on:click={copy} class="inline-flex w-full">
 | 
			
		||||
              <p
 | 
			
		||||
                name="token"
 | 
			
		||||
                class="mt-1 focus:ring-indigo-500 focus:border-indigo-500 block w-full shadow-sm rounded-l-md sm:text-sm border-gray-300 border bg-gray-50 text-gray-500 p-2">
 | 
			
		||||
                class="mt-1 focus:ring-indigo-500 focus:border-indigo-500 block w-full shadow-sm rounded-l-md sm:text-sm border-gray-300 border bg-gray-50 text-gray-500 p-2"
 | 
			
		||||
              >
 | 
			
		||||
                {#if editable.registrationKey}
 | 
			
		||||
                {registrationLink}
 | 
			
		||||
                  {registrationLink}
 | 
			
		||||
                {:else}
 | 
			
		||||
                {$_('you-have-to-save-your-changes-to-generate-a-link')}
 | 
			
		||||
                  {$_("you-have-to-save-your-changes-to-generate-a-link")}
 | 
			
		||||
                {/if}
 | 
			
		||||
              </p>
 | 
			
		||||
              <div
 | 
			
		||||
                class="bg-gray-200 border-gray-300 border-t border-b border-r text-black rounded-r-md sm:text-sm p-2 mt-1 cursor-pointer">
 | 
			
		||||
                class="bg-gray-200 border-gray-300 border-t border-b border-r text-black rounded-r-md sm:text-sm p-2 mt-1 cursor-pointer"
 | 
			
		||||
              >
 | 
			
		||||
                <svg
 | 
			
		||||
                  xmlns="http://www.w3.org/2000/svg"
 | 
			
		||||
                  viewBox="0 0 24 24"
 | 
			
		||||
                  width="24"
 | 
			
		||||
                  height="24"><path fill="none" d="M0 0h24v24H0z" />
 | 
			
		||||
                  height="24"
 | 
			
		||||
                  ><path fill="none" d="M0 0h24v24H0z" />
 | 
			
		||||
                  <path
 | 
			
		||||
                    fill="currentColor"
 | 
			
		||||
                    d="M7 4V2h10v2h3l1 1v16a1 1 0 01-1 1H4a1 1 0 01-1-1V5l1-1h3zm0 2H5v14h14V6h-2v2H7V6zm2-2v2h6V4H9z" /></svg>
 | 
			
		||||
                    d="M7 4V2h10v2h3l1 1v16a1 1 0 01-1 1H4a1 1 0 01-1-1V5l1-1h3zm0 2H5v14h14V6h-2v2H7V6zm2-2v2h6V4H9z"
 | 
			
		||||
                  /></svg
 | 
			
		||||
                >
 | 
			
		||||
              </div>
 | 
			
		||||
            </div>
 | 
			
		||||
            </button>
 | 
			
		||||
            {#if editable.registrationKey}
 | 
			
		||||
            <p class="text-gray-500 text-xs">
 | 
			
		||||
              {$_('click-to-copy-the-link-into-your-clipboard')}
 | 
			
		||||
            </p>
 | 
			
		||||
              <p class="text-gray-500 text-xs">
 | 
			
		||||
                {$_("click-to-copy-the-link-into-your-clipboard")}
 | 
			
		||||
              </p>
 | 
			
		||||
            {/if}
 | 
			
		||||
          </div>
 | 
			
		||||
        {/if}
 | 
			
		||||
@@ -378,12 +396,14 @@
 | 
			
		||||
                id="toggle_address_checkbox"
 | 
			
		||||
                name="toggle_address_checkbox"
 | 
			
		||||
                type="checkbox"
 | 
			
		||||
                class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300 rounded" />
 | 
			
		||||
                class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300 rounded"
 | 
			
		||||
              />
 | 
			
		||||
            </div>
 | 
			
		||||
            <div class="ml-3 text-sm">
 | 
			
		||||
              <label
 | 
			
		||||
                for="toggle_address_checkbox"
 | 
			
		||||
                class="font-medium text-gray-700">{$_('address')}</label>
 | 
			
		||||
                class="font-medium text-gray-700">{$_("address")}</label
 | 
			
		||||
              >
 | 
			
		||||
            </div>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
@@ -391,7 +411,9 @@
 | 
			
		||||
          <div class="col-span-6">
 | 
			
		||||
            <label
 | 
			
		||||
              for="address1"
 | 
			
		||||
              class="block text-sm font-medium text-gray-700">{$_('address')}</label>
 | 
			
		||||
              class="block text-sm font-medium text-gray-700"
 | 
			
		||||
              >{$_("address")}</label
 | 
			
		||||
            >
 | 
			
		||||
            <input
 | 
			
		||||
              autocomplete="off"
 | 
			
		||||
              placeholder="Address"
 | 
			
		||||
@@ -401,65 +423,74 @@
 | 
			
		||||
              bind:value={editable.address.address1}
 | 
			
		||||
              type="text"
 | 
			
		||||
              name="address1"
 | 
			
		||||
              class="mt-1 focus:ring-indigo-500 focus:border-indigo-500 block w-full shadow-sm rounded-l-md sm:text-sm border-gray-300 border bg-gray-50 text-gray-500 rounded-md p-2" />
 | 
			
		||||
              class="mt-1 focus:ring-indigo-500 focus:border-indigo-500 block w-full shadow-sm rounded-l-md sm:text-sm border-gray-300 border bg-gray-50 text-gray-500 rounded-md p-2"
 | 
			
		||||
            />
 | 
			
		||||
            {#if !isAddress1Valid}
 | 
			
		||||
              <span
 | 
			
		||||
                class="flex items-center font-medium tracking-wide text-red-500 text-xs mt-1 ml-1">
 | 
			
		||||
                {$_('address-is-required')}
 | 
			
		||||
                class="flex items-center font-medium tracking-wide text-red-500 text-xs mt-1 ml-1"
 | 
			
		||||
              >
 | 
			
		||||
                {$_("address-is-required")}
 | 
			
		||||
              </span>
 | 
			
		||||
            {/if}
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="col-span-6">
 | 
			
		||||
            <label
 | 
			
		||||
              for="address2"
 | 
			
		||||
              class="block text-sm font-medium text-gray-700">{$_('apartment-suite-etc')}</label>
 | 
			
		||||
              class="block text-sm font-medium text-gray-700"
 | 
			
		||||
              >{$_("apartment-suite-etc")}</label
 | 
			
		||||
            >
 | 
			
		||||
            <input
 | 
			
		||||
              autocomplete="off"
 | 
			
		||||
              placeholder={$_('apartment-suite-etc')}
 | 
			
		||||
              placeholder={$_("apartment-suite-etc")}
 | 
			
		||||
              bind:value={editable.address.address2}
 | 
			
		||||
              type="text"
 | 
			
		||||
              name="address2"
 | 
			
		||||
              class="mt-1 focus:ring-indigo-500 focus:border-indigo-500 block w-full shadow-sm rounded-l-md sm:text-sm border-gray-300 border bg-gray-50 text-gray-500 rounded-md p-2" />
 | 
			
		||||
              class="mt-1 focus:ring-indigo-500 focus:border-indigo-500 block w-full shadow-sm rounded-l-md sm:text-sm border-gray-300 border bg-gray-50 text-gray-500 rounded-md p-2"
 | 
			
		||||
            />
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="col-span-6">
 | 
			
		||||
            <label
 | 
			
		||||
              for="zipcode"
 | 
			
		||||
              class="block text-sm font-medium text-gray-700">{$_('zip-postal-code')}</label>
 | 
			
		||||
            <label for="zipcode" class="block text-sm font-medium text-gray-700"
 | 
			
		||||
              >{$_("zip-postal-code")}</label
 | 
			
		||||
            >
 | 
			
		||||
            <input
 | 
			
		||||
              autocomplete="off"
 | 
			
		||||
              placeholder={$_('zip-postal-code')}
 | 
			
		||||
              placeholder={$_("zip-postal-code")}
 | 
			
		||||
              class:border-red-500={!iszipcodevalid}
 | 
			
		||||
              class:focus:border-red-500={!iszipcodevalid}
 | 
			
		||||
              class:focus:ring-red-500={!iszipcodevalid}
 | 
			
		||||
              bind:value={editable.address.postalcode}
 | 
			
		||||
              type="text"
 | 
			
		||||
              name="zipcode"
 | 
			
		||||
              class="mt-1 focus:ring-indigo-500 focus:border-indigo-500 block w-full shadow-sm rounded-l-md sm:text-sm border-gray-300 border bg-gray-50 text-gray-500 rounded-md p-2" />
 | 
			
		||||
              class="mt-1 focus:ring-indigo-500 focus:border-indigo-500 block w-full shadow-sm rounded-l-md sm:text-sm border-gray-300 border bg-gray-50 text-gray-500 rounded-md p-2"
 | 
			
		||||
            />
 | 
			
		||||
            {#if !iszipcodevalid}
 | 
			
		||||
              <span
 | 
			
		||||
                class="flex items-center font-medium tracking-wide text-red-500 text-xs mt-1 ml-1">
 | 
			
		||||
                {$_('valid-zipcode-postal-code-is-required')}
 | 
			
		||||
                class="flex items-center font-medium tracking-wide text-red-500 text-xs mt-1 ml-1"
 | 
			
		||||
              >
 | 
			
		||||
                {$_("valid-zipcode-postal-code-is-required")}
 | 
			
		||||
              </span>
 | 
			
		||||
            {/if}
 | 
			
		||||
          </div>
 | 
			
		||||
          <div class="col-span-6">
 | 
			
		||||
            <label
 | 
			
		||||
              for="city"
 | 
			
		||||
              class="block text-sm font-medium text-gray-700">{$_('city')}</label>
 | 
			
		||||
            <label for="city" class="block text-sm font-medium text-gray-700"
 | 
			
		||||
              >{$_("city")}</label
 | 
			
		||||
            >
 | 
			
		||||
            <input
 | 
			
		||||
              autocomplete="off"
 | 
			
		||||
              placeholder={$_('city')}
 | 
			
		||||
              placeholder={$_("city")}
 | 
			
		||||
              class:border-red-500={!iscityvalid}
 | 
			
		||||
              class:focus:border-red-500={!iscityvalid}
 | 
			
		||||
              class:focus:ring-red-500={!iscityvalid}
 | 
			
		||||
              bind:value={editable.address.city}
 | 
			
		||||
              type="text"
 | 
			
		||||
              name="city"
 | 
			
		||||
              class="mt-1 focus:ring-indigo-500 focus:border-indigo-500 block w-full shadow-sm rounded-l-md sm:text-sm border-gray-300 border bg-gray-50 text-gray-500 rounded-md p-2" />
 | 
			
		||||
              class="mt-1 focus:ring-indigo-500 focus:border-indigo-500 block w-full shadow-sm rounded-l-md sm:text-sm border-gray-300 border bg-gray-50 text-gray-500 rounded-md p-2"
 | 
			
		||||
            />
 | 
			
		||||
            {#if !iscityvalid}
 | 
			
		||||
              <span
 | 
			
		||||
                class="flex items-center font-medium tracking-wide text-red-500 text-xs mt-1 ml-1">
 | 
			
		||||
                {$_('valid-city-is-required')}
 | 
			
		||||
                class="flex items-center font-medium tracking-wide text-red-500 text-xs mt-1 ml-1"
 | 
			
		||||
              >
 | 
			
		||||
                {$_("valid-city-is-required")}
 | 
			
		||||
              </span>
 | 
			
		||||
            {/if}
 | 
			
		||||
          </div>
 | 
			
		||||
@@ -469,7 +500,7 @@
 | 
			
		||||
  </section>
 | 
			
		||||
{:else}
 | 
			
		||||
  {#await promise}
 | 
			
		||||
    {$_('organization-detail-is-being-loaded')}
 | 
			
		||||
    {$_("organization-detail-is-being-loaded")}
 | 
			
		||||
  {:catch error}
 | 
			
		||||
    <PromiseError />
 | 
			
		||||
  {/await}
 | 
			
		||||
 
 | 
			
		||||
@@ -95,6 +95,14 @@
 | 
			
		||||
      },
 | 
			
		||||
      enableColumnFilter: false,
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      accessorKey: "timestamp",
 | 
			
		||||
      header: () => $_("timestamp"),
 | 
			
		||||
      cell: (info) => {
 | 
			
		||||
        return (new Date(parseInt(info.getValue())*1000)).toLocaleString()
 | 
			
		||||
      },
 | 
			
		||||
      enableColumnFilter: false,
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      accessorKey: "distance",
 | 
			
		||||
      header: () => $_("distance"),
 | 
			
		||||
 
 | 
			
		||||
@@ -13,7 +13,7 @@
 | 
			
		||||
    dispatch("cancelDelete", { id: delete_station.id });
 | 
			
		||||
  }
 | 
			
		||||
  function deleteStation() {
 | 
			
		||||
    ScanStationService.donorControllerRemove(
 | 
			
		||||
    ScanStationService.scanStationControllerRemove(
 | 
			
		||||
      delete_station.id,
 | 
			
		||||
      true
 | 
			
		||||
    )
 | 
			
		||||
 
 | 
			
		||||
@@ -46,70 +46,87 @@
 | 
			
		||||
  {#if valueCopy != null}
 | 
			
		||||
    <textarea bind:this={areaDom}>{valueCopy}</textarea>
 | 
			
		||||
  {/if}
 | 
			
		||||
  <div class="fixed z-10 inset-0 overflow-y-auto" >
 | 
			
		||||
  <div class="fixed z-10 inset-0 overflow-y-auto">
 | 
			
		||||
    <div
 | 
			
		||||
      class="flex items-end justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0">
 | 
			
		||||
      class="flex items-end justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0"
 | 
			
		||||
    >
 | 
			
		||||
      <div class="fixed inset-0 transition-opacity" aria-hidden="true">
 | 
			
		||||
        <div
 | 
			
		||||
          class="absolute inset-0 bg-gray-500 opacity-75"
 | 
			
		||||
          data-id="modal_backdrop" />
 | 
			
		||||
          data-id="modal_backdrop"
 | 
			
		||||
        />
 | 
			
		||||
      </div>
 | 
			
		||||
      <span
 | 
			
		||||
        class="hidden sm:inline-block sm:align-middle sm:h-screen"
 | 
			
		||||
        aria-hidden="true">​</span>
 | 
			
		||||
        aria-hidden="true">​</span
 | 
			
		||||
      >
 | 
			
		||||
      <div
 | 
			
		||||
        class="inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full"
 | 
			
		||||
        role="dialog"
 | 
			
		||||
        aria-modal="true"
 | 
			
		||||
        aria-labelledby="modal-headline">
 | 
			
		||||
        aria-labelledby="modal-headline"
 | 
			
		||||
      >
 | 
			
		||||
        <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4">
 | 
			
		||||
          <div class="sm:flex sm:items-start">
 | 
			
		||||
            <div
 | 
			
		||||
              class="mx-auto flex-shrink-0 flex items-center justify-center h-12 w-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10">
 | 
			
		||||
              class="mx-auto flex-shrink-0 flex items-center justify-center h-12 w-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10"
 | 
			
		||||
            >
 | 
			
		||||
              <svg
 | 
			
		||||
                class="h-6 w-6 text-blue-600"
 | 
			
		||||
                fill="currentColor"
 | 
			
		||||
                xmlns="http://www.w3.org/2000/svg"
 | 
			
		||||
                viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z" />
 | 
			
		||||
                viewBox="0 0 24 24"
 | 
			
		||||
                ><path fill="none" d="M0 0h24v24H0z" />
 | 
			
		||||
                <path
 | 
			
		||||
                  d="M4 5v11h16V5H4zM2 4a1 1 0 011-1h18a1 1 0 011 1v14H2V4zM1 19h22v2H1v-2z" /></svg>
 | 
			
		||||
                  d="M4 5v11h16V5H4zM2 4a1 1 0 011-1h18a1 1 0 011 1v14H2V4zM1 19h22v2H1v-2z"
 | 
			
		||||
                /></svg
 | 
			
		||||
              >
 | 
			
		||||
            </div>
 | 
			
		||||
            <div class="mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left">
 | 
			
		||||
              <h3 class="text-lg leading-6 font-medium text-gray-900">
 | 
			
		||||
                {$_('token')}
 | 
			
		||||
                {$_("token")}
 | 
			
		||||
              </h3>
 | 
			
		||||
              <div class="mt-2 mb-6">
 | 
			
		||||
                <p class="text-sm text-gray-500">
 | 
			
		||||
                  {$_('the-scanstations-api-token-will-only-get-displayed-once-you-wont-be-able-to-change-or-view-it-again')}
 | 
			
		||||
                  {$_(
 | 
			
		||||
                    "the-scanstations-api-token-will-only-get-displayed-once-you-wont-be-able-to-change-or-view-it-again"
 | 
			
		||||
                  )}
 | 
			
		||||
                  <br />
 | 
			
		||||
                  {$_('please-copy-the-token-and-store-it-somewhere-save')}
 | 
			
		||||
                  {$_("please-copy-the-token-and-store-it-somewhere-save")}
 | 
			
		||||
                </p>
 | 
			
		||||
              </div>
 | 
			
		||||
              <div class="mt-2 mb-6">
 | 
			
		||||
                <label
 | 
			
		||||
                  for="token"
 | 
			
		||||
                  class="block text-sm font-medium text-gray-700">{$_('token')}</label>
 | 
			
		||||
                <div on:click={copy} class="inline-flex">
 | 
			
		||||
                  class="block text-sm font-medium text-gray-700"
 | 
			
		||||
                  >{$_("token")}</label
 | 
			
		||||
                >
 | 
			
		||||
                <button on:click={copy} class="inline-flex">
 | 
			
		||||
                  <p
 | 
			
		||||
                    name="token"
 | 
			
		||||
                    class:bg-green-200={copied}
 | 
			
		||||
                    class="mt-1 focus:ring-indigo-500 focus:border-indigo-500 block w-full shadow-sm rounded-l-md sm:text-sm border-gray-300 border bg-gray-50 text-gray-500 p-2">
 | 
			
		||||
                    class="mt-1 focus:ring-indigo-500 focus:border-indigo-500 block w-full shadow-sm rounded-l-md sm:text-sm border-gray-300 border bg-gray-50 text-gray-500 p-2"
 | 
			
		||||
                  >
 | 
			
		||||
                    {new_station.key}
 | 
			
		||||
                  </p>
 | 
			
		||||
                  <div
 | 
			
		||||
                    class="bg-gray-200 border-gray-300 border-t border-b border-r text-black rounded-r-md sm:text-sm p-2 mt-1 cursor-pointer">
 | 
			
		||||
                    class="bg-gray-200 border-gray-300 border-t border-b border-r text-black rounded-r-md sm:text-sm p-2 mt-1 cursor-pointer"
 | 
			
		||||
                  >
 | 
			
		||||
                    <svg
 | 
			
		||||
                      xmlns="http://www.w3.org/2000/svg"
 | 
			
		||||
                      viewBox="0 0 24 24"
 | 
			
		||||
                      width="24"
 | 
			
		||||
                      height="24"><path fill="none" d="M0 0h24v24H0z" />
 | 
			
		||||
                      height="24"
 | 
			
		||||
                      ><path fill="none" d="M0 0h24v24H0z" />
 | 
			
		||||
                      <path
 | 
			
		||||
                        fill="currentColor"
 | 
			
		||||
                        d="M7 4V2h10v2h3l1 1v16a1 1 0 01-1 1H4a1 1 0 01-1-1V5l1-1h3zm0 2H5v14h14V6h-2v2H7V6zm2-2v2h6V4H9z" /></svg>
 | 
			
		||||
                        d="M7 4V2h10v2h3l1 1v16a1 1 0 01-1 1H4a1 1 0 01-1-1V5l1-1h3zm0 2H5v14h14V6h-2v2H7V6zm2-2v2h6V4H9z"
 | 
			
		||||
                      /></svg
 | 
			
		||||
                    >
 | 
			
		||||
                  </div>
 | 
			
		||||
                </div>
 | 
			
		||||
                </button>
 | 
			
		||||
                <p class="text-gray-500 text-xs">
 | 
			
		||||
                  {$_('click-to-copy-token-to-clipboard')}
 | 
			
		||||
                  {$_("click-to-copy-token-to-clipboard")}
 | 
			
		||||
                </p>
 | 
			
		||||
              </div>
 | 
			
		||||
            </div>
 | 
			
		||||
@@ -119,8 +136,9 @@
 | 
			
		||||
          <button
 | 
			
		||||
            on:click={close}
 | 
			
		||||
            type="button"
 | 
			
		||||
            class="w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-blue-600 text-base font-medium text-white hover:bg-green-500 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 sm:ml-3 sm:w-auto sm:text-sm">
 | 
			
		||||
            {$_('yes-i-copied-the-token')}
 | 
			
		||||
            class="w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-blue-600 text-base font-medium text-white hover:bg-green-500 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 sm:ml-3 sm:w-auto sm:text-sm"
 | 
			
		||||
          >
 | 
			
		||||
            {$_("yes-i-copied-the-token")}
 | 
			
		||||
          </button>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,7 @@
 | 
			
		||||
<script>
 | 
			
		||||
  import { _ } from "svelte-i18n";
 | 
			
		||||
  import { clickOutside } from "../base/outsideclick";
 | 
			
		||||
  
 | 
			
		||||
  import { ScanStationService } from "@odit/lfk-client-js";
 | 
			
		||||
  import { StatsClientService } from "@odit/lfk-client-js";
 | 
			
		||||
  import Toastify from "toastify-js";
 | 
			
		||||
  import { createEventDispatcher } from "svelte";
 | 
			
		||||
  export let modal_open;
 | 
			
		||||
@@ -13,10 +12,7 @@
 | 
			
		||||
    dispatch("cancelDelete", { id: delete_station.id });
 | 
			
		||||
  }
 | 
			
		||||
  function deleteClient() {
 | 
			
		||||
    ScanStationService.donorControllerRemove(
 | 
			
		||||
      delete_station.id,
 | 
			
		||||
      true
 | 
			
		||||
    )
 | 
			
		||||
    StatsClientService.statsClientControllerRemove(delete_station.id, true)
 | 
			
		||||
      .then((resp) => {
 | 
			
		||||
        Toastify({
 | 
			
		||||
          text: $_('statsclient-deleted'),
 | 
			
		||||
 
 | 
			
		||||
@@ -46,70 +46,87 @@
 | 
			
		||||
  {#if valueCopy != null}
 | 
			
		||||
    <textarea bind:this={areaDom}>{valueCopy}</textarea>
 | 
			
		||||
  {/if}
 | 
			
		||||
  <div class="fixed z-10 inset-0 overflow-y-auto" >
 | 
			
		||||
  <div class="fixed z-10 inset-0 overflow-y-auto">
 | 
			
		||||
    <div
 | 
			
		||||
      class="flex items-end justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0">
 | 
			
		||||
      class="flex items-end justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0"
 | 
			
		||||
    >
 | 
			
		||||
      <div class="fixed inset-0 transition-opacity" aria-hidden="true">
 | 
			
		||||
        <div
 | 
			
		||||
          class="absolute inset-0 bg-gray-500 opacity-75"
 | 
			
		||||
          data-id="modal_backdrop" />
 | 
			
		||||
          data-id="modal_backdrop"
 | 
			
		||||
        />
 | 
			
		||||
      </div>
 | 
			
		||||
      <span
 | 
			
		||||
        class="hidden sm:inline-block sm:align-middle sm:h-screen"
 | 
			
		||||
        aria-hidden="true">​</span>
 | 
			
		||||
        aria-hidden="true">​</span
 | 
			
		||||
      >
 | 
			
		||||
      <div
 | 
			
		||||
        class="inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full"
 | 
			
		||||
        role="dialog"
 | 
			
		||||
        aria-modal="true"
 | 
			
		||||
        aria-labelledby="modal-headline">
 | 
			
		||||
        aria-labelledby="modal-headline"
 | 
			
		||||
      >
 | 
			
		||||
        <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4">
 | 
			
		||||
          <div class="sm:flex sm:items-start">
 | 
			
		||||
            <div
 | 
			
		||||
              class="mx-auto flex-shrink-0 flex items-center justify-center h-12 w-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10">
 | 
			
		||||
              class="mx-auto flex-shrink-0 flex items-center justify-center h-12 w-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10"
 | 
			
		||||
            >
 | 
			
		||||
              <svg
 | 
			
		||||
                class="h-6 w-6 text-blue-600"
 | 
			
		||||
                fill="currentColor"
 | 
			
		||||
                xmlns="http://www.w3.org/2000/svg"
 | 
			
		||||
                viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z" />
 | 
			
		||||
                viewBox="0 0 24 24"
 | 
			
		||||
                ><path fill="none" d="M0 0h24v24H0z" />
 | 
			
		||||
                <path
 | 
			
		||||
                  d="M4 5v11h16V5H4zM2 4a1 1 0 011-1h18a1 1 0 011 1v14H2V4zM1 19h22v2H1v-2z" /></svg>
 | 
			
		||||
                  d="M4 5v11h16V5H4zM2 4a1 1 0 011-1h18a1 1 0 011 1v14H2V4zM1 19h22v2H1v-2z"
 | 
			
		||||
                /></svg
 | 
			
		||||
              >
 | 
			
		||||
            </div>
 | 
			
		||||
            <div class="mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left">
 | 
			
		||||
              <h3 class="text-lg leading-6 font-medium text-gray-900">
 | 
			
		||||
                {$_('token')}
 | 
			
		||||
                {$_("token")}
 | 
			
		||||
              </h3>
 | 
			
		||||
              <div class="mt-2 mb-6">
 | 
			
		||||
                <p class="text-sm text-gray-500">
 | 
			
		||||
                  {$_('the-statsclient-api-token-will-only-get-displayed-once-you-wont-be-able-to-change-or-view-it-again')}
 | 
			
		||||
                  {$_(
 | 
			
		||||
                    "the-statsclient-api-token-will-only-get-displayed-once-you-wont-be-able-to-change-or-view-it-again"
 | 
			
		||||
                  )}
 | 
			
		||||
                  <br />
 | 
			
		||||
                  {$_('please-copy-the-token-and-store-it-somewhere-save')}
 | 
			
		||||
                  {$_("please-copy-the-token-and-store-it-somewhere-save")}
 | 
			
		||||
                </p>
 | 
			
		||||
              </div>
 | 
			
		||||
              <div class="mt-2 mb-6">
 | 
			
		||||
                <label
 | 
			
		||||
                  for="token"
 | 
			
		||||
                  class="block text-sm font-medium text-gray-700">{$_('token')}</label>
 | 
			
		||||
                <div on:click={copy} class="inline-flex">
 | 
			
		||||
                  class="block text-sm font-medium text-gray-700"
 | 
			
		||||
                  >{$_("token")}</label
 | 
			
		||||
                >
 | 
			
		||||
                <button on:click={copy} class="inline-flex">
 | 
			
		||||
                  <p
 | 
			
		||||
                    name="token"
 | 
			
		||||
                    class:bg-green-200={copied}
 | 
			
		||||
                    class="mt-1 focus:ring-indigo-500 focus:border-indigo-500 block w-full shadow-sm rounded-l-md sm:text-sm border-gray-300 border bg-gray-50 text-gray-500 p-2">
 | 
			
		||||
                    class="mt-1 focus:ring-indigo-500 focus:border-indigo-500 block w-full shadow-sm rounded-l-md sm:text-sm border-gray-300 border bg-gray-50 text-gray-500 p-2"
 | 
			
		||||
                  >
 | 
			
		||||
                    {new_client.key}
 | 
			
		||||
                  </p>
 | 
			
		||||
                  <div
 | 
			
		||||
                    class="bg-gray-200 border-gray-300 border-t border-b border-r text-black rounded-r-md sm:text-sm p-2 mt-1 cursor-pointer">
 | 
			
		||||
                    class="bg-gray-200 border-gray-300 border-t border-b border-r text-black rounded-r-md sm:text-sm p-2 mt-1 cursor-pointer"
 | 
			
		||||
                  >
 | 
			
		||||
                    <svg
 | 
			
		||||
                      xmlns="http://www.w3.org/2000/svg"
 | 
			
		||||
                      viewBox="0 0 24 24"
 | 
			
		||||
                      width="24"
 | 
			
		||||
                      height="24"><path fill="none" d="M0 0h24v24H0z" />
 | 
			
		||||
                      height="24"
 | 
			
		||||
                      ><path fill="none" d="M0 0h24v24H0z" />
 | 
			
		||||
                      <path
 | 
			
		||||
                        fill="currentColor"
 | 
			
		||||
                        d="M7 4V2h10v2h3l1 1v16a1 1 0 01-1 1H4a1 1 0 01-1-1V5l1-1h3zm0 2H5v14h14V6h-2v2H7V6zm2-2v2h6V4H9z" /></svg>
 | 
			
		||||
                        d="M7 4V2h10v2h3l1 1v16a1 1 0 01-1 1H4a1 1 0 01-1-1V5l1-1h3zm0 2H5v14h14V6h-2v2H7V6zm2-2v2h6V4H9z"
 | 
			
		||||
                      /></svg
 | 
			
		||||
                    >
 | 
			
		||||
                  </div>
 | 
			
		||||
                </div>
 | 
			
		||||
                </button>
 | 
			
		||||
                <p class="text-gray-500 text-xs">
 | 
			
		||||
                  {$_('click-to-copy-token-to-clipboard')}
 | 
			
		||||
                  {$_("click-to-copy-token-to-clipboard")}
 | 
			
		||||
                </p>
 | 
			
		||||
              </div>
 | 
			
		||||
            </div>
 | 
			
		||||
@@ -119,8 +136,9 @@
 | 
			
		||||
          <button
 | 
			
		||||
            on:click={close}
 | 
			
		||||
            type="button"
 | 
			
		||||
            class="w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-blue-600 text-base font-medium text-white hover:bg-green-500 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 sm:ml-3 sm:w-auto sm:text-sm">
 | 
			
		||||
            {$_('yes-i-copied-the-token')}
 | 
			
		||||
            class="w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-blue-600 text-base font-medium text-white hover:bg-green-500 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 sm:ml-3 sm:w-auto sm:text-sm"
 | 
			
		||||
          >
 | 
			
		||||
            {$_("yes-i-copied-the-token")}
 | 
			
		||||
          </button>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
 
 | 
			
		||||
@@ -33,6 +33,7 @@
 | 
			
		||||
    "all": "Alle",
 | 
			
		||||
    "all-associated-donations-will-get-deleted-as-well": "Alle Sponsorings dieser Sponsor:in werden ebenfalls gelöscht",
 | 
			
		||||
    "all-associated-runners-will-be-deleted-too": "Alle zugehörigen Läufer:innen werden auch gelöscht!",
 | 
			
		||||
    "all-associated-scans-will-get-deleted-as-well": "Alle Scans dieser Station werden ebenfalls gelöscht",
 | 
			
		||||
    "all-associated-teams-and-runners-will-be-deleted-too": "Alle assoziierten Teams und Läufer:innen werden auch gelöscht!",
 | 
			
		||||
    "already-paid": "Bereits bezahlt",
 | 
			
		||||
    "amount": "Anzahl",
 | 
			
		||||
@@ -49,6 +50,7 @@
 | 
			
		||||
    "cancel-keep-donor": "Abbrechen, Sponsor:in behalten",
 | 
			
		||||
    "cancel-keep-my-profile": "Abbrechen, mein Profil behalten",
 | 
			
		||||
    "cancel-keep-organization": "Abbrechen und Organisation bearbeiten",
 | 
			
		||||
    "cancel-keep-station": "Abbrechen und Station behalten",
 | 
			
		||||
    "cancel-keep-statsclient": "Abbrechen und Statsclient behalten",
 | 
			
		||||
    "cancel-keep-team": "Abbrechen, Team behalten",
 | 
			
		||||
    "cannot-reset-your-password-directly": "Schade. \nWir können das Passwort leider nicht direkt zurücksetzen.\nBitte sende uns eine Mail in der du deine Identität bestätigst.",
 | 
			
		||||
@@ -72,6 +74,7 @@
 | 
			
		||||
    "confirm-delete-donor-with-all-donations": "Bestätigen, Sponsor:in mit allen Sponsorings löschen",
 | 
			
		||||
    "confirm-delete-my-user-profile": "Bestätigung, mein Benutzerprofil löschen",
 | 
			
		||||
    "confirm-delete-organization-and-associated-teams-runners": "Bestätugung, lösche die Organisation und alle zugehörigen Teams und Läufer:innen.",
 | 
			
		||||
    "confirm-delete-station-with-all-scans": "Löschen der Scannerstation mit allen Scans bestätigen",
 | 
			
		||||
    "confirm-delete-statsclient": "Bestätigung, Statsclient löschen",
 | 
			
		||||
    "confirm-delete-team-and-associated-runners": "Bestätigung, lösche das Team mitsamt seinen Läufer:innen.",
 | 
			
		||||
    "confirm-deletion": "Löschung Bestätigen",
 | 
			
		||||
@@ -390,6 +393,7 @@
 | 
			
		||||
    "something-about-the-group": "Infos zur Gruppe",
 | 
			
		||||
    "sponsoring-quittungs-liste_herunterladen": "Sponsoring-Quittungs-Liste herunterladen",
 | 
			
		||||
    "sponsorings": "Sponsoringerklaerungen",
 | 
			
		||||
    "station-deleted": "Scannerstation gelöscht",
 | 
			
		||||
    "stats-are-being-loaded": "Die Statistiken werden geladen...",
 | 
			
		||||
    "statsclient-deleted": "Statsclient wurde gelöscht",
 | 
			
		||||
    "statsclient-is-being-added": "Statsclient wird angelegt...",
 | 
			
		||||
@@ -424,6 +428,7 @@
 | 
			
		||||
    "this-card-is": "Diese Karte ist",
 | 
			
		||||
    "this-might-take-a-moment": "Das könnte einen kleinen Moment dauern",
 | 
			
		||||
    "this-scanstation-is": "Diese Station ist",
 | 
			
		||||
    "timestamp": "Timestamp",
 | 
			
		||||
    "token": "Token",
 | 
			
		||||
    "total-distance": "gelaufene Strecke",
 | 
			
		||||
    "total-donation-amount": "Gesamtbetrag",
 | 
			
		||||
 
 | 
			
		||||
@@ -33,6 +33,7 @@
 | 
			
		||||
    "all": "all",
 | 
			
		||||
    "all-associated-donations-will-get-deleted-as-well": "All associated donations will get deleted as well",
 | 
			
		||||
    "all-associated-runners-will-be-deleted-too": "All associated runners will be deleted too!",
 | 
			
		||||
    "all-associated-scans-will-get-deleted-as-well": "All associated scans will get deleted as well",
 | 
			
		||||
    "all-associated-teams-and-runners-will-be-deleted-too": "All associated teams and runners will be deleted too!",
 | 
			
		||||
    "already-paid": "Already paid",
 | 
			
		||||
    "amount": "Amount",
 | 
			
		||||
@@ -49,6 +50,7 @@
 | 
			
		||||
    "cancel-keep-donor": "Cancel, keep donor",
 | 
			
		||||
    "cancel-keep-my-profile": "Cancel, keep my profile",
 | 
			
		||||
    "cancel-keep-organization": "Cancel, keep organization",
 | 
			
		||||
    "cancel-keep-station": "Cancel, keep station",
 | 
			
		||||
    "cancel-keep-statsclient": "Cancel and keep statsclient",
 | 
			
		||||
    "cancel-keep-team": "Cancel, keep team",
 | 
			
		||||
    "cannot-reset-your-password-directly": "Bummer. We unfortunately cannot reset your password directly. Please send us a mail and confirm your identity",
 | 
			
		||||
@@ -72,6 +74,7 @@
 | 
			
		||||
    "confirm-delete-donor-with-all-donations": "Confirm, delete donor with all donations",
 | 
			
		||||
    "confirm-delete-my-user-profile": "Confirm, delete my user profile",
 | 
			
		||||
    "confirm-delete-organization-and-associated-teams-runners": "Confirm, delete organization and associated teams+runners.",
 | 
			
		||||
    "confirm-delete-station-with-all-scans": "Confirm deletion of station with all scans",
 | 
			
		||||
    "confirm-delete-statsclient": "Confirm, delete statsclient",
 | 
			
		||||
    "confirm-delete-team-and-associated-runners": "Confirm, delete team and associated runners.",
 | 
			
		||||
    "confirm-deletion": "Confirm Deletion",
 | 
			
		||||
@@ -390,6 +393,7 @@
 | 
			
		||||
    "something-about-the-group": "Something about the group...",
 | 
			
		||||
    "sponsoring-quittungs-liste_herunterladen": "Download donor receipt list",
 | 
			
		||||
    "sponsorings": "Sponsorings",
 | 
			
		||||
    "station-deleted": "station deleted",
 | 
			
		||||
    "stats-are-being-loaded": "stats are being loaded...",
 | 
			
		||||
    "statsclient-deleted": "Deleted statsclient",
 | 
			
		||||
    "statsclient-is-being-added": "Statsclient is being added...",
 | 
			
		||||
@@ -424,6 +428,7 @@
 | 
			
		||||
    "this-card-is": "This card is",
 | 
			
		||||
    "this-might-take-a-moment": "This might take a moment 👀",
 | 
			
		||||
    "this-scanstation-is": "This scanstation is",
 | 
			
		||||
    "timestamp": "timestamp",
 | 
			
		||||
    "token": "Token",
 | 
			
		||||
    "total-distance": "total distance",
 | 
			
		||||
    "total-donation-amount": "total donation amount",
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user