All Downloads are FREE. Search and download functionalities are using the official Maven repository.

js.biobank-connect.js Maven / Gradle / Ivy

Go to download

Plugin module containing SORTA (system for ontology-based re-coding and technical annotation) plugins.

There is a newer version: 8.4.5
Show newest version
(function ($, molgenis, w) {
    "use strict";

    var restApi = new molgenis.RestClient();
    var nrItemsPerPage = 10;

    molgenis.getTotalNumberOfItems = function (dataSetId) {
        var number = 0;
        var request = {
            'dataSetId': dataSetId,
            'query': {
                'pageSize': 100000,
            }
        };
        $.ajax({
            type: 'POST',
            url: molgenis.adaptContextUrl() + '/allattributes',
            async: false,
            data: JSON.stringify(request),
            contentType: 'application/json',
            success: function (data) {
                number = data.searchHits.length;
            }
        });
        return number;
    };

    molgenis.createMatrixForDataItems = function (options) {
        var request = {
            'dataSetId': options.dataSetId,
            'queryString': options.queryText,
            'query': {
                'offset': options.page ? options.page.start : 0,
                'pageSize': nrItemsPerPage,
                'sort': options.sortRule
            }
        };
        $.ajax({
            type: 'POST',
            url: molgenis.adaptContextUrl() + '/allattributes',
            async: false,
            data: JSON.stringify(request),
            contentType: 'application/json',
            success: function (data, textStatus, request) {
                if (data.searchHits) {
                    var searchHits = data.searchHits;
                    var table = $('').addClass('table table-bordered');
                    options.container.find('table').remove();
                    options.container.prepend(table);
                    var body = $('');
                    table.append(createTableHeader(options)).append(body);
                    if (options.createTableRow === undefined || options.createTableRow === null) {
                        options.createTableRow = createTableRow;
                    }
                    $.each(searchHits, function () {
                        $(options.createTableRow($(this)[0]['columnValueMap'], table)).appendTo(body);
                    });
                    initPager(options, data.totalHitCount);

                } else {
                    molgenis.createAlert([{'message': 'There is no dataset available!'}], 'warning', $('#wizardForm'));
                }
            }
        });

        function initPager(options, totalHitCount) {
            if (options.updatePager || options.container.find('#pager-' + options.dataSetId).length === 0) {
                options.updatePager = false;
                var tablePager = $('
').attr('id', 'pager-' + options.dataSetId); options.container.find('.pagination').parents('div:eq(1)').remove(); options.container.append(tablePager); tablePager.pager({ 'nrItems': totalHitCount, 'nrItemsPerPage': nrItemsPerPage, 'onPageChange': function (page) { options.page = page; molgenis.createMatrixForDataItems(options); } }); } } function createTableHeader(options) { var headerRow = $('
'); if (options.tableHeaders.length > 0) { var firstColumnWidth = 30; var firstColumn = $('').css('width', firstColumnWidth + '%').appendTo(headerRow); if (options.sortRule) { if (options.sortRule.orders[0].direction == 'ASC') { $('').appendTo(firstColumn); } else { $('').appendTo(firstColumn); } } else { $('').appendTo(firstColumn); } var columnWidth = (100 - firstColumnWidth) / options.tableHeaders.length; $.each(options.tableHeaders, function (index, eachHeader) { if (index > 0) { $(''); var description = feature.description; var isPopOver = description.length < 120; var descriptionSpan = $('').html(isPopOver ? description : description.substring(0, 120) + '...'); if (!isPopOver) { descriptionSpan.addClass('show-popover'); descriptionSpan.popover({ content: description, trigger: 'hover', placement: 'bottom' }); } var featureNameSpan = $('' + feature.name + ''); $('
' + options.tableHeaders[0] + '').append(eachHeader).css('width', columnWidth + '%').appendTo(headerRow); } }); // Sort click $(firstColumn).find('.ui-icon').click(function (e) { e.preventDefault(); if (options.sortRule && options.sortRule.orders[0].direction == 'ASC') { options.sortRule = { orders: [{ property: 'name', direction: 'DESC' }] }; } else { options.sortRule = { orders: [{ property: 'name', direction: 'ASC' }] }; } molgenis.createMatrixForDataItems(options); }); } return headerRow; } function createTableRow(feature) { var row = $('
').append(featureNameSpan).appendTo(row); $('').append(descriptionSpan).appendTo(row); return row; } }; molgenis.hrefToId = function (href) { return href.substring(href.lastIndexOf('/') + 1); }; molgenis.i18nDescription = function (feature) { if (feature.description === undefined) feature.description = ''; if (feature.description.indexOf('{') !== 0) { feature.description = '{"en":"' + (feature.description === null ? '' : feature.description.replace(new RegExp('"', 'gm'), '')) + '"}'; } return eval('(' + feature.description + ')'); }; molgenis.ontologyMatcherRunning = function (callback) { $.ajax({ type: 'GET', url: 'biobankconnect/running', contentType: 'application/json', success: function (response) { if (response.isRunning) { var childElements = $('#wizardForm').children(); if ($('#wizardForm').data('childElements') === null || $('#wizardForm').data('childElements') === undefined) $('#wizardForm').data('childElements', childElements); var items = []; items.push('
Message : '); items.push('Other user is currently running BiobankConnect using the same account, please be patient or login as another user!
'); $('#wizardForm').html(items.join('')); setTimeout(function () { molgenis.ontologyMatcherRunning(callback); }, 5000); } else { var childElements = $('#wizardForm').data('childElements'); $('#wizardForm').data('childElements', null); if (childElements !== null && childElements !== undefined) $('#wizardForm').empty().append(childElements); $('ul.pager a').on('click', function (e) { e.preventDefault(); if (!$(this).parent().hasClass('disabled')) { $('#wizardForm').attr('action', $(this).attr('href')).submit(); } return false; }); if (callback !== undefined && callback !== null) { callback(); } } } }); }; molgenis.getFeatureFromIndex = function (feature, callback) { $.ajax({ type: 'POST', url: molgenis.adaptContextUrl() + '/attribute', async: false, data: JSON.stringify(molgenis.hrefToId(feature.href)), contentType: 'application/json', success: function (data, textStatus, request) { $.each(data.searchHits, function (index, hit) { callback(hit); return false; }); } }); }; molgenis.dataItemsTypeahead = function (dataSetId, query, response, approximate) { $.ajax({ type: 'POST', url: molgenis.adaptContextUrl() + '/allattributes', async: false, data: JSON.stringify({ 'dataSetId': dataSetId, 'queryString': query, 'approximate': (approximate !== undefined && approximate !== null) }), contentType: 'application/json', success: function (data, textStatus, request) { var result = []; $.each(data.searchHits, function (index, hit) { var value = hit.columnValueMap.name; if ($.inArray(value, result) === -1) { result.push(hit.columnValueMap); } }); response(result); } }); }; molgenis.ontologyTermTypeahead = function (field, query, response) { $.ajax({ type: 'POST', url: molgenis.adaptContextUrl() + '/ontologyterm', async: false, data: JSON.stringify({'queryString': query}), contentType: 'application/json', success: function (data, textStatus, request) { var results = []; var uniqueOntologyTerms = []; $.each(data.searchHits, function (index, hit) { var ontologyName = hit.columnValueMap.ontologyName; var ontologyTermSynonym = hit.columnValueMap.ontologyTermSynonym; var identifier = ontologyName === '' ? ontologyTermSynonym : ontologyName + ':' + ontologyTermSynonym; hit.columnValueMap.identifier = identifier; if ($.inArray(identifier, uniqueOntologyTerms) === -1) { uniqueOntologyTerms.push(identifier); results.push(hit.columnValueMap); } }); response(results); } }); }; molgenis.adaptContextUrl = function () { return molgenis.getContextUrl().replace(/biobankconnect$/g, "algorithm"); }; $(function () { var buttonGroup = $('.bwizard-buttons'); $('#wizardForm').prepend(buttonGroup); buttonGroup.before(''); $('.wizard-page').removeClass('well'); $('div.wizard-page').css('min-height', 300); $(document).keyup(function (e) { if (e.which == 27) { $('div.modal').modal('hide'); } }); }); }($, window.top.molgenis = window.top.molgenis || {}, window.top));