morpheus.LandingPage = function (pageOptions) {
pageOptions = $.extend({}, {
el: $('#vis')
}, pageOptions);
this.pageOptions = pageOptions;
var _this = this;
var $el = $('
');
this.$el = $el;
var html = [];
html.push('');
html
.push('
Morpheus ');
html.push('Open your own file
');
html.push('');
html.push('Or select a preloaded dataset
');
html.push('');
html.push('');
$(html.join('')).appendTo($el);
new morpheus.HelpMenu().$el.appendTo($el.find('[name=help]'));
var formBuilder = new morpheus.FormBuilder();
formBuilder.append({
name: 'file',
showLabel: false,
value: '',
type: 'file',
required: true,
help: morpheus.DatasetUtil.DATASET_FILE_FORMATS
});
formBuilder.$form.appendTo($el.find('[name=formRow]'));
this.formBuilder = formBuilder;
this.$sampleDatasetsEl = $el.find('[name=exampleRow]');
};
morpheus.LandingPage.prototype = {
dispose: function () {
this.formBuilder.setValue('file', '');
this.$el.hide();
$(window)
.off(
'paste.morpheus drop.morpheus dragover.morpheus dragenter.morpheus beforeunload.morpheus');
$(window).on('beforeunload.morpheus', function () {
return 'Are you sure you want to close Morpheus?';
});
this.formBuilder.off('change');
},
show: function () {
var _this = this;
if (!this.sampleDatasets) {
this.sampleDatasets = new morpheus.SampleDatasets({
$el: this.$sampleDatasetsEl,
callback: function (heatMapOptions) {
_this.open(heatMapOptions);
}
});
}
this.$el.show();
this.formBuilder.on('change', function (e) {
var value = e.value;
if (value !== '' && value != null) {
_this.openFile(value);
}
});
$(window).on('paste.morpheus', function (e) {
var tagName = e.target.tagName;
if (tagName == 'INPUT' || tagName == 'SELECT' || tagName == 'TEXTAREA') {
return;
}
var text = e.originalEvent.clipboardData.getData('text/plain');
if (text != null && text.length > 0) {
var blob = new Blob([text]);
var url = window.URL.createObjectURL(blob);
e.preventDefault();
e.stopPropagation();
_this.openFile(url);
}
}).on('dragover.morpheus dragenter.morpheus', function (e) {
e.preventDefault();
e.stopPropagation();
}).on(
'drop.morpheus',
function (e) {
if (e.originalEvent.dataTransfer
&& e.originalEvent.dataTransfer.files.length) {
e.preventDefault();
e.stopPropagation();
var files = e.originalEvent.dataTransfer.files;
_this.openFile(files[0]);
} else if (e.originalEvent.dataTransfer) {
var url = e.originalEvent.dataTransfer.getData('URL');
e.preventDefault();
e.stopPropagation();
_this.openFile(url);
}
});
},
open: function (options) {
this.dispose();
if (this.heatmap == null) {
options.landingPage = this;
options.el = this.pageOptions.el;
this.heatmap = new morpheus.HeatMap(options);
} else {
options.inheritFromParent = false;
options.parent = this.heatmap;
new morpheus.HeatMap(options);
}
},
openFile: function (value) {
var _this = this;
var options = {
dataset: value
};
var fileName = morpheus.Util.getFileName(value);
morpheus.OpenDatasetTool.fileExtensionPrompt(fileName, function (readOptions) {
if (readOptions) {
var dataset = options.dataset;
options.dataset = {
file: dataset,
options: {}
};
for (var key in readOptions) {
options.dataset.options[key] = readOptions[key];
}
}
_this.open(options);
});
}
};