/* Copyright 2012-2020 OpenBroadcaster, Inc. This file is part of OpenBroadcaster Server. OpenBroadcaster Server is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. OpenBroadcaster Server is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with OpenBroadcaster Server. If not, see . */ OB.UI.Widgets = new Object(); OB.UI.widgetHTML = function($elements) { // TODO some way of better dealing with widget code. (widgets.js?) $elements.find('obwidget').each(function(index,element) { var attributes = $(element).getAttributes(); // we require an ID on widgets. // if(!attributes.id) return; // deal with widget type "message". if($(element).attr('type')=='message') { delete attributes['type']; $div = $('
'); $.each(attributes,function(attribute,value) { $div.attr(attribute,value); }); $div.addClass('obwidget'); $div.addClass('message'); $div.addClass('hidden'); $div.attr('data-type','message'); $(element).replaceWith($div); } }); } OB.UI.Widgets.message = function($element,type,...message) { // validate args. if(!type) return false; if(type!='hide' && !message.length) return false; if($.inArray(type,['hide','info','warning','error','success'])<0) return; if(type=='hide') $element.hide(); else { $element.removeClass('info'); $element.removeClass('success'); $element.removeClass('warning'); $element.removeClass('error'); $element.addClass(type); $element.text(OB.t(...message)); $element.show(); OB.UI.scrollIntoView($element); } return true; } $.fn.obWidget = function(...args) { if(!this.hasClass('obwidget') || !this.attr('data-type') || !OB.UI.Widgets[this.attr('data-type')]) return false; return OB.UI.Widgets[this.attr('data-type')](this,...args); }