@@ -33,7 +33,8 @@ django.jQuery(function ($) {
33
33
if ( templateConfig . required ) {
34
34
inputField . prop ( "disabled" , true ) ;
35
35
}
36
- if ( isSelected || templateConfig . required ) {
36
+ // mark the template as selected if it is required or if it is enabled for the current device or group
37
+ if ( isSelected || templateConfig . required || templateConfig . selected ) {
37
38
inputField . prop ( "checked" , true ) ;
38
39
}
39
40
return element ;
@@ -115,6 +116,14 @@ django.jQuery(function ($) {
115
116
var url = window . _relevantTemplateUrl . replace ( "org_id" , orgID ) ;
116
117
// Get relevant templates of selected org and backend
117
118
url = url + "?backend=" + backend ;
119
+ if ( ! isDeviceGroup ( ) ) {
120
+ var deviceID = $ ( 'input[name="config-0-device"]' ) . val ( ) ;
121
+ url = url + "&device=" + deviceID ;
122
+ } else {
123
+ // Get the group id from the URL
124
+ var pathParts = window . location . pathname . split ( "/" ) ;
125
+ url = url + "&group=" + pathParts [ pathParts . length - 3 ] ;
126
+ }
118
127
$ . get ( url ) . done ( function ( data ) {
119
128
resetTemplateOptions ( ) ;
120
129
var enabledTemplates = [ ] ,
@@ -156,7 +165,8 @@ django.jQuery(function ($) {
156
165
// Adds "li" elements for templates that are not selected
157
166
// in the database.
158
167
var counter =
159
- selectedTemplates !== undefined ? selectedTemplates . length : 0 ;
168
+ selectedTemplates !== undefined ? selectedTemplates . length : 0 ,
169
+ deviceTemplates = [ ] ;
160
170
Object . keys ( data ) . forEach ( function ( templateId , index ) {
161
171
// corner case in which backend of template does not match
162
172
if ( ! data [ templateId ] ) {
@@ -186,6 +196,9 @@ django.jQuery(function ($) {
186
196
if ( isSelected === true ) {
187
197
enabledTemplates . push ( templateId ) ;
188
198
}
199
+ if ( element . children ( ) . children ( "input" ) . prop ( "checked" ) === true ) {
200
+ deviceTemplates . push ( templateId ) ;
201
+ }
189
202
sortedm2mUl . append ( element ) ;
190
203
if ( ! isDeviceGroup ( ) ) {
191
204
sortedm2mPrefixUl . append ( prefixElement ) ;
@@ -194,6 +207,23 @@ django.jQuery(function ($) {
194
207
if ( firstRun === true && selectedTemplates !== undefined ) {
195
208
updateTemplateSelection ( selectedTemplates ) ;
196
209
}
210
+ // this runs on first load and sets the name of hidden input field which tracks
211
+ // the selected templates.
212
+ if ( selectedTemplates === undefined ) {
213
+ if ( ! isDeviceGroup ( ) ) {
214
+ $ (
215
+ `.has_original .field-templates .sortedm2m-container input[type="hidden"]` ,
216
+ ) . attr ( "name" , templatesFieldName ( ) ) ;
217
+ // set the initial value of the hidden input field
218
+ // to the selected templates
219
+ django . _owcInitialValues [ templatesFieldName ( ) ] =
220
+ deviceTemplates . join ( "," ) ;
221
+ } else {
222
+ $ (
223
+ `.field-templates .sortedm2m-container input[type="hidden"]` ,
224
+ ) . attr ( "name" , templatesFieldName ( ) ) ;
225
+ }
226
+ }
197
227
updateTemplateHelpText ( ) ;
198
228
updateConfigTemplateField ( enabledTemplates ) ;
199
229
} ) ;
0 commit comments