mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-10-30 03:56:23 -05:00 
			
		
		
		
	Fix: include number placeholder in relative date strings
This commit is contained in:
		| @@ -7388,95 +7388,95 @@ | |||||||
|           <context context-type="linenumber">36</context> |           <context context-type="linenumber">36</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="4272436583644511364" datatype="html"> |       <trans-unit id="7811681478769461161" datatype="html"> | ||||||
|         <source>Just now</source> |         <source>%s year ago</source> | ||||||
|  |         <context-group purpose="location"> | ||||||
|  |           <context context-type="sourcefile">src/app/pipes/custom-date.pipe.ts</context> | ||||||
|  |           <context context-type="linenumber">14</context> | ||||||
|  |         </context-group> | ||||||
|  |       </trans-unit> | ||||||
|  |       <trans-unit id="3393387677918927062" datatype="html"> | ||||||
|  |         <source>%s years ago</source> | ||||||
|  |         <context-group purpose="location"> | ||||||
|  |           <context context-type="sourcefile">src/app/pipes/custom-date.pipe.ts</context> | ||||||
|  |           <context context-type="linenumber">15</context> | ||||||
|  |         </context-group> | ||||||
|  |       </trans-unit> | ||||||
|  |       <trans-unit id="3053246523831285824" datatype="html"> | ||||||
|  |         <source>%s month ago</source> | ||||||
|  |         <context-group purpose="location"> | ||||||
|  |           <context context-type="sourcefile">src/app/pipes/custom-date.pipe.ts</context> | ||||||
|  |           <context context-type="linenumber">19</context> | ||||||
|  |         </context-group> | ||||||
|  |       </trans-unit> | ||||||
|  |       <trans-unit id="1158628882375251480" datatype="html"> | ||||||
|  |         <source>%s months ago</source> | ||||||
|  |         <context-group purpose="location"> | ||||||
|  |           <context context-type="sourcefile">src/app/pipes/custom-date.pipe.ts</context> | ||||||
|  |           <context context-type="linenumber">20</context> | ||||||
|  |         </context-group> | ||||||
|  |       </trans-unit> | ||||||
|  |       <trans-unit id="7039133412826927309" datatype="html"> | ||||||
|  |         <source>%s week ago</source> | ||||||
|  |         <context-group purpose="location"> | ||||||
|  |           <context context-type="sourcefile">src/app/pipes/custom-date.pipe.ts</context> | ||||||
|  |           <context context-type="linenumber">24</context> | ||||||
|  |         </context-group> | ||||||
|  |       </trans-unit> | ||||||
|  |       <trans-unit id="2896962543647781653" datatype="html"> | ||||||
|  |         <source>%s weeks ago</source> | ||||||
|  |         <context-group purpose="location"> | ||||||
|  |           <context context-type="sourcefile">src/app/pipes/custom-date.pipe.ts</context> | ||||||
|  |           <context context-type="linenumber">25</context> | ||||||
|  |         </context-group> | ||||||
|  |       </trans-unit> | ||||||
|  |       <trans-unit id="91416192007234700" datatype="html"> | ||||||
|  |         <source>%s day ago</source> | ||||||
|  |         <context-group purpose="location"> | ||||||
|  |           <context context-type="sourcefile">src/app/pipes/custom-date.pipe.ts</context> | ||||||
|  |           <context context-type="linenumber">29</context> | ||||||
|  |         </context-group> | ||||||
|  |       </trans-unit> | ||||||
|  |       <trans-unit id="5601594741748068208" datatype="html"> | ||||||
|  |         <source>%s days ago</source> | ||||||
|  |         <context-group purpose="location"> | ||||||
|  |           <context context-type="sourcefile">src/app/pipes/custom-date.pipe.ts</context> | ||||||
|  |           <context context-type="linenumber">30</context> | ||||||
|  |         </context-group> | ||||||
|  |       </trans-unit> | ||||||
|  |       <trans-unit id="8387405724402999437" datatype="html"> | ||||||
|  |         <source>%s hour ago</source> | ||||||
|  |         <context-group purpose="location"> | ||||||
|  |           <context context-type="sourcefile">src/app/pipes/custom-date.pipe.ts</context> | ||||||
|  |           <context context-type="linenumber">34</context> | ||||||
|  |         </context-group> | ||||||
|  |       </trans-unit> | ||||||
|  |       <trans-unit id="2008395012733474465" datatype="html"> | ||||||
|  |         <source>%s hours ago</source> | ||||||
|  |         <context-group purpose="location"> | ||||||
|  |           <context context-type="sourcefile">src/app/pipes/custom-date.pipe.ts</context> | ||||||
|  |           <context context-type="linenumber">35</context> | ||||||
|  |         </context-group> | ||||||
|  |       </trans-unit> | ||||||
|  |       <trans-unit id="5782387980670840884" datatype="html"> | ||||||
|  |         <source>%s minute ago</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/pipes/custom-date.pipe.ts</context> |           <context context-type="sourcefile">src/app/pipes/custom-date.pipe.ts</context> | ||||||
|           <context context-type="linenumber">39</context> |           <context context-type="linenumber">39</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="8456127468852940807" datatype="html"> |       <trans-unit id="7573942914011074807" datatype="html"> | ||||||
|         <source>year ago</source> |         <source>%s minutes ago</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/pipes/custom-date.pipe.ts</context> |           <context context-type="sourcefile">src/app/pipes/custom-date.pipe.ts</context> | ||||||
|           <context context-type="linenumber">42</context> |           <context context-type="linenumber">40</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="963494111451627204" datatype="html"> |       <trans-unit id="4272436583644511364" datatype="html"> | ||||||
|         <source>years ago</source> |         <source>Just now</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/pipes/custom-date.pipe.ts</context> |           <context context-type="sourcefile">src/app/pipes/custom-date.pipe.ts</context> | ||||||
|           <context context-type="linenumber">43</context> |           <context context-type="linenumber">72</context> | ||||||
|         </context-group> |  | ||||||
|       </trans-unit> |  | ||||||
|       <trans-unit id="1919405338795657780" datatype="html"> |  | ||||||
|         <source>month ago</source> |  | ||||||
|         <context-group purpose="location"> |  | ||||||
|           <context context-type="sourcefile">src/app/pipes/custom-date.pipe.ts</context> |  | ||||||
|           <context context-type="linenumber">47</context> |  | ||||||
|         </context-group> |  | ||||||
|       </trans-unit> |  | ||||||
|       <trans-unit id="6041340836190906216" datatype="html"> |  | ||||||
|         <source>months ago</source> |  | ||||||
|         <context-group purpose="location"> |  | ||||||
|           <context context-type="sourcefile">src/app/pipes/custom-date.pipe.ts</context> |  | ||||||
|           <context context-type="linenumber">48</context> |  | ||||||
|         </context-group> |  | ||||||
|       </trans-unit> |  | ||||||
|       <trans-unit id="4072659649620334828" datatype="html"> |  | ||||||
|         <source>week ago</source> |  | ||||||
|         <context-group purpose="location"> |  | ||||||
|           <context context-type="sourcefile">src/app/pipes/custom-date.pipe.ts</context> |  | ||||||
|           <context context-type="linenumber">52</context> |  | ||||||
|         </context-group> |  | ||||||
|       </trans-unit> |  | ||||||
|       <trans-unit id="2871318661796659216" datatype="html"> |  | ||||||
|         <source>weeks ago</source> |  | ||||||
|         <context-group purpose="location"> |  | ||||||
|           <context context-type="sourcefile">src/app/pipes/custom-date.pipe.ts</context> |  | ||||||
|           <context context-type="linenumber">53</context> |  | ||||||
|         </context-group> |  | ||||||
|       </trans-unit> |  | ||||||
|       <trans-unit id="1328378419272652134" datatype="html"> |  | ||||||
|         <source>day ago</source> |  | ||||||
|         <context-group purpose="location"> |  | ||||||
|           <context context-type="sourcefile">src/app/pipes/custom-date.pipe.ts</context> |  | ||||||
|           <context context-type="linenumber">57</context> |  | ||||||
|         </context-group> |  | ||||||
|       </trans-unit> |  | ||||||
|       <trans-unit id="5620397708418210833" datatype="html"> |  | ||||||
|         <source>days ago</source> |  | ||||||
|         <context-group purpose="location"> |  | ||||||
|           <context context-type="sourcefile">src/app/pipes/custom-date.pipe.ts</context> |  | ||||||
|           <context context-type="linenumber">58</context> |  | ||||||
|         </context-group> |  | ||||||
|       </trans-unit> |  | ||||||
|       <trans-unit id="4259498317457105735" datatype="html"> |  | ||||||
|         <source>hour ago</source> |  | ||||||
|         <context-group purpose="location"> |  | ||||||
|           <context context-type="sourcefile">src/app/pipes/custom-date.pipe.ts</context> |  | ||||||
|           <context context-type="linenumber">62</context> |  | ||||||
|         </context-group> |  | ||||||
|       </trans-unit> |  | ||||||
|       <trans-unit id="7576594819545407052" datatype="html"> |  | ||||||
|         <source>hours ago</source> |  | ||||||
|         <context-group purpose="location"> |  | ||||||
|           <context context-type="sourcefile">src/app/pipes/custom-date.pipe.ts</context> |  | ||||||
|           <context context-type="linenumber">63</context> |  | ||||||
|         </context-group> |  | ||||||
|       </trans-unit> |  | ||||||
|       <trans-unit id="4063456036422970205" datatype="html"> |  | ||||||
|         <source>minute ago</source> |  | ||||||
|         <context-group purpose="location"> |  | ||||||
|           <context context-type="sourcefile">src/app/pipes/custom-date.pipe.ts</context> |  | ||||||
|           <context context-type="linenumber">67</context> |  | ||||||
|         </context-group> |  | ||||||
|       </trans-unit> |  | ||||||
|       <trans-unit id="6906829094715901970" datatype="html"> |  | ||||||
|         <source>minutes ago</source> |  | ||||||
|         <context-group purpose="location"> |  | ||||||
|           <context context-type="sourcefile">src/app/pipes/custom-date.pipe.ts</context> |  | ||||||
|           <context context-type="linenumber">68</context> |  | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="7536524521722799066" datatype="html"> |       <trans-unit id="7536524521722799066" datatype="html"> | ||||||
|   | |||||||
| @@ -1,10 +1,7 @@ | |||||||
| import { TestBed } from '@angular/core/testing' | import { TestBed } from '@angular/core/testing' | ||||||
| import { CustomDatePipe } from './custom-date.pipe' | import { CustomDatePipe } from './custom-date.pipe' | ||||||
| import { SettingsService } from '../services/settings.service' | import { SettingsService } from '../services/settings.service' | ||||||
| import { | import { HttpClientTestingModule } from '@angular/common/http/testing' | ||||||
|   HttpClientTestingModule, |  | ||||||
|   HttpTestingController, |  | ||||||
| } from '@angular/common/http/testing' |  | ||||||
| import { DatePipe } from '@angular/common' | import { DatePipe } from '@angular/common' | ||||||
|  |  | ||||||
| describe('CustomDatePipe', () => { | describe('CustomDatePipe', () => { | ||||||
|   | |||||||
| @@ -9,6 +9,39 @@ const FORMAT_TO_ISO_FORMAT = { | |||||||
|   shortDate: 'y-MM-dd', |   shortDate: 'y-MM-dd', | ||||||
| } | } | ||||||
|  |  | ||||||
|  | const INTERVALS = { | ||||||
|  |   year: { | ||||||
|  |     label: $localize`%s year ago`, | ||||||
|  |     labelPlural: $localize`%s years ago`, | ||||||
|  |     interval: 31536000, | ||||||
|  |   }, | ||||||
|  |   month: { | ||||||
|  |     label: $localize`%s month ago`, | ||||||
|  |     labelPlural: $localize`%s months ago`, | ||||||
|  |     interval: 2592000, | ||||||
|  |   }, | ||||||
|  |   week: { | ||||||
|  |     label: $localize`%s week ago`, | ||||||
|  |     labelPlural: $localize`%s weeks ago`, | ||||||
|  |     interval: 604800, | ||||||
|  |   }, | ||||||
|  |   day: { | ||||||
|  |     label: $localize`%s day ago`, | ||||||
|  |     labelPlural: $localize`%s days ago`, | ||||||
|  |     interval: 86400, | ||||||
|  |   }, | ||||||
|  |   hour: { | ||||||
|  |     label: $localize`%s hour ago`, | ||||||
|  |     labelPlural: $localize`%s hours ago`, | ||||||
|  |     interval: 3600, | ||||||
|  |   }, | ||||||
|  |   minute: { | ||||||
|  |     label: $localize`%s minute ago`, | ||||||
|  |     labelPlural: $localize`%s minutes ago`, | ||||||
|  |     interval: 60, | ||||||
|  |   }, | ||||||
|  | } | ||||||
|  |  | ||||||
| @Pipe({ | @Pipe({ | ||||||
|   name: 'customDate', |   name: 'customDate', | ||||||
| }) | }) | ||||||
| @@ -37,45 +70,13 @@ export class CustomDatePipe implements PipeTransform { | |||||||
|     if (format === 'relative') { |     if (format === 'relative') { | ||||||
|       const seconds = Math.floor((+new Date() - +new Date(value)) / 1000) |       const seconds = Math.floor((+new Date() - +new Date(value)) / 1000) | ||||||
|       if (seconds < 60) return $localize`Just now` |       if (seconds < 60) return $localize`Just now` | ||||||
|       const intervals = { |  | ||||||
|         year: { |  | ||||||
|           label: $localize`year ago`, |  | ||||||
|           labelPlural: $localize`years ago`, |  | ||||||
|           interval: 31536000, |  | ||||||
|         }, |  | ||||||
|         month: { |  | ||||||
|           label: $localize`month ago`, |  | ||||||
|           labelPlural: $localize`months ago`, |  | ||||||
|           interval: 2592000, |  | ||||||
|         }, |  | ||||||
|         week: { |  | ||||||
|           label: $localize`week ago`, |  | ||||||
|           labelPlural: $localize`weeks ago`, |  | ||||||
|           interval: 604800, |  | ||||||
|         }, |  | ||||||
|         day: { |  | ||||||
|           label: $localize`day ago`, |  | ||||||
|           labelPlural: $localize`days ago`, |  | ||||||
|           interval: 86400, |  | ||||||
|         }, |  | ||||||
|         hour: { |  | ||||||
|           label: $localize`hour ago`, |  | ||||||
|           labelPlural: $localize`hours ago`, |  | ||||||
|           interval: 3600, |  | ||||||
|         }, |  | ||||||
|         minute: { |  | ||||||
|           label: $localize`minute ago`, |  | ||||||
|           labelPlural: $localize`minutes ago`, |  | ||||||
|           interval: 60, |  | ||||||
|         }, |  | ||||||
|       } |  | ||||||
|       let counter |       let counter | ||||||
|       for (const i in intervals) { |       for (const i in INTERVALS) { | ||||||
|         counter = Math.floor(seconds / intervals[i].interval) |         counter = Math.floor(seconds / INTERVALS[i].interval) | ||||||
|         if (counter > 0) { |         if (counter > 0) { | ||||||
|           const label = |           const label = | ||||||
|             counter > 1 ? intervals[i].labelPlural : intervals[i].label |             counter > 1 ? INTERVALS[i].labelPlural : INTERVALS[i].label | ||||||
|           return `${counter} ${label}` |           return label.replace('%s', counter.toString()) | ||||||
|         } |         } | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 shamoon
					shamoon