OV.ProgressDialog = class { constructor () { this.modal = new OV.Modal (); this.modal.SetCloseable (false); this.imageDiv = null; this.textDiv = null; } SetText (text) { this.textDiv.html (text); } Show (text) { let contentDiv = this.modal.GetContentDiv (); contentDiv.addClass ('ov_progress'); this.imageDiv = $('').addClass ('ov_progress_img').attr ('src', 'assets/images/3dviewer_net_logo.svg').appendTo (contentDiv); this.textDiv = $('
').addClass ('ov_progress_text').appendTo (contentDiv); this.SetText (text); this.modal.Open (); } Hide () { this.modal.Close (); } }; OV.ButtonDialog = class { constructor () { this.modal = new OV.Modal (); } Init (title, buttons) { function AddButton (button, buttonsDiv) { let buttonDiv = $('
').addClass ('ov_dialog_button').html (button.name).appendTo (buttonsDiv); if (button.subClass) { buttonDiv.addClass (button.subClass); } buttonDiv.click (function () { button.onClick (); }); } let contentDiv = this.modal.GetContentDiv (); contentDiv.addClass ('ov_dialog'); $('
').addClass ('ov_dialog_title').html (title).appendTo (contentDiv); let dialogContentDiv = $('
').addClass ('ov_dialog_content').appendTo (contentDiv); let buttonsDiv = $('
').addClass ('ov_dialog_buttons').appendTo (contentDiv); let buttonsInnerDiv = $('
').addClass ('ov_dialog_buttons_inner').appendTo (buttonsDiv); for (let i = 0; i < buttons.length; i++) { AddButton (buttons[i], buttonsInnerDiv); } return dialogContentDiv; } SetCloseHandler (closeHandler) { this.modal.SetCloseHandler (closeHandler); } Show () { this.modal.Open (); } Hide () { this.modal.Close (); } }; OV.ListPopup = class { constructor () { this.modal = new OV.Modal (); this.listDiv = null; } Init () { let contentDiv = this.modal.GetContentDiv (); contentDiv.addClass ('ov_popup'); this.listDiv = $('
').addClass ('ov_popup_list').addClass ('ov_thin_scrollbar').appendTo (contentDiv); } SetCustomResizeHandler (customResizeHandler) { this.modal.SetCustomResizeHandler (customResizeHandler); } AddListItem (item, callbacks) { let listItemDiv = $('
').addClass ('ov_popup_list_item').appendTo (this.listDiv); if (item.color) { $('
').addClass ('ov_popup_list_item_rgbbox').css ('background', '#' + item.color).appendTo (listItemDiv); } $('
').addClass ('ov_popup_list_item_name').html (item.name).appendTo (listItemDiv); listItemDiv.click (callbacks.onClick); if (OV.IsHoverEnabled () && callbacks.onHoverStart && callbacks.onHoverStop) { listItemDiv.hover ( function () { callbacks.onHoverStart (); }, function () { callbacks.onHoverStop (); } ); } } Show () { this.modal.Open (); } Hide () { this.modal.Close (); } }; OV.ShowMessageDialog = function (title, message, subMessage) { let dialog = new OV.ButtonDialog (); let contentDiv = dialog.Init (title, [ { name : 'OK', onClick () { dialog.Hide (); } } ]); $('
').addClass ('ov_dialog_message').html (message).appendTo (contentDiv); if (subMessage !== null) { $('
').addClass ('ov_dialog_submessage').html ('' + subMessage + '').appendTo (contentDiv); } dialog.Show (); return dialog; }; OV.ShowOpenUrlDialog = function (onOk) { function CorrectFileHostUrls (urls) { for (let i = 0; i < urls.length; i++) { let url = urls[i]; if (url.search (/www\.dropbox\.com/u) !== -1) { url = url.replace ('www.dropbox.com', 'dl.dropbox.com'); let separatorPos = url.indexOf ('?'); if (separatorPos !== -1) { url = url.substr (0, separatorPos); } urls[i] = url; } else if (url.search (/github\.com/u) !== -1) { url = url.replace ('github.com', 'raw.githubusercontent.com'); url = url.replace ('/blob', ''); let separatorPos = url.indexOf ('?'); if (separatorPos !== -1) { url = url.substr (0, separatorPos); } urls[i] = url; } } } let dialog = new OV.ButtonDialog (); let urlsTextArea = $('