From 93bdfefc85cd8fa152202cd43e362b66118f55be Mon Sep 17 00:00:00 2001 From: "Mark M. Florida" <markflorida@wustl.edu> Date: Thu, 11 Aug 2016 15:14:39 -0500 Subject: [PATCH] XNAT-4461: Checkbox fix --- src/main/webapp/scripts/xnat/spawner.js | 5 ++++- src/main/webapp/scripts/xnat/ui/input.js | 1 + src/main/webapp/scripts/xnat/ui/panel.js | 20 +++++++++++++------- 3 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/main/webapp/scripts/xnat/spawner.js b/src/main/webapp/scripts/xnat/spawner.js index 6088de02..66fa3444 100644 --- a/src/main/webapp/scripts/xnat/spawner.js +++ b/src/main/webapp/scripts/xnat/spawner.js @@ -65,6 +65,8 @@ var XNAT = getObject(XNAT); // lastly use the object's own name prop.name = prop.name || item; + prop.id = prop.id || prop.element.id || toDashed(prop.name); + // accept 'kind' or 'type' property name // but 'kind' will take priority // with a fallback to a generic div @@ -146,7 +148,8 @@ var XNAT = getObject(XNAT); } else { - spawner.notSpawned.push(item); + if (hasConsole) console.log('not spawned: ' + prop); + spawner.notSpawned.push(prop); } } diff --git a/src/main/webapp/scripts/xnat/ui/input.js b/src/main/webapp/scripts/xnat/ui/input.js index 0f829de3..66875c5a 100644 --- a/src/main/webapp/scripts/xnat/ui/input.js +++ b/src/main/webapp/scripts/xnat/ui/input.js @@ -134,6 +134,7 @@ var XNAT = getObject(XNAT); input.radio = function(config){ otherTypes.push('radio'); config = extend(true, {}, config, config.element); + return setupType('radio', '', config); }; // save a list of all available input types diff --git a/src/main/webapp/scripts/xnat/ui/panel.js b/src/main/webapp/scripts/xnat/ui/panel.js index 1e9969d8..0747ed1a 100644 --- a/src/main/webapp/scripts/xnat/ui/panel.js +++ b/src/main/webapp/scripts/xnat/ui/panel.js @@ -225,10 +225,10 @@ var XNAT = getObject(XNAT || {}); val = stringable(val) ? val : JSON.stringify(val); } - $this.not(':radio').changeVal(val); + $this.changeVal(val); if (/checkbox/i.test(this.type)) { - this.checked = (this.value === val || !!this.value); + this.checked = realValue(val); } if (/radio/i.test(this.type)) { @@ -856,10 +856,13 @@ var XNAT = getObject(XNAT || {}); }; panel.textarea = function(opts){ + opts = cloneObject(opts); opts.element = opts.element || opts.config || {}; + if (opts.id) opts.element.id = opts.id; if (opts.name) opts.element.name = opts.name; + opts.element.html = opts.element.html || opts.element.value || @@ -873,19 +876,22 @@ var XNAT = getObject(XNAT || {}); if (opts.code || opts.codeLanguage) { opts.code = opts.code || opts.codeLanguage; addDataObjects(opts.element, { - codeLanguage: opts.code + codeEditor: opts.code, + codeLanguage: opts.codeLanguage || opts.code }); // open code editor on double-click - opts.element.ondblclick = function(){ - var panelTextarea = XNAT.app.codeEditor.init(this, { language: opts.code || 'html' }); - panelTextarea.openEditor(); - }; + // opts.element.ondblclick = function(){ + // var panelTextarea = XNAT.app.codeEditor.init(this, { language: opts.code || 'html' }); + // panelTextarea.openEditor(); + // }; } opts.element.rows = opts.rows || opts.element.rows || 10; var textarea = spawn('textarea', opts.element); + return XNAT.ui.template.panelDisplay(opts, textarea).spawned; + }; panel.input.textarea = panel.textarea; -- GitLab