Daniel@0: /* global Backbone */ Daniel@0: 'use strict'; Daniel@0: Daniel@0: App.addInitializer(function(options){ Daniel@0: // http://stackoverflow.com/questions/19491336/get-url-parameter-jquery Daniel@0: function getUrlParameter(sParam) Daniel@0: { Daniel@0: var sPageURL = window.location.search.substring(1); Daniel@0: var sURLVariables = sPageURL.split('&'); Daniel@0: for (var i = 0; i < sURLVariables.length; i++) Daniel@0: { Daniel@0: var sParameterName = sURLVariables[i].split('='); Daniel@0: if (sParameterName[0] == sParam) Daniel@0: { Daniel@0: return sParameterName.length == 2 ? sParameterName[1] : ""; Daniel@0: } Daniel@0: } Daniel@0: }; Daniel@0: Daniel@0: var screenshotParameterValue = getUrlParameter("screenshot"); Daniel@0: if (screenshotParameterValue === undefined) { Daniel@0: return; Daniel@0: } Daniel@0: Daniel@0: console.log("Running in screenshot mode: " + screenshotParameterValue); Daniel@0: App.options.vegaRenderer = "canvas"; Daniel@0: window.devicePixelRatio = 2; Daniel@0: Daniel@0: Daniel@0: // Daniel@0: var $html = $("html"); Daniel@0: $html.addClass("screenshot"); Daniel@0: var screenshotTypes = _.invert(screenshotParameterValue.replace(/%7C/g, "|").split("|")); Daniel@0: _.each(_.keys(screenshotTypes), function(screenshotType) { Daniel@0: $html.addClass("screenshot_" + screenshotType); Daniel@0: var wh = screenshotType.split("x"); Daniel@0: if (wh.length == 2) { Daniel@0: var w = parseInt(wh[0]); Daniel@0: var h = parseInt(wh[1]); Daniel@0: if (w && h) { Daniel@0: $("body").css({ Daniel@0: "width": w, Daniel@0: "height": h, Daniel@0: }); Daniel@0: } Daniel@0: } Daniel@0: }); Daniel@0: Daniel@0: var intervalId = setInterval(function() { Daniel@0: var ready = true; Daniel@0: // Daniel@0: // var $vegas = $(".vega"); Daniel@0: // if (!$vegas.length) { Daniel@0: // return; Daniel@0: // } Daniel@0: // $vegas.each(function() { Daniel@0: // var $this = $(this); Daniel@0: // var tagName = $this.children().eq(0).prop("tagName").toLowerCase(); Daniel@0: // if (tagName !== "svg" && tagName !== "canvas") { Daniel@0: // ready = false; Daniel@0: // return false; Daniel@0: // } Daniel@0: // }); Daniel@0: Daniel@0: if (screenshotTypes["state_interface"]) { Daniel@0: Daniel@0: } Daniel@0: Daniel@0: if (ready) { Daniel@0: if (screenshotTypes["state_interface"]) { Daniel@0: //App.PlayerModule.$jPlayer.jPlayer("play", 42); Daniel@0: //$(".player__slider-head_type_time").show(); Daniel@0: $(".player__slider-head_type_time") Daniel@0: .show() Daniel@0: .css("width", "100%"); Daniel@0: $(".player__time_type_before") Daniel@0: .text("00:42"); Daniel@0: $(".player__time_type_after") Daniel@0: .text("−01:59"); Daniel@0: Daniel@0: //$(".player__slider-head_type_time").show(); Daniel@0: } Daniel@0: Daniel@0: if (screenshotTypes["state_flip"]) { Daniel@0: var frame = 1; Daniel@0: for (var i = 2; i < 7; i++) { Daniel@0: if (screenshotTypes["frame_" + i]) { Daniel@0: frame = i; Daniel@0: } Daniel@0: } Daniel@0: if (frame >= 2 && frame <= 5) { Daniel@0: App.context.get("state").set("musicRecordingsGridIsShown", true); Daniel@0: setTimeout(function() { Daniel@0: allDone(); Daniel@0: }, frame * 50); Daniel@0: } Daniel@0: return; Daniel@0: } Daniel@0: Daniel@0: allDone(); Daniel@0: } Daniel@0: }, 5000); Daniel@0: Daniel@0: var allDone = function() { Daniel@0: window.status = "screenshot_ready"; Daniel@0: console.log("screenshot is ready"); Daniel@0: clearInterval(intervalId); Daniel@0: } Daniel@0: Daniel@0: // Daniel@0: if (screenshotTypes["state_interface"]) { Daniel@0: App.context.get("state").unserialize(JSON.parse('{"musicCollectionGrid":{"entityConfigs":[{"clientId":"cf1647","parameters":{"library":"bl","composer":"Mozart","year":"","performer":"","title":"Symphony; 41","collection":"","place":""},"plannedParameterUpdates":{}},{"clientId":"cf544","parameters":{"kind":"pair","comparisonMode":"superposition"},"plannedParameterUpdates":{}},{"clientId":"cf562","parameters":{"library":"bl","title":"Symphony; 40","year":"","composer":"Mozart","performer":"","place":"","collection":""},"plannedParameterUpdates":{"year":"1970-1979","title":"Sonata"}},{"clientId":"cf170","parameters":{"library":"charm","title":"","year":"","composer":"Mozart","performer":"","recordingURI":"http://dml.org/charm/2378"},"plannedParameterUpdates":{}},{"clientId":"cf224","parameters":{},"plannedParameterUpdates":{}}],"viewConfigs":[{"clientId":"custom17","parameters":{"kind":"list","limit":"10","offset":"6","sortBy":"label"},"plannedParameterUpdates":{}},{"clientId":"cf1783","parameters":{"kind":"tonic-histogram","widthToHeightRatio":"2"},"plannedParameterUpdates":{}},{"clientId":"cf780","parameters":{"kind":"key-relative-chord-seq","sequenceCount":"50","sequenceRepresentation":"parallel-coordinates","chordGrouppingIsByType":"1","guidesAreVisible":"1","recordingsInMajorModeAreIncluded":"1","recordingsInMinorModeAreIncluded":"1","chordTypesArePopularOnly":"","chordSequencesWithCyclesAreIncluded":"1","nIsIncluded":"","sequenceStepCount":"5"},"plannedParameterUpdates":{}}],"selectedEntityConfigClientId":"cf562","selectedViewConfigClientId":"cf780","entityWidth":260},"musicRecordingGrid":{"entityConfigs":[{"clientId":"cf204","parameters":{"recordingURI":"http://sounds.bl.uk/resource/026M-1LP0181227XX-0200V0"},"plannedParameterUpdates":{}},{"clientId":"cf209","parameters":{"recordingURI":"http://sounds.bl.uk/resource/026M-1LP0163217XX-0100V0"},"plannedParameterUpdates":{}},{"clientId":"cf214","parameters":{"recordingURI":"http://sounds.bl.uk/resource/026M-1CL0046563XX-0100V0"},"plannedParameterUpdates":{}},{"clientId":"cf219","parameters":{"recordingURI":"http://sounds.bl.uk/resource/026M-1LP0163226XX-0100V0"},"plannedParameterUpdates":{}}],"viewConfigs":[{"clientId":"def4","parameters":{"kind":"properties"},"plannedParameterUpdates":{}},{"clientId":"def5","parameters":{"kind":"midi-pitch-histogram"},"plannedParameterUpdates":{}}]}}')) Daniel@0: App.play("http://dml.org/charm/2378"); Daniel@0: var $fakeMouse = $.bem.generateElement("screenshot", "fake-cursor"); Daniel@0: $fakeMouse.css({ Daniel@0: "left": 335, Daniel@0: "top": 430, Daniel@0: }); Daniel@0: $("body").append($fakeMouse); Daniel@0: Daniel@0: $fakeMouse.on("mouseover", function(event){ Daniel@0: console.log("here", arguments, $fakeMouse); Daniel@0: event.pageX = 335; Daniel@0: event.pageY = 430; Daniel@0: App.TooltipModule.update(event, "C# → 15", $fakeMouse); Daniel@0: Daniel@0: }); Daniel@0: $fakeMouse.trigger("mouseover"); Daniel@0: Daniel@0: } Daniel@0: var teaserEntityWidth = 200; Daniel@0: if (screenshotTypes["state_teaser"]) { Daniel@0: //App.context.get("state").unserialize(JSON.parse('{"musicCollectionGrid":{"entityConfigs":[{"clientId":"cf1647","parameters":{"library":"bl","composer":"","year":"","performer":"","title":"","collection":"uganda","place":""},"plannedParameterUpdates":{}},{"clientId":"cf544","parameters":{"kind":"pair","comparisonMode":"superposition"},"plannedParameterUpdates":{}},{"clientId":"cf1681","parameters":{"library":"bl","composer":"","year":"","performer":"","title":"","collection":"dinka","place":""},"plannedParameterUpdates":{}},{"clientId":"cf660","parameters":{"kind":"pair","comparisonMode":"superposition"},"plannedParameterUpdates":{}},{"clientId":"cf602","parameters":{"kind":"pair","comparisonMode":"direct"},"plannedParameterUpdates":{}},{"clientId":"cf718","parameters":{"library":"bl","composer":"schoenberg","year":"","performer":"","title":"","place":"","collection":""},"plannedParameterUpdates":{}},{"clientId":"cf480","parameters":{"library":"bl","composer":"","year":"","performer":"","title":"symphony","place":"","collection":""},"plannedParameterUpdates":{}},{"clientId":"cf418","parameters":{"library":"bl","title":"piano","year":"","composer":"","performer":"","place":"","collection":""},"plannedParameterUpdates":{}}],"viewConfigs":[{"clientId":"custom16","parameters":{"kind":"list"},"plannedParameterUpdates":{}},{"clientId":"custom17","parameters":{"kind":"pitch-histogram"},"plannedParameterUpdates":{}},{"clientId":"custom18","parameters":{"kind":"midi-pitch-histogram"},"plannedParameterUpdates":{}},{"clientId":"cf1783","parameters":{"kind":"tuning-stats","widthToHeightRatio":"2"},"plannedParameterUpdates":{}},{"clientId":"cf1872","parameters":{"kind":"mean-tempo-curve","widthToHeightRatio":"2"},"plannedParameterUpdates":{}},{"clientId":"cf780","parameters":{"kind":"pitch-class-histogram","widthToHeightRatio":"2"},"plannedParameterUpdates":{}},{"clientId":"cf481","parameters":{"kind":"tempo-histogram","tempoMin":"30","tempoMax":"300","tempoNumBins":"50","tempoPeriod":"1","widthToHeightRatio":"2"},"plannedParameterUpdates":{}},{"clientId":"cf1961","parameters":{"kind":"tonic-histogram","widthToHeightRatio":"2"},"plannedParameterUpdates":{}}],"selectedEntityConfigClientId":"cf1647","selectedViewConfigClientId":"","entityWidth":' + teaserEntityWidth + '},"musicRecordingGrid":{"entityConfigs":[],"viewConfigs":[{"clientId":"def4","parameters":{"kind":"properties"},"plannedParameterUpdates":{}},{"clientId":"def5","parameters":{"kind":"midi-pitch-histogram"},"plannedParameterUpdates":{}}]}}')) Daniel@0: App.context.get("state").unserialize(JSON.parse('{"musicCollectionGrid":{"entityConfigs":[{"clientId":"cf1647","parameters":{"library":"bl","composer":"","year":"","performer":"","title":"","collection":"uganda","place":""},"plannedParameterUpdates":{}},{"clientId":"cf544","parameters":{"kind":"pair","comparisonMode":"superposition"},"plannedParameterUpdates":{}},{"clientId":"cf1681","parameters":{"library":"bl","composer":"","year":"","performer":"","title":"","collection":"dinka","place":""},"plannedParameterUpdates":{}},{"clientId":"cf660","parameters":{"kind":"pair","comparisonMode":"superposition"},"plannedParameterUpdates":{}},{"clientId":"cf602","parameters":{"kind":"pair","comparisonMode":"direct"},"plannedParameterUpdates":{}},{"clientId":"cf718","parameters":{"library":"bl","composer":"schoenberg","year":"","performer":"","title":"","place":"","collection":""},"plannedParameterUpdates":{}},{"clientId":"cf480","parameters":{"library":"bl","composer":"","year":"","performer":"","title":"symphony","place":"","collection":""},"plannedParameterUpdates":{}},{"clientId":"cf418","parameters":{"library":"bl","title":"piano","year":"","composer":"","performer":"","place":"","collection":""},"plannedParameterUpdates":{}}],"viewConfigs":[{"clientId":"custom17","parameters":{"kind":"pitch-histogram"},"plannedParameterUpdates":{}},{"clientId":"custom18","parameters":{"kind":"midi-pitch-histogram"},"plannedParameterUpdates":{}},{"clientId":"cf1783","parameters":{"kind":"tuning-stats","widthToHeightRatio":"2"},"plannedParameterUpdates":{}},{"clientId":"cf780","parameters":{"kind":"pitch-class-histogram","widthToHeightRatio":"2"},"plannedParameterUpdates":{}},{"clientId":"cf481","parameters":{"kind":"tempo-histogram","tempoMin":"30","tempoMax":"300","tempoNumBins":"50","tempoPeriod":"1","widthToHeightRatio":"2"},"plannedParameterUpdates":{}}],"selectedEntityConfigClientId":"cf1647","entityWidth":200},"musicRecordingGrid":{"entityConfigs":[],"viewConfigs":[{"clientId":"def4","parameters":{"kind":"properties"},"plannedParameterUpdates":{}},{"clientId":"def5","parameters":{"kind":"midi-pitch-histogram"},"plannedParameterUpdates":{}}]}}')) Daniel@0: } Daniel@0: if (screenshotTypes["state_teaser-wo-piano"]) { Daniel@0: App.context.get("state").unserialize(JSON.parse('{"musicCollectionGrid":{"entityConfigs":[{"clientId":"cf1647","parameters":{"library":"bl","composer":"","year":"","performer":"","title":"","collection":"uganda","place":""},"plannedParameterUpdates":{}},{"clientId":"cf544","parameters":{"kind":"pair","comparisonMode":"superposition"},"plannedParameterUpdates":{}},{"clientId":"cf1681","parameters":{"library":"bl","composer":"","year":"","performer":"","title":"","collection":"dinka","place":""},"plannedParameterUpdates":{}},{"clientId":"cf660","parameters":{"kind":"pair","comparisonMode":"superposition"},"plannedParameterUpdates":{}},{"clientId":"cf602","parameters":{"kind":"pair","comparisonMode":"direct"},"plannedParameterUpdates":{}},{"clientId":"cf718","parameters":{"library":"bl","composer":"schoenberg","year":"","performer":"","title":"","place":"","collection":""},"plannedParameterUpdates":{}},{"clientId":"cf480","parameters":{"library":"bl","composer":"","year":"","performer":"","title":"symphony","place":"","collection":""},"plannedParameterUpdates":{}}],"viewConfigs":[{"clientId":"custom16","parameters":{"kind":"list"},"plannedParameterUpdates":{}},{"clientId":"custom17","parameters":{"kind":"pitch-histogram"},"plannedParameterUpdates":{}},{"clientId":"custom18","parameters":{"kind":"midi-pitch-histogram"},"plannedParameterUpdates":{}},{"clientId":"cf1783","parameters":{"kind":"tuning-stats","widthToHeightRatio":"2"},"plannedParameterUpdates":{}},{"clientId":"cf1872","parameters":{"kind":"mean-tempo-curve","widthToHeightRatio":"2"},"plannedParameterUpdates":{}},{"clientId":"cf780","parameters":{"kind":"pitch-class-histogram","widthToHeightRatio":"2"},"plannedParameterUpdates":{}},{"clientId":"cf481","parameters":{"kind":"tempo-histogram","tempoMin":"30","tempoMax":"300","tempoNumBins":"50","tempoPeriod":"1","widthToHeightRatio":"2"},"plannedParameterUpdates":{}},{"clientId":"cf1961","parameters":{"kind":"tonic-histogram","widthToHeightRatio":"2"},"plannedParameterUpdates":{}}],"selectedEntityConfigClientId":"cf1647","selectedViewConfigClientId":"","entityWidth":' + teaserEntityWidth + '},"musicRecordingGrid":{"entityConfigs":[],"viewConfigs":[{"clientId":"def4","parameters":{"kind":"properties"},"plannedParameterUpdates":{}},{"clientId":"def5","parameters":{"kind":"midi-pitch-histogram"},"plannedParameterUpdates":{}}]}}')); Daniel@0: } Daniel@0: Daniel@0: if (screenshotTypes["state_flip"]) { Daniel@0: var musicRecordingsGridIsShown = screenshotTypes["frame_6"] ? true : false; Daniel@0: App.context.get("state").unserialize(JSON.parse('{"musicRecordingsGridIsShown":' + musicRecordingsGridIsShown + ',"musicCollectionGrid":{"entityConfigs":[{"clientId":"cf1647","parameters":{"library":"charm","composer":"Mozart","year":"","performer":"","title":""},"plannedParameterUpdates":{}},{"clientId":"cf562","parameters":{"library":"charm","title":"","year":"","composer":"Haydn","performer":""},"plannedParameterUpdates":{}}],"viewConfigs":[{"clientId":"custom17","parameters":{"kind":"list","limit":"10","offset":"6","sortBy":"label"},"plannedParameterUpdates":{}},{"clientId":"cf1783","parameters":{"kind":"tempo-histogram","widthToHeightRatio":"2","tempoMin":"30","tempoMax":"300","tempoNumBins":"50","tempoPeriod":"1"},"plannedParameterUpdates":{}}],"selectedEntityConfigClientId":"cf1647","selectedViewConfigClientId":"cf1783","entityWidth":260},"musicRecordingGrid":{"entityConfigs":[{"clientId":"cf209","parameters":{"recordingURI":"http://sounds.bl.uk/resource/026M-1LP0163217XX-0100V0"},"plannedParameterUpdates":{}},{"clientId":"cf471","parameters":{"kind":"pair","comparisonMode":"direct"},"plannedParameterUpdates":{}},{"clientId":"cf219","parameters":{"recordingURI":"http://sounds.bl.uk/resource/026M-1LP0163226XX-0100V0"},"plannedParameterUpdates":{}}],"viewConfigs":[{"clientId":"def5","parameters":{"kind":"midi-pitch-histogram"},"plannedParameterUpdates":{}},{"clientId":"cf397","parameters":{"kind":"tempo-nonuniform","widthToHeightRatio":"2"},"plannedParameterUpdates":{}},{"clientId":"cf494","parameters":{"kind":"tempo-normalised","widthToHeightRatio":"2"},"plannedParameterUpdates":{}}],"selectedEntityConfigClientId":"cf471","selectedViewConfigClientId":"cf494","entityWidth":220}}')); Daniel@0: } Daniel@0: Daniel@0: Daniel@0: Daniel@0: var resizeIfNeededAfterADelay = function() { Daniel@0: setInterval(function() { Daniel@0: if (screenshotTypes["autosize_grid"] || screenshotTypes["autosize"]) { Daniel@0: var $configGrid = $(".config-grid:visible"); Daniel@0: var $cellsSpace = $configGrid.find(".config-grid-cells__space"); Daniel@0: var maxX = 0; Daniel@0: var maxY = 0; Daniel@0: var $visInstances = $cellsSpace.find(".config-grid-cells__vis-instance"); Daniel@0: if (!$visInstances.length) { Daniel@0: resizeIfNeededAfterADelay(); Daniel@0: return; Daniel@0: } Daniel@0: $visInstances.each(function() { Daniel@0: var $visInstance = $(this); Daniel@0: var position = $visInstance.position(); Daniel@0: var currentMaxX = position.left + $visInstance.width(); Daniel@0: var currentMaxY = position.top + $visInstance.height(); Daniel@0: if (currentMaxX > maxX) { Daniel@0: maxX = currentMaxX; Daniel@0: } Daniel@0: if (currentMaxY > maxY) { Daniel@0: maxY = currentMaxY; Daniel@0: } Daniel@0: }); Daniel@0: $cellsSpace.css({ Daniel@0: "padding-right": 0, Daniel@0: "padding-bottom": 0, Daniel@0: "width": maxX, Daniel@0: "height": maxY, Daniel@0: "overflow": "visible" Daniel@0: }); Daniel@0: Daniel@0: Daniel@0: Daniel@0: if (screenshotTypes["autosize"]) { Daniel@0: var $body = $("body"); Daniel@0: $body.width ($cellsSpace.offset().left + $cellsSpace.outerWidth()); Daniel@0: $body.height($cellsSpace.offset().top + $cellsSpace.outerHeight()); Daniel@0: // var $html = $("html"); Daniel@0: // $html.width ($cellsSpace.offset().left + $cellsSpace.outerWidth()); Daniel@0: // $html.height($cellsSpace.offset().top + $cellsSpace.outerHeight()); Daniel@0: } Daniel@0: Daniel@0: // console.log("VIEWPORT" + document.documentElement.clientWidth + " / " + document.documentElement.clientWidth); Daniel@0: // console.log("BODY" + $body.width() + " / " + $body.height() ); Daniel@0: }; Daniel@0: }, 100); Daniel@0: }; Daniel@0: resizeIfNeededAfterADelay(); Daniel@0: $(window).resize(resizeIfNeededAfterADelay); Daniel@0: });