createFromXML: function( resourceId ) {
var widget = this;
- Resources[resourceId].done( function( xml ) {
+ return Resources[resourceId].done( function( xml ) {
$(widget.node).find('.widget-loading').remove();
var $matSelect = $('<select class="material-select"></select>').appendTo(widget.node);
var $contents = $('<span class="material-contents"/>').appendTo(widget.node);
return this.materialTypeMapping[this.text.substring(0, 1)];
},
postCreate: function( node, mark ) {
- this.createFromXML( 'marc21/xml/007' );
+ this.createFromXML( 'marc21/xml/007' ).then(() => {
+ $(this.node).find('.material-select').on('change', (e) => {
+ const keys = Object.keys(this.materialTypeMapping);
+ const k = keys.filter(k => this.materialTypeMapping[k] === $(e.target).val());
+ this.setFixed(0, 1, k, '+input');
+
+ // FIXME There must be a better way to update display
+ const n = $(this.node).find('[name="f00"]');
+ n.triggerHandler('focus');
+ n.triggerHandler('blur');
+ });
+ });
}
} );