djgentelella 0.3.28__py3-none-any.whl → 0.4.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- djgentelella/__init__.py +4 -1
- djgentelella/admin.py +4 -3
- djgentelella/fields/files.py +27 -1
- djgentelella/firmador_digital/__init__.py +0 -0
- djgentelella/firmador_digital/config/__init__.py +0 -0
- djgentelella/firmador_digital/config/asgi_config.py +32 -0
- djgentelella/firmador_digital/config/asgi_worker.py +5 -0
- djgentelella/firmador_digital/config/websocket_urls.py +4 -0
- djgentelella/firmador_digital/consumers/__init__.py +0 -0
- djgentelella/firmador_digital/consumers/pdf_render.py +8 -0
- djgentelella/firmador_digital/consumers/sign.py +148 -0
- djgentelella/firmador_digital/forms.py +28 -0
- djgentelella/firmador_digital/gunicorn/config_asgi.py +12 -0
- djgentelella/firmador_digital/gunicorn/config_wsgi.py +13 -0
- djgentelella/firmador_digital/models.py +33 -0
- djgentelella/firmador_digital/signvalue_utils.py +41 -0
- djgentelella/firmador_digital/utils.py +154 -0
- djgentelella/firmador_digital/viewsets.py +77 -0
- djgentelella/groute.py +6 -1
- djgentelella/gtselects.py +5 -9
- djgentelella/locale/es/LC_MESSAGES/django.mo +0 -0
- djgentelella/locale/es/LC_MESSAGES/django.po +103 -6
- djgentelella/locale/es/LC_MESSAGES/djangojs.mo +0 -0
- djgentelella/locale/es/LC_MESSAGES/djangojs.po +107 -8
- djgentelella/management/commands/createbasejs.py +3 -0
- djgentelella/management/commands/loaddevstatic.py +18 -0
- djgentelella/migrations/0013_usersignatureconfig.py +25 -0
- djgentelella/serializers/firmador_digital.py +103 -0
- djgentelella/settings.py +5 -4
- djgentelella/static/djgentelella.readonly.vendors.min.css +1 -1
- djgentelella/static/djgentelella.readonly.vendors.min.js +1 -1
- djgentelella/static/djgentelella.vendors.header.min.js +1 -1
- djgentelella/static/djgentelella.vendors.min.css +2 -2
- djgentelella/static/gentelella/css/pdfviewer.css +147 -0
- djgentelella/static/gentelella/images/firmador.ico +0 -0
- djgentelella/static/gentelella/js/base/digital_signature.js +945 -0
- djgentelella/static/gentelella/js/base.js +947 -0
- djgentelella/static/gentelella/js/datatables.js +2 -2
- djgentelella/static/gentelella/js/widgets.js +72 -59
- djgentelella/static/vendors/friconix/friconix.js +1 -1
- djgentelella/static/vendors/pdfjs/images/altText_add.svg +3 -0
- djgentelella/static/vendors/pdfjs/images/altText_disclaimer.svg +3 -0
- djgentelella/static/vendors/pdfjs/images/altText_done.svg +3 -0
- djgentelella/static/vendors/pdfjs/images/altText_spinner.svg +30 -0
- djgentelella/static/vendors/pdfjs/images/altText_warning.svg +3 -0
- djgentelella/static/vendors/pdfjs/images/cursor-editorFreeHighlight.svg +6 -0
- djgentelella/static/vendors/pdfjs/images/cursor-editorFreeText.svg +3 -0
- djgentelella/static/vendors/pdfjs/images/cursor-editorInk.svg +4 -0
- djgentelella/static/vendors/pdfjs/images/cursor-editorTextHighlight.svg +8 -0
- djgentelella/static/vendors/pdfjs/images/editor-toolbar-delete.svg +5 -0
- djgentelella/static/vendors/pdfjs/images/loading-icon.gif +0 -0
- djgentelella/static/vendors/pdfjs/images/messageBar_closingButton.svg +3 -0
- djgentelella/static/vendors/pdfjs/images/messageBar_warning.svg +3 -0
- djgentelella/static/vendors/pdfjs/images/toolbarButton-editorHighlight.svg +6 -0
- djgentelella/static/vendors/pdfjs/images/toolbarButton-menuArrow.svg +3 -0
- djgentelella/static/vendors/timeline/css/timeline.css +1 -1
- djgentelella/static/vendors/timeline/js/timeline.js +1 -1
- djgentelella/templates/gentelella/registration/login.html +38 -42
- djgentelella/templates/gentelella/statics/javascript.html +75 -61
- djgentelella/templates/gentelella/statics/stylesheets.html +11 -10
- djgentelella/templates/gentelella/widgets/addtreeselect.html +1 -1
- djgentelella/templates/gentelella/widgets/chunkedupload.html +2 -2
- djgentelella/templates/gentelella/widgets/digital_signature.html +208 -0
- djgentelella/templates/gentelella/widgets/file.html +15 -16
- djgentelella/templatetags/gtsettings.py +4 -0
- djgentelella/urls.py +1 -1
- djgentelella/widgets/core.py +5 -2
- djgentelella/widgets/digital_signature.py +116 -0
- {djgentelella-0.3.28.dist-info → djgentelella-0.4.0.dist-info}/METADATA +18 -20
- {djgentelella-0.3.28.dist-info → djgentelella-0.4.0.dist-info}/RECORD +74 -37
- {djgentelella-0.3.28.dist-info → djgentelella-0.4.0.dist-info}/WHEEL +1 -1
- {djgentelella-0.3.28.dist-info → djgentelella-0.4.0.dist-info}/AUTHORS +0 -0
- {djgentelella-0.3.28.dist-info → djgentelella-0.4.0.dist-info}/LICENSE.txt +0 -0
- {djgentelella-0.3.28.dist-info → djgentelella-0.4.0.dist-info}/top_level.txt +0 -0
|
@@ -162,7 +162,7 @@ function clearDataTableFilters(dataTable, tableId){
|
|
|
162
162
|
$(tableId).find('input, select').val('');
|
|
163
163
|
$(tableId).find('.tableselect').val(null).trigger('change');
|
|
164
164
|
}
|
|
165
|
-
function yesnoprint(data, type, row, meta){ return data ? "<i class=\"fa fa-check-circle\"></i> "+gettext("Yes") : "<i class=\"fa fa-times-circle\"></i>"+gettext("No"); };
|
|
165
|
+
function yesnoprint(data, type, row, meta){ return data ? "<i class=\"fa fa-check-circle\"></i> "+gettext("Yes") : "<i class=\"fa fa-times-circle\"></i> "+gettext("No"); };
|
|
166
166
|
function emptyprint(data, type, row, meta){ return data ? data : "--"; };
|
|
167
167
|
// hacer que se pueda definir el tipo el objeto ej data.name
|
|
168
168
|
|
|
@@ -269,7 +269,7 @@ function gtCreateDataTable(id, url, table_options={}){
|
|
|
269
269
|
|
|
270
270
|
function createDataTable(id, url, extraoptions={}, addfilter=false, formatDataTableParamsfnc=formatDataTableParams){
|
|
271
271
|
const options = Object.assign({}, {
|
|
272
|
-
formatDataTableParamsfnc :
|
|
272
|
+
formatDataTableParamsfnc : formatDataTableParamsfnc,
|
|
273
273
|
addfilter: addfilter
|
|
274
274
|
}, extraoptions);
|
|
275
275
|
return gtCreateDataTable(id, url, options);
|
|
@@ -1,32 +1,32 @@
|
|
|
1
1
|
document.formset = [];
|
|
2
2
|
document.gtwidgets = {
|
|
3
|
-
ImageRecordInput: function(instance){
|
|
3
|
+
ImageRecordInput: function (instance) {
|
|
4
4
|
instance.each(function (i, e) {
|
|
5
5
|
getMediaRecord(e, 'photo');
|
|
6
6
|
});
|
|
7
7
|
},
|
|
8
|
-
VideoRecordInput: function(instance){
|
|
8
|
+
VideoRecordInput: function (instance) {
|
|
9
9
|
instance.each(function (i, e) {
|
|
10
10
|
getMediaRecord(e, 'video');
|
|
11
11
|
});
|
|
12
12
|
},
|
|
13
|
-
AudioRecordInput: function(instance){
|
|
13
|
+
AudioRecordInput: function (instance) {
|
|
14
14
|
instance.each(function (i, e) {
|
|
15
15
|
getMediaRecord(e, 'audio');
|
|
16
16
|
});
|
|
17
17
|
},
|
|
18
18
|
Select: function (instance) {
|
|
19
19
|
instance.each(function (i, e) {
|
|
20
|
-
let s2instance
|
|
21
|
-
let contexts2={};
|
|
20
|
+
let s2instance = $(e);
|
|
21
|
+
let contexts2 = {};
|
|
22
22
|
extract_select2_context(contexts2, s2instance);
|
|
23
23
|
s2instance.select2(contexts2);
|
|
24
24
|
});
|
|
25
25
|
},
|
|
26
26
|
SelectMultiple: function (instance) {
|
|
27
27
|
instance.each(function (i, e) {
|
|
28
|
-
let s2instance
|
|
29
|
-
let contexts2={};
|
|
28
|
+
let s2instance = $(e);
|
|
29
|
+
let contexts2 = {};
|
|
30
30
|
extract_select2_context(contexts2, s2instance);
|
|
31
31
|
s2instance.select2(contexts2);
|
|
32
32
|
});
|
|
@@ -34,8 +34,8 @@ document.gtwidgets = {
|
|
|
34
34
|
TreeSelect: function (instance) {
|
|
35
35
|
|
|
36
36
|
instance.each(function (i, e) {
|
|
37
|
-
let s2instance
|
|
38
|
-
let contexts2={
|
|
37
|
+
let s2instance = $(e);
|
|
38
|
+
let contexts2 = {templateResult: decore_select2};
|
|
39
39
|
extract_select2_context(contexts2, s2instance);
|
|
40
40
|
s2instance.select2(contexts2);
|
|
41
41
|
});
|
|
@@ -43,7 +43,7 @@ document.gtwidgets = {
|
|
|
43
43
|
CheckboxInput: function (instance) {
|
|
44
44
|
|
|
45
45
|
var checkklass = instance.data('checkboxclass') || 'icheckbox_flat-green';
|
|
46
|
-
var radioklass
|
|
46
|
+
var radioklass = instance.data('radioclass') || 'iradio_flat-green';
|
|
47
47
|
instance.iCheck({
|
|
48
48
|
checkboxClass: checkklass,
|
|
49
49
|
radioClass: radioklass
|
|
@@ -51,14 +51,14 @@ document.gtwidgets = {
|
|
|
51
51
|
},
|
|
52
52
|
YesNoInput: function (instance) {
|
|
53
53
|
instance.each(function (index, element) {
|
|
54
|
-
switchery = new Switchery(element, {
|
|
54
|
+
switchery = new Switchery(element, {color: '#26B99A'});
|
|
55
55
|
instance.data('switchery', switchery);
|
|
56
56
|
showHideRelatedFormFields($(element));
|
|
57
57
|
});
|
|
58
58
|
},
|
|
59
|
-
NullBooleanSelect: function(instance){
|
|
59
|
+
NullBooleanSelect: function (instance) {
|
|
60
60
|
var checkklass = instance.data('checkboxclass') || 'icheckbox_flat-green';
|
|
61
|
-
var radioklass
|
|
61
|
+
var radioklass = instance.data('radioclass') || 'iradio_flat-green';
|
|
62
62
|
instance.iCheck({
|
|
63
63
|
checkboxClass: checkklass,
|
|
64
64
|
radioClass: radioklass
|
|
@@ -66,11 +66,11 @@ document.gtwidgets = {
|
|
|
66
66
|
},
|
|
67
67
|
DateRangeInput: function (instance) {
|
|
68
68
|
format = instance.attr('data-format')
|
|
69
|
-
instance.each((i,element)=>{
|
|
70
|
-
|
|
71
|
-
|
|
69
|
+
instance.each((i, element) => {
|
|
70
|
+
$(element).daterangepicker(load_date_range(instance), (from_date, to_date) => {
|
|
71
|
+
$(element).val(from_date.format(format) + ' - ' + to_date.format(format));
|
|
72
|
+
});
|
|
72
73
|
});
|
|
73
|
-
});
|
|
74
74
|
},
|
|
75
75
|
|
|
76
76
|
GridSlider: function (instance) {
|
|
@@ -86,56 +86,62 @@ document.gtwidgets = {
|
|
|
86
86
|
instance.daterangepicker(load_date_range_custom(instance));
|
|
87
87
|
},
|
|
88
88
|
RadioVerticalSelect: function (instance) {
|
|
89
|
-
instance.find('input').iCheck({
|
|
89
|
+
instance.find('input').iCheck({radioClass: 'iradio_flat-green'});
|
|
90
90
|
},
|
|
91
91
|
RadioHorizontalSelect: function (instance) {
|
|
92
|
-
instance.find('input').iCheck({
|
|
92
|
+
instance.find('input').iCheck({radioClass: 'iradio_flat-green'});
|
|
93
93
|
},
|
|
94
94
|
DateRangeTimeInput: function (instance) {
|
|
95
95
|
instance.daterangepicker(load_datetime_range(instance));
|
|
96
96
|
},
|
|
97
97
|
DateTimeInput: function (instance) {
|
|
98
|
-
instance.datetimepicker({
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
98
|
+
instance.datetimepicker({
|
|
99
|
+
format: instance.data('format'),
|
|
100
|
+
sideBySide: true, icons: {
|
|
101
|
+
time: "fa fa-clock-o",
|
|
102
|
+
up: "fa fa-arrow-up",
|
|
103
|
+
down: "fa fa-arrow-down"
|
|
104
|
+
}
|
|
105
|
+
});// "YYYY-MM-DD HH:mm"
|
|
104
106
|
},
|
|
105
107
|
TimeInput: function (instance) {
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
108
|
+
instance.datetimepicker({
|
|
109
|
+
format: instance.data('format'),
|
|
110
|
+
sideBySide: true, icons: {
|
|
111
|
+
time: "fa fa-clock-o",
|
|
112
|
+
up: "fa fa-arrow-up",
|
|
113
|
+
down: "fa fa-arrow-down"
|
|
114
|
+
}
|
|
115
|
+
}); // 'HH:mm'
|
|
112
116
|
},
|
|
113
117
|
DateInput: function (instance) {
|
|
114
|
-
instance.datetimepicker({format: instance.data('format')
|
|
118
|
+
instance.datetimepicker({format: instance.data('format')}); //"DD/MM/YYYY"
|
|
115
119
|
},
|
|
116
120
|
Textarea: function (instance) {
|
|
117
121
|
autosize(instance);
|
|
118
122
|
instance.each(function (i, e) {
|
|
119
123
|
if ($(e).attr('maxlength') != undefined) {
|
|
120
|
-
$(e).maxlength({
|
|
124
|
+
$(e).maxlength({alwaysShow: true, warningClass: "label label-success"});
|
|
121
125
|
}
|
|
122
126
|
});
|
|
123
127
|
},
|
|
124
128
|
PhoneNumberMaskInput: function (instance) {
|
|
125
|
-
instance.inputmask({
|
|
129
|
+
instance.inputmask({"mask": "(999)9999-9999"});
|
|
126
130
|
},
|
|
127
131
|
PhoneNumberTwoDigitMaskInput: function (instance) {
|
|
128
|
-
instance.inputmask({
|
|
132
|
+
instance.inputmask({"mask": "(99)9999-9999"});
|
|
129
133
|
},
|
|
130
134
|
PhoneNumberFourDigitMaskInput: function (instance) {
|
|
131
|
-
instance.inputmask({
|
|
135
|
+
instance.inputmask({"mask": "(9999)9999-9999"});
|
|
132
136
|
},
|
|
133
137
|
DateMaskInput: function (instance) {
|
|
134
|
-
instance.inputmask("99/99/9999", {
|
|
138
|
+
instance.inputmask("99/99/9999", {"placeholder": "dd/mm/yyyy"});
|
|
135
139
|
},
|
|
136
140
|
DateTimeMaskInput: function (instance) {
|
|
137
|
-
instance.inputmask("99/99/9999 99:99", {
|
|
138
|
-
|
|
141
|
+
instance.inputmask("99/99/9999 99:99", {
|
|
142
|
+
"placeholder": "dd/mm/yyyy HH:mm",
|
|
143
|
+
format: "YYYY-MM-DD HH:mm"
|
|
144
|
+
});
|
|
139
145
|
},
|
|
140
146
|
EmailMaskInput: function (instance) {
|
|
141
147
|
instance.inputmask({
|
|
@@ -156,8 +162,8 @@ document.gtwidgets = {
|
|
|
156
162
|
SelectWithAdd: function (instance) {
|
|
157
163
|
instance.addselectwidget();
|
|
158
164
|
instance.each(function (i, e) {
|
|
159
|
-
let contexts2={};
|
|
160
|
-
let s2instance
|
|
165
|
+
let contexts2 = {};
|
|
166
|
+
let s2instance = $(e);
|
|
161
167
|
extract_select2_context(contexts2, s2instance);
|
|
162
168
|
s2instance.select2(contexts2);
|
|
163
169
|
});
|
|
@@ -165,18 +171,18 @@ document.gtwidgets = {
|
|
|
165
171
|
SelectMultipleAdd: function (instance) {
|
|
166
172
|
instance.addselectwidget();
|
|
167
173
|
instance.each(function (i, e) {
|
|
168
|
-
let contexts2={};
|
|
169
|
-
let s2instance
|
|
174
|
+
let contexts2 = {};
|
|
175
|
+
let s2instance = $(e);
|
|
170
176
|
extract_select2_context(contexts2, s2instance);
|
|
171
177
|
s2instance.select2(contexts2);
|
|
172
178
|
});
|
|
173
179
|
},
|
|
174
180
|
TreeSelectMultipleWithAdd: function (instance) {
|
|
175
181
|
instance.addselectwidget();
|
|
176
|
-
instance.select2({
|
|
182
|
+
instance.select2({templateResult: decore_select2});
|
|
177
183
|
instance.each(function (i, e) {
|
|
178
|
-
let s2instance
|
|
179
|
-
let contexts2={
|
|
184
|
+
let s2instance = $(e);
|
|
185
|
+
let contexts2 = {templateResult: decore_select2};
|
|
180
186
|
extract_select2_context(contexts2, s2instance);
|
|
181
187
|
s2instance.select2(contexts2);
|
|
182
188
|
});
|
|
@@ -184,8 +190,8 @@ document.gtwidgets = {
|
|
|
184
190
|
TreeSelectWithAdd: function (instance) {
|
|
185
191
|
instance.addselectwidget();
|
|
186
192
|
instance.each(function (i, e) {
|
|
187
|
-
let s2instance
|
|
188
|
-
let contexts2={
|
|
193
|
+
let s2instance = $(e);
|
|
194
|
+
let contexts2 = {templateResult: decore_select2};
|
|
189
195
|
extract_select2_context(contexts2, s2instance);
|
|
190
196
|
s2instance.select2(contexts2);
|
|
191
197
|
});
|
|
@@ -200,13 +206,13 @@ document.gtwidgets = {
|
|
|
200
206
|
build_select2_init(instance);
|
|
201
207
|
},
|
|
202
208
|
SerialNumberMaskInput: function (instance) {
|
|
203
|
-
instance.inputmask({
|
|
209
|
+
instance.inputmask({"mask": "9999-9999-9999-9999-999"});
|
|
204
210
|
},
|
|
205
211
|
TaxIDMaskInput: function (instance) {
|
|
206
|
-
instance.inputmask({
|
|
212
|
+
instance.inputmask({"mask": "99-99999999"});
|
|
207
213
|
},
|
|
208
214
|
CreditCardMaskInput: function (instance) {
|
|
209
|
-
instance.inputmask({
|
|
215
|
+
instance.inputmask({"mask": "9999-9999-9999-9999"});
|
|
210
216
|
},
|
|
211
217
|
NumberKnobInput: function (instance) {
|
|
212
218
|
instance.knob();
|
|
@@ -217,7 +223,7 @@ document.gtwidgets = {
|
|
|
217
223
|
menubar: false,
|
|
218
224
|
toolbar: 'undo redo | bold italic underline strikethrough | fontselect fontsizeselect formatselect | alignleft aligncenter alignright alignjustify | outdent indent | numlist bullist checklist | forecolor backcolor casechange permanentpen formatpainter removeformat | pagebreak | charmap emoticons | fullscreen preview save print | insertfile image media pageembed template link anchor codesample | a11ycheck ltr rtl | showcomments addcomment',
|
|
219
225
|
plugins: ['autolink', 'codesample', 'link', 'lists', 'media', 'quickbars', "advlist autolink lists link image charmap print preview anchor",
|
|
220
|
-
"searchreplace visualblocks code fullscreen","insertdatetime media table paste imagetools wordcount",
|
|
226
|
+
"searchreplace visualblocks code fullscreen", "insertdatetime media table paste imagetools wordcount",
|
|
221
227
|
"autoresize", "hr", "image",
|
|
222
228
|
],
|
|
223
229
|
quickbars_insert_toolbar: 'quicktable | hr pagebreak',
|
|
@@ -228,7 +234,7 @@ document.gtwidgets = {
|
|
|
228
234
|
input.onchange = function () {
|
|
229
235
|
var file = this.files[0];
|
|
230
236
|
upload_files(callback, meta, file, instance.attr('data-option-image'),
|
|
231
|
-
|
|
237
|
+
instance.attr('data-option-video'));
|
|
232
238
|
};
|
|
233
239
|
input.click();
|
|
234
240
|
},
|
|
@@ -241,7 +247,7 @@ document.gtwidgets = {
|
|
|
241
247
|
menubar: false,
|
|
242
248
|
toolbar: 'undo redo | bold italic underline strikethrough | fontselect fontsizeselect formatselect | alignleft aligncenter alignright alignjustify | outdent indent | numlist bullist checklist | forecolor backcolor casechange permanentpen formatpainter removeformat | pagebreak | charmap emoticons | fullscreen preview save print | insertfile image media pageembed template link anchor codesample | a11ycheck ltr rtl | showcomments addcomment',
|
|
243
249
|
plugins: ['autolink', 'codesample', 'link', 'lists', 'media', 'quickbars', "advlist autolink lists link image charmap print preview anchor",
|
|
244
|
-
"searchreplace visualblocks code fullscreen","insertdatetime media table paste imagetools wordcount",
|
|
250
|
+
"searchreplace visualblocks code fullscreen", "insertdatetime media table paste imagetools wordcount",
|
|
245
251
|
"autoresize", "hr", "image",
|
|
246
252
|
],
|
|
247
253
|
quickbars_insert_toolbar: 'quicktable | hr pagebreak',
|
|
@@ -252,7 +258,7 @@ document.gtwidgets = {
|
|
|
252
258
|
input.onchange = function () {
|
|
253
259
|
var file = this.files[0];
|
|
254
260
|
upload_files(callback, meta, file, instance.attr('data-option-image'),
|
|
255
|
-
|
|
261
|
+
instance.attr('data-option-video'));
|
|
256
262
|
};
|
|
257
263
|
input.click();
|
|
258
264
|
},
|
|
@@ -268,12 +274,12 @@ document.gtwidgets = {
|
|
|
268
274
|
DJGraph: function (instance) {
|
|
269
275
|
instance.gentelella_chart();
|
|
270
276
|
},
|
|
271
|
-
NullBooleanSelect: function(instance){
|
|
272
|
-
|
|
277
|
+
NullBooleanSelect: function (instance) {
|
|
278
|
+
instance.iCheck({
|
|
273
279
|
checkboxClass: 'icheckbox_flat-green',
|
|
274
280
|
radioClass: 'iradio_flat-green'
|
|
275
281
|
});
|
|
276
|
-
|
|
282
|
+
},
|
|
277
283
|
UrlTimeLineInput: function (instance) {
|
|
278
284
|
build_timeline(instance);
|
|
279
285
|
},
|
|
@@ -292,7 +298,14 @@ document.gtwidgets = {
|
|
|
292
298
|
},
|
|
293
299
|
RemoteAutocompleteEmailTagifyWidget: function(instance){
|
|
294
300
|
build_remote_tagify_email(instance)
|
|
295
|
-
|
|
301
|
+
|
|
302
|
+
},
|
|
303
|
+
DigitalSignatureInput: function (instance) {
|
|
304
|
+
// instancia del dom = e
|
|
305
|
+
instance.each(function (i, e) {
|
|
306
|
+
build_digital_signature(e);
|
|
307
|
+
});
|
|
308
|
+
},
|
|
296
309
|
}
|
|
297
310
|
|
|
298
311
|
function gt_find_initialize(instance) {
|