{"version":3,"file":"pluginProxy.js","sources":["../../../js/stream/manage.js"],"sourcesContent":["\r\nvar onAirPreview = {\r\n Image: \"#imgOnAirPreview\",\r\n ImageBase64: \"#hfOnAirImageContent\",\r\n DropElementId: 'onAirUploader',\r\n BrowseButtonId: 'onAirSelectFiles'\r\n},\r\n offAirPreview = {\r\n Image: \"#imgOffAirPreview\",\r\n ImageBase64: \"#hfOffAirImageContent\",\r\n DropElementId: 'offAirUploader',\r\n BrowseButtonId: 'offAirSelectFiles'\r\n },\r\n streamId = jQuery(\"#hiddenStreamId\").val(),\r\n recordingAdminUrl = jQuery(\"#HapiUrl\").val() + \"/v1/streams/\" + streamId + \"/recording/\",\r\n streamingAdminUrl = jQuery(\"#HapiUrl\").val() + \"/v1/streams/\" + streamId + \"/streaming/\",\r\n startRecordingButton = \"#btnStartRecording\",\r\n stopRecordingButton = \"#btnStopRecording\",\r\n startRtspStreamAndRecordingButton = '#btnStartStreamAndRecordRtsp',\r\n stopRtspStreamAndRecordingButton = '#btnStopStreamAndRecordRtsp',\r\n startRtspStreamButton = '#btnStartStreamRtsp',\r\n stopRtspStreamButton = '#btnStopStreamRtsp',\r\n startRtspRecordingButton = '#btnStartRecordingRtsp',\r\n stopRtspRecordingButton = '#btnStopRecordingRtsp',\r\n status = \".streamState\",\r\n processingSpinnerId = \"#processingSpinner\",\r\n recordingActionClass = \".btnRecAction\",\r\n encodingMethodId = 'ddlEncodingMethod',\r\n //Start/Stop Recording\r\n handleRtmpRecordingAction = function (startRecording) {\r\n try {\r\n var processingSpinner = jQuery(processingSpinnerId);\r\n jQuery.ajax({\r\n url: recordingAdminUrl + (startRecording ? \"start\" : \"stop\"),\r\n data: { streamId: streamId },\r\n contentType: 'json',\r\n beforeSend: function () {\r\n jQuery(recordingActionClass).addClass('hidden');\r\n processingSpinner.css('display', 'inline-block');\r\n },\r\n success: function (response) {\r\n processingSpinner.hide();\r\n var actionResult = jQuery.parseJSON(response);\r\n if (actionResult.success) {\r\n if (startRecording) {\r\n jQuery(status).removeClass('text-green3').addClass('text-red3').html(actionResult.status);\r\n jQuery(stopRecordingButton).removeClass('hidden');\r\n } else {\r\n jQuery(status).removeClass('text-red3').addClass('text-green3').html(actionResult.status);\r\n jQuery(startRecordingButton).removeClass('hidden');\r\n }\r\n } else {\r\n processingSpinner.css('display', 'none');\r\n jQuery(status).removeClass('text-green3').addClass('text-red3').html(actionResult.message);\r\n if (startRecording) {\r\n jQuery(startRecordingButton).removeClass('hidden');\r\n } else {\r\n jQuery(stopRecordingButton).removeClass('hidden');\r\n }\r\n }\r\n },\r\n error: function (xhr, ajaxOptions, thrownError) {\r\n console.log(thrownError);\r\n processingSpinner.css('display', 'none');\r\n if (startRecording) {\r\n jQuery(startRecordingButton).removeClass('hidden');\r\n } else {\r\n jQuery(stopRecordingButton).removeClass('hidden');\r\n }\r\n }\r\n });\r\n } catch (e) { }\r\n\r\n },\r\n handleRtspCaptureAction = function (startRecording) {\r\n try {\r\n var processingSpinner = jQuery(processingSpinnerId);\r\n jQuery.ajax({\r\n url: (startRecording ? streamingAdminUrl + \"pull/start?recordStream=true\" : recordingAdminUrl + \"pull/stop?stopStream=true\"),\r\n data: { streamId: streamId },\r\n contentType: 'json',\r\n beforeSend: function () {\r\n disableEncodingMethod();\r\n jQuery(recordingActionClass).addClass('hidden');\r\n processingSpinner.css('display', 'inline-block');\r\n },\r\n success: function (response) {\r\n processingSpinner.css('display', 'none');\r\n var actionResult = jQuery.parseJSON(response);\r\n if (actionResult.success) {\r\n if (startRecording) {\r\n jQuery(status).removeClass('text-green3').addClass('text-red3').html(actionResult.status);\r\n jQuery(stopRtspStreamAndRecordingButton).removeClass('hidden');\r\n } else {\r\n enableEncodingMethod();\r\n jQuery(status).removeClass('text-red3').addClass('text-green3').html(actionResult.status);\r\n jQuery(startRtspStreamAndRecordingButton).removeClass('hidden');\r\n }\r\n } else {\r\n jQuery(status).removeClass('text-green3').addClass('text-red3').html(actionResult.message);\r\n if (startRecording) {\r\n enableEncodingMethod();\r\n jQuery(startRtspStreamAndRecordingButton).removeClass('hidden');\r\n } else {\r\n jQuery(stopRtspStreamAndRecordingButton).removeClass('hidden');\r\n }\r\n }\r\n },\r\n error: function (xhr, ajaxOptions, thrownError) {\r\n console.log(thrownError);\r\n processingSpinner.css('display', 'none');\r\n if (startRecording) {\r\n enableEncodingMethod();\r\n jQuery(startRtspStreamAndRecordingButton).removeClass('hidden');\r\n } else {\r\n jQuery(stopRtspStreamAndRecordingButton).removeClass('hidden');\r\n }\r\n }\r\n });\r\n } catch (e) { }\r\n\r\n },\r\n handleRtspLiveAction = function (id) {\r\n try {\r\n\r\n var url = '';\r\n var isStartAction = false;\r\n var isStreamingAction = false;\r\n if (id === 'btnStartStreamRtsp') {\r\n isStartAction = true;\r\n isStreamingAction = true;\r\n url = streamingAdminUrl + 'pull/start';\r\n } else if (id === 'btnStopStreamRtsp') {\r\n isStreamingAction = true;\r\n url = streamingAdminUrl + 'pull/stop';\r\n } else if (id === 'btnStartRecordingRtsp') {\r\n isStartAction = true;\r\n url = recordingAdminUrl + 'pull/start';\r\n } else if (id === 'btnStopRecordingRtsp') {\r\n url = recordingAdminUrl + 'pull/stop';\r\n }\r\n\r\n var processingSpinner = jQuery(processingSpinnerId);\r\n jQuery.ajax({\r\n url: url,\r\n data: { streamId: streamId },\r\n contentType: 'json',\r\n beforeSend: function () {\r\n disableEncodingMethod();\r\n jQuery(recordingActionClass).addClass('hidden');\r\n processingSpinner.css('display', 'inline-block');\r\n },\r\n success: function (response) {\r\n processingSpinner.css('display', 'none');\r\n var actionResult = jQuery.parseJSON(response);\r\n if (actionResult.success) {\r\n if (isStreamingAction) {\r\n jQuery(status).removeClass('text-red3').addClass('text-green3').html(actionResult.status);\r\n if (isStartAction) {\r\n jQuery(stopRtspStreamButton).removeClass('hidden');\r\n jQuery(startRtspRecordingButton).removeClass('hidden');\r\n } else {\r\n jQuery(startRtspStreamButton).removeClass('hidden');\r\n enableEncodingMethod();\r\n }\r\n } else {\r\n if (isStartAction) {\r\n jQuery(status).removeClass('text-green3').addClass('text-red3').html(actionResult.status);\r\n jQuery(stopRtspStreamButton).removeClass('hidden');\r\n jQuery(stopRtspRecordingButton).removeClass('hidden');\r\n } else {\r\n jQuery(status).removeClass('text-red3').addClass('text-green3').html(actionResult.status);\r\n jQuery(stopRtspStreamButton).removeClass('hidden');\r\n jQuery(startRtspRecordingButton).removeClass('hidden');\r\n }\r\n }\r\n } else {\r\n jQuery(status).removeClass('text-green3').addClass('text-red3').html(actionResult.message);\r\n if (isStreamingAction) {\r\n if (jQuery(isStartAction)) {\r\n enableEncodingMethod();\r\n jQuery(startRtspStreamButton).removeClass('hidden');\r\n } else {\r\n jQuery(stopRtspStreamButton).removeClass('hidden');\r\n }\r\n } else {\r\n if (jQuery(isStartAction)) {\r\n jQuery(startRtspRecordingButton).removeClass('hidden');\r\n } else {\r\n jQuery(stopRtspRecordingButton).removeClass('hidden');\r\n }\r\n }\r\n }\r\n },\r\n error: function (xhr, ajaxOptions, thrownError) {\r\n console.log(thrownError);\r\n enableEncodingMethod();\r\n processingSpinner.css('display', 'none');\r\n if (isStreamingAction) {\r\n if (jQuery(isStartAction)) {\r\n enableEncodingMethod();\r\n jQuery(startRtspStreamButton).removeClass('hidden');\r\n } else {\r\n jQuery(stopRtspStreamButton).removeClass('hidden');\r\n }\r\n } else {\r\n if (jQuery(isStartAction)) {\r\n enableEncodingMethod();\r\n jQuery(startRtspRecordingButton).removeClass('hidden');\r\n } else {\r\n jQuery(stopRtspRecordingButton).removeClass('hidden');\r\n }\r\n }\r\n }\r\n });\r\n } catch (e) { }\r\n\r\n },\r\n disableEncodingMethod = function () {\r\n jQuery('#' + encodingMethodId).attr('disabled', 'disabled');\r\n jQuery('button[data-id=\"' + encodingMethodId + '\"]').addClass('disabled');\r\n },\r\n enableEncodingMethod = function() {\r\n jQuery('#' + encodingMethodId).removeAttr('disabled');\r\n jQuery('button[data-id=\"' + encodingMethodId + '\"]').removeClass('disabled');\r\n },\r\n documentReady = function () {\r\n var contentTabs = jQuery(\".tabContent\");\r\n var headerTabs = jQuery(\".tabHeader\").on(\"click\", function () {\r\n var newActiveContentTab = this.id.replace('Link', 'Content');\r\n jQuery(contentTabs).hide();\r\n jQuery(headerTabs).removeClass(\"mediaButtonSelected\");\r\n jQuery(\".\" + newActiveContentTab).show();\r\n jQuery(this).addClass(\"mediaButtonSelected\");\r\n });\r\n\r\n createImageUploader(onAirPreview);\r\n createImageUploader(offAirPreview);\r\n\r\n tableConvertFromUtcToLocalDateTime();\r\n\r\n var streamStatus = jQuery(status).text();\r\n if (streamStatus === 'Streaming' || streamStatus === 'Recording') {\r\n disableEncodingMethod();\r\n } else {\r\n enableEncodingMethod();\r\n }\r\n };\r\n\r\nfunction createImageUploader(settings) {\r\n // Instantiate the Plupload uploader.\r\n var uploader = new plupload.Uploader({\r\n\r\n // Try to load the HTML5 engine and then, if that's\r\n // not supported, the Flash fallback engine.\r\n runtimes: \"html5,silverlight,flash\",\r\n\r\n // The upload URL - for our demo, we'll just use a \r\n // fake end-point (we're not actually uploading).\r\n url: \"./post.json\",\r\n\r\n // The ID of the drop-zone element.\r\n drop_element: settings.DropElementId,\r\n\r\n // To enable click-to-select-files, you can provide\r\n // a browse button. We can use the same one as the \r\n // drop zone.\r\n browse_button: settings.BrowseButtonId,\r\n\r\n // For the Flash engine, we have to define the ID \r\n // of the node into which Pluploader will inject the \r\n // tag for the flash movie.\r\n container: settings.DropElementId,\r\n\r\n // The URL for the SWF file for the Flash upload \r\n // engine for browsers that don't support HTML5.\r\n flash_swf_url: \"../../vendor/plupload/Moxie.swf\",\r\n\r\n silverlight_xap_url: \"../../vendor/plupload/Moxie.xap\",\r\n\r\n // Needed for the Flash environment to work.\r\n urlstream_upload: true,\r\n\r\n multi_selection: false\r\n\r\n });\r\n\r\n uploader.bind(\"FilesAdded\", function (uploader, files) {\r\n var file = files[0];\r\n\r\n // Create an instance of the mOxie Image object. This\r\n // utility object provides several means of reading in\r\n // and loading image data from various sources.\r\n // --\r\n // Wiki: https://github.com/moxiecode/moxie/wiki/Image\r\n var preloader = new moxie.image.Image();\r\n\r\n // Define the onload BEFORE you execute the load() \r\n // command as load() does not execute async.\r\n preloader.onload = function () {\r\n\r\n var base64Content = preloader.getAsDataURL();\r\n jQuery(settings.ImageBase64).val(base64Content);\r\n\r\n // Now that the image is preloaded, grab the Base64\r\n // encoded data URL. This will show the image \r\n // without making an Network request using the \r\n // client-side file binary.\r\n jQuery(settings.Image).prop(\"src\", base64Content);\r\n };\r\n\r\n // Calling the .getSource() on the file will return an\r\n // instance of mOxie.File, which is a unified file \r\n // wrapper that can be used across the various runtimes.\r\n // --\r\n // Wiki: https://github.com/moxiecode/plupload/wiki/File\r\n preloader.load(file.getSource());\r\n });\r\n\r\n // Initialize the uploader (it is only after the \r\n // initialization is complete that we will know which\r\n // runtime load: html5 vs. Flash).\r\n uploader.init();\r\n}\r\n\r\n\r\njQuery(document).ready(documentReady);\r\n\r\nvar prm = Sys.WebForms.PageRequestManager.getInstance();\r\nprm.add_endRequest(documentReady);\r\n"],"names":["window","pageTracker","pluginProxyInstance","rundomNumber","Math","floor","random","pluginProxy","Class","create","debugMode","processed","Hash","pluginInstances","Array","pluginObjectSourceUrl","ensemblePluginBaseStyleSheetUrl","ensemblePluginBaseStyleSheetName","ensemblePluginBaseStyleSheetElementID","ensemblePluginBaseStyleSheetElementIDRegEx","ensemblePluginBaseResponsiveStyleSheetUrl","ensemblePluginBaseResponsiveStyleSheetName","ensemblePluginBaseResponsiveStyleSheetElementID","ensemblePluginBaseResponsiveStyleSheetElementIDRegEx","ensemblePluginStyleSheetName","ensemblePluginStyleSheetElementID","ensemblePluginStyleSheetElementIDRegEx","intervalID","styleSheetInserted","versionNumber","initialize","document","getElementsByTagName","this","scriptInstances","pluginInstanceConfig","containerID","destinationID","displayContainerID","isEmbedCall","insideIFrame","insidePreview","styleSheetUrl","isResponsive","i","length","sourceUrl","src","match","getQueryStringValue","langCode","id","empty","parentNode","ID","contentID","pluginConfig","cssUrl","pluginID","webApplicationUrl","hostUrl","pluginUrl","pluginBaseUrl","flashPlayerUrl","isSecure","isDownloadable","isSecuredDownloadable","socialSharingDisabled","push","isTrue","insertStyleSheet","loadPluginScript","pluginInstance","plugin","setInterval","$A","each","get","undefined","set","embedContent","$break","bind","keys","clearInterval","cb","loadScript","test","callback","getElementById","s","createElement","replace","appendChild","callbackTimer","call","e","styleSheetId","styleSheetIdRegex","styleSheetName","styleExists","headNode","$$","insert","top","Element","$","elementID","readAttribute","elementHref","RegExp","innerHTML","styleSheet","rel","type","href","media","bottom","key","queryString","defaultValue","returnValue","queryHash","$H","parseQuery","toLowerCase","Boolean","variable","log","caption","console","Object","toJSON","observe"],"mappings":"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"}