json-object-editor 0.10.654 → 0.10.660
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.
- package/CHANGELOG.md +18 -1
- package/_www/mcp-test.html +287 -276
- package/css/joe-styles.css +6 -0
- package/css/joe.css +7 -1
- package/css/joe.min.css +1 -1
- package/docs/React_Form_Integration_Strategy.md +398 -0
- package/form-qs.json +1007 -0
- package/js/JsonObjectEditor.jquery.craydent.js +56 -12
- package/js/joe-ai.js +2275 -2052
- package/js/joe.js +57 -13
- package/js/joe.min.js +1 -1
- package/package.json +1 -1
- package/react-form-spa-ex.js +570 -0
- package/readme.md +34 -1
- package/server/fields/core.js +4 -1
- package/server/modules/MCP.js +1364 -1237
- package/server/modules/Sites.js +79 -0
- package/server/modules/Storage.js +28 -1
- package/server/plugins/chatgpt.js +1864 -1495
- package/server/schemas/ai_assistant.js +15 -1
- package/server/schemas/ai_prompt.js +389 -324
- package/server/schemas/ai_response.js +414 -374
- package/server/schemas/ai_widget_conversation.js +31 -0
package/js/joe.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* --------------------------------------------------------
|
|
2
2
|
*
|
|
3
|
-
* json-object-editor - v0.10.
|
|
3
|
+
* json-object-editor - v0.10.657
|
|
4
4
|
* Created by: Corey Hadden
|
|
5
5
|
*
|
|
6
6
|
* -------------------------------------------------------- */
|
|
@@ -174,6 +174,27 @@ function JsonObjectEditor(specs){
|
|
|
174
174
|
}});
|
|
175
175
|
}
|
|
176
176
|
|
|
177
|
+
};
|
|
178
|
+
this.uploaderSetFileRole = function(uploader_id, filename, role){
|
|
179
|
+
try{
|
|
180
|
+
var joe_uploader = self.uploaders && self.uploaders[uploader_id];
|
|
181
|
+
if (!joe_uploader || !Array.isArray(joe_uploader.files)) { return; }
|
|
182
|
+
var file = joe_uploader.files.where({filename:filename})[0];
|
|
183
|
+
if (!file) { return; }
|
|
184
|
+
if (role) {
|
|
185
|
+
file.file_role = role;
|
|
186
|
+
} else {
|
|
187
|
+
delete file.file_role;
|
|
188
|
+
}
|
|
189
|
+
if (joe_uploader.preview) {
|
|
190
|
+
$(joe_uploader.preview).html(_renderUploaderFilePreviews(joe_uploader.files, joe_uploader.cuid));
|
|
191
|
+
}
|
|
192
|
+
if (typeof self.updateObject === 'function') {
|
|
193
|
+
self.updateObject(null, null, true);
|
|
194
|
+
}
|
|
195
|
+
}catch(e){
|
|
196
|
+
console.warn('uploaderSetFileRole error', e && e.message || e);
|
|
197
|
+
}
|
|
177
198
|
};
|
|
178
199
|
window._joes.push(this);
|
|
179
200
|
|
|
@@ -5335,6 +5356,19 @@ this.renderHTMLContent = function(specs){
|
|
|
5335
5356
|
if(files && !$c.isArray(files)){
|
|
5336
5357
|
files = [files];
|
|
5337
5358
|
}
|
|
5359
|
+
|
|
5360
|
+
// Register uploader object (including optional file_roles) BEFORE we render
|
|
5361
|
+
// previews so that _renderUploaderFilePreviews can access role metadata.
|
|
5362
|
+
var uploader_obj = {
|
|
5363
|
+
cuid: uploader_id,
|
|
5364
|
+
prop: prop.name,
|
|
5365
|
+
files: files,
|
|
5366
|
+
max: prop.max || 0,
|
|
5367
|
+
// Optional file role configuration from schema (e.g. [{value,label,default}])
|
|
5368
|
+
roles: prop.file_roles || []
|
|
5369
|
+
};
|
|
5370
|
+
self.uploaders[uploader_id] = uploader_obj;
|
|
5371
|
+
|
|
5338
5372
|
if(prop.field && self.current.object[prop.field]){
|
|
5339
5373
|
var kfield = self.getField(prop.field);
|
|
5340
5374
|
var preview = self.current.object[prop.field]
|
|
@@ -5362,13 +5396,6 @@ this.renderHTMLContent = function(specs){
|
|
|
5362
5396
|
;
|
|
5363
5397
|
//var idprop = prop.idprop || '_id';
|
|
5364
5398
|
//html+= __clearDiv__;
|
|
5365
|
-
var uploader_obj = {
|
|
5366
|
-
cuid:uploader_id,
|
|
5367
|
-
prop:prop.name,
|
|
5368
|
-
files:files,
|
|
5369
|
-
max:prop.max || 0
|
|
5370
|
-
}
|
|
5371
|
-
self.uploaders[uploader_id] = uploader_obj;
|
|
5372
5399
|
return html;
|
|
5373
5400
|
};
|
|
5374
5401
|
function _removeUploaderFile(id,filename){
|
|
@@ -5385,8 +5412,9 @@ this.renderHTMLContent = function(specs){
|
|
|
5385
5412
|
var alink ="<a href='${url}${base64}' class='file-link' target='_blank'></a>";
|
|
5386
5413
|
var delete_btn = '<joe-uploader-file-delete-btn class="svg-shadow" onclick="_joe.Fields.uploader.remove(\''+cuid+'\',\'${filename}\');">'+self.SVG.icon.close+'</joe-uploader-delete-btn>';
|
|
5387
5414
|
var label = '';
|
|
5388
|
-
|
|
5389
|
-
|
|
5415
|
+
var uploader = self.uploaders && self.uploaders[cuid];
|
|
5416
|
+
var roles = uploader && uploader.roles;
|
|
5417
|
+
|
|
5390
5418
|
files.map(function(file){
|
|
5391
5419
|
var filesize = '<joe-uploader-file-label>${filename}</joe-uploader-file-label>';
|
|
5392
5420
|
if(file.size){
|
|
@@ -5415,16 +5443,32 @@ this.renderHTMLContent = function(specs){
|
|
|
5415
5443
|
label += '<joe-uploader-file-oaid >'+file.openai_file_id+'</joe-uploader-file-oaid>';
|
|
5416
5444
|
}
|
|
5417
5445
|
|
|
5446
|
+
// Optional file role selector when roles are configured on this uploader
|
|
5447
|
+
var roleSelect = '';
|
|
5448
|
+
if (roles && roles.length) {
|
|
5449
|
+
var currentRole = file.file_role || '';
|
|
5450
|
+
var safeFilename = String(file.filename || '').replace(/'/g, "\\'");
|
|
5451
|
+
var optsHtml = '<option value=""></option>';
|
|
5452
|
+
roles.forEach(function(r){
|
|
5453
|
+
if (!r || !r.value) { return; }
|
|
5454
|
+
var lbl = r.label || r.value;
|
|
5455
|
+
var sel = (currentRole === r.value) ? ' selected' : '';
|
|
5456
|
+
optsHtml += '<option value="'+r.value.replace(/\"/g,'"')+'"'+sel+'>'+lbl.replace(/</g,'<').replace(/>/g,'>')+'</option>';
|
|
5457
|
+
});
|
|
5458
|
+
var onchange = "_joe.uploaderSetFileRole('"+cuid+"','"+safeFilename+"', this.value)";
|
|
5459
|
+
roleSelect = '<div class=\"joe-uploader-file-role\"><select onchange=\"'+onchange+'\">'+optsHtml+'</select></div>';
|
|
5460
|
+
}
|
|
5461
|
+
|
|
5418
5462
|
if((file.type && file.type.contains('image')) || (!file.type && (file.url||file.base64).split('.').contains(['jpg','jpeg','png','gif','svg']))){
|
|
5419
|
-
jup_template = '<joe-uploader-file class="'+(file.uploaded && 'uploaded'||'')+'" style="background-image:url(${url}${base64})">'+alink+label+filesize+delete_btn+'</joe-uploader-file>';
|
|
5463
|
+
jup_template = '<joe-uploader-file class="'+(file.uploaded && 'uploaded'||'')+'" style="background-image:url(${url}${base64})">'+alink+label+roleSelect+filesize+delete_btn+'</joe-uploader-file>';
|
|
5420
5464
|
}else if (docTypes.includes((file.url || file.base64).split('.').pop())) {
|
|
5421
5465
|
jup_template = '<joe-uploader-file class="'+(file.uploaded && 'uploaded'||'')+'">'+
|
|
5422
5466
|
'<joe-uploader-file-extension >.'+(file.type.split('/')[1] || 'docx')+'</joe-uploader-file-extension>'+
|
|
5423
|
-
alink+label+filesize+delete_btn+'</joe-uploader-file>';
|
|
5467
|
+
alink+label+roleSelect+filesize+delete_btn+'</joe-uploader-file>';
|
|
5424
5468
|
}else{
|
|
5425
5469
|
jup_template = '<joe-uploader-file class="'+(file.uploaded && 'uploaded'||'')+'">'+
|
|
5426
5470
|
'<joe-uploader-file-extension >.'+(file.type.split('/')[1] || '???')+'</joe-uploader-file-extension>'+
|
|
5427
|
-
alink+label+filesize+delete_btn+'</joe-uploader-file>';
|
|
5471
|
+
alink+label+roleSelect+filesize+delete_btn+'</joe-uploader-file>';
|
|
5428
5472
|
}
|
|
5429
5473
|
// Build optional OpenAI retry/upload button
|
|
5430
5474
|
var openaiBtn = '';
|