@@ -19,16 +19,25 @@ export const TemplatesIndex: FC<TemplateIndexProps> = () => {
19
19
}
20
20
)
21
21
useEffect ( ( ) => {
22
- const templatesJSON = localStorage . getItem ( "templates" )
23
- setTemplates ( JSON . parse ( templatesJSON ) )
24
- } , [ ] ) ;
25
-
22
+ const getTemplates = async ( ) => {
23
+ const templatesJSON = localStorage . getItem ( "templates" ) || "[]"
24
+ if ( templateQuery . data && templateQuery . data ?. length > 0 ) {
25
+ setTemplates ( templateQuery . data as [ ] )
26
+ } else if ( templatesJSON ) {
27
+ setTemplates ( JSON . parse ( templatesJSON ) . map ( template => ( { ...template , updatedAt : template . lastUpdated } ) ) )
28
+ } else {
29
+ setTemplates ( [ ] )
30
+ }
31
+ }
32
+ getTemplates ( ) ;
33
+ } , [ templateQuery . data ] ) ;
34
+
26
35
useEffect ( ( ) => {
27
36
28
37
const localStorageEvent = ( event ) => {
29
38
if ( event . storageArea === localStorage ) {
30
39
const templatesJSON = localStorage . getItem ( "templates" )
31
- setTemplates ( JSON . parse ( templatesJSON ) )
40
+ setTemplates ( JSON . parse ( templatesJSON || '[]' ) )
32
41
}
33
42
}
34
43
window . addEventListener ( "storage" , localStorageEvent , false )
@@ -42,6 +51,8 @@ export const TemplatesIndex: FC<TemplateIndexProps> = () => {
42
51
const templateColumnNames = {
43
52
'name' : 'Name' ,
44
53
'labName' : 'Lab' ,
54
+ 'lab' : 'Lab' ,
55
+ 'createdBy' : 'Creator' ,
45
56
'status' : 'Status' ,
46
57
'updatedAt' : 'Updated On'
47
58
}
@@ -55,15 +66,64 @@ export const TemplatesIndex: FC<TemplateIndexProps> = () => {
55
66
}
56
67
return new Date ( date ) . toLocaleDateString ( )
57
68
69
+ } ,
70
+ 'lastUpdated' : ( d ) => {
71
+ const date = Date . parse ( d )
72
+ if ( isNaN ( date ) ) {
73
+ return new Date ( ) . toLocaleDateString ( )
74
+ }
75
+ return new Date ( date ) . toLocaleDateString ( )
76
+
58
77
}
59
78
}
60
79
61
80
const templateColumns = [
62
- 'name' , 'updatedAt' , 'createdBy' , 'labName ' , 'status'
81
+ 'name' , 'updatedAt' , 'createdBy' , 'lab ' , 'status' , 'labName '
63
82
]
64
83
84
+ useEffect ( ( ) => {
85
+ console . debug ( `
86
+ The following methods have been added to the window:
87
+
88
+ LoadNiceTemplates - this will load some pre-formatted templates that display nicely
89
+ SaveTemplates - this will save the current templates to 'oldTemplates'
90
+ LoadSavedTemplates - this will load the templates saved in 'oldTemplates'
91
+ ClearTemplates - this will delete the current templates
92
+
93
+ ` )
94
+ window . LoadNiceTemplates = ( ) => {
95
+ const oldTemplates = localStorage . getItem ( 'templates' )
96
+ localStorage . setItem ( 'oldTemplates' , oldTemplates )
97
+ localStorage . setItem ( 'templates' , JSON . stringify ( templates2 ) )
98
+ setTemplates ( templates2 )
99
+ }
100
+ window . SaveTemplates = ( ) => {
101
+ const oldTemplates = localStorage . getItem ( 'templates' )
102
+ if ( ! oldTemplates ) {
103
+ return
104
+ }
105
+ localStorage . setItem ( 'oldTemplates' , oldTemplates )
106
+ }
107
+ window . ClearTemplates = ( ) => {
108
+ localStorage . removeItem ( 'templates' )
109
+ setTemplates ( [ ] )
110
+ }
111
+ window . LoadSavedTemplates = ( ) => {
112
+ const oldTemplates = localStorage . getItem ( 'oldTemplates' )
113
+ if ( oldTemplates ) {
114
+ localStorage . setItem ( 'templates' , oldTemplates )
115
+ setTemplates ( JSON . parse ( oldTemplates ) )
116
+ }
117
+ }
118
+ return ( ) => {
119
+ delete window . LoadNiceTemplates
120
+ delete window . SaveTemplates
121
+ delete window . ClearTemplates
122
+ delete window . LoadSavedTemplates
123
+ }
124
+ } ) ;
65
125
66
- if ( ! templateQuery . data || templateQuery . data . length === 0 ) {
126
+ if ( ! templates || templates . length === 0 ) {
67
127
return (
68
128
< > < img
69
129
className = "display-block margin-left-auto margin-right-auto padding-top-8"
@@ -98,7 +158,7 @@ export const TemplatesIndex: FC<TemplateIndexProps> = () => {
98
158
</ div >
99
159
< div className = "padding-1 border-1px border-gray-5 bg-white" >
100
160
< h2 > Saved Templates</ h2 >
101
- < SortableTable columns = { templateColumns } data = { templateQuery . data || [ ] }
161
+ < SortableTable columns = { templateColumns } data = { templates }
102
162
formatters = { templateColumnFormatters }
103
163
columnNames = { templateColumnNames }
104
164
/>
0 commit comments