Compare commits

...

5 Commits

Author SHA1 Message Date
b6b6cecc0a update deps
All checks were successful
continuous-integration/drone/tag Build is passing
continuous-integration/drone/push Build is passing
2025-02-01 02:12:41 -05:00
08916a504f add button to resend email verification email 2025-02-01 02:12:41 -05:00
3eda522903 move staging to container 2025-02-01 02:12:41 -05:00
2e6e26006d fix style issues 2025-02-01 02:12:41 -05:00
b66d0ea8a1 add date range to range page 2025-02-01 02:12:41 -05:00
70 changed files with 1361 additions and 1036 deletions

View File

@ -17,7 +17,7 @@ steps:
- .mix
- name: test
image: elixir:1.17.3-otp-27-alpine
image: elixir:1.18.1-otp-27-alpine
environment:
TEST_DATABASE_URL: ecto://postgres:postgres@database/cannery_test
HOST: testing.example.tld

View File

@ -1,3 +1,3 @@
elixir 1.17.3-otp-27
erlang 27.1.2
nodejs 23.0.0
elixir 1.18.1-otp-27
erlang 27.2.1
nodejs 23.7.0

View File

@ -1,4 +1,7 @@
# v0.9.13
- Add button to resend email verification email
- Move staging to container, rather than ammo
- Add date restriction dropdown to range page
- Fix dates not rendering properly in table
- Update deps

View File

@ -1,4 +1,4 @@
FROM elixir:1.17.3-otp-27-alpine AS build
FROM elixir:1.18.1-otp-27-alpine AS build
# install build dependencies
RUN apk add --no-cache build-base npm git python3

View File

@ -27,7 +27,7 @@ $fa-font-path: "@fortawesome/fontawesome-free/webfonts";
100% { scale: 1.0; opacity: 1; }
}
// disconnect toast
/* disconnect toast */
.phx-connected > #disconnect {
opacity: 0 !important;
pointer-events: none;

172
assets/package-lock.json generated
View File

@ -28,7 +28,7 @@
"glob": "^11.0.1",
"mini-css-extract-plugin": "^2.9.2",
"npm-check-updates": "^17.1.13",
"postcss": "^8.4.49",
"postcss": "^8.5.1",
"postcss-import": "^16.1.0",
"postcss-loader": "^8.1.1",
"postcss-preset-env": "^10.1.3",
@ -42,8 +42,8 @@
"webpack-dev-server": "^5.2.0"
},
"engines": {
"node": "v23.0.0",
"npm": "10.9.0"
"node": "v23.7.0",
"npm": "10.9.2"
}
},
"../deps/phoenix": {
@ -3234,10 +3234,11 @@
}
},
"node_modules/@parcel/watcher": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.4.1.tgz",
"integrity": "sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==",
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz",
"integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==",
"dev": true,
"hasInstallScript": true,
"license": "MIT",
"optional": true,
"dependencies": {
@ -3254,24 +3255,25 @@
"url": "https://opencollective.com/parcel"
},
"optionalDependencies": {
"@parcel/watcher-android-arm64": "2.4.1",
"@parcel/watcher-darwin-arm64": "2.4.1",
"@parcel/watcher-darwin-x64": "2.4.1",
"@parcel/watcher-freebsd-x64": "2.4.1",
"@parcel/watcher-linux-arm-glibc": "2.4.1",
"@parcel/watcher-linux-arm64-glibc": "2.4.1",
"@parcel/watcher-linux-arm64-musl": "2.4.1",
"@parcel/watcher-linux-x64-glibc": "2.4.1",
"@parcel/watcher-linux-x64-musl": "2.4.1",
"@parcel/watcher-win32-arm64": "2.4.1",
"@parcel/watcher-win32-ia32": "2.4.1",
"@parcel/watcher-win32-x64": "2.4.1"
"@parcel/watcher-android-arm64": "2.5.1",
"@parcel/watcher-darwin-arm64": "2.5.1",
"@parcel/watcher-darwin-x64": "2.5.1",
"@parcel/watcher-freebsd-x64": "2.5.1",
"@parcel/watcher-linux-arm-glibc": "2.5.1",
"@parcel/watcher-linux-arm-musl": "2.5.1",
"@parcel/watcher-linux-arm64-glibc": "2.5.1",
"@parcel/watcher-linux-arm64-musl": "2.5.1",
"@parcel/watcher-linux-x64-glibc": "2.5.1",
"@parcel/watcher-linux-x64-musl": "2.5.1",
"@parcel/watcher-win32-arm64": "2.5.1",
"@parcel/watcher-win32-ia32": "2.5.1",
"@parcel/watcher-win32-x64": "2.5.1"
}
},
"node_modules/@parcel/watcher-android-arm64": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.4.1.tgz",
"integrity": "sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==",
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz",
"integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==",
"cpu": [
"arm64"
],
@ -3290,9 +3292,9 @@
}
},
"node_modules/@parcel/watcher-darwin-arm64": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.4.1.tgz",
"integrity": "sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==",
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz",
"integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==",
"cpu": [
"arm64"
],
@ -3311,9 +3313,9 @@
}
},
"node_modules/@parcel/watcher-darwin-x64": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.4.1.tgz",
"integrity": "sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==",
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz",
"integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==",
"cpu": [
"x64"
],
@ -3332,9 +3334,9 @@
}
},
"node_modules/@parcel/watcher-freebsd-x64": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.4.1.tgz",
"integrity": "sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==",
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz",
"integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==",
"cpu": [
"x64"
],
@ -3353,9 +3355,30 @@
}
},
"node_modules/@parcel/watcher-linux-arm-glibc": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.4.1.tgz",
"integrity": "sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==",
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz",
"integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==",
"cpu": [
"arm"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">= 10.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/parcel"
}
},
"node_modules/@parcel/watcher-linux-arm-musl": {
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz",
"integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==",
"cpu": [
"arm"
],
@ -3374,9 +3397,9 @@
}
},
"node_modules/@parcel/watcher-linux-arm64-glibc": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.4.1.tgz",
"integrity": "sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==",
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz",
"integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==",
"cpu": [
"arm64"
],
@ -3395,9 +3418,9 @@
}
},
"node_modules/@parcel/watcher-linux-arm64-musl": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.4.1.tgz",
"integrity": "sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==",
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz",
"integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==",
"cpu": [
"arm64"
],
@ -3416,9 +3439,9 @@
}
},
"node_modules/@parcel/watcher-linux-x64-glibc": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.4.1.tgz",
"integrity": "sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==",
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz",
"integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==",
"cpu": [
"x64"
],
@ -3437,9 +3460,9 @@
}
},
"node_modules/@parcel/watcher-linux-x64-musl": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.4.1.tgz",
"integrity": "sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==",
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz",
"integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==",
"cpu": [
"x64"
],
@ -3458,9 +3481,9 @@
}
},
"node_modules/@parcel/watcher-win32-arm64": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.4.1.tgz",
"integrity": "sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==",
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz",
"integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==",
"cpu": [
"arm64"
],
@ -3479,9 +3502,9 @@
}
},
"node_modules/@parcel/watcher-win32-ia32": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.4.1.tgz",
"integrity": "sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==",
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz",
"integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==",
"cpu": [
"ia32"
],
@ -3500,9 +3523,9 @@
}
},
"node_modules/@parcel/watcher-win32-x64": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.4.1.tgz",
"integrity": "sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==",
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz",
"integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==",
"cpu": [
"x64"
],
@ -5879,9 +5902,9 @@
}
},
"node_modules/enhanced-resolve": {
"version": "5.17.1",
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz",
"integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==",
"version": "5.18.0",
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.0.tgz",
"integrity": "sha512-0/r0MySGYG8YqlayBZ6MuCfECmHFdJ5qyPh8s8wa5Hnm6SaFLSK1VYCbj+NKp090Nm1caZhD+QTnmxO7esYGyQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@ -9159,9 +9182,9 @@
}
},
"node_modules/nanoid": {
"version": "3.3.7",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
"integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
"version": "3.3.8",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz",
"integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==",
"dev": true,
"funding": [
{
@ -9169,6 +9192,7 @@
"url": "https://github.com/sponsors/ai"
}
],
"license": "MIT",
"bin": {
"nanoid": "bin/nanoid.cjs"
},
@ -9827,9 +9851,9 @@
}
},
"node_modules/postcss": {
"version": "8.4.49",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz",
"integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==",
"version": "8.5.1",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.1.tgz",
"integrity": "sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==",
"dev": true,
"funding": [
{
@ -9847,7 +9871,7 @@
],
"license": "MIT",
"dependencies": {
"nanoid": "^3.3.7",
"nanoid": "^3.3.8",
"picocolors": "^1.1.1",
"source-map-js": "^1.2.1"
},
@ -11893,9 +11917,9 @@
"license": "MIT"
},
"node_modules/sass": {
"version": "1.83.1",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.83.1.tgz",
"integrity": "sha512-EVJbDaEs4Rr3F0glJzFSOvtg2/oy2V/YrGFPqPY24UqcLDWcI9ZY5sN+qyO3c/QCZwzgfirvhXvINiJCE/OLcA==",
"version": "1.83.4",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.83.4.tgz",
"integrity": "sha512-B1bozCeNQiOgDcLd33e2Cs2U60wZwjUUXzh900ZyQF5qUasvMdDZYbQ566LJu7cqR+sAHlAfO6RMkaID5s6qpA==",
"dev": true,
"license": "MIT",
"dependencies": {
@ -11955,9 +11979,9 @@
}
},
"node_modules/sass/node_modules/chokidar": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.1.tgz",
"integrity": "sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==",
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz",
"integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==",
"dev": true,
"license": "MIT",
"dependencies": {
@ -11971,13 +11995,13 @@
}
},
"node_modules/sass/node_modules/readdirp": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz",
"integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==",
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.1.tgz",
"integrity": "sha512-h80JrZu/MHUZCyHu5ciuoI0+WxsCxzxJTILn6Fs8rxSnFPh+UVHYfeIxK1nVGugMqkfC4vJcBOYbkfkwYK0+gw==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">= 14.16.0"
"node": ">= 14.18.0"
},
"funding": {
"type": "individual",

View File

@ -3,8 +3,8 @@
"description": " ",
"license": "MIT",
"engines": {
"node": "v23.0.0",
"npm": "10.9.0"
"node": "v23.7.0",
"npm": "10.9.2"
},
"scripts": {
"deploy": "NODE_ENV=production webpack --mode production",
@ -35,7 +35,7 @@
"glob": "^11.0.1",
"mini-css-extract-plugin": "^2.9.2",
"npm-check-updates": "^17.1.13",
"postcss": "^8.4.49",
"postcss": "^8.5.1",
"postcss-import": "^16.1.0",
"postcss-loader": "^8.1.1",
"postcss-preset-env": "^10.1.3",

View File

@ -8,6 +8,7 @@
import Config
config :cannery,
env: :dev,
ecto_repos: [Cannery.Repo],
generators: [binary_id: true]

View File

@ -14,6 +14,8 @@ config :cannery, CanneryWeb.Endpoint, cache_static_manifest: "priv/static/cache_
# Do not print debug messages in production
config :logger, level: :info
config :cannery, env: :prod
# ## SSL Support
#
# To get SSL working, you will need to add the `https` key

View File

@ -20,6 +20,8 @@ config :cannery, CanneryWeb.Endpoint,
secret_key_base: "S3qq9QtUdsFtlYej+HTjAVN95uP5i5tf2sPYINWSQfCKJghFj2B1+wTAoljZyHOK",
server: false
config :cannery, env: :test
# In test we don't send emails.
config :cannery, Cannery.Mailer, adapter: Swoosh.Adapters.Test

View File

@ -218,7 +218,7 @@ defmodule Cannery.Accounts do
with {:ok, query} <- UserToken.verify_change_email_token_query(token, context),
%UserToken{sent_to: email} <- Repo.one(query),
{:ok, _} <- Repo.transaction(user_email_multi(user, email, context)) do
{:ok, _result} <- Repo.transaction(user_email_multi(user, email, context)) do
:ok
else
_error_tuple -> :error

View File

@ -136,7 +136,7 @@ defmodule Cannery.Accounts.User do
|> cast(attrs, [:email])
|> validate_email()
|> case do
%{changes: %{email: _}} = changeset -> changeset
%{changes: %{email: _email}} = changeset -> changeset
%{} = changeset -> add_error(changeset, :email, dgettext("errors", "did not change"))
end
end

View File

@ -150,7 +150,7 @@ defmodule Cannery.Accounts.UserToken do
from t in __MODULE__, where: t.user_id == ^user.id
end
def user_and_contexts_query(user, [_ | _] = contexts) do
def user_and_contexts_query(user, [_first | _rest] = contexts) do
from t in __MODULE__, where: t.user_id == ^user.id and t.context in ^contexts
end
end

View File

@ -9,6 +9,8 @@ defmodule Cannery.ActivityLog do
@type list_shot_records_option ::
{:search, String.t() | nil}
| {:class, Type.class() | :all | nil}
| {:start_date, String.t() | nil}
| {:end_date, String.t() | nil}
| {:pack_id, Pack.id() | nil}
@type list_shot_records_options :: [list_shot_records_option()]
@ -49,6 +51,8 @@ defmodule Cannery.ActivityLog do
|> list_shot_records_search(Keyword.get(opts, :search))
|> list_shot_records_class(Keyword.get(opts, :class))
|> list_shot_records_pack_id(Keyword.get(opts, :pack_id))
|> list_shot_records_start_date(Keyword.get(opts, :start_date))
|> list_shot_records_end_date(Keyword.get(opts, :end_date))
|> Repo.all()
end
@ -100,6 +104,20 @@ defmodule Cannery.ActivityLog do
defp list_shot_records_pack_id(query, _all), do: query
@spec list_shot_records_start_date(Queryable.t(), String.t() | nil) :: Queryable.t()
defp list_shot_records_start_date(query, start_date) when start_date |> is_binary() do
query |> where([sr: sr], sr.date >= ^Date.from_iso8601!(start_date))
end
defp list_shot_records_start_date(query, _all), do: query
@spec list_shot_records_end_date(Queryable.t(), String.t() | nil) :: Queryable.t()
defp list_shot_records_end_date(query, end_date) when end_date |> is_binary() do
query |> where([sr: sr], sr.date <= ^Date.from_iso8601!(end_date))
end
defp list_shot_records_end_date(query, _all), do: query
@doc """
Returns a count of shot records.

View File

@ -547,7 +547,7 @@ defmodule Cannery.Ammo do
@spec list_packs_staged(Queryable.t(), staged :: boolean() | nil) :: Queryable.t()
defp list_packs_staged(query, staged) when staged |> is_boolean(),
do: query |> where([p: p], p.staged == ^staged)
do: query |> where([c: c], c.staged == ^staged)
defp list_packs_staged(query, _nil), do: query

View File

@ -11,21 +11,19 @@ defmodule Cannery.Ammo.Pack do
@derive {Jason.Encoder,
only: [
:id,
:container_id,
:count,
:id,
:lot_number,
:notes,
:price_paid,
:lot_number,
:staged,
:type_id,
:container_id
:type_id
]}
schema "packs" do
field :count, :integer
field :lot_number, :string
field :notes, :string
field :price_paid, :float
field :staged, :boolean, default: false
field :lot_number, :string
field :purchased_on, :date
belongs_to :type, Type
@ -36,12 +34,11 @@ defmodule Cannery.Ammo.Pack do
end
@type t :: %__MODULE__{
id: id(),
count: integer,
id: id(),
lot_number: String.t() | nil,
notes: String.t() | nil,
price_paid: float() | nil,
staged: boolean(),
lot_number: String.t() | nil,
purchased_on: Date.t(),
type: Type.t() | nil,
type_id: Type.id(),
@ -92,7 +89,13 @@ defmodule Cannery.Ammo.Pack do
|> change(type_id: type_id)
|> change(container_id: container_id)
|> change(user_id: user_id)
|> cast(attrs, [:count, :lot_number, :notes, :price_paid, :purchased_on, :staged])
|> cast(attrs, [
:count,
:lot_number,
:notes,
:price_paid,
:purchased_on
])
|> validate_required(:type_id, message: dgettext("errors", "Please select a valid type"))
|> validate_required(:container_id,
message: dgettext("errors", "Please select a valid container")
@ -100,7 +103,13 @@ defmodule Cannery.Ammo.Pack do
|> validate_number(:count, greater_than: 0)
|> validate_number(:price_paid, greater_than_or_equal_to: 0)
|> validate_length(:lot_number, max: 255)
|> validate_required([:count, :staged, :purchased_on, :type_id, :container_id, :user_id])
|> validate_required([
:container_id,
:count,
:purchased_on,
:type_id,
:user_id
])
end
@doc false
@ -108,19 +117,22 @@ defmodule Cannery.Ammo.Pack do
def update_changeset(pack, attrs, user) do
pack
|> cast(attrs, [
:container_id,
:count,
:price_paid,
:notes,
:staged,
:purchased_on,
:lot_number,
:container_id
:notes,
:price_paid,
:purchased_on
])
|> validate_number(:count, greater_than_or_equal_to: 0)
|> validate_number(:price_paid, greater_than_or_equal_to: 0)
|> validate_container_id(user)
|> validate_length(:lot_number, max: 255)
|> validate_required([:count, :staged, :purchased_on, :container_id])
|> validate_required([
:container_id,
:count,
:purchased_on
])
end
defp validate_container_id(changeset, user) do
@ -140,7 +152,7 @@ defmodule Cannery.Ammo.Pack do
@spec range_changeset(t() | new_pack(), attrs :: map()) :: changeset()
def range_changeset(pack, attrs) do
pack
|> cast(attrs, [:count, :staged])
|> validate_required([:count, :staged])
|> cast(attrs, [:count])
|> validate_required([:count])
end
end

View File

@ -9,7 +9,9 @@ defmodule Cannery.Containers do
@container_preloads [:tags]
@type list_containers_option :: {:search, String.t() | nil}
@type list_containers_option ::
{:search, String.t() | nil}
| {:staged, boolean() | nil}
@type list_containers_options :: [list_containers_option()]
@doc """
@ -20,7 +22,10 @@ defmodule Cannery.Containers do
iex> list_containers(%User{id: 123})
[%Container{}, ...]
iex> list_containers(%User{id: 123}, search: "cool")
iex> list_containers(%User{id: 123},
...> search: "cool",
...> staged: true
...> )
[%Container{name: "my cool container"}, ...]
"""
@ -37,9 +42,16 @@ defmodule Cannery.Containers do
preload: ^@container_preloads
)
|> list_containers_search(Keyword.get(opts, :search))
|> list_containers_staged(Keyword.get(opts, :staged))
|> Repo.all()
end
@spec list_containers_staged(Queryable.t(), staged :: boolean() | nil) :: Queryable.t()
defp list_containers_staged(query, staged) when staged |> is_boolean(),
do: query |> where([c: c], c.staged == ^staged)
defp list_containers_staged(query, _nil), do: query
@spec list_containers_search(Queryable.t(), search :: String.t() | nil) :: Queryable.t()
defp list_containers_search(query, search) when search in ["", nil],
do: query |> order_by([c: c], c.name)

View File

@ -8,17 +8,19 @@ defmodule Cannery.Containers.Container do
@derive {Jason.Encoder,
only: [
:id,
:name,
:desc,
:id,
:location,
:type,
:tags
:name,
:staged,
:tags,
:type
]}
schema "containers" do
field :name, :string
field :desc, :string
field :location, :string
field :name, :string
field :staged, :boolean, default: false
field :type, :string
field :user_id, :binary_id
@ -29,10 +31,11 @@ defmodule Cannery.Containers.Container do
end
@type t :: %__MODULE__{
id: id(),
name: String.t(),
desc: String.t(),
id: id(),
location: String.t(),
name: String.t(),
staged: boolean(),
type: String.t(),
user_id: User.id(),
tags: [Tag.t()] | nil,
@ -48,19 +51,40 @@ defmodule Cannery.Containers.Container do
def create_changeset(container, %User{id: user_id}, attrs) do
container
|> change(user_id: user_id)
|> cast(attrs, [:name, :desc, :type, :location])
|> cast(attrs, [
:desc,
:location,
:name,
:staged,
:type
])
|> validate_length(:name, max: 255)
|> validate_length(:type, max: 255)
|> validate_required([:name, :type, :user_id])
|> validate_required([
:name,
:staged,
:type,
:user_id
])
end
@doc false
@spec update_changeset(t() | new_container(), attrs :: map()) :: changeset()
def update_changeset(container, attrs) do
container
|> cast(attrs, [:name, :desc, :type, :location])
|> cast(attrs, [
:desc,
:location,
:name,
:staged,
:type
])
|> validate_length(:name, max: 255)
|> validate_length(:type, max: 255)
|> validate_required([:name, :type])
|> validate_required([
:name,
:staged,
:type
])
end
end

View File

@ -4,6 +4,7 @@ defmodule CanneryWeb.Components.ContainerTableComponent do
"""
use CanneryWeb, :live_component
alias Cannery.{Accounts.User, Ammo, Containers.Container}
alias CanneryWeb.Components.TableComponent
alias Ecto.UUID
alias Phoenix.LiveView.{Rendered, Socket}
@ -13,6 +14,7 @@ defmodule CanneryWeb.Components.ContainerTableComponent do
required(:id) => UUID.t(),
required(:current_user) => User.t(),
optional(:containers) => [Container.t()],
optional(:range) => Rendered.t(),
optional(:tag_actions) => Rendered.t(),
optional(:actions) => Rendered.t(),
optional(any()) => any()
@ -23,6 +25,7 @@ defmodule CanneryWeb.Components.ContainerTableComponent do
socket =
socket
|> assign(assigns)
|> assign_new(:range, fn -> [] end)
|> assign_new(:tag_actions, fn -> [] end)
|> assign_new(:actions, fn -> [] end)
|> display_containers()
@ -35,6 +38,7 @@ defmodule CanneryWeb.Components.ContainerTableComponent do
assigns: %{
containers: containers,
current_user: current_user,
range: range,
tag_actions: tag_actions,
actions: actions
}
@ -62,13 +66,22 @@ defmodule CanneryWeb.Components.ContainerTableComponent do
end)
|> Enum.concat([
%{label: gettext("Packs"), key: :packs, type: :integer},
%{label: gettext("Rounds"), key: :rounds, type: :integer},
%{label: gettext("Tags"), key: :tags, type: :tags},
%{label: gettext("Actions"), key: :actions, sortable: false, type: :actions}
%{label: gettext("Rounds"), key: :rounds, type: :integer}
])
|> Enum.concat(
[
%{label: gettext("Tags"), key: :tags, type: :tags},
%{label: gettext("Actions"), key: :actions, sortable: false, type: :actions}
]
|> TableComponent.maybe_compose_columns(
%{label: gettext("Range"), key: :range},
range != []
)
)
extra_data = %{
current_user: current_user,
range: range,
tag_actions: tag_actions,
actions: actions,
pack_count:
@ -136,6 +149,15 @@ defmodule CanneryWeb.Components.ContainerTableComponent do
round_count |> Map.get(container_id, 0)
end
defp get_value_for_key(:range, %{staged: staged} = container, %{range: range}) do
assigns = %{range: range, container: container}
{staged,
~H"""
<%= render_slot(@range, @container) %>
"""}
end
defp get_value_for_key(:tags, container, %{tag_actions: tag_actions}) do
assigns = %{tag_actions: tag_actions, container: container}

View File

@ -141,6 +141,18 @@ defmodule CanneryWeb.CoreComponents do
"""
def datetime(assigns)
attr :name, :string, required: true
attr :start_date, :string,
default: Date.utc_today() |> Date.shift(year: -1) |> Date.to_iso8601()
attr :end_date, :string, default: Date.utc_today() |> Date.to_iso8601()
@doc """
Phoenix.Component for an element that generates date fields for a range
"""
def date_range(assigns)
@spec cast_datetime(NaiveDateTime.t() | nil) :: String.t()
defp cast_datetime(%NaiveDateTime{} = datetime) do
datetime |> DateTime.from_naive!("Etc/UTC") |> DateTime.to_iso8601(:extended)

View File

@ -0,0 +1,15 @@
<div class="flex items-center mx-4 my-2 space-x-1">
<input
class="w-36 text-center input input-primary"
name={"#{@name}_start"}
type="date"
value={@start_date}
/>
<span>—</span>
<input
class="w-36 text-center input input-primary"
name={"#{@name}_end"}
type="date"
value={@end_date}
/>
</div>

View File

@ -201,13 +201,12 @@ defmodule CanneryWeb.Components.PackTableComponent do
"""}
end
defp get_value_for_key(:range, %{staged: staged} = pack, %{range: range}) do
defp get_value_for_key(:range, pack, %{range: range}) do
assigns = %{range: range, pack: pack}
{staged,
~H"""
<%= render_slot(@range, @pack) %>
"""}
~H"""
<%= render_slot(@range, @pack) %>
"""
end
defp get_value_for_key(

View File

@ -40,7 +40,7 @@ defmodule CanneryWeb.UserResetPasswordController do
# leaked token giving the user access to the account.
def update(conn, %{"user" => user_params}) do
case Accounts.reset_user_password(conn.assigns.user, user_params) do
{:ok, _} ->
{:ok, _socket} ->
conn
|> put_flash(:info, dgettext("prompts", "Password reset successfully."))
|> redirect(to: ~p"/users/log_in")

View File

@ -112,6 +112,20 @@ defmodule CanneryWeb.ContainerLive.Index do
{:noreply, socket |> push_patch(to: ~p"/containers/search/#{search_term}")}
end
def handle_event(
"toggle_staged",
%{"container_id" => id},
%{assigns: %{current_user: current_user}} = socket
) do
container = Containers.get_container!(id, current_user)
{:ok, _container} =
container
|> Containers.update_container(current_user, %{"staged" => !container.staged})
{:noreply, socket |> display_containers()}
end
defp display_containers(%{assigns: %{search: search, current_user: current_user}} = socket) do
socket |> assign(:containers, Containers.list_containers(current_user, search: search))
end

View File

@ -1,10 +1,10 @@
<div class="flex flex-col space-y-8 justify-center items-center">
<h1 class="title text-2xl title-primary-500">
<div class="flex flex-col justify-center items-center space-y-8">
<h1 class="text-2xl title title-primary-500">
<%= gettext("Containers") %>
</h1>
<%= if @containers |> Enum.empty?() and @search |> is_nil() do %>
<h2 class="title text-xl text-primary-600">
<h2 class="text-xl title text-primary-600">
<%= gettext("No containers") %>
<%= display_emoji("😔") %>
</h2>
@ -17,14 +17,14 @@
<%= dgettext("actions", "New Container") %>
</.link>
<div class="w-full flex flex-col sm:flex-row justify-center items-center space-y-4 sm:space-y-0 sm:space-x-4 max-w-2xl">
<div class="flex flex-col justify-center items-center space-y-4 w-full max-w-2xl sm:flex-row sm:space-y-0 sm:space-x-4">
<.form
:let={f}
for={%{}}
as={:search}
phx-change="search"
phx-submit="search"
class="grow flex items-center"
class="flex items-center grow"
>
<%= text_input(f, :search_term,
class: "grow input input-primary",
@ -36,14 +36,14 @@
</.form>
<.toggle_button action="toggle_table" value={@view_table}>
<span class="title text-lg text-primary-600">
<span class="text-lg title text-primary-600">
<%= gettext("View as table") %>
</span>
</.toggle_button>
</div>
<%= if @containers |> Enum.empty?() do %>
<h2 class="title text-xl text-primary-600">
<h2 class="text-xl title text-primary-600">
<%= gettext("No containers") %>
<%= display_emoji("😔") %>
</h2>
@ -56,6 +56,20 @@
containers={@containers}
current_user={@current_user}
>
<:range :let={container}>
<div class="flex justify-center items-center px-4 py-2 h-full min-w-20 flex-wrap">
<button
type="button"
class="mx-2 my-1 text-sm btn btn-primary"
phx-click="toggle_staged"
phx-value-container_id={container.id}
>
<%= if container.staged,
do: dgettext("actions", "Unstage"),
else: dgettext("actions", "Stage") %>
</button>
</div>
</:range>
<:tag_actions :let={container}>
<div class="mx-4 my-2">
<.link
@ -109,7 +123,7 @@
</:actions>
</.live_component>
<% else %>
<div class="w-full flex flex-row flex-wrap justify-center items-stretch">
<div class="flex flex-row flex-wrap justify-center items-stretch w-full">
<.container_card
:for={container <- @containers}
container={container}

View File

@ -78,6 +78,18 @@ defmodule CanneryWeb.ContainerLive.Show do
{:noreply, socket}
end
def handle_event(
"toggle_staged",
_params,
%{assigns: %{container: container, current_user: current_user}} = socket
) do
{:ok, _container} =
container
|> Containers.update_container(current_user, %{"staged" => !container.staged})
{:noreply, socket |> render_container()}
end
def handle_event("toggle_table", _params, %{assigns: %{view_table: view_table}} = socket) do
{:noreply, socket |> assign(:view_table, !view_table) |> render_container()}
end

View File

@ -1,34 +1,34 @@
<div class="space-y-4 flex flex-col justify-center items-center">
<h1 class="title text-2xl title-primary-500">
<div class="flex flex-col justify-center items-center space-y-4">
<h1 class="text-2xl title title-primary-500">
<%= @container.name %>
</h1>
<span :if={@container.desc} class="rounded-lg title text-lg">
<span :if={@container.desc} class="text-lg rounded-lg title">
<%= gettext("Description:") %>
<%= @container.desc %>
</span>
<span class="rounded-lg title text-lg">
<span class="text-lg rounded-lg title">
<%= gettext("Type:") %>
<%= @container.type %>
</span>
<span :if={@container.location} class="rounded-lg title text-lg">
<span :if={@container.location} class="text-lg rounded-lg title">
<%= gettext("Location:") %>
<%= @container.location %>
</span>
<span class="rounded-lg title text-lg">
<span class="text-lg rounded-lg title">
<%= gettext("Packs:") %>
<%= @packs_count %>
</span>
<span class="rounded-lg title text-lg">
<span class="text-lg rounded-lg title">
<%= gettext("Rounds:") %>
<%= @round_count %>
</span>
<div class="flex space-x-4 justify-center items-center text-primary-600">
<div class="flex justify-center items-center space-x-4 text-primary-600">
<.link
patch={~p"/container/edit/#{@container}"}
class="text-primary-600 link"
@ -52,11 +52,19 @@
</.link>
</div>
<div class="flex flex-wrap justify-center items-center text-primary-600">
<button type="button" class="mx-4 my-2 btn btn-primary" phx-click="toggle_staged">
<%= if @container.staged,
do: dgettext("actions", "Unstage from range"),
else: dgettext("actions", "Stage for range") %>
</button>
</div>
<hr class="mb-4 hr" />
<%= if @container.tags |> Enum.empty?() do %>
<div class="flex flex-row justify-center items-center space-x-4">
<h2 class="title text-lg text-primary-600">
<h2 class="text-lg title text-primary-600">
<%= gettext("No tags for this container") %>
<%= display_emoji("😔") %>
</h2>
@ -105,15 +113,15 @@
</.form>
<.toggle_button action="toggle_table" value={@view_table}>
<span class="title text-lg text-primary-600">
<span class="text-lg title text-primary-600">
<%= gettext("View as table") %>
</span>
</.toggle_button>
</div>
<div class="w-full p-4">
<div class="p-4 w-full">
<%= if @packs |> Enum.empty?() do %>
<h2 class="mx-4 title text-lg text-primary-600 text-center">
<h2 class="mx-4 text-lg text-center title text-primary-600">
<%= gettext("No ammo in this container") %>
</h2>
<% else %>
@ -131,7 +139,7 @@
</.link>
</:type>
<:actions :let={%{count: pack_count} = pack}>
<div class="py-2 px-4 h-full space-x-4 flex justify-center items-center">
<div class="flex justify-center items-center px-4 py-2 space-x-4 h-full">
<.link
navigate={~p"/ammo/show/#{pack}"}
class="text-primary-600 link"

View File

@ -116,6 +116,20 @@ defmodule CanneryWeb.InviteLive.Index do
{:noreply, socket |> put_flash(:info, dgettext("prompts", "Copied to clipboard"))}
end
def handle_event("resend_email_verification", %{"id" => id}, socket) do
%{email: user_email} = user = Accounts.get_user!(id)
Accounts.deliver_user_confirmation_instructions(
user,
fn token -> url(CanneryWeb.Endpoint, ~p"/users/confirm/#{token}") end
)
prompt =
dgettext("prompts", "Email resent to %{user_email} succesfully", user_email: user_email)
{:noreply, socket |> put_flash(:info, prompt) |> display_invites()}
end
def handle_event(
"delete_user",
%{"id" => id},

View File

@ -1,10 +1,10 @@
<div class="mx-auto flex flex-col justify-center items-center space-y-4 max-w-3xl">
<h1 class="title text-2xl title-primary-500">
<div class="flex flex-col justify-center items-center mx-auto space-y-4 max-w-3xl">
<h1 class="text-2xl title title-primary-500">
<%= gettext("Invites") %>
</h1>
<%= if @invites |> Enum.empty?() do %>
<h1 class="title text-xl text-primary-600">
<h1 class="text-xl title text-primary-600">
<%= gettext("No invites") %>
<%= display_emoji("😔") %>
</h1>
@ -95,7 +95,7 @@
<%= unless @admins |> Enum.empty?() do %>
<hr class="hr" />
<h1 class="title text-2xl text-primary-600">
<h1 class="text-2xl title text-primary-600">
<%= gettext("Admins") %>
</h1>
@ -123,27 +123,38 @@
<%= unless @users |> Enum.empty?() do %>
<hr class="hr" />
<h1 class="title text-2xl text-primary-600">
<h1 class="text-2xl title text-primary-600">
<%= gettext("Users") %>
</h1>
<div class="flex flex-col justify-center items-stretch space-y-4">
<.user_card :for={user <- @users} user={user}>
<.link
href="#"
class="text-primary-600 link"
phx-click="delete_user"
phx-value-id={user.id}
data-confirm={
dgettext(
"prompts",
"Are you sure you want to delete %{email}? This action is permanent!",
email: user.email
)
}
>
<i class="fa-fw fa-lg fas fa-trash"></i>
</.link>
<div class="flex justify-center items-center space-x-2">
<.link
:if={!user.confirmed_at}
class="text-primary-600 link"
href="#"
phx-click="resend_email_verification"
phx-value-id={user.id}
>
<i class="fa-fw fa-lg fas fa-paper-plane"></i>
</.link>
<.link
class="text-primary-600 link"
data-confirm={
dgettext(
"prompts",
"Are you sure you want to delete %{email}? This action is permanent!",
email: user.email
)
}
href="#"
phx-click="delete_user"
phx-value-id={user.id}
>
<i class="fa-fw fa-lg fas fa-trash"></i>
</.link>
</div>
</.user_card>
</div>
<% end %>

View File

@ -96,18 +96,6 @@ defmodule CanneryWeb.PackLive.Index do
{:noreply, socket |> put_flash(:info, prompt) |> display_packs()}
end
def handle_event(
"toggle_staged",
%{"pack_id" => id},
%{assigns: %{current_user: current_user}} = socket
) do
pack = Ammo.get_pack!(id, current_user)
{:ok, _pack} = pack |> Ammo.update_pack(%{"staged" => !pack.staged}, current_user)
{:noreply, socket |> display_packs()}
end
def handle_event("toggle_show_used", _params, %{assigns: %{show_used: show_used}} = socket) do
{:noreply, socket |> assign(:show_used, !show_used) |> display_packs()}
end

View File

@ -1,5 +1,5 @@
<div class="flex flex-col space-y-8 justify-center items-center">
<h1 class="title text-2xl title-primary-500">
<div class="flex flex-col justify-center items-center space-y-8">
<h1 class="text-2xl title title-primary-500">
<%= gettext("Ammo") %>
</h1>
@ -25,7 +25,7 @@
</.link>
</div>
<% @packs_count == 0 -> %>
<h2 class="title text-xl text-primary-600">
<h2 class="text-xl title text-primary-600">
<%= gettext("No ammo") %>
<%= display_emoji("😔") %>
</h2>
@ -38,7 +38,7 @@
<%= dgettext("actions", "Add Ammo") %>
</.link>
<div class="w-full flex flex-col sm:flex-row justify-center items-center space-y-4 sm:space-y-0 sm:space-x-4 max-w-2xl">
<div class="flex flex-col justify-center items-center space-y-4 w-full max-w-2xl sm:flex-row sm:space-y-0 sm:space-x-4">
<.form
:let={f}
for={%{}}
@ -71,7 +71,7 @@
as={:search}
phx-change="search"
phx-submit="search"
class="grow flex items-center"
class="flex items-center grow"
>
<%= text_input(f, :search_term,
class: "grow input input-primary",
@ -83,14 +83,14 @@
</.form>
<.toggle_button action="toggle_show_used" value={@show_used}>
<span class="title text-lg text-primary-600">
<span class="text-lg title text-primary-600">
<%= gettext("Show used") %>
</span>
</.toggle_button>
</div>
<%= if @packs |> Enum.empty?() do %>
<h2 class="title text-xl text-primary-600">
<h2 class="text-xl title text-primary-600">
<%= gettext("No Ammo") %>
<%= display_emoji("😔") %>
</h2>
@ -108,18 +108,7 @@
</.link>
</:type>
<:range :let={pack}>
<div class="min-w-20 py-2 px-4 h-full flex flew-wrap justify-center items-center">
<button
type="button"
class="mx-2 my-1 text-sm btn btn-primary"
phx-click="toggle_staged"
phx-value-pack_id={pack.id}
>
<%= if pack.staged,
do: dgettext("actions", "Unstage"),
else: dgettext("actions", "Stage") %>
</button>
<div class="flex flex-wrap justify-center items-center px-4 py-2 h-full min-w-20">
<.link
patch={~p"/ammo/add_shot_record/#{pack}"}
class="mx-2 my-1 text-sm btn btn-primary"
@ -129,7 +118,7 @@
</div>
</:range>
<:container :let={{pack, %{name: container_name} = container}}>
<div class="min-w-20 py-2 px-4 h-full flex flew-wrap justify-center items-center">
<div class="flex flex-wrap justify-center items-center px-4 py-2 h-full min-w-20">
<.link navigate={~p"/container/#{container}"} class="mx-2 my-1 link">
<%= container_name %>
</.link>
@ -140,7 +129,7 @@
</div>
</:container>
<:actions :let={%{count: pack_count} = pack}>
<div class="py-2 px-4 h-full space-x-4 flex justify-center items-center">
<div class="flex justify-center items-center px-4 py-2 space-x-4 h-full">
<.link
navigate={~p"/ammo/show/#{pack}"}
class="text-primary-600 link"

View File

@ -57,22 +57,12 @@ defmodule CanneryWeb.PackLive.Show do
{:noreply, socket |> put_flash(:info, prompt) |> push_navigate(to: redirect_to)}
end
def handle_event(
"toggle_staged",
_params,
%{assigns: %{pack: pack, current_user: current_user}} = socket
) do
{:ok, pack} = pack |> Ammo.update_pack(%{"staged" => !pack.staged}, current_user)
{:noreply, socket |> display_pack(pack)}
end
def handle_event(
"delete_shot_record",
%{"id" => id},
%{assigns: %{pack: %{id: pack_id}, current_user: current_user}} = socket
) do
{:ok, _} =
{:ok, _shot_record} =
ActivityLog.get_shot_record!(id, current_user)
|> ActivityLog.delete_shot_record(current_user)
@ -136,7 +126,7 @@ defmodule CanneryWeb.PackLive.Show do
:actions ->
~H"""
<div class="px-4 py-2 space-x-4 flex justify-center items-center">
<div class="flex justify-center items-center px-4 py-2 space-x-4">
<.link
patch={~p"/ammo/show/#{@pack}/edit/#{@shot_record}"}
class="text-primary-600 link"

View File

@ -1,43 +1,43 @@
<div class="mx-auto space-y-4 max-w-3xl flex flex-col justify-center items-center">
<h1 class="title text-2xl title-primary-500">
<div class="flex flex-col justify-center items-center mx-auto space-y-4 max-w-3xl">
<h1 class="text-2xl title title-primary-500">
<%= @pack.type.name %>
</h1>
<div class="space-y-2 flex flex-col justify-center items-center">
<span class="rounded-lg title text-lg">
<div class="flex flex-col justify-center items-center space-y-2">
<span class="text-lg rounded-lg title">
<%= gettext("Count:") %>
<%= @pack.count %>
</span>
<span class="rounded-lg title text-lg">
<span class="text-lg rounded-lg title">
<%= gettext("Original count:") %>
<%= @original_count %>
</span>
<span class="rounded-lg title text-lg">
<span class="text-lg rounded-lg title">
<%= gettext("Percentage left:") %>
<%= gettext("%{percentage}%", percentage: @percentage_remaining) %>
</span>
<%= if @pack.notes do %>
<span class="rounded-lg title text-lg">
<span class="text-lg rounded-lg title">
<%= gettext("Notes:") %>
<%= @pack.notes %>
</span>
<% end %>
<span class="rounded-lg title text-lg">
<span class="text-lg rounded-lg title">
<%= gettext("Purchased on:") %>
<.date id={"#{@pack.id}-purchased-on"} date={@pack.purchased_on} />
</span>
<%= if @pack.price_paid do %>
<span class="rounded-lg title text-lg">
<span class="text-lg rounded-lg title">
<%= gettext("Original cost:") %>
<%= gettext("$%{amount}", amount: display_currency(@pack.price_paid)) %>
</span>
<span class="rounded-lg title text-lg">
<span class="text-lg rounded-lg title">
<%= gettext("Current value:") %>
<%= gettext("$%{amount}",
amount: display_currency(@pack.price_paid * @percentage_remaining / 100)
@ -76,12 +76,6 @@
</div>
<div class="flex flex-wrap justify-center items-center text-primary-600">
<button type="button" class="mx-4 my-2 btn btn-primary" phx-click="toggle_staged">
<%= if @pack.staged,
do: dgettext("actions", "Unstage from range"),
else: dgettext("actions", "Stage for range") %>
</button>
<.link patch={~p"/ammo/show/move/#{@pack}"} class="btn btn-primary">
<%= dgettext("actions", "Move ammo") %>
</.link>
@ -96,7 +90,7 @@
<div>
<%= if @container do %>
<h1 class="mb-4 px-4 py-2 text-center rounded-lg title text-xl">
<h1 class="px-4 py-2 mb-4 text-xl text-center rounded-lg title">
<%= gettext("Stored in") %>
</h1>
@ -109,7 +103,7 @@
<%= unless @shot_records |> Enum.empty?() do %>
<hr class="mb-4 w-full" />
<h1 class="mb-4 px-4 py-2 text-center rounded-lg title text-xl">
<h1 class="px-4 py-2 mb-4 text-xl text-center rounded-lg title">
<%= gettext("Rounds used") %>
</h1>

View File

@ -4,16 +4,37 @@ defmodule CanneryWeb.RangeLive.Index do
"""
use CanneryWeb, :live_view
alias Cannery.{ActivityLog, ActivityLog.ShotRecord, Ammo}
alias Cannery.{ActivityLog, ActivityLog.ShotRecord}
alias Cannery.{Ammo, Containers}
alias Phoenix.LiveView.Socket
@impl true
def mount(%{"search" => search}, _session, socket) do
{:ok, socket |> assign(class: :all, search: search) |> display_shot_records()}
socket =
socket
|> assign(
class: :all,
start_date: Date.shift(Date.utc_today(), year: -1),
end_date: Date.utc_today(),
search: search
)
|> display_shot_records()
{:ok, socket}
end
def mount(_params, _session, socket) do
{:ok, socket |> assign(class: :all, search: nil) |> display_shot_records()}
socket =
socket
|> assign(
class: :all,
start_date: Date.shift(Date.utc_today(), year: -1),
end_date: Date.utc_today(),
search: nil
)
|> display_shot_records()
{:ok, socket}
end
@impl true
@ -71,7 +92,7 @@ defmodule CanneryWeb.RangeLive.Index do
@impl true
def handle_event("delete", %{"id" => id}, %{assigns: %{current_user: current_user}} = socket) do
{:ok, _} =
{:ok, _shot_record} =
ActivityLog.get_shot_record!(id, current_user)
|> ActivityLog.delete_shot_record(current_user)
@ -81,14 +102,16 @@ defmodule CanneryWeb.RangeLive.Index do
def handle_event(
"toggle_staged",
%{"pack_id" => pack_id},
%{"container_id" => container_id},
%{assigns: %{current_user: current_user}} = socket
) do
pack = Ammo.get_pack!(pack_id, current_user)
container = Containers.get_container!(container_id, current_user)
{:ok, _pack} = pack |> Ammo.update_pack(%{"staged" => !pack.staged}, current_user)
{:ok, _container} =
container
|> Containers.update_container(current_user, %{"staged" => !container.staged})
prompt = dgettext("prompts", "Ammo unstaged succesfully")
prompt = dgettext("prompts", "Container unstaged succesfully")
{:noreply, socket |> put_flash(:info, prompt) |> display_shot_records()}
end
@ -116,11 +139,49 @@ defmodule CanneryWeb.RangeLive.Index do
{:noreply, socket |> assign(:class, :all) |> display_shot_records()}
end
def handle_event(
"change_dates",
%{
"dates_start" => start_date,
"dates_end" => end_date
},
socket
) do
socket =
socket
|> assign(
start_date: start_date,
end_date: end_date
)
|> display_shot_records()
{:noreply, socket}
end
@spec display_shot_records(Socket.t()) :: Socket.t()
defp display_shot_records(
%{assigns: %{class: class, search: search, current_user: current_user}} = socket
%{
assigns: %{
class: class,
start_date: start_date,
end_date: end_date,
search: search,
current_user: current_user
}
} = socket
) do
shot_records = ActivityLog.list_shot_records(current_user, search: search, class: class)
shot_records =
ActivityLog.list_shot_records(current_user,
class: class,
end_date: end_date,
search: search,
start_date: start_date
)
containers =
Containers.list_containers(current_user, staged: true)
|> Map.new(fn container = %{id: container_id} -> {container_id, container} end)
packs = Ammo.list_packs(current_user, staged: true)
chart_data = shot_records |> get_chart_data_for_shot_record()
original_counts = packs |> Ammo.get_original_counts(current_user)
@ -130,6 +191,7 @@ defmodule CanneryWeb.RangeLive.Index do
socket
|> assign(
containers: containers,
packs: packs,
original_counts: original_counts,
cprs: cprs,
@ -153,6 +215,5 @@ defmodule CanneryWeb.RangeLive.Index do
label: gettext("Rounds shot: %{count}", count: sum)
}
end)
|> Enum.sort_by(fn %{date: date} -> date end, Date)
end
end

View File

@ -1,43 +1,55 @@
<div class="flex flex-col space-y-8 justify-center items-center">
<h1 class="title text-2xl title-primary-500">
<div class="flex flex-col justify-center items-center space-y-8">
<h1 class="text-2xl title title-primary-500">
<%= gettext("Range day") %>
</h1>
<%= if @packs |> Enum.empty?() do %>
<h1 class="title text-xl text-primary-600">
<%= gettext("No ammo staged") %>
<%= if @containers |> Enum.empty?() do %>
<h1 class="text-xl title text-primary-600">
<%= gettext("No containers staged") %>
<%= display_emoji("😔") %>
</h1>
<.link navigate={~p"/ammo"} class="btn btn-primary">
<.link navigate={~p"/containers"} class="btn btn-primary">
<%= dgettext("actions", "Why not get some ready to shoot?") %>
</.link>
<% else %>
<.link navigate={~p"/ammo"} class="btn btn-primary">
<%= dgettext("actions", "Stage ammo") %>
<.link navigate={~p"/containers"} class="btn btn-primary">
<%= dgettext("actions", "Stage containers") %>
</.link>
<div class="w-full flex flex-row flex-wrap justify-center items-stretch">
<div class="flex flex-row flex-wrap justify-center items-stretch w-full">
<.container_card
:for={{container_id, container} <- @containers}
container={container}
current_user={@current_user}
>
<div class="flex flex-wrap justify-center items-center px-4 py-2 h-full min-w-20">
<button
type="button"
class="mx-2 my-1 text-sm btn btn-primary"
phx-click="toggle_staged"
phx-value-container_id={container_id}
>
<%= if container.staged,
do: dgettext("actions", "Unstage"),
else: dgettext("actions", "Stage") %>
</button>
</div>
</.container_card>
</div>
<hr class="hr" />
<div class="flex flex-row flex-wrap justify-center items-stretch w-full">
<.pack_card
:for={%{id: pack_id} = pack <- @packs}
:for={%{id: pack_id, container_id: container_id} = pack <- @packs}
pack={pack}
original_count={Map.fetch!(@original_counts, pack_id)}
cpr={Map.get(@cprs, pack_id)}
last_used_date={Map.get(@last_used_dates, pack_id)}
current_user={@current_user}
container={Map.fetch!(@containers, container_id)}
>
<button
type="button"
class="btn btn-primary"
phx-click="toggle_staged"
phx-value-pack_id={pack.id}
data-confirm={"#{dgettext("prompts", "Are you sure you want to unstage this ammo?")}"}
>
<%= if pack.staged,
do: dgettext("actions", "Unstage from range"),
else: dgettext("actions", "Stage for range") %>
</button>
<.link patch={~p"/range/add_shot_record/#{pack}"} class="btn btn-primary">
<%= dgettext("actions", "Record shots") %>
</.link>
@ -48,12 +60,12 @@
<hr class="hr" />
<%= if @shot_record_count == 0 do %>
<h1 class="title text-xl text-primary-600">
<h1 class="text-xl title text-primary-600">
<%= gettext("No shots recorded") %>
<%= display_emoji("😔") %>
</h1>
<% else %>
<h1 class="title text-2xl text-primary-600">
<h1 class="text-2xl title text-primary-600">
<%= gettext("Shot log") %>
</h1>
@ -71,7 +83,7 @@
<%= dgettext("errors", "Your browser does not support the canvas element.") %>
</canvas>
<div class="w-full flex flex-col sm:flex-row justify-center items-center space-y-4 sm:space-y-0 sm:space-x-4 max-w-2xl">
<div class="flex flex-col justify-center items-center space-y-4 w-full max-w-2xl sm:flex-row sm:space-y-0 sm:space-x-4">
<.form
:let={f}
for={%{}}
@ -104,7 +116,7 @@
as={:search}
phx-change="search"
phx-submit="search"
class="grow flex items-center"
class="flex items-center grow"
>
<%= text_input(f, :search_term,
class: "grow input input-primary",
@ -114,10 +126,25 @@
value: @search
) %>
</.form>
<.form
:let={f}
for={%{}}
as={:shot_records}
phx-change="change_dates"
phx-submit="change_dates"
class="flex items-center"
>
<%= label(f, :dates_start, gettext("Dates"),
class: "title text-primary-600 text-lg text-center"
) %>
<.date_range name="dates" />
</.form>
</div>
<%= if @shot_records |> Enum.empty?() do %>
<h1 class="title text-xl text-primary-600">
<h1 class="text-xl title text-primary-600">
<%= gettext("No shots recorded") %>
<%= display_emoji("😔") %>
</h1>
@ -129,7 +156,7 @@
current_user={@current_user}
>
<:actions :let={shot_record}>
<div class="px-4 py-2 space-x-4 flex justify-center items-center">
<div class="flex justify-center items-center px-4 py-2 space-x-4">
<.link
patch={~p"/range/edit/#{shot_record}"}
class="text-primary-600 link"

View File

@ -120,7 +120,7 @@ defmodule CanneryWeb.Router do
#
# Note that preview only shows emails that were sent by the same
# node running the Phoenix server.
if Mix.env() == :dev do
if Application.compile_env(:cannery, :env) == :dev do
scope "/dev" do
pipe_through :browser

View File

@ -5,7 +5,7 @@ defmodule Cannery.MixProject do
[
app: :cannery,
version: "0.9.13",
elixir: "1.17.3",
elixir: "1.18.1",
elixirc_paths: elixirc_paths(Mix.env()),
start_permanent: Mix.env() == :prod,
aliases: aliases(),

View File

@ -131,7 +131,7 @@ msgstr ""
msgid "Send instructions to reset password"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:65
#: lib/cannery_web/live/container_live/show.html.heex:73
#, elixir-autogen, elixir-format
msgid "Why not add one?"
msgstr ""
@ -141,19 +141,14 @@ msgstr ""
msgid "Add"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:17
#, elixir-autogen, elixir-format
msgid "Stage ammo"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:13
#, elixir-autogen, elixir-format
msgid "Why not get some ready to shoot?"
msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:127
#: lib/cannery_web/live/pack_live/show.html.heex:90
#: lib/cannery_web/live/range_live/index.html.heex:42
#: lib/cannery_web/live/pack_live/index.html.heex:116
#: lib/cannery_web/live/pack_live/show.html.heex:84
#: lib/cannery_web/live/range_live/index.html.heex:54
#, elixir-autogen, elixir-format
msgid "Record shots"
msgstr ""
@ -199,8 +194,8 @@ msgid "View in Catalog"
msgstr ""
#: lib/cannery_web/components/move_pack_component.ex:77
#: lib/cannery_web/live/pack_live/index.html.heex:138
#: lib/cannery_web/live/pack_live/show.html.heex:86
#: lib/cannery_web/live/pack_live/index.html.heex:127
#: lib/cannery_web/live/pack_live/show.html.heex:80
#, elixir-autogen, elixir-format
msgid "Move ammo"
msgstr ""
@ -210,14 +205,12 @@ msgstr ""
msgid "Set Unlimited"
msgstr ""
#: lib/cannery_web/live/pack_live/show.html.heex:82
#: lib/cannery_web/live/range_live/index.html.heex:38
#: lib/cannery_web/live/container_live/show.html.heex:59
#, elixir-autogen, elixir-format
msgid "Stage for range"
msgstr ""
#: lib/cannery_web/live/pack_live/show.html.heex:81
#: lib/cannery_web/live/range_live/index.html.heex:37
#: lib/cannery_web/live/container_live/show.html.heex:58
#, elixir-autogen, elixir-format
msgid "Unstage from range"
msgstr ""
@ -227,8 +220,8 @@ msgstr ""
msgid "Export Data as JSON"
msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:87
#: lib/cannery_web/live/container_live/index.html.heex:145
#: lib/cannery_web/live/container_live/index.html.heex:101
#: lib/cannery_web/live/container_live/index.html.heex:159
#, elixir-autogen, elixir-format
msgid "Clone %{container_name}"
msgstr ""
@ -238,8 +231,8 @@ msgstr ""
msgid "Copy invite link for %{invite_name}"
msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:104
#: lib/cannery_web/live/container_live/index.html.heex:162
#: lib/cannery_web/live/container_live/index.html.heex:118
#: lib/cannery_web/live/container_live/index.html.heex:176
#: lib/cannery_web/live/container_live/show.html.heex:48
#, elixir-autogen, elixir-format
msgid "Delete %{container_name}"
@ -255,8 +248,8 @@ msgstr ""
msgid "Delete invite for %{invite_name}"
msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:77
#: lib/cannery_web/live/container_live/index.html.heex:135
#: lib/cannery_web/live/container_live/index.html.heex:91
#: lib/cannery_web/live/container_live/index.html.heex:149
#: lib/cannery_web/live/container_live/show.html.heex:35
#, elixir-autogen, elixir-format
msgid "Edit %{container_name}"
@ -272,54 +265,56 @@ msgstr ""
msgid "Edit invite for %{invite_name}"
msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:120
#: lib/cannery_web/live/container_live/index.html.heex:69
#: lib/cannery_web/live/range_live/index.html.heex:35
#, elixir-autogen, elixir-format
msgid "Stage"
msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:65
#: lib/cannery_web/live/container_live/index.html.heex:124
#: lib/cannery_web/live/container_live/index.html.heex:79
#: lib/cannery_web/live/container_live/index.html.heex:138
#, elixir-autogen, elixir-format
msgid "Tag %{container_name}"
msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:119
#: lib/cannery_web/live/container_live/index.html.heex:68
#: lib/cannery_web/live/range_live/index.html.heex:34
#, elixir-autogen, elixir-format
msgid "Unstage"
msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:172
#: lib/cannery_web/live/pack_live/index.html.heex:161
#, elixir-autogen, elixir-format
msgid "Clone pack of %{pack_count} bullets"
msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:187
#: lib/cannery_web/live/pack_live/index.html.heex:176
#: lib/cannery_web/live/pack_live/show.html.heex:71
#, elixir-autogen, elixir-format
msgid "Delete pack of %{pack_count} bullets"
msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:160
#: lib/cannery_web/live/pack_live/index.html.heex:149
#: lib/cannery_web/live/pack_live/show.html.heex:59
#, elixir-autogen, elixir-format
msgid "Edit pack of %{pack_count} bullets"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:139
#: lib/cannery_web/live/pack_live/index.html.heex:148
#: lib/cannery_web/live/container_live/show.html.heex:147
#: lib/cannery_web/live/pack_live/index.html.heex:137
#: lib/cannery_web/live/type_live/show.html.heex:201
#, elixir-autogen, elixir-format
msgid "View pack of %{pack_count} bullets"
msgstr ""
#: lib/cannery_web/live/pack_live/show.ex:159
#: lib/cannery_web/live/range_live/index.html.heex:154
#: lib/cannery_web/live/pack_live/show.ex:149
#: lib/cannery_web/live/range_live/index.html.heex:181
#, elixir-autogen, elixir-format
msgid "Delete shot record of %{shot_record_count} shots"
msgstr ""
#: lib/cannery_web/live/pack_live/show.ex:144
#: lib/cannery_web/live/range_live/index.html.heex:137
#: lib/cannery_web/live/pack_live/show.ex:134
#: lib/cannery_web/live/range_live/index.html.heex:164
#, elixir-autogen, elixir-format
msgid "Edit shot record of %{shot_record_count} shots"
msgstr ""
@ -355,3 +350,8 @@ msgstr ""
#, elixir-autogen, elixir-format
msgid "add a type first"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:17
#, elixir-autogen, elixir-format
msgid "Stage containers"
msgstr ""

View File

@ -144,7 +144,7 @@ msgstr "Speichern"
msgid "Send instructions to reset password"
msgstr "Anleitung zum Passwort zurücksetzen zusenden"
#: lib/cannery_web/live/container_live/show.html.heex:65
#: lib/cannery_web/live/container_live/show.html.heex:73
#, elixir-autogen, elixir-format
msgid "Why not add one?"
msgstr "Warum fügen Sie keine hinzu?"
@ -154,19 +154,14 @@ msgstr "Warum fügen Sie keine hinzu?"
msgid "Add"
msgstr "Hinzufügen"
#: lib/cannery_web/live/range_live/index.html.heex:17
#, elixir-autogen, elixir-format
msgid "Stage ammo"
msgstr "Munition markieren"
#: lib/cannery_web/live/range_live/index.html.heex:13
#, elixir-autogen, elixir-format
msgid "Why not get some ready to shoot?"
msgstr "Warum nicht einige für den Schießstand auswählen?"
#: lib/cannery_web/live/pack_live/index.html.heex:127
#: lib/cannery_web/live/pack_live/show.html.heex:90
#: lib/cannery_web/live/range_live/index.html.heex:42
#: lib/cannery_web/live/pack_live/index.html.heex:116
#: lib/cannery_web/live/pack_live/show.html.heex:84
#: lib/cannery_web/live/range_live/index.html.heex:54
#, elixir-autogen, elixir-format
msgid "Record shots"
msgstr "Schüsse dokumentieren"
@ -212,8 +207,8 @@ msgid "View in Catalog"
msgstr ""
#: lib/cannery_web/components/move_pack_component.ex:77
#: lib/cannery_web/live/pack_live/index.html.heex:138
#: lib/cannery_web/live/pack_live/show.html.heex:86
#: lib/cannery_web/live/pack_live/index.html.heex:127
#: lib/cannery_web/live/pack_live/show.html.heex:80
#, elixir-autogen, elixir-format
msgid "Move ammo"
msgstr ""
@ -223,14 +218,12 @@ msgstr ""
msgid "Set Unlimited"
msgstr ""
#: lib/cannery_web/live/pack_live/show.html.heex:82
#: lib/cannery_web/live/range_live/index.html.heex:38
#: lib/cannery_web/live/container_live/show.html.heex:59
#, elixir-autogen, elixir-format
msgid "Stage for range"
msgstr ""
#: lib/cannery_web/live/pack_live/show.html.heex:81
#: lib/cannery_web/live/range_live/index.html.heex:37
#: lib/cannery_web/live/container_live/show.html.heex:58
#, elixir-autogen, elixir-format
msgid "Unstage from range"
msgstr ""
@ -240,8 +233,8 @@ msgstr ""
msgid "Export Data as JSON"
msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:87
#: lib/cannery_web/live/container_live/index.html.heex:145
#: lib/cannery_web/live/container_live/index.html.heex:101
#: lib/cannery_web/live/container_live/index.html.heex:159
#, elixir-autogen, elixir-format
msgid "Clone %{container_name}"
msgstr ""
@ -251,8 +244,8 @@ msgstr ""
msgid "Copy invite link for %{invite_name}"
msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:104
#: lib/cannery_web/live/container_live/index.html.heex:162
#: lib/cannery_web/live/container_live/index.html.heex:118
#: lib/cannery_web/live/container_live/index.html.heex:176
#: lib/cannery_web/live/container_live/show.html.heex:48
#, elixir-autogen, elixir-format
msgid "Delete %{container_name}"
@ -268,8 +261,8 @@ msgstr ""
msgid "Delete invite for %{invite_name}"
msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:77
#: lib/cannery_web/live/container_live/index.html.heex:135
#: lib/cannery_web/live/container_live/index.html.heex:91
#: lib/cannery_web/live/container_live/index.html.heex:149
#: lib/cannery_web/live/container_live/show.html.heex:35
#, elixir-autogen, elixir-format
msgid "Edit %{container_name}"
@ -285,54 +278,56 @@ msgstr ""
msgid "Edit invite for %{invite_name}"
msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:120
#: lib/cannery_web/live/container_live/index.html.heex:69
#: lib/cannery_web/live/range_live/index.html.heex:35
#, elixir-autogen, elixir-format, fuzzy
msgid "Stage"
msgstr "Munition markieren"
#: lib/cannery_web/live/container_live/index.html.heex:65
#: lib/cannery_web/live/container_live/index.html.heex:124
#: lib/cannery_web/live/container_live/index.html.heex:79
#: lib/cannery_web/live/container_live/index.html.heex:138
#, elixir-autogen, elixir-format
msgid "Tag %{container_name}"
msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:119
#: lib/cannery_web/live/container_live/index.html.heex:68
#: lib/cannery_web/live/range_live/index.html.heex:34
#, elixir-autogen, elixir-format
msgid "Unstage"
msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:172
#: lib/cannery_web/live/pack_live/index.html.heex:161
#, elixir-autogen, elixir-format, fuzzy
msgid "Clone pack of %{pack_count} bullets"
msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:187
#: lib/cannery_web/live/pack_live/index.html.heex:176
#: lib/cannery_web/live/pack_live/show.html.heex:71
#, elixir-autogen, elixir-format, fuzzy
msgid "Delete pack of %{pack_count} bullets"
msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:160
#: lib/cannery_web/live/pack_live/index.html.heex:149
#: lib/cannery_web/live/pack_live/show.html.heex:59
#, elixir-autogen, elixir-format, fuzzy
msgid "Edit pack of %{pack_count} bullets"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:139
#: lib/cannery_web/live/pack_live/index.html.heex:148
#: lib/cannery_web/live/container_live/show.html.heex:147
#: lib/cannery_web/live/pack_live/index.html.heex:137
#: lib/cannery_web/live/type_live/show.html.heex:201
#, elixir-autogen, elixir-format, fuzzy
msgid "View pack of %{pack_count} bullets"
msgstr ""
#: lib/cannery_web/live/pack_live/show.ex:159
#: lib/cannery_web/live/range_live/index.html.heex:154
#: lib/cannery_web/live/pack_live/show.ex:149
#: lib/cannery_web/live/range_live/index.html.heex:181
#, elixir-autogen, elixir-format, fuzzy
msgid "Delete shot record of %{shot_record_count} shots"
msgstr ""
#: lib/cannery_web/live/pack_live/show.ex:144
#: lib/cannery_web/live/range_live/index.html.heex:137
#: lib/cannery_web/live/pack_live/show.ex:134
#: lib/cannery_web/live/range_live/index.html.heex:164
#, elixir-autogen, elixir-format, fuzzy
msgid "Edit shot record of %{shot_record_count} shots"
msgstr ""
@ -368,3 +363,8 @@ msgstr ""
#, elixir-autogen, elixir-format, fuzzy
msgid "add a type first"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:17
#, elixir-autogen, elixir-format
msgid "Stage containers"
msgstr ""

View File

@ -117,7 +117,7 @@ msgstr "Anzahl"
msgid "Count:"
msgstr "Anzahl:"
#: lib/cannery_web/components/container_table_component.ex:46
#: lib/cannery_web/components/container_table_component.ex:50
#: lib/cannery_web/live/container_live/form_component.html.heex:30
#: lib/cannery_web/live/type_live/form_component.html.heex:43
#, elixir-autogen, elixir-format
@ -189,7 +189,7 @@ msgstr "Einladungen"
msgid "Keep me logged in for 60 days"
msgstr "Für 60 Tage eingeloggt bleiben"
#: lib/cannery_web/components/container_table_component.ex:47
#: lib/cannery_web/components/container_table_component.ex:51
#: lib/cannery_web/components/move_pack_component.ex:66
#: lib/cannery_web/live/container_live/form_component.html.heex:49
#, elixir-autogen, elixir-format
@ -224,7 +224,7 @@ msgstr "Metallene Munitionskiste mit Anime-Girl-Sticker"
msgid "My cool ammo can"
msgstr "Meine coole Munitionskiste"
#: lib/cannery_web/components/container_table_component.ex:45
#: lib/cannery_web/components/container_table_component.ex:49
#: lib/cannery_web/components/type_table_component.ex:152
#: lib/cannery_web/live/container_live/form_component.html.heex:21
#: lib/cannery_web/live/invite_live/form_component.html.heex:21
@ -281,7 +281,7 @@ msgstr "Keine Tags"
#: lib/cannery_web/components/add_shot_record_component.html.heex:38
#: lib/cannery_web/components/shot_record_table_component.ex:46
#: lib/cannery_web/live/pack_live/form_component.html.heex:75
#: lib/cannery_web/live/pack_live/show.ex:90
#: lib/cannery_web/live/pack_live/show.ex:80
#: lib/cannery_web/live/range_live/form_component.html.heex:30
#, elixir-autogen, elixir-format
msgid "Notes"
@ -354,12 +354,12 @@ msgstr "Einfach:"
msgid "Steel"
msgstr "Stahl"
#: lib/cannery_web/live/pack_live/show.html.heex:100
#: lib/cannery_web/live/pack_live/show.html.heex:94
#, elixir-autogen, elixir-format
msgid "Stored in"
msgstr "Gelagert in"
#: lib/cannery_web/components/container_table_component.ex:66
#: lib/cannery_web/components/container_table_component.ex:73
#: lib/cannery_web/components/core_components/topbar.html.heex:28
#: lib/cannery_web/live/tag_live/index.ex:43
#: lib/cannery_web/live/tag_live/index.ex:53
@ -389,7 +389,7 @@ msgstr "Die selbst-gehostete Website zur Verwaltung von Schusswaffen"
msgid "Tracer"
msgstr "Leuchtspur"
#: lib/cannery_web/components/container_table_component.ex:48
#: lib/cannery_web/components/container_table_component.ex:52
#: lib/cannery_web/components/move_pack_component.ex:65
#: lib/cannery_web/components/pack_table_component.ex:108
#: lib/cannery_web/live/container_live/form_component.html.heex:40
@ -419,15 +419,16 @@ msgstr "Verbleibende Nutzung"
msgid "Your data stays with you, period"
msgstr "Ihre Daten bleiben bei Ihnen, Punkt"
#: lib/cannery_web/live/container_live/show.html.heex:60
#: lib/cannery_web/live/container_live/show.html.heex:68
#, elixir-autogen, elixir-format
msgid "No tags for this container"
msgstr "Keine Tags für diesen Behälter"
#: lib/cannery_web/components/container_table_component.ex:77
#: lib/cannery_web/components/core_components/topbar.html.heex:48
#: lib/cannery_web/components/pack_table_component.ex:80
#: lib/cannery_web/live/range_live/index.ex:55
#: lib/cannery_web/live/range_live/index.ex:65
#: lib/cannery_web/live/range_live/index.ex:76
#: lib/cannery_web/live/range_live/index.ex:86
#, elixir-autogen, elixir-format
msgid "Range"
msgstr "Schießplatz"
@ -439,7 +440,7 @@ msgstr "Range Day"
#: lib/cannery_web/components/add_shot_record_component.html.heex:49
#: lib/cannery_web/components/shot_record_table_component.ex:47
#: lib/cannery_web/live/pack_live/show.ex:91
#: lib/cannery_web/live/pack_live/show.ex:81
#: lib/cannery_web/live/range_live/form_component.html.heex:41
#, elixir-autogen, elixir-format
msgid "Date"
@ -450,26 +451,21 @@ msgstr "Datum"
msgid "Shots fired"
msgstr "Schüsse abgegeben"
#: lib/cannery_web/live/range_live/index.html.heex:8
#, elixir-autogen, elixir-format
msgid "No ammo staged"
msgstr "Keine Munition selektiert"
#: lib/cannery_web/components/add_shot_record_component.html.heex:3
#: lib/cannery_web/live/pack_live/index.ex:35
#, elixir-autogen, elixir-format
msgid "Record shots"
msgstr "Schüsse dokumentieren"
#: lib/cannery_web/live/range_live/index.html.heex:52
#: lib/cannery_web/live/range_live/index.html.heex:121
#: lib/cannery_web/live/range_live/index.html.heex:64
#: lib/cannery_web/live/range_live/index.html.heex:148
#, elixir-autogen, elixir-format
msgid "No shots recorded"
msgstr "Keine Schüsse dokumentiert"
#: lib/cannery_web/components/shot_record_table_component.ex:45
#: lib/cannery_web/live/pack_live/show.ex:89
#: lib/cannery_web/live/range_live/index.html.heex:66
#: lib/cannery_web/live/pack_live/show.ex:79
#: lib/cannery_web/live/range_live/index.html.heex:78
#, elixir-autogen, elixir-format
msgid "Rounds shot"
msgstr "Patronen abgefeuert"
@ -484,7 +480,7 @@ msgstr "Munition verschieben"
msgid "No other containers"
msgstr "Kein weiterer Behälter"
#: lib/cannery_web/live/range_live/index.html.heex:57
#: lib/cannery_web/live/range_live/index.html.heex:69
#, elixir-autogen, elixir-format
msgid "Shot log"
msgstr "Schießkladde"
@ -492,7 +488,7 @@ msgstr "Schießkladde"
#: lib/cannery_web/components/core_components/pack_card.html.heex:42
#: lib/cannery_web/components/core_components/pack_card.html.heex:47
#: lib/cannery_web/components/pack_table_component.ex:181
#: lib/cannery_web/components/pack_table_component.ex:264
#: lib/cannery_web/components/pack_table_component.ex:263
#: lib/cannery_web/components/type_table_component.ex:273
#: lib/cannery_web/live/pack_live/show.html.heex:37
#: lib/cannery_web/live/pack_live/show.html.heex:42
@ -565,13 +561,13 @@ msgid "Reconnecting..."
msgstr "Neu verbinden..."
#: lib/cannery_web/live/container_live/index.ex:28
#: lib/cannery_web/live/container_live/show.ex:118
#: lib/cannery_web/live/container_live/show.ex:130
#, elixir-autogen, elixir-format
msgid "Edit %{name}"
msgstr "%{name} bearbeiten"
#: lib/cannery_web/live/container_live/index.ex:63
#: lib/cannery_web/live/container_live/show.ex:119
#: lib/cannery_web/live/container_live/show.ex:131
#, elixir-autogen, elixir-format
msgid "Edit %{name} tags"
msgstr "Editiere %{name} Tags"
@ -584,7 +580,7 @@ msgid "Rounds:"
msgstr "Patronen:"
#: lib/cannery_web/components/pack_table_component.ex:178
#: lib/cannery_web/components/pack_table_component.ex:260
#: lib/cannery_web/components/pack_table_component.ex:259
#: lib/cannery_web/components/type_table_component.ex:272
#: lib/cannery_web/live/type_live/show.html.heex:154
#, elixir-autogen, elixir-format
@ -616,7 +612,7 @@ msgstr "Ursprüngliche Anzahl:"
msgid "Percentage left:"
msgstr "Prozent verbleibend:"
#: lib/cannery_web/live/pack_live/show.html.heex:113
#: lib/cannery_web/live/pack_live/show.html.heex:107
#, elixir-autogen, elixir-format
msgid "Rounds used"
msgstr "Patronen verbraucht"
@ -647,8 +643,8 @@ msgid "Reset your password"
msgstr "Passwort zurücksetzen"
#: lib/cannery_web/live/pack_live/show.ex:40
#: lib/cannery_web/live/range_live/index.ex:31
#: lib/cannery_web/live/range_live/index.ex:47
#: lib/cannery_web/live/range_live/index.ex:52
#: lib/cannery_web/live/range_live/index.ex:68
#, elixir-autogen, elixir-format
msgid "Record Shots"
msgstr "Schüsse dokumentieren"
@ -706,7 +702,7 @@ msgstr "Munitionstyp bearbeiten"
msgid "Move Ammo"
msgstr "Munition verschieben"
#: lib/cannery_web/live/container_live/show.html.heex:117
#: lib/cannery_web/live/container_live/show.html.heex:125
#, elixir-autogen, elixir-format, fuzzy
msgid "No ammo in this container"
msgstr "Keine Munitionsgruppe in diesem Behälter"
@ -716,7 +712,7 @@ msgstr "Keine Munitionsgruppe in diesem Behälter"
msgid "Show Ammo"
msgstr "Zeige Munitionsarten"
#: lib/cannery_web/live/pack_live/show.html.heex:105
#: lib/cannery_web/live/pack_live/show.html.heex:99
#, elixir-autogen, elixir-format, fuzzy
msgid "This ammo is not in a container"
msgstr "Diese Munitionsgruppe ist nicht in einem Behälter"
@ -756,31 +752,31 @@ msgstr "Behälter"
msgid "Show used"
msgstr ""
#: lib/cannery_web/components/pack_table_component.ex:219
#: lib/cannery_web/components/pack_table_component.ex:218
#: lib/cannery_web/live/pack_live/show.html.heex:19
#, elixir-autogen, elixir-format
msgid "%{percentage}%"
msgstr ""
#: lib/cannery_web/live/range_live/index.ex:153
#: lib/cannery_web/live/range_live/index.ex:215
#, elixir-autogen, elixir-format, fuzzy
msgid "Rounds shot: %{count}"
msgstr "Patronen abgefeuert"
#: lib/cannery_web/components/container_table_component.ex:64
#: lib/cannery_web/components/container_table_component.ex:68
#: lib/cannery_web/components/type_table_component.ex:122
#, elixir-autogen, elixir-format, fuzzy
msgid "Packs"
msgstr ""
#: lib/cannery_web/components/container_table_component.ex:65
#: lib/cannery_web/components/container_table_component.ex:69
#: lib/cannery_web/components/type_table_component.ex:143
#, elixir-autogen, elixir-format, fuzzy
msgid "Rounds"
msgstr "Patronen:"
#: lib/cannery_web/live/container_live/index.html.heex:40
#: lib/cannery_web/live/container_live/show.html.heex:109
#: lib/cannery_web/live/container_live/show.html.heex:117
#: lib/cannery_web/live/type_live/show.html.heex:170
#, elixir-autogen, elixir-format
msgid "View as table"
@ -826,7 +822,7 @@ msgstr ""
msgid "Used rounds:"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:68
#: lib/cannery_web/live/range_live/index.html.heex:80
#, elixir-autogen, elixir-format, fuzzy
msgid "Rounds shot chart"
msgstr "Patronen abgefeuert"
@ -933,7 +929,7 @@ msgid "Average CPR"
msgstr ""
#: lib/cannery_web/components/core_components/pack_card.html.heex:17
#: lib/cannery_web/components/pack_table_component.ex:268
#: lib/cannery_web/components/pack_table_component.ex:267
#, elixir-autogen, elixir-format
msgid "Empty"
msgstr ""
@ -1015,7 +1011,7 @@ msgstr ""
msgid "Search tags"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:112
#: lib/cannery_web/live/range_live/index.html.heex:124
#, elixir-autogen, elixir-format
msgid "Search shot records"
msgstr ""
@ -1150,12 +1146,12 @@ msgstr ""
msgid "Really great weather"
msgstr ""
#: lib/cannery_web/components/container_table_component.ex:67
#: lib/cannery_web/components/container_table_component.ex:74
#: lib/cannery_web/components/move_pack_component.ex:67
#: lib/cannery_web/components/pack_table_component.ex:62
#: lib/cannery_web/components/shot_record_table_component.ex:48
#: lib/cannery_web/components/type_table_component.ex:99
#: lib/cannery_web/live/pack_live/show.ex:92
#: lib/cannery_web/live/pack_live/show.ex:82
#, elixir-autogen, elixir-format
msgid "Actions"
msgstr ""
@ -1181,9 +1177,9 @@ msgstr ""
msgid "Close modal"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:97
#: lib/cannery_web/live/container_live/show.html.heex:105
#: lib/cannery_web/live/pack_live/index.html.heex:58
#: lib/cannery_web/live/range_live/index.html.heex:91
#: lib/cannery_web/live/range_live/index.html.heex:103
#: lib/cannery_web/live/type_live/index.html.heex:37
#, elixir-autogen, elixir-format
msgid "All"
@ -1264,10 +1260,10 @@ msgstr "Keine Munition"
msgid "None specified"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:100
#: lib/cannery_web/live/container_live/show.html.heex:108
#: lib/cannery_web/live/pack_live/form_component.html.heex:30
#: lib/cannery_web/live/pack_live/index.html.heex:61
#: lib/cannery_web/live/range_live/index.html.heex:94
#: lib/cannery_web/live/range_live/index.html.heex:106
#: lib/cannery_web/live/type_live/form_component.html.heex:28
#: lib/cannery_web/live/type_live/index.html.heex:40
#: lib/cannery_web/live/type_live/show.html.heex:56
@ -1290,10 +1286,10 @@ msgstr "Zündertyp"
msgid "Projectile"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:98
#: lib/cannery_web/live/container_live/show.html.heex:106
#: lib/cannery_web/live/pack_live/form_component.html.heex:28
#: lib/cannery_web/live/pack_live/index.html.heex:59
#: lib/cannery_web/live/range_live/index.html.heex:92
#: lib/cannery_web/live/range_live/index.html.heex:104
#: lib/cannery_web/live/type_live/form_component.html.heex:26
#: lib/cannery_web/live/type_live/index.html.heex:38
#: lib/cannery_web/live/type_live/show.html.heex:54
@ -1345,10 +1341,10 @@ msgstr ""
msgid "Shot type:"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:99
#: lib/cannery_web/live/container_live/show.html.heex:107
#: lib/cannery_web/live/pack_live/form_component.html.heex:29
#: lib/cannery_web/live/pack_live/index.html.heex:60
#: lib/cannery_web/live/range_live/index.html.heex:93
#: lib/cannery_web/live/range_live/index.html.heex:105
#: lib/cannery_web/live/type_live/form_component.html.heex:27
#: lib/cannery_web/live/type_live/index.html.heex:39
#: lib/cannery_web/live/type_live/show.html.heex:52
@ -1390,10 +1386,10 @@ msgid "Wadding:"
msgstr ""
#: lib/cannery_web/components/type_table_component.ex:149
#: lib/cannery_web/live/container_live/show.html.heex:91
#: lib/cannery_web/live/container_live/show.html.heex:99
#: lib/cannery_web/live/pack_live/form_component.html.heex:22
#: lib/cannery_web/live/pack_live/index.html.heex:50
#: lib/cannery_web/live/range_live/index.html.heex:83
#: lib/cannery_web/live/range_live/index.html.heex:95
#: lib/cannery_web/live/type_live/form_component.html.heex:21
#: lib/cannery_web/live/type_live/index.html.heex:29
#: lib/cannery_web/live/type_live/show.html.heex:46
@ -1413,7 +1409,7 @@ msgid "Used up!"
msgstr ""
#: lib/cannery_web/live/pack_live/show.ex:41
#: lib/cannery_web/live/range_live/index.ex:39
#: lib/cannery_web/live/range_live/index.ex:60
#, elixir-autogen, elixir-format, fuzzy
msgid "Edit Shot Record"
msgstr "Schießkladde editieren"
@ -1451,3 +1447,13 @@ msgstr ""
#, elixir-autogen, elixir-format
msgid "Any"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:138
#, elixir-autogen, elixir-format, fuzzy
msgid "Dates"
msgstr "Datum"
#: lib/cannery_web/live/range_live/index.html.heex:8
#, elixir-autogen, elixir-format, fuzzy
msgid "No containers staged"
msgstr "Kein Behälter"

View File

@ -23,7 +23,7 @@ msgstr ""
## Run "mix gettext.extract" to bring this file up to
## date. Leave "msgstr"s empty as changing them here has no
## effect: edit them in PO (.po) files instead.
#: lib/cannery/containers.ex:222
#: lib/cannery/containers.ex:234
#, elixir-autogen, elixir-format
msgid "Container must be empty before deleting"
msgstr "Behälter muss vor dem Löschen leer sein"
@ -170,7 +170,7 @@ msgstr ""
"Ungültige Nummer an Kopien. Muss zwischen 1 and %{max} liegen. War "
"%{multiplier}"
#: lib/cannery_web/live/range_live/index.html.heex:71
#: lib/cannery_web/live/range_live/index.html.heex:83
#, elixir-autogen, elixir-format
msgid "Your browser does not support the canvas element."
msgstr ""
@ -216,12 +216,12 @@ msgstr ""
msgid "You must log in to access this page."
msgstr ""
#: lib/cannery/ammo/pack.ex:98
#: lib/cannery/ammo/pack.ex:101
#, elixir-autogen, elixir-format, fuzzy
msgid "Please select a valid container"
msgstr ""
#: lib/cannery/ammo/pack.ex:96
#: lib/cannery/ammo/pack.ex:99
#, elixir-autogen, elixir-format, fuzzy
msgid "Please select a valid type"
msgstr ""

View File

@ -58,22 +58,22 @@ msgid "A link to confirm your email change has been sent to the new address."
msgstr "Eine Mail zum Bestätigen ihre Mailadresse wurde Ihnen zugesandt."
#: lib/cannery_web/live/invite_live/index.html.heex:110
#: lib/cannery_web/live/invite_live/index.html.heex:138
#: lib/cannery_web/live/invite_live/index.html.heex:145
#, elixir-autogen, elixir-format
msgid "Are you sure you want to delete %{email}? This action is permanent!"
msgstr ""
"Sind Sie sicher, dass sie %{email} löschen möchten? Dies kann nicht "
"zurückgenommen werden!"
#: lib/cannery_web/live/container_live/index.html.heex:99
#: lib/cannery_web/live/container_live/index.html.heex:157
#: lib/cannery_web/live/container_live/index.html.heex:113
#: lib/cannery_web/live/container_live/index.html.heex:171
#: lib/cannery_web/live/container_live/show.html.heex:45
#: lib/cannery_web/live/tag_live/index.html.heex:63
#, elixir-autogen, elixir-format
msgid "Are you sure you want to delete %{name}?"
msgstr "Sind Sie sicher, dass sie %{name} löschen möchten?"
#: lib/cannery_web/live/pack_live/index.html.heex:185
#: lib/cannery_web/live/pack_live/index.html.heex:174
#: lib/cannery_web/live/pack_live/show.html.heex:69
#, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this ammo?"
@ -171,19 +171,14 @@ msgstr "Füge hinzu..."
msgid "Shots recorded successfully"
msgstr "Schüsse erfolgreich dokumentiert"
#: lib/cannery_web/live/range_live/index.html.heex:34
#, elixir-autogen, elixir-format
msgid "Are you sure you want to unstage this ammo?"
msgstr "Sind sie sicher, dass Sie diese Munition demarkieren möchten?"
#: lib/cannery_web/live/pack_live/show.ex:157
#: lib/cannery_web/live/range_live/index.html.heex:151
#: lib/cannery_web/live/pack_live/show.ex:147
#: lib/cannery_web/live/range_live/index.html.heex:178
#, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this shot record?"
msgstr "Sind sie sicher, dass sie die Schießkladde löschen möchten?"
#: lib/cannery_web/live/pack_live/show.ex:79
#: lib/cannery_web/live/range_live/index.ex:78
#: lib/cannery_web/live/pack_live/show.ex:69
#: lib/cannery_web/live/range_live/index.ex:99
#, elixir-autogen, elixir-format
msgid "Shot records deleted succesfully"
msgstr "Schießkladde erfolgreich gelöscht"
@ -240,11 +235,6 @@ msgstr "Spracheinstellung gespeichert."
msgid "Ammo deleted succesfully"
msgstr "Munitionsgruppe erfolgreich gelöscht"
#: lib/cannery_web/live/range_live/index.ex:91
#, elixir-autogen, elixir-format, fuzzy
msgid "Ammo unstaged succesfully"
msgstr "Munition erfolgreich demarkiert"
#: lib/cannery_web/live/pack_live/form_component.ex:141
#, elixir-autogen, elixir-format, fuzzy
msgid "Ammo updated successfully"
@ -288,7 +278,7 @@ msgstr "%{name} erfolgreich aktiviert"
msgid "%{invite_name} updated succesfully"
msgstr "%{name} erfolgreich aktualisiert"
#: lib/cannery_web/live/invite_live/index.ex:125
#: lib/cannery_web/live/invite_live/index.ex:139
#, elixir-autogen, elixir-format, fuzzy
msgid "%{user_email} deleted succesfully"
msgstr "%{name} erfolgreich gelöscht"
@ -302,3 +292,13 @@ msgstr "Sind Sie sicher, dass sie die Einladung für %{name} löschen möchten?"
#, elixir-autogen, elixir-format, fuzzy
msgid "Are you sure you want to make %{invite_name} unlimited?"
msgstr "Sind Sie sicher, dass sie %{name} auf unbegrenzt setzen möchten?"
#: lib/cannery_web/live/range_live/index.ex:114
#, elixir-autogen, elixir-format
msgid "Container unstaged succesfully"
msgstr ""
#: lib/cannery_web/live/invite_live/index.ex:128
#, elixir-autogen, elixir-format
msgid "Email resent to %{user_email} succesfully"
msgstr ""

View File

@ -113,7 +113,7 @@ msgstr ""
msgid "Count:"
msgstr ""
#: lib/cannery_web/components/container_table_component.ex:46
#: lib/cannery_web/components/container_table_component.ex:50
#: lib/cannery_web/live/container_live/form_component.html.heex:30
#: lib/cannery_web/live/type_live/form_component.html.heex:43
#, elixir-autogen, elixir-format
@ -185,7 +185,7 @@ msgstr ""
msgid "Keep me logged in for 60 days"
msgstr ""
#: lib/cannery_web/components/container_table_component.ex:47
#: lib/cannery_web/components/container_table_component.ex:51
#: lib/cannery_web/components/move_pack_component.ex:66
#: lib/cannery_web/live/container_live/form_component.html.heex:49
#, elixir-autogen, elixir-format
@ -220,7 +220,7 @@ msgstr ""
msgid "My cool ammo can"
msgstr ""
#: lib/cannery_web/components/container_table_component.ex:45
#: lib/cannery_web/components/container_table_component.ex:49
#: lib/cannery_web/components/type_table_component.ex:152
#: lib/cannery_web/live/container_live/form_component.html.heex:21
#: lib/cannery_web/live/invite_live/form_component.html.heex:21
@ -277,7 +277,7 @@ msgstr ""
#: lib/cannery_web/components/add_shot_record_component.html.heex:38
#: lib/cannery_web/components/shot_record_table_component.ex:46
#: lib/cannery_web/live/pack_live/form_component.html.heex:75
#: lib/cannery_web/live/pack_live/show.ex:90
#: lib/cannery_web/live/pack_live/show.ex:80
#: lib/cannery_web/live/range_live/form_component.html.heex:30
#, elixir-autogen, elixir-format
msgid "Notes"
@ -348,12 +348,12 @@ msgstr ""
msgid "Steel"
msgstr ""
#: lib/cannery_web/live/pack_live/show.html.heex:100
#: lib/cannery_web/live/pack_live/show.html.heex:94
#, elixir-autogen, elixir-format
msgid "Stored in"
msgstr ""
#: lib/cannery_web/components/container_table_component.ex:66
#: lib/cannery_web/components/container_table_component.ex:73
#: lib/cannery_web/components/core_components/topbar.html.heex:28
#: lib/cannery_web/live/tag_live/index.ex:43
#: lib/cannery_web/live/tag_live/index.ex:53
@ -383,7 +383,7 @@ msgstr ""
msgid "Tracer"
msgstr ""
#: lib/cannery_web/components/container_table_component.ex:48
#: lib/cannery_web/components/container_table_component.ex:52
#: lib/cannery_web/components/move_pack_component.ex:65
#: lib/cannery_web/components/pack_table_component.ex:108
#: lib/cannery_web/live/container_live/form_component.html.heex:40
@ -413,15 +413,16 @@ msgstr ""
msgid "Your data stays with you, period"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:60
#: lib/cannery_web/live/container_live/show.html.heex:68
#, elixir-autogen, elixir-format
msgid "No tags for this container"
msgstr ""
#: lib/cannery_web/components/container_table_component.ex:77
#: lib/cannery_web/components/core_components/topbar.html.heex:48
#: lib/cannery_web/components/pack_table_component.ex:80
#: lib/cannery_web/live/range_live/index.ex:55
#: lib/cannery_web/live/range_live/index.ex:65
#: lib/cannery_web/live/range_live/index.ex:76
#: lib/cannery_web/live/range_live/index.ex:86
#, elixir-autogen, elixir-format
msgid "Range"
msgstr ""
@ -433,7 +434,7 @@ msgstr ""
#: lib/cannery_web/components/add_shot_record_component.html.heex:49
#: lib/cannery_web/components/shot_record_table_component.ex:47
#: lib/cannery_web/live/pack_live/show.ex:91
#: lib/cannery_web/live/pack_live/show.ex:81
#: lib/cannery_web/live/range_live/form_component.html.heex:41
#, elixir-autogen, elixir-format
msgid "Date"
@ -444,26 +445,21 @@ msgstr ""
msgid "Shots fired"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:8
#, elixir-autogen, elixir-format
msgid "No ammo staged"
msgstr ""
#: lib/cannery_web/components/add_shot_record_component.html.heex:3
#: lib/cannery_web/live/pack_live/index.ex:35
#, elixir-autogen, elixir-format
msgid "Record shots"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:52
#: lib/cannery_web/live/range_live/index.html.heex:121
#: lib/cannery_web/live/range_live/index.html.heex:64
#: lib/cannery_web/live/range_live/index.html.heex:148
#, elixir-autogen, elixir-format
msgid "No shots recorded"
msgstr ""
#: lib/cannery_web/components/shot_record_table_component.ex:45
#: lib/cannery_web/live/pack_live/show.ex:89
#: lib/cannery_web/live/range_live/index.html.heex:66
#: lib/cannery_web/live/pack_live/show.ex:79
#: lib/cannery_web/live/range_live/index.html.heex:78
#, elixir-autogen, elixir-format
msgid "Rounds shot"
msgstr ""
@ -478,7 +474,7 @@ msgstr ""
msgid "No other containers"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:57
#: lib/cannery_web/live/range_live/index.html.heex:69
#, elixir-autogen, elixir-format
msgid "Shot log"
msgstr ""
@ -486,7 +482,7 @@ msgstr ""
#: lib/cannery_web/components/core_components/pack_card.html.heex:42
#: lib/cannery_web/components/core_components/pack_card.html.heex:47
#: lib/cannery_web/components/pack_table_component.ex:181
#: lib/cannery_web/components/pack_table_component.ex:264
#: lib/cannery_web/components/pack_table_component.ex:263
#: lib/cannery_web/components/type_table_component.ex:273
#: lib/cannery_web/live/pack_live/show.html.heex:37
#: lib/cannery_web/live/pack_live/show.html.heex:42
@ -559,13 +555,13 @@ msgid "Reconnecting..."
msgstr ""
#: lib/cannery_web/live/container_live/index.ex:28
#: lib/cannery_web/live/container_live/show.ex:118
#: lib/cannery_web/live/container_live/show.ex:130
#, elixir-autogen, elixir-format
msgid "Edit %{name}"
msgstr ""
#: lib/cannery_web/live/container_live/index.ex:63
#: lib/cannery_web/live/container_live/show.ex:119
#: lib/cannery_web/live/container_live/show.ex:131
#, elixir-autogen, elixir-format
msgid "Edit %{name} tags"
msgstr ""
@ -578,7 +574,7 @@ msgid "Rounds:"
msgstr ""
#: lib/cannery_web/components/pack_table_component.ex:178
#: lib/cannery_web/components/pack_table_component.ex:260
#: lib/cannery_web/components/pack_table_component.ex:259
#: lib/cannery_web/components/type_table_component.ex:272
#: lib/cannery_web/live/type_live/show.html.heex:154
#, elixir-autogen, elixir-format
@ -610,7 +606,7 @@ msgstr ""
msgid "Percentage left:"
msgstr ""
#: lib/cannery_web/live/pack_live/show.html.heex:113
#: lib/cannery_web/live/pack_live/show.html.heex:107
#, elixir-autogen, elixir-format
msgid "Rounds used"
msgstr ""
@ -641,8 +637,8 @@ msgid "Reset your password"
msgstr ""
#: lib/cannery_web/live/pack_live/show.ex:40
#: lib/cannery_web/live/range_live/index.ex:31
#: lib/cannery_web/live/range_live/index.ex:47
#: lib/cannery_web/live/range_live/index.ex:52
#: lib/cannery_web/live/range_live/index.ex:68
#, elixir-autogen, elixir-format
msgid "Record Shots"
msgstr ""
@ -700,7 +696,7 @@ msgstr ""
msgid "Move Ammo"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:117
#: lib/cannery_web/live/container_live/show.html.heex:125
#, elixir-autogen, elixir-format
msgid "No ammo in this container"
msgstr ""
@ -710,7 +706,7 @@ msgstr ""
msgid "Show Ammo"
msgstr ""
#: lib/cannery_web/live/pack_live/show.html.heex:105
#: lib/cannery_web/live/pack_live/show.html.heex:99
#, elixir-autogen, elixir-format
msgid "This ammo is not in a container"
msgstr ""
@ -750,31 +746,31 @@ msgstr ""
msgid "Show used"
msgstr ""
#: lib/cannery_web/components/pack_table_component.ex:219
#: lib/cannery_web/components/pack_table_component.ex:218
#: lib/cannery_web/live/pack_live/show.html.heex:19
#, elixir-autogen, elixir-format
msgid "%{percentage}%"
msgstr ""
#: lib/cannery_web/live/range_live/index.ex:153
#: lib/cannery_web/live/range_live/index.ex:215
#, elixir-autogen, elixir-format
msgid "Rounds shot: %{count}"
msgstr ""
#: lib/cannery_web/components/container_table_component.ex:64
#: lib/cannery_web/components/container_table_component.ex:68
#: lib/cannery_web/components/type_table_component.ex:122
#, elixir-autogen, elixir-format
msgid "Packs"
msgstr ""
#: lib/cannery_web/components/container_table_component.ex:65
#: lib/cannery_web/components/container_table_component.ex:69
#: lib/cannery_web/components/type_table_component.ex:143
#, elixir-autogen, elixir-format
msgid "Rounds"
msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:40
#: lib/cannery_web/live/container_live/show.html.heex:109
#: lib/cannery_web/live/container_live/show.html.heex:117
#: lib/cannery_web/live/type_live/show.html.heex:170
#, elixir-autogen, elixir-format
msgid "View as table"
@ -820,7 +816,7 @@ msgstr ""
msgid "Used rounds:"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:68
#: lib/cannery_web/live/range_live/index.html.heex:80
#, elixir-autogen, elixir-format
msgid "Rounds shot chart"
msgstr ""
@ -927,7 +923,7 @@ msgid "Average CPR"
msgstr ""
#: lib/cannery_web/components/core_components/pack_card.html.heex:17
#: lib/cannery_web/components/pack_table_component.ex:268
#: lib/cannery_web/components/pack_table_component.ex:267
#, elixir-autogen, elixir-format
msgid "Empty"
msgstr ""
@ -1009,7 +1005,7 @@ msgstr ""
msgid "Search tags"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:112
#: lib/cannery_web/live/range_live/index.html.heex:124
#, elixir-autogen, elixir-format
msgid "Search shot records"
msgstr ""
@ -1133,12 +1129,12 @@ msgstr ""
msgid "Really great weather"
msgstr ""
#: lib/cannery_web/components/container_table_component.ex:67
#: lib/cannery_web/components/container_table_component.ex:74
#: lib/cannery_web/components/move_pack_component.ex:67
#: lib/cannery_web/components/pack_table_component.ex:62
#: lib/cannery_web/components/shot_record_table_component.ex:48
#: lib/cannery_web/components/type_table_component.ex:99
#: lib/cannery_web/live/pack_live/show.ex:92
#: lib/cannery_web/live/pack_live/show.ex:82
#, elixir-autogen, elixir-format
msgid "Actions"
msgstr ""
@ -1164,9 +1160,9 @@ msgstr ""
msgid "Close modal"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:97
#: lib/cannery_web/live/container_live/show.html.heex:105
#: lib/cannery_web/live/pack_live/index.html.heex:58
#: lib/cannery_web/live/range_live/index.html.heex:91
#: lib/cannery_web/live/range_live/index.html.heex:103
#: lib/cannery_web/live/type_live/index.html.heex:37
#, elixir-autogen, elixir-format
msgid "All"
@ -1247,10 +1243,10 @@ msgstr ""
msgid "None specified"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:100
#: lib/cannery_web/live/container_live/show.html.heex:108
#: lib/cannery_web/live/pack_live/form_component.html.heex:30
#: lib/cannery_web/live/pack_live/index.html.heex:61
#: lib/cannery_web/live/range_live/index.html.heex:94
#: lib/cannery_web/live/range_live/index.html.heex:106
#: lib/cannery_web/live/type_live/form_component.html.heex:28
#: lib/cannery_web/live/type_live/index.html.heex:40
#: lib/cannery_web/live/type_live/show.html.heex:56
@ -1273,10 +1269,10 @@ msgstr ""
msgid "Projectile"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:98
#: lib/cannery_web/live/container_live/show.html.heex:106
#: lib/cannery_web/live/pack_live/form_component.html.heex:28
#: lib/cannery_web/live/pack_live/index.html.heex:59
#: lib/cannery_web/live/range_live/index.html.heex:92
#: lib/cannery_web/live/range_live/index.html.heex:104
#: lib/cannery_web/live/type_live/form_component.html.heex:26
#: lib/cannery_web/live/type_live/index.html.heex:38
#: lib/cannery_web/live/type_live/show.html.heex:54
@ -1328,10 +1324,10 @@ msgstr ""
msgid "Shot type:"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:99
#: lib/cannery_web/live/container_live/show.html.heex:107
#: lib/cannery_web/live/pack_live/form_component.html.heex:29
#: lib/cannery_web/live/pack_live/index.html.heex:60
#: lib/cannery_web/live/range_live/index.html.heex:93
#: lib/cannery_web/live/range_live/index.html.heex:105
#: lib/cannery_web/live/type_live/form_component.html.heex:27
#: lib/cannery_web/live/type_live/index.html.heex:39
#: lib/cannery_web/live/type_live/show.html.heex:52
@ -1373,10 +1369,10 @@ msgid "Wadding:"
msgstr ""
#: lib/cannery_web/components/type_table_component.ex:149
#: lib/cannery_web/live/container_live/show.html.heex:91
#: lib/cannery_web/live/container_live/show.html.heex:99
#: lib/cannery_web/live/pack_live/form_component.html.heex:22
#: lib/cannery_web/live/pack_live/index.html.heex:50
#: lib/cannery_web/live/range_live/index.html.heex:83
#: lib/cannery_web/live/range_live/index.html.heex:95
#: lib/cannery_web/live/type_live/form_component.html.heex:21
#: lib/cannery_web/live/type_live/index.html.heex:29
#: lib/cannery_web/live/type_live/show.html.heex:46
@ -1396,7 +1392,7 @@ msgid "Used up!"
msgstr ""
#: lib/cannery_web/live/pack_live/show.ex:41
#: lib/cannery_web/live/range_live/index.ex:39
#: lib/cannery_web/live/range_live/index.ex:60
#, elixir-autogen, elixir-format
msgid "Edit Shot Record"
msgstr ""
@ -1434,3 +1430,13 @@ msgstr ""
#, elixir-autogen, elixir-format
msgid "Any"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:138
#, elixir-autogen, elixir-format
msgid "Dates"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:8
#, elixir-autogen, elixir-format
msgid "No containers staged"
msgstr ""

View File

@ -131,7 +131,7 @@ msgstr ""
msgid "Send instructions to reset password"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:65
#: lib/cannery_web/live/container_live/show.html.heex:73
#, elixir-autogen, elixir-format
msgid "Why not add one?"
msgstr ""
@ -141,19 +141,14 @@ msgstr ""
msgid "Add"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:17
#, elixir-autogen, elixir-format
msgid "Stage ammo"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:13
#, elixir-autogen, elixir-format
msgid "Why not get some ready to shoot?"
msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:127
#: lib/cannery_web/live/pack_live/show.html.heex:90
#: lib/cannery_web/live/range_live/index.html.heex:42
#: lib/cannery_web/live/pack_live/index.html.heex:116
#: lib/cannery_web/live/pack_live/show.html.heex:84
#: lib/cannery_web/live/range_live/index.html.heex:54
#, elixir-autogen, elixir-format
msgid "Record shots"
msgstr ""
@ -199,8 +194,8 @@ msgid "View in Catalog"
msgstr ""
#: lib/cannery_web/components/move_pack_component.ex:77
#: lib/cannery_web/live/pack_live/index.html.heex:138
#: lib/cannery_web/live/pack_live/show.html.heex:86
#: lib/cannery_web/live/pack_live/index.html.heex:127
#: lib/cannery_web/live/pack_live/show.html.heex:80
#, elixir-autogen, elixir-format
msgid "Move ammo"
msgstr ""
@ -210,14 +205,12 @@ msgstr ""
msgid "Set Unlimited"
msgstr ""
#: lib/cannery_web/live/pack_live/show.html.heex:82
#: lib/cannery_web/live/range_live/index.html.heex:38
#: lib/cannery_web/live/container_live/show.html.heex:59
#, elixir-autogen, elixir-format
msgid "Stage for range"
msgstr ""
#: lib/cannery_web/live/pack_live/show.html.heex:81
#: lib/cannery_web/live/range_live/index.html.heex:37
#: lib/cannery_web/live/container_live/show.html.heex:58
#, elixir-autogen, elixir-format
msgid "Unstage from range"
msgstr ""
@ -227,8 +220,8 @@ msgstr ""
msgid "Export Data as JSON"
msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:87
#: lib/cannery_web/live/container_live/index.html.heex:145
#: lib/cannery_web/live/container_live/index.html.heex:101
#: lib/cannery_web/live/container_live/index.html.heex:159
#, elixir-autogen, elixir-format
msgid "Clone %{container_name}"
msgstr ""
@ -238,8 +231,8 @@ msgstr ""
msgid "Copy invite link for %{invite_name}"
msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:104
#: lib/cannery_web/live/container_live/index.html.heex:162
#: lib/cannery_web/live/container_live/index.html.heex:118
#: lib/cannery_web/live/container_live/index.html.heex:176
#: lib/cannery_web/live/container_live/show.html.heex:48
#, elixir-autogen, elixir-format
msgid "Delete %{container_name}"
@ -255,8 +248,8 @@ msgstr ""
msgid "Delete invite for %{invite_name}"
msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:77
#: lib/cannery_web/live/container_live/index.html.heex:135
#: lib/cannery_web/live/container_live/index.html.heex:91
#: lib/cannery_web/live/container_live/index.html.heex:149
#: lib/cannery_web/live/container_live/show.html.heex:35
#, elixir-autogen, elixir-format
msgid "Edit %{container_name}"
@ -272,54 +265,56 @@ msgstr ""
msgid "Edit invite for %{invite_name}"
msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:120
#: lib/cannery_web/live/container_live/index.html.heex:69
#: lib/cannery_web/live/range_live/index.html.heex:35
#, elixir-autogen, elixir-format, fuzzy
msgid "Stage"
msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:65
#: lib/cannery_web/live/container_live/index.html.heex:124
#: lib/cannery_web/live/container_live/index.html.heex:79
#: lib/cannery_web/live/container_live/index.html.heex:138
#, elixir-autogen, elixir-format
msgid "Tag %{container_name}"
msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:119
#: lib/cannery_web/live/container_live/index.html.heex:68
#: lib/cannery_web/live/range_live/index.html.heex:34
#, elixir-autogen, elixir-format
msgid "Unstage"
msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:172
#: lib/cannery_web/live/pack_live/index.html.heex:161
#, elixir-autogen, elixir-format, fuzzy
msgid "Clone pack of %{pack_count} bullets"
msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:187
#: lib/cannery_web/live/pack_live/index.html.heex:176
#: lib/cannery_web/live/pack_live/show.html.heex:71
#, elixir-autogen, elixir-format, fuzzy
msgid "Delete pack of %{pack_count} bullets"
msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:160
#: lib/cannery_web/live/pack_live/index.html.heex:149
#: lib/cannery_web/live/pack_live/show.html.heex:59
#, elixir-autogen, elixir-format, fuzzy
msgid "Edit pack of %{pack_count} bullets"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:139
#: lib/cannery_web/live/pack_live/index.html.heex:148
#: lib/cannery_web/live/container_live/show.html.heex:147
#: lib/cannery_web/live/pack_live/index.html.heex:137
#: lib/cannery_web/live/type_live/show.html.heex:201
#, elixir-autogen, elixir-format, fuzzy
msgid "View pack of %{pack_count} bullets"
msgstr ""
#: lib/cannery_web/live/pack_live/show.ex:159
#: lib/cannery_web/live/range_live/index.html.heex:154
#: lib/cannery_web/live/pack_live/show.ex:149
#: lib/cannery_web/live/range_live/index.html.heex:181
#, elixir-autogen, elixir-format, fuzzy
msgid "Delete shot record of %{shot_record_count} shots"
msgstr ""
#: lib/cannery_web/live/pack_live/show.ex:144
#: lib/cannery_web/live/range_live/index.html.heex:137
#: lib/cannery_web/live/pack_live/show.ex:134
#: lib/cannery_web/live/range_live/index.html.heex:164
#, elixir-autogen, elixir-format, fuzzy
msgid "Edit shot record of %{shot_record_count} shots"
msgstr ""
@ -355,3 +350,8 @@ msgstr ""
#, elixir-autogen, elixir-format, fuzzy
msgid "add a type first"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:17
#, elixir-autogen, elixir-format
msgid "Stage containers"
msgstr ""

View File

@ -113,7 +113,7 @@ msgstr ""
msgid "Count:"
msgstr ""
#: lib/cannery_web/components/container_table_component.ex:46
#: lib/cannery_web/components/container_table_component.ex:50
#: lib/cannery_web/live/container_live/form_component.html.heex:30
#: lib/cannery_web/live/type_live/form_component.html.heex:43
#, elixir-autogen, elixir-format
@ -185,7 +185,7 @@ msgstr ""
msgid "Keep me logged in for 60 days"
msgstr ""
#: lib/cannery_web/components/container_table_component.ex:47
#: lib/cannery_web/components/container_table_component.ex:51
#: lib/cannery_web/components/move_pack_component.ex:66
#: lib/cannery_web/live/container_live/form_component.html.heex:49
#, elixir-autogen, elixir-format
@ -220,7 +220,7 @@ msgstr ""
msgid "My cool ammo can"
msgstr ""
#: lib/cannery_web/components/container_table_component.ex:45
#: lib/cannery_web/components/container_table_component.ex:49
#: lib/cannery_web/components/type_table_component.ex:152
#: lib/cannery_web/live/container_live/form_component.html.heex:21
#: lib/cannery_web/live/invite_live/form_component.html.heex:21
@ -277,7 +277,7 @@ msgstr ""
#: lib/cannery_web/components/add_shot_record_component.html.heex:38
#: lib/cannery_web/components/shot_record_table_component.ex:46
#: lib/cannery_web/live/pack_live/form_component.html.heex:75
#: lib/cannery_web/live/pack_live/show.ex:90
#: lib/cannery_web/live/pack_live/show.ex:80
#: lib/cannery_web/live/range_live/form_component.html.heex:30
#, elixir-autogen, elixir-format
msgid "Notes"
@ -348,12 +348,12 @@ msgstr ""
msgid "Steel"
msgstr ""
#: lib/cannery_web/live/pack_live/show.html.heex:100
#: lib/cannery_web/live/pack_live/show.html.heex:94
#, elixir-autogen, elixir-format
msgid "Stored in"
msgstr ""
#: lib/cannery_web/components/container_table_component.ex:66
#: lib/cannery_web/components/container_table_component.ex:73
#: lib/cannery_web/components/core_components/topbar.html.heex:28
#: lib/cannery_web/live/tag_live/index.ex:43
#: lib/cannery_web/live/tag_live/index.ex:53
@ -383,7 +383,7 @@ msgstr ""
msgid "Tracer"
msgstr ""
#: lib/cannery_web/components/container_table_component.ex:48
#: lib/cannery_web/components/container_table_component.ex:52
#: lib/cannery_web/components/move_pack_component.ex:65
#: lib/cannery_web/components/pack_table_component.ex:108
#: lib/cannery_web/live/container_live/form_component.html.heex:40
@ -413,15 +413,16 @@ msgstr ""
msgid "Your data stays with you, period"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:60
#: lib/cannery_web/live/container_live/show.html.heex:68
#, elixir-autogen, elixir-format
msgid "No tags for this container"
msgstr ""
#: lib/cannery_web/components/container_table_component.ex:77
#: lib/cannery_web/components/core_components/topbar.html.heex:48
#: lib/cannery_web/components/pack_table_component.ex:80
#: lib/cannery_web/live/range_live/index.ex:55
#: lib/cannery_web/live/range_live/index.ex:65
#: lib/cannery_web/live/range_live/index.ex:76
#: lib/cannery_web/live/range_live/index.ex:86
#, elixir-autogen, elixir-format
msgid "Range"
msgstr ""
@ -433,7 +434,7 @@ msgstr ""
#: lib/cannery_web/components/add_shot_record_component.html.heex:49
#: lib/cannery_web/components/shot_record_table_component.ex:47
#: lib/cannery_web/live/pack_live/show.ex:91
#: lib/cannery_web/live/pack_live/show.ex:81
#: lib/cannery_web/live/range_live/form_component.html.heex:41
#, elixir-autogen, elixir-format
msgid "Date"
@ -444,26 +445,21 @@ msgstr ""
msgid "Shots fired"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:8
#, elixir-autogen, elixir-format
msgid "No ammo staged"
msgstr ""
#: lib/cannery_web/components/add_shot_record_component.html.heex:3
#: lib/cannery_web/live/pack_live/index.ex:35
#, elixir-autogen, elixir-format
msgid "Record shots"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:52
#: lib/cannery_web/live/range_live/index.html.heex:121
#: lib/cannery_web/live/range_live/index.html.heex:64
#: lib/cannery_web/live/range_live/index.html.heex:148
#, elixir-autogen, elixir-format
msgid "No shots recorded"
msgstr ""
#: lib/cannery_web/components/shot_record_table_component.ex:45
#: lib/cannery_web/live/pack_live/show.ex:89
#: lib/cannery_web/live/range_live/index.html.heex:66
#: lib/cannery_web/live/pack_live/show.ex:79
#: lib/cannery_web/live/range_live/index.html.heex:78
#, elixir-autogen, elixir-format
msgid "Rounds shot"
msgstr ""
@ -478,7 +474,7 @@ msgstr ""
msgid "No other containers"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:57
#: lib/cannery_web/live/range_live/index.html.heex:69
#, elixir-autogen, elixir-format
msgid "Shot log"
msgstr ""
@ -486,7 +482,7 @@ msgstr ""
#: lib/cannery_web/components/core_components/pack_card.html.heex:42
#: lib/cannery_web/components/core_components/pack_card.html.heex:47
#: lib/cannery_web/components/pack_table_component.ex:181
#: lib/cannery_web/components/pack_table_component.ex:264
#: lib/cannery_web/components/pack_table_component.ex:263
#: lib/cannery_web/components/type_table_component.ex:273
#: lib/cannery_web/live/pack_live/show.html.heex:37
#: lib/cannery_web/live/pack_live/show.html.heex:42
@ -559,13 +555,13 @@ msgid "Reconnecting..."
msgstr ""
#: lib/cannery_web/live/container_live/index.ex:28
#: lib/cannery_web/live/container_live/show.ex:118
#: lib/cannery_web/live/container_live/show.ex:130
#, elixir-autogen, elixir-format
msgid "Edit %{name}"
msgstr ""
#: lib/cannery_web/live/container_live/index.ex:63
#: lib/cannery_web/live/container_live/show.ex:119
#: lib/cannery_web/live/container_live/show.ex:131
#, elixir-autogen, elixir-format
msgid "Edit %{name} tags"
msgstr ""
@ -578,7 +574,7 @@ msgid "Rounds:"
msgstr ""
#: lib/cannery_web/components/pack_table_component.ex:178
#: lib/cannery_web/components/pack_table_component.ex:260
#: lib/cannery_web/components/pack_table_component.ex:259
#: lib/cannery_web/components/type_table_component.ex:272
#: lib/cannery_web/live/type_live/show.html.heex:154
#, elixir-autogen, elixir-format
@ -610,7 +606,7 @@ msgstr ""
msgid "Percentage left:"
msgstr ""
#: lib/cannery_web/live/pack_live/show.html.heex:113
#: lib/cannery_web/live/pack_live/show.html.heex:107
#, elixir-autogen, elixir-format, fuzzy
msgid "Rounds used"
msgstr ""
@ -641,8 +637,8 @@ msgid "Reset your password"
msgstr ""
#: lib/cannery_web/live/pack_live/show.ex:40
#: lib/cannery_web/live/range_live/index.ex:31
#: lib/cannery_web/live/range_live/index.ex:47
#: lib/cannery_web/live/range_live/index.ex:52
#: lib/cannery_web/live/range_live/index.ex:68
#, elixir-autogen, elixir-format, fuzzy
msgid "Record Shots"
msgstr ""
@ -700,7 +696,7 @@ msgstr ""
msgid "Move Ammo"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:117
#: lib/cannery_web/live/container_live/show.html.heex:125
#, elixir-autogen, elixir-format, fuzzy
msgid "No ammo in this container"
msgstr ""
@ -710,7 +706,7 @@ msgstr ""
msgid "Show Ammo"
msgstr ""
#: lib/cannery_web/live/pack_live/show.html.heex:105
#: lib/cannery_web/live/pack_live/show.html.heex:99
#, elixir-autogen, elixir-format, fuzzy
msgid "This ammo is not in a container"
msgstr ""
@ -750,31 +746,31 @@ msgstr ""
msgid "Show used"
msgstr ""
#: lib/cannery_web/components/pack_table_component.ex:219
#: lib/cannery_web/components/pack_table_component.ex:218
#: lib/cannery_web/live/pack_live/show.html.heex:19
#, elixir-autogen, elixir-format
msgid "%{percentage}%"
msgstr ""
#: lib/cannery_web/live/range_live/index.ex:153
#: lib/cannery_web/live/range_live/index.ex:215
#, elixir-autogen, elixir-format, fuzzy
msgid "Rounds shot: %{count}"
msgstr ""
#: lib/cannery_web/components/container_table_component.ex:64
#: lib/cannery_web/components/container_table_component.ex:68
#: lib/cannery_web/components/type_table_component.ex:122
#, elixir-autogen, elixir-format, fuzzy
msgid "Packs"
msgstr ""
#: lib/cannery_web/components/container_table_component.ex:65
#: lib/cannery_web/components/container_table_component.ex:69
#: lib/cannery_web/components/type_table_component.ex:143
#, elixir-autogen, elixir-format, fuzzy
msgid "Rounds"
msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:40
#: lib/cannery_web/live/container_live/show.html.heex:109
#: lib/cannery_web/live/container_live/show.html.heex:117
#: lib/cannery_web/live/type_live/show.html.heex:170
#, elixir-autogen, elixir-format
msgid "View as table"
@ -820,7 +816,7 @@ msgstr ""
msgid "Used rounds:"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:68
#: lib/cannery_web/live/range_live/index.html.heex:80
#, elixir-autogen, elixir-format, fuzzy
msgid "Rounds shot chart"
msgstr ""
@ -927,7 +923,7 @@ msgid "Average CPR"
msgstr ""
#: lib/cannery_web/components/core_components/pack_card.html.heex:17
#: lib/cannery_web/components/pack_table_component.ex:268
#: lib/cannery_web/components/pack_table_component.ex:267
#, elixir-autogen, elixir-format
msgid "Empty"
msgstr ""
@ -1009,7 +1005,7 @@ msgstr ""
msgid "Search tags"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:112
#: lib/cannery_web/live/range_live/index.html.heex:124
#, elixir-autogen, elixir-format
msgid "Search shot records"
msgstr ""
@ -1133,12 +1129,12 @@ msgstr ""
msgid "Really great weather"
msgstr ""
#: lib/cannery_web/components/container_table_component.ex:67
#: lib/cannery_web/components/container_table_component.ex:74
#: lib/cannery_web/components/move_pack_component.ex:67
#: lib/cannery_web/components/pack_table_component.ex:62
#: lib/cannery_web/components/shot_record_table_component.ex:48
#: lib/cannery_web/components/type_table_component.ex:99
#: lib/cannery_web/live/pack_live/show.ex:92
#: lib/cannery_web/live/pack_live/show.ex:82
#, elixir-autogen, elixir-format
msgid "Actions"
msgstr ""
@ -1164,9 +1160,9 @@ msgstr ""
msgid "Close modal"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:97
#: lib/cannery_web/live/container_live/show.html.heex:105
#: lib/cannery_web/live/pack_live/index.html.heex:58
#: lib/cannery_web/live/range_live/index.html.heex:91
#: lib/cannery_web/live/range_live/index.html.heex:103
#: lib/cannery_web/live/type_live/index.html.heex:37
#, elixir-autogen, elixir-format
msgid "All"
@ -1247,10 +1243,10 @@ msgstr ""
msgid "None specified"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:100
#: lib/cannery_web/live/container_live/show.html.heex:108
#: lib/cannery_web/live/pack_live/form_component.html.heex:30
#: lib/cannery_web/live/pack_live/index.html.heex:61
#: lib/cannery_web/live/range_live/index.html.heex:94
#: lib/cannery_web/live/range_live/index.html.heex:106
#: lib/cannery_web/live/type_live/form_component.html.heex:28
#: lib/cannery_web/live/type_live/index.html.heex:40
#: lib/cannery_web/live/type_live/show.html.heex:56
@ -1273,10 +1269,10 @@ msgstr ""
msgid "Projectile"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:98
#: lib/cannery_web/live/container_live/show.html.heex:106
#: lib/cannery_web/live/pack_live/form_component.html.heex:28
#: lib/cannery_web/live/pack_live/index.html.heex:59
#: lib/cannery_web/live/range_live/index.html.heex:92
#: lib/cannery_web/live/range_live/index.html.heex:104
#: lib/cannery_web/live/type_live/form_component.html.heex:26
#: lib/cannery_web/live/type_live/index.html.heex:38
#: lib/cannery_web/live/type_live/show.html.heex:54
@ -1328,10 +1324,10 @@ msgstr ""
msgid "Shot type:"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:99
#: lib/cannery_web/live/container_live/show.html.heex:107
#: lib/cannery_web/live/pack_live/form_component.html.heex:29
#: lib/cannery_web/live/pack_live/index.html.heex:60
#: lib/cannery_web/live/range_live/index.html.heex:93
#: lib/cannery_web/live/range_live/index.html.heex:105
#: lib/cannery_web/live/type_live/form_component.html.heex:27
#: lib/cannery_web/live/type_live/index.html.heex:39
#: lib/cannery_web/live/type_live/show.html.heex:52
@ -1373,10 +1369,10 @@ msgid "Wadding:"
msgstr ""
#: lib/cannery_web/components/type_table_component.ex:149
#: lib/cannery_web/live/container_live/show.html.heex:91
#: lib/cannery_web/live/container_live/show.html.heex:99
#: lib/cannery_web/live/pack_live/form_component.html.heex:22
#: lib/cannery_web/live/pack_live/index.html.heex:50
#: lib/cannery_web/live/range_live/index.html.heex:83
#: lib/cannery_web/live/range_live/index.html.heex:95
#: lib/cannery_web/live/type_live/form_component.html.heex:21
#: lib/cannery_web/live/type_live/index.html.heex:29
#: lib/cannery_web/live/type_live/show.html.heex:46
@ -1396,7 +1392,7 @@ msgid "Used up!"
msgstr ""
#: lib/cannery_web/live/pack_live/show.ex:41
#: lib/cannery_web/live/range_live/index.ex:39
#: lib/cannery_web/live/range_live/index.ex:60
#, elixir-autogen, elixir-format, fuzzy
msgid "Edit Shot Record"
msgstr ""
@ -1434,3 +1430,13 @@ msgstr ""
#, elixir-autogen, elixir-format
msgid "Any"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:138
#, elixir-autogen, elixir-format, fuzzy
msgid "Dates"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:8
#, elixir-autogen, elixir-format, fuzzy
msgid "No containers staged"
msgstr ""

View File

@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Language: en\n"
#: lib/cannery/containers.ex:222
#: lib/cannery/containers.ex:234
#, elixir-autogen, elixir-format
msgid "Container must be empty before deleting"
msgstr ""
@ -153,7 +153,7 @@ msgstr ""
msgid "Invalid number of copies, must be between 1 and %{max}. Was %{multiplier}"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:71
#: lib/cannery_web/live/range_live/index.html.heex:83
#, elixir-autogen, elixir-format
msgid "Your browser does not support the canvas element."
msgstr ""
@ -199,12 +199,12 @@ msgstr ""
msgid "You must log in to access this page."
msgstr ""
#: lib/cannery/ammo/pack.ex:98
#: lib/cannery/ammo/pack.ex:101
#, elixir-autogen, elixir-format, fuzzy
msgid "Please select a valid container"
msgstr ""
#: lib/cannery/ammo/pack.ex:96
#: lib/cannery/ammo/pack.ex:99
#, elixir-autogen, elixir-format, fuzzy
msgid "Please select a valid type"
msgstr ""

View File

@ -45,20 +45,20 @@ msgid "A link to confirm your email change has been sent to the new address."
msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:110
#: lib/cannery_web/live/invite_live/index.html.heex:138
#: lib/cannery_web/live/invite_live/index.html.heex:145
#, elixir-autogen, elixir-format
msgid "Are you sure you want to delete %{email}? This action is permanent!"
msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:99
#: lib/cannery_web/live/container_live/index.html.heex:157
#: lib/cannery_web/live/container_live/index.html.heex:113
#: lib/cannery_web/live/container_live/index.html.heex:171
#: lib/cannery_web/live/container_live/show.html.heex:45
#: lib/cannery_web/live/tag_live/index.html.heex:63
#, elixir-autogen, elixir-format
msgid "Are you sure you want to delete %{name}?"
msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:185
#: lib/cannery_web/live/pack_live/index.html.heex:174
#: lib/cannery_web/live/pack_live/show.html.heex:69
#, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this ammo?"
@ -150,19 +150,14 @@ msgstr ""
msgid "Shots recorded successfully"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:34
#, elixir-autogen, elixir-format
msgid "Are you sure you want to unstage this ammo?"
msgstr ""
#: lib/cannery_web/live/pack_live/show.ex:157
#: lib/cannery_web/live/range_live/index.html.heex:151
#: lib/cannery_web/live/pack_live/show.ex:147
#: lib/cannery_web/live/range_live/index.html.heex:178
#, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this shot record?"
msgstr ""
#: lib/cannery_web/live/pack_live/show.ex:79
#: lib/cannery_web/live/range_live/index.ex:78
#: lib/cannery_web/live/pack_live/show.ex:69
#: lib/cannery_web/live/range_live/index.ex:99
#, elixir-autogen, elixir-format
msgid "Shot records deleted succesfully"
msgstr ""
@ -219,11 +214,6 @@ msgstr ""
msgid "Ammo deleted succesfully"
msgstr ""
#: lib/cannery_web/live/range_live/index.ex:91
#, elixir-autogen, elixir-format, fuzzy
msgid "Ammo unstaged succesfully"
msgstr ""
#: lib/cannery_web/live/pack_live/form_component.ex:141
#, elixir-autogen, elixir-format, fuzzy
msgid "Ammo updated successfully"
@ -267,7 +257,7 @@ msgstr ""
msgid "%{invite_name} updated succesfully"
msgstr ""
#: lib/cannery_web/live/invite_live/index.ex:125
#: lib/cannery_web/live/invite_live/index.ex:139
#, elixir-autogen, elixir-format, fuzzy
msgid "%{user_email} deleted succesfully"
msgstr ""
@ -281,3 +271,13 @@ msgstr ""
#, elixir-autogen, elixir-format, fuzzy
msgid "Are you sure you want to make %{invite_name} unlimited?"
msgstr ""
#: lib/cannery_web/live/range_live/index.ex:114
#, elixir-autogen, elixir-format
msgid "Container unstaged succesfully"
msgstr ""
#: lib/cannery_web/live/invite_live/index.ex:128
#, elixir-autogen, elixir-format
msgid "Email resent to %{user_email} succesfully"
msgstr ""

View File

@ -10,7 +10,7 @@
msgid ""
msgstr ""
#: lib/cannery/containers.ex:222
#: lib/cannery/containers.ex:234
#, elixir-autogen, elixir-format
msgid "Container must be empty before deleting"
msgstr ""
@ -152,7 +152,7 @@ msgstr ""
msgid "Invalid number of copies, must be between 1 and %{max}. Was %{multiplier}"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:71
#: lib/cannery_web/live/range_live/index.html.heex:83
#, elixir-autogen, elixir-format
msgid "Your browser does not support the canvas element."
msgstr ""
@ -198,12 +198,12 @@ msgstr ""
msgid "You must log in to access this page."
msgstr ""
#: lib/cannery/ammo/pack.ex:98
#: lib/cannery/ammo/pack.ex:101
#, elixir-autogen, elixir-format
msgid "Please select a valid container"
msgstr ""
#: lib/cannery/ammo/pack.ex:96
#: lib/cannery/ammo/pack.ex:99
#, elixir-autogen, elixir-format
msgid "Please select a valid type"
msgstr ""

View File

@ -144,7 +144,7 @@ msgstr "Guardar"
msgid "Send instructions to reset password"
msgstr "Enviar instrucciones para reestablecer contraseña"
#: lib/cannery_web/live/container_live/show.html.heex:65
#: lib/cannery_web/live/container_live/show.html.heex:73
#, elixir-autogen, elixir-format
msgid "Why not add one?"
msgstr "¿Por qué no añadir una?"
@ -154,19 +154,14 @@ msgstr "¿Por qué no añadir una?"
msgid "Add"
msgstr "Añadir"
#: lib/cannery_web/live/range_live/index.html.heex:17
#, elixir-autogen, elixir-format
msgid "Stage ammo"
msgstr "Preparar munición"
#: lib/cannery_web/live/range_live/index.html.heex:13
#, elixir-autogen, elixir-format
msgid "Why not get some ready to shoot?"
msgstr "¿Por qué no preparar parte para disparar?"
#: lib/cannery_web/live/pack_live/index.html.heex:127
#: lib/cannery_web/live/pack_live/show.html.heex:90
#: lib/cannery_web/live/range_live/index.html.heex:42
#: lib/cannery_web/live/pack_live/index.html.heex:116
#: lib/cannery_web/live/pack_live/show.html.heex:84
#: lib/cannery_web/live/range_live/index.html.heex:54
#, elixir-autogen, elixir-format
msgid "Record shots"
msgstr "Tiros récord"
@ -212,8 +207,8 @@ msgid "View in Catalog"
msgstr "Ver en Catalogo"
#: lib/cannery_web/components/move_pack_component.ex:77
#: lib/cannery_web/live/pack_live/index.html.heex:138
#: lib/cannery_web/live/pack_live/show.html.heex:86
#: lib/cannery_web/live/pack_live/index.html.heex:127
#: lib/cannery_web/live/pack_live/show.html.heex:80
#, elixir-autogen, elixir-format
msgid "Move ammo"
msgstr "Mover munición"
@ -223,14 +218,12 @@ msgstr "Mover munición"
msgid "Set Unlimited"
msgstr "Activar ilimitados"
#: lib/cannery_web/live/pack_live/show.html.heex:82
#: lib/cannery_web/live/range_live/index.html.heex:38
#: lib/cannery_web/live/container_live/show.html.heex:59
#, elixir-autogen, elixir-format
msgid "Stage for range"
msgstr "Preparar para el campo de tiro"
#: lib/cannery_web/live/pack_live/show.html.heex:81
#: lib/cannery_web/live/range_live/index.html.heex:37
#: lib/cannery_web/live/container_live/show.html.heex:58
#, elixir-autogen, elixir-format
msgid "Unstage from range"
msgstr "Desmontar del campo de tiro"
@ -240,8 +233,8 @@ msgstr "Desmontar del campo de tiro"
msgid "Export Data as JSON"
msgstr "Exportar datos como JSON"
#: lib/cannery_web/live/container_live/index.html.heex:87
#: lib/cannery_web/live/container_live/index.html.heex:145
#: lib/cannery_web/live/container_live/index.html.heex:101
#: lib/cannery_web/live/container_live/index.html.heex:159
#, elixir-autogen, elixir-format
msgid "Clone %{container_name}"
msgstr ""
@ -251,8 +244,8 @@ msgstr ""
msgid "Copy invite link for %{invite_name}"
msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:104
#: lib/cannery_web/live/container_live/index.html.heex:162
#: lib/cannery_web/live/container_live/index.html.heex:118
#: lib/cannery_web/live/container_live/index.html.heex:176
#: lib/cannery_web/live/container_live/show.html.heex:48
#, elixir-autogen, elixir-format
msgid "Delete %{container_name}"
@ -268,8 +261,8 @@ msgstr ""
msgid "Delete invite for %{invite_name}"
msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:77
#: lib/cannery_web/live/container_live/index.html.heex:135
#: lib/cannery_web/live/container_live/index.html.heex:91
#: lib/cannery_web/live/container_live/index.html.heex:149
#: lib/cannery_web/live/container_live/show.html.heex:35
#, elixir-autogen, elixir-format
msgid "Edit %{container_name}"
@ -285,54 +278,56 @@ msgstr ""
msgid "Edit invite for %{invite_name}"
msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:120
#: lib/cannery_web/live/container_live/index.html.heex:69
#: lib/cannery_web/live/range_live/index.html.heex:35
#, elixir-autogen, elixir-format, fuzzy
msgid "Stage"
msgstr "Preparar munición"
#: lib/cannery_web/live/container_live/index.html.heex:65
#: lib/cannery_web/live/container_live/index.html.heex:124
#: lib/cannery_web/live/container_live/index.html.heex:79
#: lib/cannery_web/live/container_live/index.html.heex:138
#, elixir-autogen, elixir-format
msgid "Tag %{container_name}"
msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:119
#: lib/cannery_web/live/container_live/index.html.heex:68
#: lib/cannery_web/live/range_live/index.html.heex:34
#, elixir-autogen, elixir-format
msgid "Unstage"
msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:172
#: lib/cannery_web/live/pack_live/index.html.heex:161
#, elixir-autogen, elixir-format, fuzzy
msgid "Clone pack of %{pack_count} bullets"
msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:187
#: lib/cannery_web/live/pack_live/index.html.heex:176
#: lib/cannery_web/live/pack_live/show.html.heex:71
#, elixir-autogen, elixir-format, fuzzy
msgid "Delete pack of %{pack_count} bullets"
msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:160
#: lib/cannery_web/live/pack_live/index.html.heex:149
#: lib/cannery_web/live/pack_live/show.html.heex:59
#, elixir-autogen, elixir-format, fuzzy
msgid "Edit pack of %{pack_count} bullets"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:139
#: lib/cannery_web/live/pack_live/index.html.heex:148
#: lib/cannery_web/live/container_live/show.html.heex:147
#: lib/cannery_web/live/pack_live/index.html.heex:137
#: lib/cannery_web/live/type_live/show.html.heex:201
#, elixir-autogen, elixir-format, fuzzy
msgid "View pack of %{pack_count} bullets"
msgstr ""
#: lib/cannery_web/live/pack_live/show.ex:159
#: lib/cannery_web/live/range_live/index.html.heex:154
#: lib/cannery_web/live/pack_live/show.ex:149
#: lib/cannery_web/live/range_live/index.html.heex:181
#, elixir-autogen, elixir-format, fuzzy
msgid "Delete shot record of %{shot_record_count} shots"
msgstr ""
#: lib/cannery_web/live/pack_live/show.ex:144
#: lib/cannery_web/live/range_live/index.html.heex:137
#: lib/cannery_web/live/pack_live/show.ex:134
#: lib/cannery_web/live/range_live/index.html.heex:164
#, elixir-autogen, elixir-format, fuzzy
msgid "Edit shot record of %{shot_record_count} shots"
msgstr ""
@ -368,3 +363,8 @@ msgstr ""
#, elixir-autogen, elixir-format, fuzzy
msgid "add a type first"
msgstr "añade primero un tipo de munición"
#: lib/cannery_web/live/range_live/index.html.heex:17
#, elixir-autogen, elixir-format
msgid "Stage containers"
msgstr ""

View File

@ -117,7 +117,7 @@ msgstr "Cantidad"
msgid "Count:"
msgstr "Cantidad:"
#: lib/cannery_web/components/container_table_component.ex:46
#: lib/cannery_web/components/container_table_component.ex:50
#: lib/cannery_web/live/container_live/form_component.html.heex:30
#: lib/cannery_web/live/type_live/form_component.html.heex:43
#, elixir-autogen, elixir-format
@ -189,7 +189,7 @@ msgstr "Invitaciones"
msgid "Keep me logged in for 60 days"
msgstr "Mantener registrado durante 60 días"
#: lib/cannery_web/components/container_table_component.ex:47
#: lib/cannery_web/components/container_table_component.ex:51
#: lib/cannery_web/components/move_pack_component.ex:66
#: lib/cannery_web/live/container_live/form_component.html.heex:49
#, elixir-autogen, elixir-format
@ -224,7 +224,7 @@ msgstr "Lata de munición metálica con la pegatina de chica de anime"
msgid "My cool ammo can"
msgstr "Mi lata de munición guapa"
#: lib/cannery_web/components/container_table_component.ex:45
#: lib/cannery_web/components/container_table_component.ex:49
#: lib/cannery_web/components/type_table_component.ex:152
#: lib/cannery_web/live/container_live/form_component.html.heex:21
#: lib/cannery_web/live/invite_live/form_component.html.heex:21
@ -281,7 +281,7 @@ msgstr "Sin etiquetas"
#: lib/cannery_web/components/add_shot_record_component.html.heex:38
#: lib/cannery_web/components/shot_record_table_component.ex:46
#: lib/cannery_web/live/pack_live/form_component.html.heex:75
#: lib/cannery_web/live/pack_live/show.ex:90
#: lib/cannery_web/live/pack_live/show.ex:80
#: lib/cannery_web/live/range_live/form_component.html.heex:30
#, elixir-autogen, elixir-format
msgid "Notes"
@ -354,12 +354,12 @@ msgstr "Simple:"
msgid "Steel"
msgstr "Acero"
#: lib/cannery_web/live/pack_live/show.html.heex:100
#: lib/cannery_web/live/pack_live/show.html.heex:94
#, elixir-autogen, elixir-format
msgid "Stored in"
msgstr "Guardado en"
#: lib/cannery_web/components/container_table_component.ex:66
#: lib/cannery_web/components/container_table_component.ex:73
#: lib/cannery_web/components/core_components/topbar.html.heex:28
#: lib/cannery_web/live/tag_live/index.ex:43
#: lib/cannery_web/live/tag_live/index.ex:53
@ -390,7 +390,7 @@ msgstr "La página de seguimiento de armas autogestionada"
msgid "Tracer"
msgstr "Trazadora"
#: lib/cannery_web/components/container_table_component.ex:48
#: lib/cannery_web/components/container_table_component.ex:52
#: lib/cannery_web/components/move_pack_component.ex:65
#: lib/cannery_web/components/pack_table_component.ex:108
#: lib/cannery_web/live/container_live/form_component.html.heex:40
@ -420,15 +420,16 @@ msgstr "Usos restantes"
msgid "Your data stays with you, period"
msgstr "Tus datos se quedan contigo, sin excepciones"
#: lib/cannery_web/live/container_live/show.html.heex:60
#: lib/cannery_web/live/container_live/show.html.heex:68
#, elixir-autogen, elixir-format
msgid "No tags for this container"
msgstr "Contenedor sin etiquetas"
#: lib/cannery_web/components/container_table_component.ex:77
#: lib/cannery_web/components/core_components/topbar.html.heex:48
#: lib/cannery_web/components/pack_table_component.ex:80
#: lib/cannery_web/live/range_live/index.ex:55
#: lib/cannery_web/live/range_live/index.ex:65
#: lib/cannery_web/live/range_live/index.ex:76
#: lib/cannery_web/live/range_live/index.ex:86
#, elixir-autogen, elixir-format
msgid "Range"
msgstr "Campo de tiro"
@ -440,7 +441,7 @@ msgstr "Día de disparar"
#: lib/cannery_web/components/add_shot_record_component.html.heex:49
#: lib/cannery_web/components/shot_record_table_component.ex:47
#: lib/cannery_web/live/pack_live/show.ex:91
#: lib/cannery_web/live/pack_live/show.ex:81
#: lib/cannery_web/live/range_live/form_component.html.heex:41
#, elixir-autogen, elixir-format
msgid "Date"
@ -451,26 +452,21 @@ msgstr "Fecha"
msgid "Shots fired"
msgstr "Tiros disparados"
#: lib/cannery_web/live/range_live/index.html.heex:8
#, elixir-autogen, elixir-format
msgid "No ammo staged"
msgstr "No hay munición preparada"
#: lib/cannery_web/components/add_shot_record_component.html.heex:3
#: lib/cannery_web/live/pack_live/index.ex:35
#, elixir-autogen, elixir-format
msgid "Record shots"
msgstr "Tiros récord"
#: lib/cannery_web/live/range_live/index.html.heex:52
#: lib/cannery_web/live/range_live/index.html.heex:121
#: lib/cannery_web/live/range_live/index.html.heex:64
#: lib/cannery_web/live/range_live/index.html.heex:148
#, elixir-autogen, elixir-format
msgid "No shots recorded"
msgstr "No se han grabado tiros"
#: lib/cannery_web/components/shot_record_table_component.ex:45
#: lib/cannery_web/live/pack_live/show.ex:89
#: lib/cannery_web/live/range_live/index.html.heex:66
#: lib/cannery_web/live/pack_live/show.ex:79
#: lib/cannery_web/live/range_live/index.html.heex:78
#, elixir-autogen, elixir-format
msgid "Rounds shot"
msgstr "Balas disparadas"
@ -485,7 +481,7 @@ msgstr "Mover munición"
msgid "No other containers"
msgstr "No hay otros contenedores"
#: lib/cannery_web/live/range_live/index.html.heex:57
#: lib/cannery_web/live/range_live/index.html.heex:69
#, elixir-autogen, elixir-format
msgid "Shot log"
msgstr "Registro de tiros"
@ -493,7 +489,7 @@ msgstr "Registro de tiros"
#: lib/cannery_web/components/core_components/pack_card.html.heex:42
#: lib/cannery_web/components/core_components/pack_card.html.heex:47
#: lib/cannery_web/components/pack_table_component.ex:181
#: lib/cannery_web/components/pack_table_component.ex:264
#: lib/cannery_web/components/pack_table_component.ex:263
#: lib/cannery_web/components/type_table_component.ex:273
#: lib/cannery_web/live/pack_live/show.html.heex:37
#: lib/cannery_web/live/pack_live/show.html.heex:42
@ -566,13 +562,13 @@ msgid "Reconnecting..."
msgstr "Reconectando..."
#: lib/cannery_web/live/container_live/index.ex:28
#: lib/cannery_web/live/container_live/show.ex:118
#: lib/cannery_web/live/container_live/show.ex:130
#, elixir-autogen, elixir-format
msgid "Edit %{name}"
msgstr "Editar %{name}"
#: lib/cannery_web/live/container_live/index.ex:63
#: lib/cannery_web/live/container_live/show.ex:119
#: lib/cannery_web/live/container_live/show.ex:131
#, elixir-autogen, elixir-format
msgid "Edit %{name} tags"
msgstr "Editar etiquetas de %{name}"
@ -585,7 +581,7 @@ msgid "Rounds:"
msgstr "Balas:"
#: lib/cannery_web/components/pack_table_component.ex:178
#: lib/cannery_web/components/pack_table_component.ex:260
#: lib/cannery_web/components/pack_table_component.ex:259
#: lib/cannery_web/components/type_table_component.ex:272
#: lib/cannery_web/live/type_live/show.html.heex:154
#, elixir-autogen, elixir-format
@ -617,7 +613,7 @@ msgstr "Cantidad original:"
msgid "Percentage left:"
msgstr "Pocentaje restante:"
#: lib/cannery_web/live/pack_live/show.html.heex:113
#: lib/cannery_web/live/pack_live/show.html.heex:107
#, elixir-autogen, elixir-format
msgid "Rounds used"
msgstr "Balas usadas"
@ -648,8 +644,8 @@ msgid "Reset your password"
msgstr "Reestablecer contraseña"
#: lib/cannery_web/live/pack_live/show.ex:40
#: lib/cannery_web/live/range_live/index.ex:31
#: lib/cannery_web/live/range_live/index.ex:47
#: lib/cannery_web/live/range_live/index.ex:52
#: lib/cannery_web/live/range_live/index.ex:68
#, elixir-autogen, elixir-format
msgid "Record Shots"
msgstr "Tiros Récord"
@ -707,7 +703,7 @@ msgstr "Editar Munición"
msgid "Move Ammo"
msgstr "Mover Munición"
#: lib/cannery_web/live/container_live/show.html.heex:117
#: lib/cannery_web/live/container_live/show.html.heex:125
#, elixir-autogen, elixir-format
msgid "No ammo in this container"
msgstr "No hay munición en este contenedor"
@ -717,7 +713,7 @@ msgstr "No hay munición en este contenedor"
msgid "Show Ammo"
msgstr "Mostrar Munición"
#: lib/cannery_web/live/pack_live/show.html.heex:105
#: lib/cannery_web/live/pack_live/show.html.heex:99
#, elixir-autogen, elixir-format
msgid "This ammo is not in a container"
msgstr "Esta munición no está en un contenedor"
@ -758,31 +754,31 @@ msgstr "Contenedor:"
msgid "Show used"
msgstr "Mostrar usadas"
#: lib/cannery_web/components/pack_table_component.ex:219
#: lib/cannery_web/components/pack_table_component.ex:218
#: lib/cannery_web/live/pack_live/show.html.heex:19
#, elixir-autogen, elixir-format
msgid "%{percentage}%"
msgstr "%{percentage}%"
#: lib/cannery_web/live/range_live/index.ex:153
#: lib/cannery_web/live/range_live/index.ex:215
#, elixir-autogen, elixir-format, fuzzy
msgid "Rounds shot: %{count}"
msgstr "Balas disparadas: %{count}"
#: lib/cannery_web/components/container_table_component.ex:64
#: lib/cannery_web/components/container_table_component.ex:68
#: lib/cannery_web/components/type_table_component.ex:122
#, elixir-autogen, elixir-format, fuzzy
msgid "Packs"
msgstr "Paquetes"
#: lib/cannery_web/components/container_table_component.ex:65
#: lib/cannery_web/components/container_table_component.ex:69
#: lib/cannery_web/components/type_table_component.ex:143
#, elixir-autogen, elixir-format, fuzzy
msgid "Rounds"
msgstr "Balas"
#: lib/cannery_web/live/container_live/index.html.heex:40
#: lib/cannery_web/live/container_live/show.html.heex:109
#: lib/cannery_web/live/container_live/show.html.heex:117
#: lib/cannery_web/live/type_live/show.html.heex:170
#, elixir-autogen, elixir-format
msgid "View as table"
@ -828,7 +824,7 @@ msgstr "Balas usadas"
msgid "Used rounds:"
msgstr "Balas usadas:"
#: lib/cannery_web/live/range_live/index.html.heex:68
#: lib/cannery_web/live/range_live/index.html.heex:80
#, elixir-autogen, elixir-format, fuzzy
msgid "Rounds shot chart"
msgstr "Tabla de disparos"
@ -935,7 +931,7 @@ msgid "Average CPR"
msgstr ""
#: lib/cannery_web/components/core_components/pack_card.html.heex:17
#: lib/cannery_web/components/pack_table_component.ex:268
#: lib/cannery_web/components/pack_table_component.ex:267
#, elixir-autogen, elixir-format
msgid "Empty"
msgstr "Vacio"
@ -1017,7 +1013,7 @@ msgstr ""
msgid "Search tags"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:112
#: lib/cannery_web/live/range_live/index.html.heex:124
#, elixir-autogen, elixir-format
msgid "Search shot records"
msgstr ""
@ -1152,12 +1148,12 @@ msgstr ""
msgid "Really great weather"
msgstr ""
#: lib/cannery_web/components/container_table_component.ex:67
#: lib/cannery_web/components/container_table_component.ex:74
#: lib/cannery_web/components/move_pack_component.ex:67
#: lib/cannery_web/components/pack_table_component.ex:62
#: lib/cannery_web/components/shot_record_table_component.ex:48
#: lib/cannery_web/components/type_table_component.ex:99
#: lib/cannery_web/live/pack_live/show.ex:92
#: lib/cannery_web/live/pack_live/show.ex:82
#, elixir-autogen, elixir-format
msgid "Actions"
msgstr ""
@ -1183,9 +1179,9 @@ msgstr ""
msgid "Close modal"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:97
#: lib/cannery_web/live/container_live/show.html.heex:105
#: lib/cannery_web/live/pack_live/index.html.heex:58
#: lib/cannery_web/live/range_live/index.html.heex:91
#: lib/cannery_web/live/range_live/index.html.heex:103
#: lib/cannery_web/live/type_live/index.html.heex:37
#, elixir-autogen, elixir-format
msgid "All"
@ -1266,10 +1262,10 @@ msgstr "Sin Munición"
msgid "None specified"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:100
#: lib/cannery_web/live/container_live/show.html.heex:108
#: lib/cannery_web/live/pack_live/form_component.html.heex:30
#: lib/cannery_web/live/pack_live/index.html.heex:61
#: lib/cannery_web/live/range_live/index.html.heex:94
#: lib/cannery_web/live/range_live/index.html.heex:106
#: lib/cannery_web/live/type_live/form_component.html.heex:28
#: lib/cannery_web/live/type_live/index.html.heex:40
#: lib/cannery_web/live/type_live/show.html.heex:56
@ -1292,10 +1288,10 @@ msgstr "Tipo de espoleta"
msgid "Projectile"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:98
#: lib/cannery_web/live/container_live/show.html.heex:106
#: lib/cannery_web/live/pack_live/form_component.html.heex:28
#: lib/cannery_web/live/pack_live/index.html.heex:59
#: lib/cannery_web/live/range_live/index.html.heex:92
#: lib/cannery_web/live/range_live/index.html.heex:104
#: lib/cannery_web/live/type_live/form_component.html.heex:26
#: lib/cannery_web/live/type_live/index.html.heex:38
#: lib/cannery_web/live/type_live/show.html.heex:54
@ -1347,10 +1343,10 @@ msgstr ""
msgid "Shot type:"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:99
#: lib/cannery_web/live/container_live/show.html.heex:107
#: lib/cannery_web/live/pack_live/form_component.html.heex:29
#: lib/cannery_web/live/pack_live/index.html.heex:60
#: lib/cannery_web/live/range_live/index.html.heex:93
#: lib/cannery_web/live/range_live/index.html.heex:105
#: lib/cannery_web/live/type_live/form_component.html.heex:27
#: lib/cannery_web/live/type_live/index.html.heex:39
#: lib/cannery_web/live/type_live/show.html.heex:52
@ -1392,10 +1388,10 @@ msgid "Wadding:"
msgstr ""
#: lib/cannery_web/components/type_table_component.ex:149
#: lib/cannery_web/live/container_live/show.html.heex:91
#: lib/cannery_web/live/container_live/show.html.heex:99
#: lib/cannery_web/live/pack_live/form_component.html.heex:22
#: lib/cannery_web/live/pack_live/index.html.heex:50
#: lib/cannery_web/live/range_live/index.html.heex:83
#: lib/cannery_web/live/range_live/index.html.heex:95
#: lib/cannery_web/live/type_live/form_component.html.heex:21
#: lib/cannery_web/live/type_live/index.html.heex:29
#: lib/cannery_web/live/type_live/show.html.heex:46
@ -1415,7 +1411,7 @@ msgid "Used up!"
msgstr ""
#: lib/cannery_web/live/pack_live/show.ex:41
#: lib/cannery_web/live/range_live/index.ex:39
#: lib/cannery_web/live/range_live/index.ex:60
#, elixir-autogen, elixir-format, fuzzy
msgid "Edit Shot Record"
msgstr "Editar Tiros Récord"
@ -1453,3 +1449,13 @@ msgstr ""
#, elixir-autogen, elixir-format
msgid "Any"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:138
#, elixir-autogen, elixir-format, fuzzy
msgid "Dates"
msgstr "Fecha"
#: lib/cannery_web/live/range_live/index.html.heex:8
#, elixir-autogen, elixir-format, fuzzy
msgid "No containers staged"
msgstr "Sin contenedores"

View File

@ -23,7 +23,7 @@ msgstr ""
## Run "mix gettext.extract" to bring this file up to
## date. Leave "msgstr"s empty as changing them here has no
## effect: edit them in PO (.po) files instead.
#: lib/cannery/containers.ex:222
#: lib/cannery/containers.ex:234
#, elixir-autogen, elixir-format
msgid "Container must be empty before deleting"
msgstr "El contenedor debe estar vacío antes de ser borrado"
@ -168,7 +168,7 @@ msgstr "No se ha podido procesar el número de copias"
msgid "Invalid number of copies, must be between 1 and %{max}. Was %{multiplier}"
msgstr "Número inválido de copias, debe ser entre 1 y %{max}. Fue %{multiplier"
#: lib/cannery_web/live/range_live/index.html.heex:71
#: lib/cannery_web/live/range_live/index.html.heex:83
#, elixir-autogen, elixir-format
msgid "Your browser does not support the canvas element."
msgstr "Su navegador no es compatible con el elemento lienzo."
@ -214,12 +214,12 @@ msgstr ""
msgid "You must log in to access this page."
msgstr ""
#: lib/cannery/ammo/pack.ex:98
#: lib/cannery/ammo/pack.ex:101
#, elixir-autogen, elixir-format, fuzzy
msgid "Please select a valid container"
msgstr "Por favor escoja un tipo de munición y un contenedor"
#: lib/cannery/ammo/pack.ex:96
#: lib/cannery/ammo/pack.ex:99
#, elixir-autogen, elixir-format, fuzzy
msgid "Please select a valid type"
msgstr "Por favor escoja un usuario y tipo de munición valido"

View File

@ -60,20 +60,20 @@ msgstr ""
"dirección."
#: lib/cannery_web/live/invite_live/index.html.heex:110
#: lib/cannery_web/live/invite_live/index.html.heex:138
#: lib/cannery_web/live/invite_live/index.html.heex:145
#, elixir-autogen, elixir-format
msgid "Are you sure you want to delete %{email}? This action is permanent!"
msgstr "Está seguro que desea eliminar %{email}? Esta acción es permanente!"
#: lib/cannery_web/live/container_live/index.html.heex:99
#: lib/cannery_web/live/container_live/index.html.heex:157
#: lib/cannery_web/live/container_live/index.html.heex:113
#: lib/cannery_web/live/container_live/index.html.heex:171
#: lib/cannery_web/live/container_live/show.html.heex:45
#: lib/cannery_web/live/tag_live/index.html.heex:63
#, elixir-autogen, elixir-format
msgid "Are you sure you want to delete %{name}?"
msgstr "Está seguro que desea eliminar %{name}?"
#: lib/cannery_web/live/pack_live/index.html.heex:185
#: lib/cannery_web/live/pack_live/index.html.heex:174
#: lib/cannery_web/live/pack_live/show.html.heex:69
#, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this ammo?"
@ -170,19 +170,14 @@ msgstr "Añadiendo..."
msgid "Shots recorded successfully"
msgstr "Tiros registrados exitosamente"
#: lib/cannery_web/live/range_live/index.html.heex:34
#, elixir-autogen, elixir-format
msgid "Are you sure you want to unstage this ammo?"
msgstr "Está seguro que desea desmontar esta munición?"
#: lib/cannery_web/live/pack_live/show.ex:157
#: lib/cannery_web/live/range_live/index.html.heex:151
#: lib/cannery_web/live/pack_live/show.ex:147
#: lib/cannery_web/live/range_live/index.html.heex:178
#, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this shot record?"
msgstr "¿Está segure que quiere borrar este récord de disparos?"
#: lib/cannery_web/live/pack_live/show.ex:79
#: lib/cannery_web/live/range_live/index.ex:78
#: lib/cannery_web/live/pack_live/show.ex:69
#: lib/cannery_web/live/range_live/index.ex:99
#, elixir-autogen, elixir-format
msgid "Shot records deleted succesfully"
msgstr "Récord de disparos borrado exitosamente"
@ -239,11 +234,6 @@ msgstr "Idioma cambiado exitosamente."
msgid "Ammo deleted succesfully"
msgstr "Munición borrada exitosamente"
#: lib/cannery_web/live/range_live/index.ex:91
#, elixir-autogen, elixir-format, fuzzy
msgid "Ammo unstaged succesfully"
msgstr "Munición descargada exitosamente"
#: lib/cannery_web/live/pack_live/form_component.ex:141
#, elixir-autogen, elixir-format
msgid "Ammo updated successfully"
@ -289,7 +279,7 @@ msgstr "%{name} activado exitosamente"
msgid "%{invite_name} updated succesfully"
msgstr "%{name} actualizado exitosamente"
#: lib/cannery_web/live/invite_live/index.ex:125
#: lib/cannery_web/live/invite_live/index.ex:139
#, elixir-autogen, elixir-format, fuzzy
msgid "%{user_email} deleted succesfully"
msgstr "%{name} borrado exitosamente"
@ -303,3 +293,13 @@ msgstr "Está seguro que quiere eliminar la invitación para %{name}?"
#, elixir-autogen, elixir-format, fuzzy
msgid "Are you sure you want to make %{invite_name} unlimited?"
msgstr "Está seguro que desea hacer %{name} ilimitado?"
#: lib/cannery_web/live/range_live/index.ex:114
#, elixir-autogen, elixir-format
msgid "Container unstaged succesfully"
msgstr ""
#: lib/cannery_web/live/invite_live/index.ex:128
#, elixir-autogen, elixir-format
msgid "Email resent to %{user_email} succesfully"
msgstr ""

View File

@ -144,7 +144,7 @@ msgstr "Sauvegarder"
msgid "Send instructions to reset password"
msgstr "Envoyer les instructions pour réinitialiser le mot de passe"
#: lib/cannery_web/live/container_live/show.html.heex:65
#: lib/cannery_web/live/container_live/show.html.heex:73
#, elixir-autogen, elixir-format
msgid "Why not add one?"
msgstr "Pourquoi pas en ajouter un?"
@ -154,19 +154,14 @@ msgstr "Pourquoi pas en ajouter un?"
msgid "Add"
msgstr "Ajouter"
#: lib/cannery_web/live/range_live/index.html.heex:17
#, elixir-autogen, elixir-format
msgid "Stage ammo"
msgstr "Munition préparée"
#: lib/cannery_web/live/range_live/index.html.heex:13
#, elixir-autogen, elixir-format
msgid "Why not get some ready to shoot?"
msgstr "Pourquoi pas en préparer pour tirer?"
#: lib/cannery_web/live/pack_live/index.html.heex:127
#: lib/cannery_web/live/pack_live/show.html.heex:90
#: lib/cannery_web/live/range_live/index.html.heex:42
#: lib/cannery_web/live/pack_live/index.html.heex:116
#: lib/cannery_web/live/pack_live/show.html.heex:84
#: lib/cannery_web/live/range_live/index.html.heex:54
#, elixir-autogen, elixir-format
msgid "Record shots"
msgstr "Enregistrer des tirs"
@ -212,8 +207,8 @@ msgid "View in Catalog"
msgstr "Voir en catalogue"
#: lib/cannery_web/components/move_pack_component.ex:77
#: lib/cannery_web/live/pack_live/index.html.heex:138
#: lib/cannery_web/live/pack_live/show.html.heex:86
#: lib/cannery_web/live/pack_live/index.html.heex:127
#: lib/cannery_web/live/pack_live/show.html.heex:80
#, elixir-autogen, elixir-format
msgid "Move ammo"
msgstr ""
@ -223,14 +218,12 @@ msgstr ""
msgid "Set Unlimited"
msgstr ""
#: lib/cannery_web/live/pack_live/show.html.heex:82
#: lib/cannery_web/live/range_live/index.html.heex:38
#: lib/cannery_web/live/container_live/show.html.heex:59
#, elixir-autogen, elixir-format
msgid "Stage for range"
msgstr ""
#: lib/cannery_web/live/pack_live/show.html.heex:81
#: lib/cannery_web/live/range_live/index.html.heex:37
#: lib/cannery_web/live/container_live/show.html.heex:58
#, elixir-autogen, elixir-format
msgid "Unstage from range"
msgstr ""
@ -240,8 +233,8 @@ msgstr ""
msgid "Export Data as JSON"
msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:87
#: lib/cannery_web/live/container_live/index.html.heex:145
#: lib/cannery_web/live/container_live/index.html.heex:101
#: lib/cannery_web/live/container_live/index.html.heex:159
#, elixir-autogen, elixir-format
msgid "Clone %{container_name}"
msgstr ""
@ -251,8 +244,8 @@ msgstr ""
msgid "Copy invite link for %{invite_name}"
msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:104
#: lib/cannery_web/live/container_live/index.html.heex:162
#: lib/cannery_web/live/container_live/index.html.heex:118
#: lib/cannery_web/live/container_live/index.html.heex:176
#: lib/cannery_web/live/container_live/show.html.heex:48
#, elixir-autogen, elixir-format
msgid "Delete %{container_name}"
@ -268,8 +261,8 @@ msgstr ""
msgid "Delete invite for %{invite_name}"
msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:77
#: lib/cannery_web/live/container_live/index.html.heex:135
#: lib/cannery_web/live/container_live/index.html.heex:91
#: lib/cannery_web/live/container_live/index.html.heex:149
#: lib/cannery_web/live/container_live/show.html.heex:35
#, elixir-autogen, elixir-format
msgid "Edit %{container_name}"
@ -285,54 +278,56 @@ msgstr ""
msgid "Edit invite for %{invite_name}"
msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:120
#: lib/cannery_web/live/container_live/index.html.heex:69
#: lib/cannery_web/live/range_live/index.html.heex:35
#, elixir-autogen, elixir-format, fuzzy
msgid "Stage"
msgstr "Munition préparée"
#: lib/cannery_web/live/container_live/index.html.heex:65
#: lib/cannery_web/live/container_live/index.html.heex:124
#: lib/cannery_web/live/container_live/index.html.heex:79
#: lib/cannery_web/live/container_live/index.html.heex:138
#, elixir-autogen, elixir-format
msgid "Tag %{container_name}"
msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:119
#: lib/cannery_web/live/container_live/index.html.heex:68
#: lib/cannery_web/live/range_live/index.html.heex:34
#, elixir-autogen, elixir-format
msgid "Unstage"
msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:172
#: lib/cannery_web/live/pack_live/index.html.heex:161
#, elixir-autogen, elixir-format, fuzzy
msgid "Clone pack of %{pack_count} bullets"
msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:187
#: lib/cannery_web/live/pack_live/index.html.heex:176
#: lib/cannery_web/live/pack_live/show.html.heex:71
#, elixir-autogen, elixir-format, fuzzy
msgid "Delete pack of %{pack_count} bullets"
msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:160
#: lib/cannery_web/live/pack_live/index.html.heex:149
#: lib/cannery_web/live/pack_live/show.html.heex:59
#, elixir-autogen, elixir-format, fuzzy
msgid "Edit pack of %{pack_count} bullets"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:139
#: lib/cannery_web/live/pack_live/index.html.heex:148
#: lib/cannery_web/live/container_live/show.html.heex:147
#: lib/cannery_web/live/pack_live/index.html.heex:137
#: lib/cannery_web/live/type_live/show.html.heex:201
#, elixir-autogen, elixir-format, fuzzy
msgid "View pack of %{pack_count} bullets"
msgstr ""
#: lib/cannery_web/live/pack_live/show.ex:159
#: lib/cannery_web/live/range_live/index.html.heex:154
#: lib/cannery_web/live/pack_live/show.ex:149
#: lib/cannery_web/live/range_live/index.html.heex:181
#, elixir-autogen, elixir-format, fuzzy
msgid "Delete shot record of %{shot_record_count} shots"
msgstr ""
#: lib/cannery_web/live/pack_live/show.ex:144
#: lib/cannery_web/live/range_live/index.html.heex:137
#: lib/cannery_web/live/pack_live/show.ex:134
#: lib/cannery_web/live/range_live/index.html.heex:164
#, elixir-autogen, elixir-format, fuzzy
msgid "Edit shot record of %{shot_record_count} shots"
msgstr ""
@ -368,3 +363,8 @@ msgstr ""
#, elixir-autogen, elixir-format, fuzzy
msgid "add a type first"
msgstr "Ajoutez d'abord un type de munitions"
#: lib/cannery_web/live/range_live/index.html.heex:17
#, elixir-autogen, elixir-format
msgid "Stage containers"
msgstr ""

View File

@ -117,7 +117,7 @@ msgstr "Quantité"
msgid "Count:"
msgstr "Quantité:"
#: lib/cannery_web/components/container_table_component.ex:46
#: lib/cannery_web/components/container_table_component.ex:50
#: lib/cannery_web/live/container_live/form_component.html.heex:30
#: lib/cannery_web/live/type_live/form_component.html.heex:43
#, elixir-autogen, elixir-format
@ -189,7 +189,7 @@ msgstr "Invitations"
msgid "Keep me logged in for 60 days"
msgstr "Me garder authentifié durant 60 jours"
#: lib/cannery_web/components/container_table_component.ex:47
#: lib/cannery_web/components/container_table_component.ex:51
#: lib/cannery_web/components/move_pack_component.ex:66
#: lib/cannery_web/live/container_live/form_component.html.heex:49
#, elixir-autogen, elixir-format
@ -224,7 +224,7 @@ msgstr "Boite de munition avec le sticker de fille danimation"
msgid "My cool ammo can"
msgstr "Ma superbe boite de munition"
#: lib/cannery_web/components/container_table_component.ex:45
#: lib/cannery_web/components/container_table_component.ex:49
#: lib/cannery_web/components/type_table_component.ex:152
#: lib/cannery_web/live/container_live/form_component.html.heex:21
#: lib/cannery_web/live/invite_live/form_component.html.heex:21
@ -281,7 +281,7 @@ msgstr "Aucun tag"
#: lib/cannery_web/components/add_shot_record_component.html.heex:38
#: lib/cannery_web/components/shot_record_table_component.ex:46
#: lib/cannery_web/live/pack_live/form_component.html.heex:75
#: lib/cannery_web/live/pack_live/show.ex:90
#: lib/cannery_web/live/pack_live/show.ex:80
#: lib/cannery_web/live/range_live/form_component.html.heex:30
#, elixir-autogen, elixir-format
msgid "Notes"
@ -354,12 +354,12 @@ msgstr "Simple:"
msgid "Steel"
msgstr "Acier"
#: lib/cannery_web/live/pack_live/show.html.heex:100
#: lib/cannery_web/live/pack_live/show.html.heex:94
#, elixir-autogen, elixir-format
msgid "Stored in"
msgstr "Est stocké dans"
#: lib/cannery_web/components/container_table_component.ex:66
#: lib/cannery_web/components/container_table_component.ex:73
#: lib/cannery_web/components/core_components/topbar.html.heex:28
#: lib/cannery_web/live/tag_live/index.ex:43
#: lib/cannery_web/live/tag_live/index.ex:53
@ -391,7 +391,7 @@ msgstr "Le site web de suivi darme à feux auto-hébergé"
msgid "Tracer"
msgstr "Traceuse"
#: lib/cannery_web/components/container_table_component.ex:48
#: lib/cannery_web/components/container_table_component.ex:52
#: lib/cannery_web/components/move_pack_component.ex:65
#: lib/cannery_web/components/pack_table_component.ex:108
#: lib/cannery_web/live/container_live/form_component.html.heex:40
@ -421,15 +421,16 @@ msgstr "Utilisations restantes"
msgid "Your data stays with you, period"
msgstr "Vos données restent avec vous, point final"
#: lib/cannery_web/live/container_live/show.html.heex:60
#: lib/cannery_web/live/container_live/show.html.heex:68
#, elixir-autogen, elixir-format
msgid "No tags for this container"
msgstr "Aucun tag pour ce conteneur"
#: lib/cannery_web/components/container_table_component.ex:77
#: lib/cannery_web/components/core_components/topbar.html.heex:48
#: lib/cannery_web/components/pack_table_component.ex:80
#: lib/cannery_web/live/range_live/index.ex:55
#: lib/cannery_web/live/range_live/index.ex:65
#: lib/cannery_web/live/range_live/index.ex:76
#: lib/cannery_web/live/range_live/index.ex:86
#, elixir-autogen, elixir-format
msgid "Range"
msgstr "Portée"
@ -441,7 +442,7 @@ msgstr "Journée de stand"
#: lib/cannery_web/components/add_shot_record_component.html.heex:49
#: lib/cannery_web/components/shot_record_table_component.ex:47
#: lib/cannery_web/live/pack_live/show.ex:91
#: lib/cannery_web/live/pack_live/show.ex:81
#: lib/cannery_web/live/range_live/form_component.html.heex:41
#, elixir-autogen, elixir-format
msgid "Date"
@ -452,26 +453,21 @@ msgstr "Date"
msgid "Shots fired"
msgstr "Tirs réalisés"
#: lib/cannery_web/live/range_live/index.html.heex:8
#, elixir-autogen, elixir-format
msgid "No ammo staged"
msgstr "Aucune munition sélectionnée"
#: lib/cannery_web/components/add_shot_record_component.html.heex:3
#: lib/cannery_web/live/pack_live/index.ex:35
#, elixir-autogen, elixir-format
msgid "Record shots"
msgstr "Tirs enregistrés"
#: lib/cannery_web/live/range_live/index.html.heex:52
#: lib/cannery_web/live/range_live/index.html.heex:121
#: lib/cannery_web/live/range_live/index.html.heex:64
#: lib/cannery_web/live/range_live/index.html.heex:148
#, elixir-autogen, elixir-format
msgid "No shots recorded"
msgstr "Aucun tir enregistré"
#: lib/cannery_web/components/shot_record_table_component.ex:45
#: lib/cannery_web/live/pack_live/show.ex:89
#: lib/cannery_web/live/range_live/index.html.heex:66
#: lib/cannery_web/live/pack_live/show.ex:79
#: lib/cannery_web/live/range_live/index.html.heex:78
#, elixir-autogen, elixir-format
msgid "Rounds shot"
msgstr "Cartouches tirées"
@ -486,7 +482,7 @@ msgstr "Déplacer munition"
msgid "No other containers"
msgstr "Aucun autre conteneur"
#: lib/cannery_web/live/range_live/index.html.heex:57
#: lib/cannery_web/live/range_live/index.html.heex:69
#, elixir-autogen, elixir-format
msgid "Shot log"
msgstr "Évènements de tir"
@ -494,7 +490,7 @@ msgstr "Évènements de tir"
#: lib/cannery_web/components/core_components/pack_card.html.heex:42
#: lib/cannery_web/components/core_components/pack_card.html.heex:47
#: lib/cannery_web/components/pack_table_component.ex:181
#: lib/cannery_web/components/pack_table_component.ex:264
#: lib/cannery_web/components/pack_table_component.ex:263
#: lib/cannery_web/components/type_table_component.ex:273
#: lib/cannery_web/live/pack_live/show.html.heex:37
#: lib/cannery_web/live/pack_live/show.html.heex:42
@ -567,13 +563,13 @@ msgid "Reconnecting..."
msgstr "Reconnexion en cours…"
#: lib/cannery_web/live/container_live/index.ex:28
#: lib/cannery_web/live/container_live/show.ex:118
#: lib/cannery_web/live/container_live/show.ex:130
#, elixir-autogen, elixir-format
msgid "Edit %{name}"
msgstr "Éditer %{name}"
#: lib/cannery_web/live/container_live/index.ex:63
#: lib/cannery_web/live/container_live/show.ex:119
#: lib/cannery_web/live/container_live/show.ex:131
#, elixir-autogen, elixir-format
msgid "Edit %{name} tags"
msgstr "Éditer les tags de %{name}"
@ -586,7 +582,7 @@ msgid "Rounds:"
msgstr "Cartouches:"
#: lib/cannery_web/components/pack_table_component.ex:178
#: lib/cannery_web/components/pack_table_component.ex:260
#: lib/cannery_web/components/pack_table_component.ex:259
#: lib/cannery_web/components/type_table_component.ex:272
#: lib/cannery_web/live/type_live/show.html.heex:154
#, elixir-autogen, elixir-format
@ -618,7 +614,7 @@ msgstr "Nombre original:"
msgid "Percentage left:"
msgstr "Pourcentage restant:"
#: lib/cannery_web/live/pack_live/show.html.heex:113
#: lib/cannery_web/live/pack_live/show.html.heex:107
#, elixir-autogen, elixir-format
msgid "Rounds used"
msgstr "Cartouches utilisées"
@ -649,8 +645,8 @@ msgid "Reset your password"
msgstr "Réinitialiser votre mot de passe"
#: lib/cannery_web/live/pack_live/show.ex:40
#: lib/cannery_web/live/range_live/index.ex:31
#: lib/cannery_web/live/range_live/index.ex:47
#: lib/cannery_web/live/range_live/index.ex:52
#: lib/cannery_web/live/range_live/index.ex:68
#, elixir-autogen, elixir-format
msgid "Record Shots"
msgstr "Enregistrer des tirs"
@ -708,7 +704,7 @@ msgstr "Éditer le type de munition"
msgid "Move Ammo"
msgstr "Déplacer munition"
#: lib/cannery_web/live/container_live/show.html.heex:117
#: lib/cannery_web/live/container_live/show.html.heex:125
#, elixir-autogen, elixir-format, fuzzy
msgid "No ammo in this container"
msgstr "Aucun groupe de munition pour ce conteneur"
@ -718,7 +714,7 @@ msgstr "Aucun groupe de munition pour ce conteneur"
msgid "Show Ammo"
msgstr "Montrer le type de munition"
#: lib/cannery_web/live/pack_live/show.html.heex:105
#: lib/cannery_web/live/pack_live/show.html.heex:99
#, elixir-autogen, elixir-format, fuzzy
msgid "This ammo is not in a container"
msgstr "Ce groupe de munition nest pas dans un conteneur"
@ -759,31 +755,31 @@ msgstr "Conteneur"
msgid "Show used"
msgstr ""
#: lib/cannery_web/components/pack_table_component.ex:219
#: lib/cannery_web/components/pack_table_component.ex:218
#: lib/cannery_web/live/pack_live/show.html.heex:19
#, elixir-autogen, elixir-format
msgid "%{percentage}%"
msgstr ""
#: lib/cannery_web/live/range_live/index.ex:153
#: lib/cannery_web/live/range_live/index.ex:215
#, elixir-autogen, elixir-format, fuzzy
msgid "Rounds shot: %{count}"
msgstr "Cartouches tirées"
#: lib/cannery_web/components/container_table_component.ex:64
#: lib/cannery_web/components/container_table_component.ex:68
#: lib/cannery_web/components/type_table_component.ex:122
#, elixir-autogen, elixir-format, fuzzy
msgid "Packs"
msgstr "Packages:"
#: lib/cannery_web/components/container_table_component.ex:65
#: lib/cannery_web/components/container_table_component.ex:69
#: lib/cannery_web/components/type_table_component.ex:143
#, elixir-autogen, elixir-format, fuzzy
msgid "Rounds"
msgstr "Cartouches:"
#: lib/cannery_web/live/container_live/index.html.heex:40
#: lib/cannery_web/live/container_live/show.html.heex:109
#: lib/cannery_web/live/container_live/show.html.heex:117
#: lib/cannery_web/live/type_live/show.html.heex:170
#, elixir-autogen, elixir-format
msgid "View as table"
@ -829,7 +825,7 @@ msgstr ""
msgid "Used rounds:"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:68
#: lib/cannery_web/live/range_live/index.html.heex:80
#, elixir-autogen, elixir-format, fuzzy
msgid "Rounds shot chart"
msgstr "Cartouches tirées"
@ -936,7 +932,7 @@ msgid "Average CPR"
msgstr ""
#: lib/cannery_web/components/core_components/pack_card.html.heex:17
#: lib/cannery_web/components/pack_table_component.ex:268
#: lib/cannery_web/components/pack_table_component.ex:267
#, elixir-autogen, elixir-format
msgid "Empty"
msgstr ""
@ -1018,7 +1014,7 @@ msgstr ""
msgid "Search tags"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:112
#: lib/cannery_web/live/range_live/index.html.heex:124
#, elixir-autogen, elixir-format
msgid "Search shot records"
msgstr ""
@ -1153,12 +1149,12 @@ msgstr ""
msgid "Really great weather"
msgstr ""
#: lib/cannery_web/components/container_table_component.ex:67
#: lib/cannery_web/components/container_table_component.ex:74
#: lib/cannery_web/components/move_pack_component.ex:67
#: lib/cannery_web/components/pack_table_component.ex:62
#: lib/cannery_web/components/shot_record_table_component.ex:48
#: lib/cannery_web/components/type_table_component.ex:99
#: lib/cannery_web/live/pack_live/show.ex:92
#: lib/cannery_web/live/pack_live/show.ex:82
#, elixir-autogen, elixir-format
msgid "Actions"
msgstr ""
@ -1184,9 +1180,9 @@ msgstr ""
msgid "Close modal"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:97
#: lib/cannery_web/live/container_live/show.html.heex:105
#: lib/cannery_web/live/pack_live/index.html.heex:58
#: lib/cannery_web/live/range_live/index.html.heex:91
#: lib/cannery_web/live/range_live/index.html.heex:103
#: lib/cannery_web/live/type_live/index.html.heex:37
#, elixir-autogen, elixir-format
msgid "All"
@ -1267,10 +1263,10 @@ msgstr "Aucune munition"
msgid "None specified"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:100
#: lib/cannery_web/live/container_live/show.html.heex:108
#: lib/cannery_web/live/pack_live/form_component.html.heex:30
#: lib/cannery_web/live/pack_live/index.html.heex:61
#: lib/cannery_web/live/range_live/index.html.heex:94
#: lib/cannery_web/live/range_live/index.html.heex:106
#: lib/cannery_web/live/type_live/form_component.html.heex:28
#: lib/cannery_web/live/type_live/index.html.heex:40
#: lib/cannery_web/live/type_live/show.html.heex:56
@ -1293,10 +1289,10 @@ msgstr "Type damorce"
msgid "Projectile"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:98
#: lib/cannery_web/live/container_live/show.html.heex:106
#: lib/cannery_web/live/pack_live/form_component.html.heex:28
#: lib/cannery_web/live/pack_live/index.html.heex:59
#: lib/cannery_web/live/range_live/index.html.heex:92
#: lib/cannery_web/live/range_live/index.html.heex:104
#: lib/cannery_web/live/type_live/form_component.html.heex:26
#: lib/cannery_web/live/type_live/index.html.heex:38
#: lib/cannery_web/live/type_live/show.html.heex:54
@ -1348,10 +1344,10 @@ msgstr ""
msgid "Shot type:"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:99
#: lib/cannery_web/live/container_live/show.html.heex:107
#: lib/cannery_web/live/pack_live/form_component.html.heex:29
#: lib/cannery_web/live/pack_live/index.html.heex:60
#: lib/cannery_web/live/range_live/index.html.heex:93
#: lib/cannery_web/live/range_live/index.html.heex:105
#: lib/cannery_web/live/type_live/form_component.html.heex:27
#: lib/cannery_web/live/type_live/index.html.heex:39
#: lib/cannery_web/live/type_live/show.html.heex:52
@ -1393,10 +1389,10 @@ msgid "Wadding:"
msgstr ""
#: lib/cannery_web/components/type_table_component.ex:149
#: lib/cannery_web/live/container_live/show.html.heex:91
#: lib/cannery_web/live/container_live/show.html.heex:99
#: lib/cannery_web/live/pack_live/form_component.html.heex:22
#: lib/cannery_web/live/pack_live/index.html.heex:50
#: lib/cannery_web/live/range_live/index.html.heex:83
#: lib/cannery_web/live/range_live/index.html.heex:95
#: lib/cannery_web/live/type_live/form_component.html.heex:21
#: lib/cannery_web/live/type_live/index.html.heex:29
#: lib/cannery_web/live/type_live/show.html.heex:46
@ -1416,7 +1412,7 @@ msgid "Used up!"
msgstr ""
#: lib/cannery_web/live/pack_live/show.ex:41
#: lib/cannery_web/live/range_live/index.ex:39
#: lib/cannery_web/live/range_live/index.ex:60
#, elixir-autogen, elixir-format, fuzzy
msgid "Edit Shot Record"
msgstr "Modifier les enregistrements de tir"
@ -1454,3 +1450,13 @@ msgstr ""
#, elixir-autogen, elixir-format
msgid "Any"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:138
#, elixir-autogen, elixir-format, fuzzy
msgid "Dates"
msgstr "Date"
#: lib/cannery_web/live/range_live/index.html.heex:8
#, elixir-autogen, elixir-format, fuzzy
msgid "No containers staged"
msgstr "Aucun conteneur"

View File

@ -23,7 +23,7 @@ msgstr ""
# # Run "mix gettext.extract" to bring this file up to
# # date. Leave "msgstr"s empty as changing them here has no
# # effect: edit them in PO (.po) files instead.
#: lib/cannery/containers.ex:222
#: lib/cannery/containers.ex:234
#, elixir-autogen, elixir-format
msgid "Container must be empty before deleting"
msgstr "Le conteneur doit être vide pour être supprimé"
@ -169,7 +169,7 @@ msgstr "Impossible d'analyser le nombre de copies"
msgid "Invalid number of copies, must be between 1 and %{max}. Was %{multiplier}"
msgstr "Nombre de copies invalide, doit être 1 et %{max}. Été %{multiplier}"
#: lib/cannery_web/live/range_live/index.html.heex:71
#: lib/cannery_web/live/range_live/index.html.heex:83
#, elixir-autogen, elixir-format
msgid "Your browser does not support the canvas element."
msgstr ""
@ -215,12 +215,12 @@ msgstr ""
msgid "You must log in to access this page."
msgstr ""
#: lib/cannery/ammo/pack.ex:98
#: lib/cannery/ammo/pack.ex:101
#, elixir-autogen, elixir-format, fuzzy
msgid "Please select a valid container"
msgstr "Veuillez choisir un type de munitions et un conteneur"
#: lib/cannery/ammo/pack.ex:96
#: lib/cannery/ammo/pack.ex:99
#, elixir-autogen, elixir-format, fuzzy
msgid "Please select a valid type"
msgstr "Veuillez choisir un utilisateur valide et un groupe de munitions"

View File

@ -60,21 +60,21 @@ msgstr ""
"adresse."
#: lib/cannery_web/live/invite_live/index.html.heex:110
#: lib/cannery_web/live/invite_live/index.html.heex:138
#: lib/cannery_web/live/invite_live/index.html.heex:145
#, elixir-autogen, elixir-format
msgid "Are you sure you want to delete %{email}? This action is permanent!"
msgstr ""
"Êtes-vous certain·e de supprimer %{email}? Cette action est définitive!"
#: lib/cannery_web/live/container_live/index.html.heex:99
#: lib/cannery_web/live/container_live/index.html.heex:157
#: lib/cannery_web/live/container_live/index.html.heex:113
#: lib/cannery_web/live/container_live/index.html.heex:171
#: lib/cannery_web/live/container_live/show.html.heex:45
#: lib/cannery_web/live/tag_live/index.html.heex:63
#, elixir-autogen, elixir-format
msgid "Are you sure you want to delete %{name}?"
msgstr "Êtes-vous certain·e de supprimer %{name}?"
#: lib/cannery_web/live/pack_live/index.html.heex:185
#: lib/cannery_web/live/pack_live/index.html.heex:174
#: lib/cannery_web/live/pack_live/show.html.heex:69
#, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this ammo?"
@ -172,19 +172,14 @@ msgstr "Ajout en cours…"
msgid "Shots recorded successfully"
msgstr "Tirs enregistré avec succès"
#: lib/cannery_web/live/range_live/index.html.heex:34
#, elixir-autogen, elixir-format
msgid "Are you sure you want to unstage this ammo?"
msgstr "Êtes-vous certain·e de vouloir désélectionner cette munition?"
#: lib/cannery_web/live/pack_live/show.ex:157
#: lib/cannery_web/live/range_live/index.html.heex:151
#: lib/cannery_web/live/pack_live/show.ex:147
#: lib/cannery_web/live/range_live/index.html.heex:178
#, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this shot record?"
msgstr "Êtes-vous certain·e de vouloir supprimer cet enregistrement de tir?"
#: lib/cannery_web/live/pack_live/show.ex:79
#: lib/cannery_web/live/range_live/index.ex:78
#: lib/cannery_web/live/pack_live/show.ex:69
#: lib/cannery_web/live/range_live/index.ex:99
#, elixir-autogen, elixir-format
msgid "Shot records deleted succesfully"
msgstr "Enregistrements de tir supprimés avec succès"
@ -241,11 +236,6 @@ msgstr "Langue mise à jour avec succès."
msgid "Ammo deleted succesfully"
msgstr "Groupe de munition supprimé avec succès"
#: lib/cannery_web/live/range_live/index.ex:91
#, elixir-autogen, elixir-format, fuzzy
msgid "Ammo unstaged succesfully"
msgstr "Groupe de munition désélectionner avec succès"
#: lib/cannery_web/live/pack_live/form_component.ex:141
#, elixir-autogen, elixir-format, fuzzy
msgid "Ammo updated successfully"
@ -289,7 +279,7 @@ msgstr "%{name} activé·e avec succès"
msgid "%{invite_name} updated succesfully"
msgstr "%{name} mis à jour avec succès"
#: lib/cannery_web/live/invite_live/index.ex:125
#: lib/cannery_web/live/invite_live/index.ex:139
#, elixir-autogen, elixir-format, fuzzy
msgid "%{user_email} deleted succesfully"
msgstr "%{name} supprimé· avec succès"
@ -303,3 +293,13 @@ msgstr "Êtes-vous certain·e de supprimer linvitation pour %{name}?"
#, elixir-autogen, elixir-format, fuzzy
msgid "Are you sure you want to make %{invite_name} unlimited?"
msgstr "Êtes-vous certain·e de vouloir rendre %{name} illimité?"
#: lib/cannery_web/live/range_live/index.ex:114
#, elixir-autogen, elixir-format
msgid "Container unstaged succesfully"
msgstr ""
#: lib/cannery_web/live/invite_live/index.ex:128
#, elixir-autogen, elixir-format
msgid "Email resent to %{user_email} succesfully"
msgstr ""

View File

@ -142,7 +142,7 @@ msgstr ""
msgid "Send instructions to reset password"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:65
#: lib/cannery_web/live/container_live/show.html.heex:73
#, elixir-autogen, elixir-format
msgid "Why not add one?"
msgstr ""
@ -152,19 +152,14 @@ msgstr ""
msgid "Add"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:17
#, elixir-autogen, elixir-format
msgid "Stage ammo"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:13
#, elixir-autogen, elixir-format
msgid "Why not get some ready to shoot?"
msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:127
#: lib/cannery_web/live/pack_live/show.html.heex:90
#: lib/cannery_web/live/range_live/index.html.heex:42
#: lib/cannery_web/live/pack_live/index.html.heex:116
#: lib/cannery_web/live/pack_live/show.html.heex:84
#: lib/cannery_web/live/range_live/index.html.heex:54
#, elixir-autogen, elixir-format
msgid "Record shots"
msgstr ""
@ -210,8 +205,8 @@ msgid "View in Catalog"
msgstr ""
#: lib/cannery_web/components/move_pack_component.ex:77
#: lib/cannery_web/live/pack_live/index.html.heex:138
#: lib/cannery_web/live/pack_live/show.html.heex:86
#: lib/cannery_web/live/pack_live/index.html.heex:127
#: lib/cannery_web/live/pack_live/show.html.heex:80
#, elixir-autogen, elixir-format
msgid "Move ammo"
msgstr ""
@ -221,14 +216,12 @@ msgstr ""
msgid "Set Unlimited"
msgstr ""
#: lib/cannery_web/live/pack_live/show.html.heex:82
#: lib/cannery_web/live/range_live/index.html.heex:38
#: lib/cannery_web/live/container_live/show.html.heex:59
#, elixir-autogen, elixir-format
msgid "Stage for range"
msgstr ""
#: lib/cannery_web/live/pack_live/show.html.heex:81
#: lib/cannery_web/live/range_live/index.html.heex:37
#: lib/cannery_web/live/container_live/show.html.heex:58
#, elixir-autogen, elixir-format
msgid "Unstage from range"
msgstr ""
@ -238,8 +231,8 @@ msgstr ""
msgid "Export Data as JSON"
msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:87
#: lib/cannery_web/live/container_live/index.html.heex:145
#: lib/cannery_web/live/container_live/index.html.heex:101
#: lib/cannery_web/live/container_live/index.html.heex:159
#, elixir-autogen, elixir-format
msgid "Clone %{container_name}"
msgstr ""
@ -249,8 +242,8 @@ msgstr ""
msgid "Copy invite link for %{invite_name}"
msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:104
#: lib/cannery_web/live/container_live/index.html.heex:162
#: lib/cannery_web/live/container_live/index.html.heex:118
#: lib/cannery_web/live/container_live/index.html.heex:176
#: lib/cannery_web/live/container_live/show.html.heex:48
#, elixir-autogen, elixir-format
msgid "Delete %{container_name}"
@ -266,8 +259,8 @@ msgstr ""
msgid "Delete invite for %{invite_name}"
msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:77
#: lib/cannery_web/live/container_live/index.html.heex:135
#: lib/cannery_web/live/container_live/index.html.heex:91
#: lib/cannery_web/live/container_live/index.html.heex:149
#: lib/cannery_web/live/container_live/show.html.heex:35
#, elixir-autogen, elixir-format
msgid "Edit %{container_name}"
@ -283,54 +276,56 @@ msgstr ""
msgid "Edit invite for %{invite_name}"
msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:120
#: lib/cannery_web/live/container_live/index.html.heex:69
#: lib/cannery_web/live/range_live/index.html.heex:35
#, elixir-autogen, elixir-format, fuzzy
msgid "Stage"
msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:65
#: lib/cannery_web/live/container_live/index.html.heex:124
#: lib/cannery_web/live/container_live/index.html.heex:79
#: lib/cannery_web/live/container_live/index.html.heex:138
#, elixir-autogen, elixir-format
msgid "Tag %{container_name}"
msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:119
#: lib/cannery_web/live/container_live/index.html.heex:68
#: lib/cannery_web/live/range_live/index.html.heex:34
#, elixir-autogen, elixir-format
msgid "Unstage"
msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:172
#: lib/cannery_web/live/pack_live/index.html.heex:161
#, elixir-autogen, elixir-format, fuzzy
msgid "Clone pack of %{pack_count} bullets"
msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:187
#: lib/cannery_web/live/pack_live/index.html.heex:176
#: lib/cannery_web/live/pack_live/show.html.heex:71
#, elixir-autogen, elixir-format, fuzzy
msgid "Delete pack of %{pack_count} bullets"
msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:160
#: lib/cannery_web/live/pack_live/index.html.heex:149
#: lib/cannery_web/live/pack_live/show.html.heex:59
#, elixir-autogen, elixir-format, fuzzy
msgid "Edit pack of %{pack_count} bullets"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:139
#: lib/cannery_web/live/pack_live/index.html.heex:148
#: lib/cannery_web/live/container_live/show.html.heex:147
#: lib/cannery_web/live/pack_live/index.html.heex:137
#: lib/cannery_web/live/type_live/show.html.heex:201
#, elixir-autogen, elixir-format, fuzzy
msgid "View pack of %{pack_count} bullets"
msgstr ""
#: lib/cannery_web/live/pack_live/show.ex:159
#: lib/cannery_web/live/range_live/index.html.heex:154
#: lib/cannery_web/live/pack_live/show.ex:149
#: lib/cannery_web/live/range_live/index.html.heex:181
#, elixir-autogen, elixir-format, fuzzy
msgid "Delete shot record of %{shot_record_count} shots"
msgstr ""
#: lib/cannery_web/live/pack_live/show.ex:144
#: lib/cannery_web/live/range_live/index.html.heex:137
#: lib/cannery_web/live/pack_live/show.ex:134
#: lib/cannery_web/live/range_live/index.html.heex:164
#, elixir-autogen, elixir-format, fuzzy
msgid "Edit shot record of %{shot_record_count} shots"
msgstr ""
@ -366,3 +361,8 @@ msgstr ""
#, elixir-autogen, elixir-format, fuzzy
msgid "add a type first"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:17
#, elixir-autogen, elixir-format
msgid "Stage containers"
msgstr ""

View File

@ -115,7 +115,7 @@ msgstr ""
msgid "Count:"
msgstr ""
#: lib/cannery_web/components/container_table_component.ex:46
#: lib/cannery_web/components/container_table_component.ex:50
#: lib/cannery_web/live/container_live/form_component.html.heex:30
#: lib/cannery_web/live/type_live/form_component.html.heex:43
#, elixir-autogen, elixir-format
@ -187,7 +187,7 @@ msgstr ""
msgid "Keep me logged in for 60 days"
msgstr ""
#: lib/cannery_web/components/container_table_component.ex:47
#: lib/cannery_web/components/container_table_component.ex:51
#: lib/cannery_web/components/move_pack_component.ex:66
#: lib/cannery_web/live/container_live/form_component.html.heex:49
#, elixir-autogen, elixir-format
@ -222,7 +222,7 @@ msgstr ""
msgid "My cool ammo can"
msgstr ""
#: lib/cannery_web/components/container_table_component.ex:45
#: lib/cannery_web/components/container_table_component.ex:49
#: lib/cannery_web/components/type_table_component.ex:152
#: lib/cannery_web/live/container_live/form_component.html.heex:21
#: lib/cannery_web/live/invite_live/form_component.html.heex:21
@ -279,7 +279,7 @@ msgstr ""
#: lib/cannery_web/components/add_shot_record_component.html.heex:38
#: lib/cannery_web/components/shot_record_table_component.ex:46
#: lib/cannery_web/live/pack_live/form_component.html.heex:75
#: lib/cannery_web/live/pack_live/show.ex:90
#: lib/cannery_web/live/pack_live/show.ex:80
#: lib/cannery_web/live/range_live/form_component.html.heex:30
#, elixir-autogen, elixir-format
msgid "Notes"
@ -350,12 +350,12 @@ msgstr ""
msgid "Steel"
msgstr ""
#: lib/cannery_web/live/pack_live/show.html.heex:100
#: lib/cannery_web/live/pack_live/show.html.heex:94
#, elixir-autogen, elixir-format
msgid "Stored in"
msgstr ""
#: lib/cannery_web/components/container_table_component.ex:66
#: lib/cannery_web/components/container_table_component.ex:73
#: lib/cannery_web/components/core_components/topbar.html.heex:28
#: lib/cannery_web/live/tag_live/index.ex:43
#: lib/cannery_web/live/tag_live/index.ex:53
@ -385,7 +385,7 @@ msgstr ""
msgid "Tracer"
msgstr ""
#: lib/cannery_web/components/container_table_component.ex:48
#: lib/cannery_web/components/container_table_component.ex:52
#: lib/cannery_web/components/move_pack_component.ex:65
#: lib/cannery_web/components/pack_table_component.ex:108
#: lib/cannery_web/live/container_live/form_component.html.heex:40
@ -415,15 +415,16 @@ msgstr ""
msgid "Your data stays with you, period"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:60
#: lib/cannery_web/live/container_live/show.html.heex:68
#, elixir-autogen, elixir-format
msgid "No tags for this container"
msgstr ""
#: lib/cannery_web/components/container_table_component.ex:77
#: lib/cannery_web/components/core_components/topbar.html.heex:48
#: lib/cannery_web/components/pack_table_component.ex:80
#: lib/cannery_web/live/range_live/index.ex:55
#: lib/cannery_web/live/range_live/index.ex:65
#: lib/cannery_web/live/range_live/index.ex:76
#: lib/cannery_web/live/range_live/index.ex:86
#, elixir-autogen, elixir-format
msgid "Range"
msgstr ""
@ -435,7 +436,7 @@ msgstr ""
#: lib/cannery_web/components/add_shot_record_component.html.heex:49
#: lib/cannery_web/components/shot_record_table_component.ex:47
#: lib/cannery_web/live/pack_live/show.ex:91
#: lib/cannery_web/live/pack_live/show.ex:81
#: lib/cannery_web/live/range_live/form_component.html.heex:41
#, elixir-autogen, elixir-format
msgid "Date"
@ -446,26 +447,21 @@ msgstr ""
msgid "Shots fired"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:8
#, elixir-autogen, elixir-format
msgid "No ammo staged"
msgstr ""
#: lib/cannery_web/components/add_shot_record_component.html.heex:3
#: lib/cannery_web/live/pack_live/index.ex:35
#, elixir-autogen, elixir-format
msgid "Record shots"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:52
#: lib/cannery_web/live/range_live/index.html.heex:121
#: lib/cannery_web/live/range_live/index.html.heex:64
#: lib/cannery_web/live/range_live/index.html.heex:148
#, elixir-autogen, elixir-format
msgid "No shots recorded"
msgstr ""
#: lib/cannery_web/components/shot_record_table_component.ex:45
#: lib/cannery_web/live/pack_live/show.ex:89
#: lib/cannery_web/live/range_live/index.html.heex:66
#: lib/cannery_web/live/pack_live/show.ex:79
#: lib/cannery_web/live/range_live/index.html.heex:78
#, elixir-autogen, elixir-format
msgid "Rounds shot"
msgstr ""
@ -480,7 +476,7 @@ msgstr ""
msgid "No other containers"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:57
#: lib/cannery_web/live/range_live/index.html.heex:69
#, elixir-autogen, elixir-format
msgid "Shot log"
msgstr ""
@ -488,7 +484,7 @@ msgstr ""
#: lib/cannery_web/components/core_components/pack_card.html.heex:42
#: lib/cannery_web/components/core_components/pack_card.html.heex:47
#: lib/cannery_web/components/pack_table_component.ex:181
#: lib/cannery_web/components/pack_table_component.ex:264
#: lib/cannery_web/components/pack_table_component.ex:263
#: lib/cannery_web/components/type_table_component.ex:273
#: lib/cannery_web/live/pack_live/show.html.heex:37
#: lib/cannery_web/live/pack_live/show.html.heex:42
@ -561,13 +557,13 @@ msgid "Reconnecting..."
msgstr ""
#: lib/cannery_web/live/container_live/index.ex:28
#: lib/cannery_web/live/container_live/show.ex:118
#: lib/cannery_web/live/container_live/show.ex:130
#, elixir-autogen, elixir-format
msgid "Edit %{name}"
msgstr ""
#: lib/cannery_web/live/container_live/index.ex:63
#: lib/cannery_web/live/container_live/show.ex:119
#: lib/cannery_web/live/container_live/show.ex:131
#, elixir-autogen, elixir-format
msgid "Edit %{name} tags"
msgstr ""
@ -580,7 +576,7 @@ msgid "Rounds:"
msgstr ""
#: lib/cannery_web/components/pack_table_component.ex:178
#: lib/cannery_web/components/pack_table_component.ex:260
#: lib/cannery_web/components/pack_table_component.ex:259
#: lib/cannery_web/components/type_table_component.ex:272
#: lib/cannery_web/live/type_live/show.html.heex:154
#, elixir-autogen, elixir-format
@ -612,7 +608,7 @@ msgstr ""
msgid "Percentage left:"
msgstr ""
#: lib/cannery_web/live/pack_live/show.html.heex:113
#: lib/cannery_web/live/pack_live/show.html.heex:107
#, elixir-autogen, elixir-format
msgid "Rounds used"
msgstr ""
@ -643,8 +639,8 @@ msgid "Reset your password"
msgstr ""
#: lib/cannery_web/live/pack_live/show.ex:40
#: lib/cannery_web/live/range_live/index.ex:31
#: lib/cannery_web/live/range_live/index.ex:47
#: lib/cannery_web/live/range_live/index.ex:52
#: lib/cannery_web/live/range_live/index.ex:68
#, elixir-autogen, elixir-format
msgid "Record Shots"
msgstr ""
@ -702,7 +698,7 @@ msgstr ""
msgid "Move Ammo"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:117
#: lib/cannery_web/live/container_live/show.html.heex:125
#, elixir-autogen, elixir-format
msgid "No ammo in this container"
msgstr ""
@ -712,7 +708,7 @@ msgstr ""
msgid "Show Ammo"
msgstr ""
#: lib/cannery_web/live/pack_live/show.html.heex:105
#: lib/cannery_web/live/pack_live/show.html.heex:99
#, elixir-autogen, elixir-format
msgid "This ammo is not in a container"
msgstr ""
@ -752,31 +748,31 @@ msgstr ""
msgid "Show used"
msgstr ""
#: lib/cannery_web/components/pack_table_component.ex:219
#: lib/cannery_web/components/pack_table_component.ex:218
#: lib/cannery_web/live/pack_live/show.html.heex:19
#, elixir-autogen, elixir-format
msgid "%{percentage}%"
msgstr ""
#: lib/cannery_web/live/range_live/index.ex:153
#: lib/cannery_web/live/range_live/index.ex:215
#, elixir-autogen, elixir-format, fuzzy
msgid "Rounds shot: %{count}"
msgstr ""
#: lib/cannery_web/components/container_table_component.ex:64
#: lib/cannery_web/components/container_table_component.ex:68
#: lib/cannery_web/components/type_table_component.ex:122
#, elixir-autogen, elixir-format, fuzzy
msgid "Packs"
msgstr ""
#: lib/cannery_web/components/container_table_component.ex:65
#: lib/cannery_web/components/container_table_component.ex:69
#: lib/cannery_web/components/type_table_component.ex:143
#, elixir-autogen, elixir-format, fuzzy
msgid "Rounds"
msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:40
#: lib/cannery_web/live/container_live/show.html.heex:109
#: lib/cannery_web/live/container_live/show.html.heex:117
#: lib/cannery_web/live/type_live/show.html.heex:170
#, elixir-autogen, elixir-format
msgid "View as table"
@ -822,7 +818,7 @@ msgstr ""
msgid "Used rounds:"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:68
#: lib/cannery_web/live/range_live/index.html.heex:80
#, elixir-autogen, elixir-format, fuzzy
msgid "Rounds shot chart"
msgstr ""
@ -929,7 +925,7 @@ msgid "Average CPR"
msgstr ""
#: lib/cannery_web/components/core_components/pack_card.html.heex:17
#: lib/cannery_web/components/pack_table_component.ex:268
#: lib/cannery_web/components/pack_table_component.ex:267
#, elixir-autogen, elixir-format
msgid "Empty"
msgstr ""
@ -1011,7 +1007,7 @@ msgstr ""
msgid "Search tags"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:112
#: lib/cannery_web/live/range_live/index.html.heex:124
#, elixir-autogen, elixir-format
msgid "Search shot records"
msgstr ""
@ -1144,12 +1140,12 @@ msgstr ""
msgid "Really great weather"
msgstr ""
#: lib/cannery_web/components/container_table_component.ex:67
#: lib/cannery_web/components/container_table_component.ex:74
#: lib/cannery_web/components/move_pack_component.ex:67
#: lib/cannery_web/components/pack_table_component.ex:62
#: lib/cannery_web/components/shot_record_table_component.ex:48
#: lib/cannery_web/components/type_table_component.ex:99
#: lib/cannery_web/live/pack_live/show.ex:92
#: lib/cannery_web/live/pack_live/show.ex:82
#, elixir-autogen, elixir-format
msgid "Actions"
msgstr ""
@ -1175,9 +1171,9 @@ msgstr ""
msgid "Close modal"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:97
#: lib/cannery_web/live/container_live/show.html.heex:105
#: lib/cannery_web/live/pack_live/index.html.heex:58
#: lib/cannery_web/live/range_live/index.html.heex:91
#: lib/cannery_web/live/range_live/index.html.heex:103
#: lib/cannery_web/live/type_live/index.html.heex:37
#, elixir-autogen, elixir-format
msgid "All"
@ -1258,10 +1254,10 @@ msgstr ""
msgid "None specified"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:100
#: lib/cannery_web/live/container_live/show.html.heex:108
#: lib/cannery_web/live/pack_live/form_component.html.heex:30
#: lib/cannery_web/live/pack_live/index.html.heex:61
#: lib/cannery_web/live/range_live/index.html.heex:94
#: lib/cannery_web/live/range_live/index.html.heex:106
#: lib/cannery_web/live/type_live/form_component.html.heex:28
#: lib/cannery_web/live/type_live/index.html.heex:40
#: lib/cannery_web/live/type_live/show.html.heex:56
@ -1284,10 +1280,10 @@ msgstr ""
msgid "Projectile"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:98
#: lib/cannery_web/live/container_live/show.html.heex:106
#: lib/cannery_web/live/pack_live/form_component.html.heex:28
#: lib/cannery_web/live/pack_live/index.html.heex:59
#: lib/cannery_web/live/range_live/index.html.heex:92
#: lib/cannery_web/live/range_live/index.html.heex:104
#: lib/cannery_web/live/type_live/form_component.html.heex:26
#: lib/cannery_web/live/type_live/index.html.heex:38
#: lib/cannery_web/live/type_live/show.html.heex:54
@ -1339,10 +1335,10 @@ msgstr ""
msgid "Shot type:"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:99
#: lib/cannery_web/live/container_live/show.html.heex:107
#: lib/cannery_web/live/pack_live/form_component.html.heex:29
#: lib/cannery_web/live/pack_live/index.html.heex:60
#: lib/cannery_web/live/range_live/index.html.heex:93
#: lib/cannery_web/live/range_live/index.html.heex:105
#: lib/cannery_web/live/type_live/form_component.html.heex:27
#: lib/cannery_web/live/type_live/index.html.heex:39
#: lib/cannery_web/live/type_live/show.html.heex:52
@ -1384,10 +1380,10 @@ msgid "Wadding:"
msgstr ""
#: lib/cannery_web/components/type_table_component.ex:149
#: lib/cannery_web/live/container_live/show.html.heex:91
#: lib/cannery_web/live/container_live/show.html.heex:99
#: lib/cannery_web/live/pack_live/form_component.html.heex:22
#: lib/cannery_web/live/pack_live/index.html.heex:50
#: lib/cannery_web/live/range_live/index.html.heex:83
#: lib/cannery_web/live/range_live/index.html.heex:95
#: lib/cannery_web/live/type_live/form_component.html.heex:21
#: lib/cannery_web/live/type_live/index.html.heex:29
#: lib/cannery_web/live/type_live/show.html.heex:46
@ -1407,7 +1403,7 @@ msgid "Used up!"
msgstr ""
#: lib/cannery_web/live/pack_live/show.ex:41
#: lib/cannery_web/live/range_live/index.ex:39
#: lib/cannery_web/live/range_live/index.ex:60
#, elixir-autogen, elixir-format, fuzzy
msgid "Edit Shot Record"
msgstr ""
@ -1445,3 +1441,13 @@ msgstr ""
#, elixir-autogen, elixir-format
msgid "Any"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:138
#, elixir-autogen, elixir-format, fuzzy
msgid "Dates"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:8
#, elixir-autogen, elixir-format, fuzzy
msgid "No containers staged"
msgstr ""

View File

@ -24,7 +24,7 @@ msgstr ""
## Run "mix gettext.extract" to bring this file up to
## date. Leave "msgstr"s empty as changing them here has no
## effect: edit them in PO (.po) files instead.
#: lib/cannery/containers.ex:222
#: lib/cannery/containers.ex:234
#, elixir-autogen, elixir-format
msgid "Container must be empty before deleting"
msgstr "Caithfidh an coimeádán a bheidh follamh roimh scriosadh"
@ -168,7 +168,7 @@ msgstr ""
msgid "Invalid number of copies, must be between 1 and %{max}. Was %{multiplier}"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:71
#: lib/cannery_web/live/range_live/index.html.heex:83
#, elixir-autogen, elixir-format
msgid "Your browser does not support the canvas element."
msgstr ""
@ -214,12 +214,12 @@ msgstr ""
msgid "You must log in to access this page."
msgstr ""
#: lib/cannery/ammo/pack.ex:98
#: lib/cannery/ammo/pack.ex:101
#, elixir-autogen, elixir-format, fuzzy
msgid "Please select a valid container"
msgstr ""
#: lib/cannery/ammo/pack.ex:96
#: lib/cannery/ammo/pack.ex:99
#, elixir-autogen, elixir-format, fuzzy
msgid "Please select a valid type"
msgstr ""

View File

@ -56,20 +56,20 @@ msgid "A link to confirm your email change has been sent to the new address."
msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:110
#: lib/cannery_web/live/invite_live/index.html.heex:138
#: lib/cannery_web/live/invite_live/index.html.heex:145
#, elixir-autogen, elixir-format
msgid "Are you sure you want to delete %{email}? This action is permanent!"
msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:99
#: lib/cannery_web/live/container_live/index.html.heex:157
#: lib/cannery_web/live/container_live/index.html.heex:113
#: lib/cannery_web/live/container_live/index.html.heex:171
#: lib/cannery_web/live/container_live/show.html.heex:45
#: lib/cannery_web/live/tag_live/index.html.heex:63
#, elixir-autogen, elixir-format
msgid "Are you sure you want to delete %{name}?"
msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:185
#: lib/cannery_web/live/pack_live/index.html.heex:174
#: lib/cannery_web/live/pack_live/show.html.heex:69
#, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this ammo?"
@ -161,19 +161,14 @@ msgstr ""
msgid "Shots recorded successfully"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:34
#, elixir-autogen, elixir-format
msgid "Are you sure you want to unstage this ammo?"
msgstr ""
#: lib/cannery_web/live/pack_live/show.ex:157
#: lib/cannery_web/live/range_live/index.html.heex:151
#: lib/cannery_web/live/pack_live/show.ex:147
#: lib/cannery_web/live/range_live/index.html.heex:178
#, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this shot record?"
msgstr ""
#: lib/cannery_web/live/pack_live/show.ex:79
#: lib/cannery_web/live/range_live/index.ex:78
#: lib/cannery_web/live/pack_live/show.ex:69
#: lib/cannery_web/live/range_live/index.ex:99
#, elixir-autogen, elixir-format
msgid "Shot records deleted succesfully"
msgstr ""
@ -230,11 +225,6 @@ msgstr ""
msgid "Ammo deleted succesfully"
msgstr ""
#: lib/cannery_web/live/range_live/index.ex:91
#, elixir-autogen, elixir-format
msgid "Ammo unstaged succesfully"
msgstr ""
#: lib/cannery_web/live/pack_live/form_component.ex:141
#, elixir-autogen, elixir-format
msgid "Ammo updated successfully"
@ -281,7 +271,7 @@ msgstr ""
msgid "%{invite_name} updated succesfully"
msgstr ""
#: lib/cannery_web/live/invite_live/index.ex:125
#: lib/cannery_web/live/invite_live/index.ex:139
#, elixir-autogen, elixir-format, fuzzy
msgid "%{user_email} deleted succesfully"
msgstr ""
@ -295,3 +285,13 @@ msgstr ""
#, elixir-autogen, elixir-format, fuzzy
msgid "Are you sure you want to make %{invite_name} unlimited?"
msgstr ""
#: lib/cannery_web/live/range_live/index.ex:114
#, elixir-autogen, elixir-format
msgid "Container unstaged succesfully"
msgstr ""
#: lib/cannery_web/live/invite_live/index.ex:128
#, elixir-autogen, elixir-format
msgid "Email resent to %{user_email} succesfully"
msgstr ""

View File

@ -142,7 +142,7 @@ msgstr ""
msgid "Send instructions to reset password"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:65
#: lib/cannery_web/live/container_live/show.html.heex:73
#, elixir-autogen, elixir-format
msgid "Why not add one?"
msgstr ""
@ -152,19 +152,14 @@ msgstr ""
msgid "Add"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:17
#, elixir-autogen, elixir-format
msgid "Stage ammo"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:13
#, elixir-autogen, elixir-format
msgid "Why not get some ready to shoot?"
msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:127
#: lib/cannery_web/live/pack_live/show.html.heex:90
#: lib/cannery_web/live/range_live/index.html.heex:42
#: lib/cannery_web/live/pack_live/index.html.heex:116
#: lib/cannery_web/live/pack_live/show.html.heex:84
#: lib/cannery_web/live/range_live/index.html.heex:54
#, elixir-autogen, elixir-format
msgid "Record shots"
msgstr ""
@ -210,8 +205,8 @@ msgid "View in Catalog"
msgstr ""
#: lib/cannery_web/components/move_pack_component.ex:77
#: lib/cannery_web/live/pack_live/index.html.heex:138
#: lib/cannery_web/live/pack_live/show.html.heex:86
#: lib/cannery_web/live/pack_live/index.html.heex:127
#: lib/cannery_web/live/pack_live/show.html.heex:80
#, elixir-autogen, elixir-format
msgid "Move ammo"
msgstr ""
@ -221,14 +216,12 @@ msgstr ""
msgid "Set Unlimited"
msgstr ""
#: lib/cannery_web/live/pack_live/show.html.heex:82
#: lib/cannery_web/live/range_live/index.html.heex:38
#: lib/cannery_web/live/container_live/show.html.heex:59
#, elixir-autogen, elixir-format
msgid "Stage for range"
msgstr ""
#: lib/cannery_web/live/pack_live/show.html.heex:81
#: lib/cannery_web/live/range_live/index.html.heex:37
#: lib/cannery_web/live/container_live/show.html.heex:58
#, elixir-autogen, elixir-format
msgid "Unstage from range"
msgstr ""
@ -238,8 +231,8 @@ msgstr ""
msgid "Export Data as JSON"
msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:87
#: lib/cannery_web/live/container_live/index.html.heex:145
#: lib/cannery_web/live/container_live/index.html.heex:101
#: lib/cannery_web/live/container_live/index.html.heex:159
#, elixir-autogen, elixir-format
msgid "Clone %{container_name}"
msgstr ""
@ -249,8 +242,8 @@ msgstr ""
msgid "Copy invite link for %{invite_name}"
msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:104
#: lib/cannery_web/live/container_live/index.html.heex:162
#: lib/cannery_web/live/container_live/index.html.heex:118
#: lib/cannery_web/live/container_live/index.html.heex:176
#: lib/cannery_web/live/container_live/show.html.heex:48
#, elixir-autogen, elixir-format
msgid "Delete %{container_name}"
@ -266,8 +259,8 @@ msgstr ""
msgid "Delete invite for %{invite_name}"
msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:77
#: lib/cannery_web/live/container_live/index.html.heex:135
#: lib/cannery_web/live/container_live/index.html.heex:91
#: lib/cannery_web/live/container_live/index.html.heex:149
#: lib/cannery_web/live/container_live/show.html.heex:35
#, elixir-autogen, elixir-format
msgid "Edit %{container_name}"
@ -283,54 +276,56 @@ msgstr ""
msgid "Edit invite for %{invite_name}"
msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:120
#: lib/cannery_web/live/container_live/index.html.heex:69
#: lib/cannery_web/live/range_live/index.html.heex:35
#, elixir-autogen, elixir-format
msgid "Stage"
msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:65
#: lib/cannery_web/live/container_live/index.html.heex:124
#: lib/cannery_web/live/container_live/index.html.heex:79
#: lib/cannery_web/live/container_live/index.html.heex:138
#, elixir-autogen, elixir-format
msgid "Tag %{container_name}"
msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:119
#: lib/cannery_web/live/container_live/index.html.heex:68
#: lib/cannery_web/live/range_live/index.html.heex:34
#, elixir-autogen, elixir-format
msgid "Unstage"
msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:172
#: lib/cannery_web/live/pack_live/index.html.heex:161
#, elixir-autogen, elixir-format
msgid "Clone pack of %{pack_count} bullets"
msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:187
#: lib/cannery_web/live/pack_live/index.html.heex:176
#: lib/cannery_web/live/pack_live/show.html.heex:71
#, elixir-autogen, elixir-format
msgid "Delete pack of %{pack_count} bullets"
msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:160
#: lib/cannery_web/live/pack_live/index.html.heex:149
#: lib/cannery_web/live/pack_live/show.html.heex:59
#, elixir-autogen, elixir-format
msgid "Edit pack of %{pack_count} bullets"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:139
#: lib/cannery_web/live/pack_live/index.html.heex:148
#: lib/cannery_web/live/container_live/show.html.heex:147
#: lib/cannery_web/live/pack_live/index.html.heex:137
#: lib/cannery_web/live/type_live/show.html.heex:201
#, elixir-autogen, elixir-format
msgid "View pack of %{pack_count} bullets"
msgstr ""
#: lib/cannery_web/live/pack_live/show.ex:159
#: lib/cannery_web/live/range_live/index.html.heex:154
#: lib/cannery_web/live/pack_live/show.ex:149
#: lib/cannery_web/live/range_live/index.html.heex:181
#, elixir-autogen, elixir-format
msgid "Delete shot record of %{shot_record_count} shots"
msgstr ""
#: lib/cannery_web/live/pack_live/show.ex:144
#: lib/cannery_web/live/range_live/index.html.heex:137
#: lib/cannery_web/live/pack_live/show.ex:134
#: lib/cannery_web/live/range_live/index.html.heex:164
#, elixir-autogen, elixir-format
msgid "Edit shot record of %{shot_record_count} shots"
msgstr ""
@ -366,3 +361,8 @@ msgstr ""
#, elixir-autogen, elixir-format
msgid "add a type first"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:17
#, elixir-autogen, elixir-format
msgid "Stage containers"
msgstr ""

View File

@ -124,7 +124,7 @@ msgstr ""
msgid "Count:"
msgstr ""
#: lib/cannery_web/components/container_table_component.ex:46
#: lib/cannery_web/components/container_table_component.ex:50
#: lib/cannery_web/live/container_live/form_component.html.heex:30
#: lib/cannery_web/live/type_live/form_component.html.heex:43
#, elixir-autogen, elixir-format
@ -196,7 +196,7 @@ msgstr ""
msgid "Keep me logged in for 60 days"
msgstr ""
#: lib/cannery_web/components/container_table_component.ex:47
#: lib/cannery_web/components/container_table_component.ex:51
#: lib/cannery_web/components/move_pack_component.ex:66
#: lib/cannery_web/live/container_live/form_component.html.heex:49
#, elixir-autogen, elixir-format
@ -231,7 +231,7 @@ msgstr ""
msgid "My cool ammo can"
msgstr ""
#: lib/cannery_web/components/container_table_component.ex:45
#: lib/cannery_web/components/container_table_component.ex:49
#: lib/cannery_web/components/type_table_component.ex:152
#: lib/cannery_web/live/container_live/form_component.html.heex:21
#: lib/cannery_web/live/invite_live/form_component.html.heex:21
@ -288,7 +288,7 @@ msgstr ""
#: lib/cannery_web/components/add_shot_record_component.html.heex:38
#: lib/cannery_web/components/shot_record_table_component.ex:46
#: lib/cannery_web/live/pack_live/form_component.html.heex:75
#: lib/cannery_web/live/pack_live/show.ex:90
#: lib/cannery_web/live/pack_live/show.ex:80
#: lib/cannery_web/live/range_live/form_component.html.heex:30
#, elixir-autogen, elixir-format
msgid "Notes"
@ -359,12 +359,12 @@ msgstr ""
msgid "Steel"
msgstr ""
#: lib/cannery_web/live/pack_live/show.html.heex:100
#: lib/cannery_web/live/pack_live/show.html.heex:94
#, elixir-autogen, elixir-format
msgid "Stored in"
msgstr ""
#: lib/cannery_web/components/container_table_component.ex:66
#: lib/cannery_web/components/container_table_component.ex:73
#: lib/cannery_web/components/core_components/topbar.html.heex:28
#: lib/cannery_web/live/tag_live/index.ex:43
#: lib/cannery_web/live/tag_live/index.ex:53
@ -394,7 +394,7 @@ msgstr ""
msgid "Tracer"
msgstr ""
#: lib/cannery_web/components/container_table_component.ex:48
#: lib/cannery_web/components/container_table_component.ex:52
#: lib/cannery_web/components/move_pack_component.ex:65
#: lib/cannery_web/components/pack_table_component.ex:108
#: lib/cannery_web/live/container_live/form_component.html.heex:40
@ -424,15 +424,16 @@ msgstr ""
msgid "Your data stays with you, period"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:60
#: lib/cannery_web/live/container_live/show.html.heex:68
#, elixir-autogen, elixir-format
msgid "No tags for this container"
msgstr ""
#: lib/cannery_web/components/container_table_component.ex:77
#: lib/cannery_web/components/core_components/topbar.html.heex:48
#: lib/cannery_web/components/pack_table_component.ex:80
#: lib/cannery_web/live/range_live/index.ex:55
#: lib/cannery_web/live/range_live/index.ex:65
#: lib/cannery_web/live/range_live/index.ex:76
#: lib/cannery_web/live/range_live/index.ex:86
#, elixir-autogen, elixir-format
msgid "Range"
msgstr ""
@ -444,7 +445,7 @@ msgstr ""
#: lib/cannery_web/components/add_shot_record_component.html.heex:49
#: lib/cannery_web/components/shot_record_table_component.ex:47
#: lib/cannery_web/live/pack_live/show.ex:91
#: lib/cannery_web/live/pack_live/show.ex:81
#: lib/cannery_web/live/range_live/form_component.html.heex:41
#, elixir-autogen, elixir-format
msgid "Date"
@ -455,26 +456,21 @@ msgstr ""
msgid "Shots fired"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:8
#, elixir-autogen, elixir-format
msgid "No ammo staged"
msgstr ""
#: lib/cannery_web/components/add_shot_record_component.html.heex:3
#: lib/cannery_web/live/pack_live/index.ex:35
#, elixir-autogen, elixir-format
msgid "Record shots"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:52
#: lib/cannery_web/live/range_live/index.html.heex:121
#: lib/cannery_web/live/range_live/index.html.heex:64
#: lib/cannery_web/live/range_live/index.html.heex:148
#, elixir-autogen, elixir-format
msgid "No shots recorded"
msgstr ""
#: lib/cannery_web/components/shot_record_table_component.ex:45
#: lib/cannery_web/live/pack_live/show.ex:89
#: lib/cannery_web/live/range_live/index.html.heex:66
#: lib/cannery_web/live/pack_live/show.ex:79
#: lib/cannery_web/live/range_live/index.html.heex:78
#, elixir-autogen, elixir-format
msgid "Rounds shot"
msgstr ""
@ -489,7 +485,7 @@ msgstr ""
msgid "No other containers"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:57
#: lib/cannery_web/live/range_live/index.html.heex:69
#, elixir-autogen, elixir-format
msgid "Shot log"
msgstr ""
@ -497,7 +493,7 @@ msgstr ""
#: lib/cannery_web/components/core_components/pack_card.html.heex:42
#: lib/cannery_web/components/core_components/pack_card.html.heex:47
#: lib/cannery_web/components/pack_table_component.ex:181
#: lib/cannery_web/components/pack_table_component.ex:264
#: lib/cannery_web/components/pack_table_component.ex:263
#: lib/cannery_web/components/type_table_component.ex:273
#: lib/cannery_web/live/pack_live/show.html.heex:37
#: lib/cannery_web/live/pack_live/show.html.heex:42
@ -570,13 +566,13 @@ msgid "Reconnecting..."
msgstr ""
#: lib/cannery_web/live/container_live/index.ex:28
#: lib/cannery_web/live/container_live/show.ex:118
#: lib/cannery_web/live/container_live/show.ex:130
#, elixir-autogen, elixir-format
msgid "Edit %{name}"
msgstr ""
#: lib/cannery_web/live/container_live/index.ex:63
#: lib/cannery_web/live/container_live/show.ex:119
#: lib/cannery_web/live/container_live/show.ex:131
#, elixir-autogen, elixir-format
msgid "Edit %{name} tags"
msgstr ""
@ -589,7 +585,7 @@ msgid "Rounds:"
msgstr ""
#: lib/cannery_web/components/pack_table_component.ex:178
#: lib/cannery_web/components/pack_table_component.ex:260
#: lib/cannery_web/components/pack_table_component.ex:259
#: lib/cannery_web/components/type_table_component.ex:272
#: lib/cannery_web/live/type_live/show.html.heex:154
#, elixir-autogen, elixir-format
@ -621,7 +617,7 @@ msgstr ""
msgid "Percentage left:"
msgstr ""
#: lib/cannery_web/live/pack_live/show.html.heex:113
#: lib/cannery_web/live/pack_live/show.html.heex:107
#, elixir-autogen, elixir-format
msgid "Rounds used"
msgstr ""
@ -652,8 +648,8 @@ msgid "Reset your password"
msgstr ""
#: lib/cannery_web/live/pack_live/show.ex:40
#: lib/cannery_web/live/range_live/index.ex:31
#: lib/cannery_web/live/range_live/index.ex:47
#: lib/cannery_web/live/range_live/index.ex:52
#: lib/cannery_web/live/range_live/index.ex:68
#, elixir-autogen, elixir-format
msgid "Record Shots"
msgstr ""
@ -711,7 +707,7 @@ msgstr ""
msgid "Move Ammo"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:117
#: lib/cannery_web/live/container_live/show.html.heex:125
#, elixir-autogen, elixir-format
msgid "No ammo in this container"
msgstr ""
@ -721,7 +717,7 @@ msgstr ""
msgid "Show Ammo"
msgstr ""
#: lib/cannery_web/live/pack_live/show.html.heex:105
#: lib/cannery_web/live/pack_live/show.html.heex:99
#, elixir-autogen, elixir-format
msgid "This ammo is not in a container"
msgstr ""
@ -761,31 +757,31 @@ msgstr ""
msgid "Show used"
msgstr ""
#: lib/cannery_web/components/pack_table_component.ex:219
#: lib/cannery_web/components/pack_table_component.ex:218
#: lib/cannery_web/live/pack_live/show.html.heex:19
#, elixir-autogen, elixir-format
msgid "%{percentage}%"
msgstr ""
#: lib/cannery_web/live/range_live/index.ex:153
#: lib/cannery_web/live/range_live/index.ex:215
#, elixir-autogen, elixir-format
msgid "Rounds shot: %{count}"
msgstr ""
#: lib/cannery_web/components/container_table_component.ex:64
#: lib/cannery_web/components/container_table_component.ex:68
#: lib/cannery_web/components/type_table_component.ex:122
#, elixir-autogen, elixir-format
msgid "Packs"
msgstr ""
#: lib/cannery_web/components/container_table_component.ex:65
#: lib/cannery_web/components/container_table_component.ex:69
#: lib/cannery_web/components/type_table_component.ex:143
#, elixir-autogen, elixir-format
msgid "Rounds"
msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:40
#: lib/cannery_web/live/container_live/show.html.heex:109
#: lib/cannery_web/live/container_live/show.html.heex:117
#: lib/cannery_web/live/type_live/show.html.heex:170
#, elixir-autogen, elixir-format
msgid "View as table"
@ -831,7 +827,7 @@ msgstr ""
msgid "Used rounds:"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:68
#: lib/cannery_web/live/range_live/index.html.heex:80
#, elixir-autogen, elixir-format
msgid "Rounds shot chart"
msgstr ""
@ -938,7 +934,7 @@ msgid "Average CPR"
msgstr ""
#: lib/cannery_web/components/core_components/pack_card.html.heex:17
#: lib/cannery_web/components/pack_table_component.ex:268
#: lib/cannery_web/components/pack_table_component.ex:267
#, elixir-autogen, elixir-format
msgid "Empty"
msgstr ""
@ -1020,7 +1016,7 @@ msgstr ""
msgid "Search tags"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:112
#: lib/cannery_web/live/range_live/index.html.heex:124
#, elixir-autogen, elixir-format
msgid "Search shot records"
msgstr ""
@ -1144,12 +1140,12 @@ msgstr ""
msgid "Really great weather"
msgstr ""
#: lib/cannery_web/components/container_table_component.ex:67
#: lib/cannery_web/components/container_table_component.ex:74
#: lib/cannery_web/components/move_pack_component.ex:67
#: lib/cannery_web/components/pack_table_component.ex:62
#: lib/cannery_web/components/shot_record_table_component.ex:48
#: lib/cannery_web/components/type_table_component.ex:99
#: lib/cannery_web/live/pack_live/show.ex:92
#: lib/cannery_web/live/pack_live/show.ex:82
#, elixir-autogen, elixir-format
msgid "Actions"
msgstr ""
@ -1175,9 +1171,9 @@ msgstr ""
msgid "Close modal"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:97
#: lib/cannery_web/live/container_live/show.html.heex:105
#: lib/cannery_web/live/pack_live/index.html.heex:58
#: lib/cannery_web/live/range_live/index.html.heex:91
#: lib/cannery_web/live/range_live/index.html.heex:103
#: lib/cannery_web/live/type_live/index.html.heex:37
#, elixir-autogen, elixir-format
msgid "All"
@ -1258,10 +1254,10 @@ msgstr ""
msgid "None specified"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:100
#: lib/cannery_web/live/container_live/show.html.heex:108
#: lib/cannery_web/live/pack_live/form_component.html.heex:30
#: lib/cannery_web/live/pack_live/index.html.heex:61
#: lib/cannery_web/live/range_live/index.html.heex:94
#: lib/cannery_web/live/range_live/index.html.heex:106
#: lib/cannery_web/live/type_live/form_component.html.heex:28
#: lib/cannery_web/live/type_live/index.html.heex:40
#: lib/cannery_web/live/type_live/show.html.heex:56
@ -1284,10 +1280,10 @@ msgstr ""
msgid "Projectile"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:98
#: lib/cannery_web/live/container_live/show.html.heex:106
#: lib/cannery_web/live/pack_live/form_component.html.heex:28
#: lib/cannery_web/live/pack_live/index.html.heex:59
#: lib/cannery_web/live/range_live/index.html.heex:92
#: lib/cannery_web/live/range_live/index.html.heex:104
#: lib/cannery_web/live/type_live/form_component.html.heex:26
#: lib/cannery_web/live/type_live/index.html.heex:38
#: lib/cannery_web/live/type_live/show.html.heex:54
@ -1339,10 +1335,10 @@ msgstr ""
msgid "Shot type:"
msgstr ""
#: lib/cannery_web/live/container_live/show.html.heex:99
#: lib/cannery_web/live/container_live/show.html.heex:107
#: lib/cannery_web/live/pack_live/form_component.html.heex:29
#: lib/cannery_web/live/pack_live/index.html.heex:60
#: lib/cannery_web/live/range_live/index.html.heex:93
#: lib/cannery_web/live/range_live/index.html.heex:105
#: lib/cannery_web/live/type_live/form_component.html.heex:27
#: lib/cannery_web/live/type_live/index.html.heex:39
#: lib/cannery_web/live/type_live/show.html.heex:52
@ -1384,10 +1380,10 @@ msgid "Wadding:"
msgstr ""
#: lib/cannery_web/components/type_table_component.ex:149
#: lib/cannery_web/live/container_live/show.html.heex:91
#: lib/cannery_web/live/container_live/show.html.heex:99
#: lib/cannery_web/live/pack_live/form_component.html.heex:22
#: lib/cannery_web/live/pack_live/index.html.heex:50
#: lib/cannery_web/live/range_live/index.html.heex:83
#: lib/cannery_web/live/range_live/index.html.heex:95
#: lib/cannery_web/live/type_live/form_component.html.heex:21
#: lib/cannery_web/live/type_live/index.html.heex:29
#: lib/cannery_web/live/type_live/show.html.heex:46
@ -1407,7 +1403,7 @@ msgid "Used up!"
msgstr ""
#: lib/cannery_web/live/pack_live/show.ex:41
#: lib/cannery_web/live/range_live/index.ex:39
#: lib/cannery_web/live/range_live/index.ex:60
#, elixir-autogen, elixir-format
msgid "Edit Shot Record"
msgstr ""
@ -1445,3 +1441,13 @@ msgstr ""
#, elixir-autogen, elixir-format
msgid "Any"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:138
#, elixir-autogen, elixir-format, fuzzy
msgid "Dates"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:8
#, elixir-autogen, elixir-format, fuzzy
msgid "No containers staged"
msgstr ""

View File

@ -21,7 +21,7 @@ msgstr ""
## Run "mix gettext.extract" to bring this file up to
## date. Leave "msgstr"s empty as changing them here has no
## effect: edit them in PO (.po) files instead.
#: lib/cannery/containers.ex:222
#: lib/cannery/containers.ex:234
#, elixir-autogen, elixir-format
msgid "Container must be empty before deleting"
msgstr ""
@ -163,7 +163,7 @@ msgstr ""
msgid "Invalid number of copies, must be between 1 and %{max}. Was %{multiplier}"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:71
#: lib/cannery_web/live/range_live/index.html.heex:83
#, elixir-autogen, elixir-format
msgid "Your browser does not support the canvas element."
msgstr ""
@ -209,12 +209,12 @@ msgstr ""
msgid "You must log in to access this page."
msgstr ""
#: lib/cannery/ammo/pack.ex:98
#: lib/cannery/ammo/pack.ex:101
#, elixir-autogen, elixir-format, fuzzy
msgid "Please select a valid container"
msgstr ""
#: lib/cannery/ammo/pack.ex:96
#: lib/cannery/ammo/pack.ex:99
#, elixir-autogen, elixir-format, fuzzy
msgid "Please select a valid type"
msgstr ""

View File

@ -56,20 +56,20 @@ msgid "A link to confirm your email change has been sent to the new address."
msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:110
#: lib/cannery_web/live/invite_live/index.html.heex:138
#: lib/cannery_web/live/invite_live/index.html.heex:145
#, elixir-autogen, elixir-format
msgid "Are you sure you want to delete %{email}? This action is permanent!"
msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:99
#: lib/cannery_web/live/container_live/index.html.heex:157
#: lib/cannery_web/live/container_live/index.html.heex:113
#: lib/cannery_web/live/container_live/index.html.heex:171
#: lib/cannery_web/live/container_live/show.html.heex:45
#: lib/cannery_web/live/tag_live/index.html.heex:63
#, elixir-autogen, elixir-format
msgid "Are you sure you want to delete %{name}?"
msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:185
#: lib/cannery_web/live/pack_live/index.html.heex:174
#: lib/cannery_web/live/pack_live/show.html.heex:69
#, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this ammo?"
@ -161,19 +161,14 @@ msgstr ""
msgid "Shots recorded successfully"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:34
#, elixir-autogen, elixir-format
msgid "Are you sure you want to unstage this ammo?"
msgstr ""
#: lib/cannery_web/live/pack_live/show.ex:157
#: lib/cannery_web/live/range_live/index.html.heex:151
#: lib/cannery_web/live/pack_live/show.ex:147
#: lib/cannery_web/live/range_live/index.html.heex:178
#, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this shot record?"
msgstr ""
#: lib/cannery_web/live/pack_live/show.ex:79
#: lib/cannery_web/live/range_live/index.ex:78
#: lib/cannery_web/live/pack_live/show.ex:69
#: lib/cannery_web/live/range_live/index.ex:99
#, elixir-autogen, elixir-format
msgid "Shot records deleted succesfully"
msgstr ""
@ -230,11 +225,6 @@ msgstr ""
msgid "Ammo deleted succesfully"
msgstr ""
#: lib/cannery_web/live/range_live/index.ex:91
#, elixir-autogen, elixir-format
msgid "Ammo unstaged succesfully"
msgstr ""
#: lib/cannery_web/live/pack_live/form_component.ex:141
#, elixir-autogen, elixir-format
msgid "Ammo updated successfully"
@ -278,7 +268,7 @@ msgstr ""
msgid "%{invite_name} updated succesfully"
msgstr ""
#: lib/cannery_web/live/invite_live/index.ex:125
#: lib/cannery_web/live/invite_live/index.ex:139
#, elixir-autogen, elixir-format
msgid "%{user_email} deleted succesfully"
msgstr ""
@ -292,3 +282,13 @@ msgstr ""
#, elixir-autogen, elixir-format
msgid "Are you sure you want to make %{invite_name} unlimited?"
msgstr ""
#: lib/cannery_web/live/range_live/index.ex:114
#, elixir-autogen, elixir-format
msgid "Container unstaged succesfully"
msgstr ""
#: lib/cannery_web/live/invite_live/index.ex:128
#, elixir-autogen, elixir-format
msgid "Email resent to %{user_email} succesfully"
msgstr ""

View File

@ -45,20 +45,20 @@ msgid "A link to confirm your email change has been sent to the new address."
msgstr ""
#: lib/cannery_web/live/invite_live/index.html.heex:110
#: lib/cannery_web/live/invite_live/index.html.heex:138
#: lib/cannery_web/live/invite_live/index.html.heex:145
#, elixir-autogen, elixir-format
msgid "Are you sure you want to delete %{email}? This action is permanent!"
msgstr ""
#: lib/cannery_web/live/container_live/index.html.heex:99
#: lib/cannery_web/live/container_live/index.html.heex:157
#: lib/cannery_web/live/container_live/index.html.heex:113
#: lib/cannery_web/live/container_live/index.html.heex:171
#: lib/cannery_web/live/container_live/show.html.heex:45
#: lib/cannery_web/live/tag_live/index.html.heex:63
#, elixir-autogen, elixir-format
msgid "Are you sure you want to delete %{name}?"
msgstr ""
#: lib/cannery_web/live/pack_live/index.html.heex:185
#: lib/cannery_web/live/pack_live/index.html.heex:174
#: lib/cannery_web/live/pack_live/show.html.heex:69
#, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this ammo?"
@ -150,19 +150,14 @@ msgstr ""
msgid "Shots recorded successfully"
msgstr ""
#: lib/cannery_web/live/range_live/index.html.heex:34
#, elixir-autogen, elixir-format
msgid "Are you sure you want to unstage this ammo?"
msgstr ""
#: lib/cannery_web/live/pack_live/show.ex:157
#: lib/cannery_web/live/range_live/index.html.heex:151
#: lib/cannery_web/live/pack_live/show.ex:147
#: lib/cannery_web/live/range_live/index.html.heex:178
#, elixir-autogen, elixir-format
msgid "Are you sure you want to delete this shot record?"
msgstr ""
#: lib/cannery_web/live/pack_live/show.ex:79
#: lib/cannery_web/live/range_live/index.ex:78
#: lib/cannery_web/live/pack_live/show.ex:69
#: lib/cannery_web/live/range_live/index.ex:99
#, elixir-autogen, elixir-format
msgid "Shot records deleted succesfully"
msgstr ""
@ -219,11 +214,6 @@ msgstr ""
msgid "Ammo deleted succesfully"
msgstr ""
#: lib/cannery_web/live/range_live/index.ex:91
#, elixir-autogen, elixir-format
msgid "Ammo unstaged succesfully"
msgstr ""
#: lib/cannery_web/live/pack_live/form_component.ex:141
#, elixir-autogen, elixir-format
msgid "Ammo updated successfully"
@ -267,7 +257,7 @@ msgstr ""
msgid "%{invite_name} updated succesfully"
msgstr ""
#: lib/cannery_web/live/invite_live/index.ex:125
#: lib/cannery_web/live/invite_live/index.ex:139
#, elixir-autogen, elixir-format
msgid "%{user_email} deleted succesfully"
msgstr ""
@ -281,3 +271,13 @@ msgstr ""
#, elixir-autogen, elixir-format
msgid "Are you sure you want to make %{invite_name} unlimited?"
msgstr ""
#: lib/cannery_web/live/range_live/index.ex:114
#, elixir-autogen, elixir-format
msgid "Container unstaged succesfully"
msgstr ""
#: lib/cannery_web/live/invite_live/index.ex:128
#, elixir-autogen, elixir-format
msgid "Email resent to %{user_email} succesfully"
msgstr ""

View File

@ -0,0 +1,13 @@
defmodule Cannery.Repo.Migrations.MoveStagedToContainers do
use Ecto.Migration
def change do
alter table(:packs) do
remove :staged
end
alter table(:containers) do
add :staged, :boolean, default: false
end
end
end

View File

@ -310,7 +310,7 @@ defmodule Cannery.AccountsTest do
test "deletes all tokens for the given user", %{user: user} do
_session_token = Accounts.generate_user_session_token(user)
{:ok, _} =
{:ok, _user} =
Accounts.update_user_password(user, valid_user_password(), %{
password: "new valid password"
})

View File

@ -860,11 +860,13 @@ defmodule Cannery.AmmoTest do
test "list_packs/2 returns all relevant packs including staged", %{
type: type,
container: container,
pack: unstaged_pack,
current_user: current_user
} do
{1, [staged_pack]} = pack_fixture(%{staged: true}, type, container, current_user)
staged_container =
container_fixture(%{name: "fantastic container", staged: true}, current_user)
{1, [staged_pack]} = pack_fixture(type, staged_container, current_user)
assert Ammo.list_packs(current_user, staged: false) == [unstaged_pack]
assert Ammo.list_packs(current_user, staged: true) == [staged_pack]

View File

@ -50,7 +50,6 @@ defmodule CanneryWeb.ExportControllerTest do
"notes" => pack.notes,
"price_paid" => pack.price_paid,
"lot_number" => pack.lot_number,
"staged" => pack.staged,
"used_count" => ActivityLog.get_used_count(current_user, pack_id: pack.id),
"original_count" => pack |> Ammo.get_original_count(current_user),
"cpr" => pack |> Ammo.get_cpr(current_user),
@ -103,6 +102,7 @@ defmodule CanneryWeb.ExportControllerTest do
"id" => container.id,
"location" => container.location,
"name" => container.name,
"staged" => container.staged,
"tags" => [
%{
"id" => tag.id,

View File

@ -57,8 +57,8 @@ defmodule Cannery.Fixtures do
|> Atom.to_string()
|> Email.generate_email(Accounts.get_user!(user_id), attrs)
[_, html_token | _] = email.html_body |> String.split("[TOKEN]")
[_, text_token | _] = email.text_body |> String.split("[TOKEN]")
[_prefix, html_token | _suffix] = email.html_body |> String.split("[TOKEN]")
[_prefix, text_token | _suffix] = email.text_body |> String.split("[TOKEN]")
^text_token = html_token
end