diff --git a/app.py b/app.py index a2154adc..0666c81d 100644 --- a/app.py +++ b/app.py @@ -19,7 +19,6 @@ from fileviewer.fileviewer import fileviewer_bp from general.general import general_bp from group_manager.group_manager import group_manager_bp -from intake.intake import intake_bp from monitor import Monitor from open_search.open_search import open_search_bp from research.research import research_bp @@ -99,10 +98,6 @@ def load_admin_setting() -> Dict[str, Any]: app.config['modules'].append( {'name': 'Deposit', 'function': 'deposit_bp.index'} ) -if app.config.get('INTAKE_ENABLED'): - app.config['modules'].append( - {'name': 'Intake', 'function': 'intake_bp.index'} - ) if app.config.get('DATAREQUEST_ENABLED'): app.config['modules'].append( {'name': 'Datarequest', 'function': 'datarequest_bp.index'} @@ -153,8 +148,6 @@ def load_admin_setting() -> Dict[str, Any]: app.register_blueprint(deposit_bp, url_prefix='/deposit') if app.config.get('OPEN_SEARCH_ENABLED'): app.register_blueprint(open_search_bp, url_prefix='/open_search') - if app.config.get('INTAKE_ENABLED'): - app.register_blueprint(intake_bp, url_prefix='/intake') if app.config.get('DATAREQUEST_ENABLED'): app.register_blueprint(datarequest_bp, url_prefix='/datarequest/') diff --git a/group_manager/templates/group_manager/index.html b/group_manager/templates/group_manager/index.html index 25a2d57f..5b7843c5 100644 --- a/group_manager/templates/group_manager/index.html +++ b/group_manager/templates/group_manager/index.html @@ -107,15 +107,11 @@

Group manager

@@ -220,7 +216,7 @@

Group manager

- grp- + research-
diff --git a/intake/intake.py b/intake/intake.py deleted file mode 100644 index 983765d6..00000000 --- a/intake/intake.py +++ /dev/null @@ -1,311 +0,0 @@ -#!/usr/bin/env python3 - -__copyright__ = 'Copyright (c) 2021-2024, Utrecht University' -__license__ = 'GPLv3, see LICENSE' - -import time -from typing import Any, Dict - -from flask import ( - Blueprint, - g, - make_response, - render_template, - request, - Response, - session, -) - -import api - -intake_bp = Blueprint('intake_bp', __name__, - template_folder='templates', - static_folder='static/intake', - static_url_path='/assets') - - -@intake_bp.route('/', methods=['GET']) -def index() -> Response: - study_id = request.args.get('studyID') - study_folder = request.args.get('studyFolder') - alert_nr = request.args.get('alertNr') - if alert_nr is None or len(alert_nr) == 0: - alert_nr = '' - - studies = api.call('intake_list_studies')['data'] - - if study_id is None or len(study_id) == 0: - try: - study_id = session['study_id'] - except Exception: - # find a study from available studies. - for study in studies: - # Only take a study that is permitted - temp_permissions = get_intake_study_permissions(study) - if temp_permissions['manager'] or temp_permissions['assistant']: - study_id = study - break - # If not default study can be found - NO ACCESS - if study_id is None or len(study_id) == 0: - alert_nr = 100 # NO ACCESS - - # check whether user is part of the study-group but only of a study id has been found - # if not, stop access - qualified_study_id = "" - if alert_nr != 100: - permissions = get_intake_study_permissions(study_id) - - # determine whether group prefix is intake or grp-intake - qualified_study_id = permissions['group_path'] + study_id - - if not (permissions['manager'] or permissions['assistant']): - alert_nr = 100 # NO ACCESS - - if alert_nr == 100: - permissions = {} - intake_path = '' - valid_folders = [] - datasets = [] - total_dataset_files = 0 - data_erroneous_files = [] - total_file_count = 0 - study_folder = '' - full_path = '' - study_title = '' - else: - # Store in current session for purpose when study_id is missing in requests - session['study_id'] = study_id - - intake_path = '/' + g.irods.zone + '/home/' + qualified_study_id # permissions['group_path'] + study_id - - result = api.call('browse_collections', {'coll': intake_path, - 'sort_on': 'name', - 'sort_order': 'asc', - 'offset': 0, - 'limit': 1000, - 'space': 'Space.INTAKE'}) - - valid_folders = result['data']['items'] - - coll = intake_path - if study_folder: - coll += '/' + study_folder - - datasets = api.call('intake_list_datasets', {"coll": coll})['data'] - - # get the total of dataset files - total_dataset_files = 0 - for dataset in datasets: - total_dataset_files += dataset['objects'] - - data_erroneous_files = api.call('intake_list_unrecognized_files', {"coll": coll})['data'] - - total_file_count = api.call('intake_count_total_files', {"coll": coll})['data'] - - study_title = study_id - full_path = intake_path - if study_folder: - full_path += '/' + study_folder - study_title += '/' + study_folder - else: - study_folder = '' - - return render_template('/intake/intake.html', - activeModule='intake', - permissions=permissions, - studies=studies, - intakePath=intake_path, - alertNr=alert_nr, - selectableScanFolders=valid_folders, - dataSets=datasets, - totalDatasetFiles=total_dataset_files, - dataErroneousFiles=data_erroneous_files, - totalErrorCount=len(data_erroneous_files), - totalFileCount=total_file_count, - study_id=study_id, - qualified_study_id=qualified_study_id, - study_folder=study_folder, - full_path=full_path, - title='Study ' + study_title) - - -def get_intake_study_permissions(study_id: str) -> Dict[str, Any]: - # Two types of groupnames 1) grp-intake- and 2) intake- - group_path = 'grp-intake-' - assistant_access = False - if api.call('group_user_is_member', - {'username': g.user, 'group_name': 'grp-intake-' + study_id})['data']: - assistant_access = True - elif api.call('group_user_is_member', - {'username': g.user, 'group_name': 'intake-' + study_id})['data']: - assistant_access = True - group_path = 'intake-' - - return {'assistant': assistant_access, - 'group_path': group_path, - 'manager': api.call('group_user_is_member', - {'username': g.user, 'group_name': 'grp-datamanager-' + study_id})['data']} - - -@intake_bp.route('getDatasetDetailView', methods=['POST']) -def get_dataset_detail_view() -> Response: - path = request.form.get('path') - tbl_id = request.form.get('tbl_id') - dataset_id = request.form.get('datasetID') - - result = api.call('intake_dataset_get_details', - {"coll": path, "dataset_id": dataset_id}) - - path_items = result['data']['files'] - - datasetErrors = result['data']['dataset_errors'] - datasetWarnings = result['data']['dataset_warnings'] - datasetComments = result['data']['comments'] - - list_comments = [] - for comment in datasetComments: - parts = comment.split(':') - list_comments.append({'name': parts[0], - 'time': time.strftime('%Y/%m/%d %H:%M:%S', time.localtime(int(parts[1]))), - 'comment': parts[2]}) - scan_data = result['data']['scanned'].split(':') - scan_data[1] = time.strftime('%Y/%m/%d %H:%M:%S', time.localtime(int(scan_data[1]))) - - table_definition = render_template('intake/dataset_detail_view.html', - path_nodes_ordered=sorted(path_items.keys()), - pathItems=path_items, - tbl_id=tbl_id, - datasetPath=path, - scannedByWhen=scan_data, - datasetErrors=datasetErrors, - datasetWarnings=datasetWarnings, - datasetComments=list_comments, - datasetID=dataset_id) - - return {'output': table_definition, - 'hasError': False} - - -@intake_bp.route('download', methods=['GET']) -def export() -> Response: - # Datamanager only! - study_id = request.args.get('studyID') - - permissions = get_intake_study_permissions(study_id) - if not permissions['manager']: - content = '' - output = make_response(content) - size = 0 - - output.headers['Content-Disposition'] = 'attachment; filename="no_access_to_study.csv"' - output.headers['Content-Type'] = 'application/octet' - output.headers['Content-Length'] = size - - return output - - result = api.call('intake_report_export_study_data', {'study_id': study_id}) - - export_data = result['data'] - - content = '"Study",' - content += '"Wave",' - content += '"ExpType",' - content += '"Pseudo",' - content += '"Version",' - content += '"ToVaultDay",' - content += '"ToVaultMonth",' - content += '"ToVaultYear",' - content += '"DatasetSize",' - content += '"DatasetFiles"' - content += "\r\n" - - for data_row in export_data: - data = export_data[data_row] - content += "'" + study_id + "'," - content += "'" + data['wave'] + "'," - content += "'" + data['experiment_type'] + "'," - content += "'" + data['pseudocode'] + "'," - content += "'" + data['version'] + "'," - try: - created = time.localtime(int(data['dataset_date_created'])) - content += "'" + time.strftime('%d', created) + "'," - content += "'" + time.strftime('%m', created) + "'," - content += "'" + time.strftime('%Y', created) + "'," - except Exception: - content += "''," - content += "''," - content += "''," - - content += str(data['totalFileSize']) + "'," - content += str(data['totalFiles']) + "'," - content += "\r\n" - - output = make_response(content) - size = len(content) - - output.headers['Content-Disposition'] = f'attachment; filename="{study_id}.csv"' - output.headers['Content-Type'] = 'application/octet' - output.headers['Content-Length'] = size - - return output - - -# public function index($studyID=null) -@intake_bp.route('reports') -@intake_bp.route('/reports/') -def reports() -> Response: - access_denied = True - study_id = request.args.get('studyID') - - studies = api.call('intake_list_studies')['data'] - - if study_id is None or len(study_id) == 0: - try: - study_id = session['study_id'] - except Exception: - # find a study from available studies. - for study in studies: - # Only take a study that is permitted - temp_permissions = get_intake_study_permissions(study) - if temp_permissions['manager']: - study_id = study - break - - # check whether user is part of the study-group. - # if not, stop access - permissions = get_intake_study_permissions(study_id) - if permissions['manager']: - access_denied = False - - intake_path = '' - counts = {} - aggregated_info = {} - title_translate = {} - - if not access_denied: - # Wat wordt hiermee gedaan dan?? - intake_path = '/' + g.irods.zone + '/home/grp-vault-' + study_id - - counts = api.call('intake_report_vault_dataset_counts_per_study', {'study_id': study_id})['data'] - - aggregated_info = api.call('intake_report_vault_aggregated_info', {'study_id': study_id})['data'] - - # Translation table for the frontend - title_translate = {'totalDatasets': 'Total datasets', - 'totalFiles': 'Total files', - 'totalFileSize': 'Total file size', - 'totalFileSizeMonthGrowth': 'File size growth in a month', - 'datasetsMonthGrowth': 'Datasets growth in a month', - 'distinctPseudoCodes': 'Pseudocodes'} - - return render_template('/intake/reports.html', - access_denied=access_denied, - activeModule='intake', - studies=studies, - study_id=study_id, - studyFolder='', - intakePath=intake_path, - datasetTypeCounts=counts, - aggregatedInfo=aggregated_info, - title_translate=title_translate, - title='VAULT: Study ' + study_id) diff --git a/intake/static/intake/css/datatables.bootstrap.min.css b/intake/static/intake/css/datatables.bootstrap.min.css deleted file mode 100644 index 14781d73..00000000 --- a/intake/static/intake/css/datatables.bootstrap.min.css +++ /dev/null @@ -1,7 +0,0 @@ -/*! - * angular-datatables - v0.4.0 - * https://github.com/l-lin/angular-datatables - * License: MIT - */ - -div.dataTables_length label{font-weight:400;float:left;text-align:left}div.dataTables_length select{width:75px}div.dataTables_filter label{font-weight:400;float:right}div.dataTables_filter input{width:16em}div.dataTables_info{padding-top:8px}div.dataTables_paginate{float:right;margin:0}div.dataTables_paginate ul.pagination{margin:2px}table.table{clear:both;margin-top:6px!important;margin-bottom:6px!important;max-width:none!important}table.table thead .sorting,table.table thead .sorting_asc,table.table thead .sorting_asc_disabled,table.table thead .sorting_desc,table.table thead .sorting_desc_disabled{cursor:pointer}table.table thead .sorting:before{content:' ';position:relative;left:-5px}table.table thead .sorting_desc:before{content:"\25BE";padding-right:5px}table.table thead .sorting_asc:before{content:"\25B4";padding-right:5px}table.dataTable th:active{outline:0}.dataTables_wrapper .row{margin-top:20px}div.dataTables_scrollHead table{margin-bottom:0!important;border-bottom-left-radius:0;border-bottom-right-radius:0}div.dataTables_scrollHead table thead tr:last-child td:first-child,div.dataTables_scrollHead table thead tr:last-child th:first-child{border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}div.dataTables_scrollBody table{border-top:0;margin-bottom:0!important}div.dataTables_scrollBody tbody tr:first-child td,div.dataTables_scrollBody tbody tr:first-child th,div.dataTables_scrollFoot table{border-top:0}table.DTTT_selectable tbody tr{cursor:pointer}div.DTTT .btn{color:#333!important}div.DTTT .btn:hover{text-decoration:none!important}ul.DTTT_dropdown.dropdown-menu{z-index:2003}ul.DTTT_dropdown.dropdown-menu a{color:#333!important}ul.DTTT_dropdown.dropdown-menu li{position:relative}ul.DTTT_dropdown.dropdown-menu li:hover a{background-color:#08c;color:#fff!important}div.DTTT_collection_background{z-index:2002}div.DTTT_print_info.modal{height:150px;margin-top:-75px;text-align:center}div.DTTT_print_info h6{font-weight:400;font-size:28px;line-height:28px;margin:1em}div.DTTT_print_info p{font-size:14px;line-height:20px}div.DTFC_LeftFootWrapper table,div.DTFC_LeftHeadWrapper table,div.DTFC_RightFootWrapper table,div.DTFC_RightHeadWrapper table,table.DTFC_Cloned tr.even{background-color:#fff}div.DTFC_LeftHeadWrapper table,div.DTFC_RightHeadWrapper table{margin-bottom:0!important;border-top-right-radius:0!important;border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}div.DTFC_LeftHeadWrapper table thead tr:last-child td:first-child,div.DTFC_LeftHeadWrapper table thead tr:last-child th:first-child,div.DTFC_RightHeadWrapper table thead tr:last-child td:first-child,div.DTFC_RightHeadWrapper table thead tr:last-child th:first-child{border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}div.DTFC_LeftBodyWrapper table,div.DTFC_RightBodyWrapper table{border-top:0;margin-bottom:0!important}div.DTFC_LeftBodyWrapper tbody tr:first-child td,div.DTFC_LeftBodyWrapper tbody tr:first-child th,div.DTFC_LeftFootWrapper table,div.DTFC_RightBodyWrapper tbody tr:first-child td,div.DTFC_RightBodyWrapper tbody tr:first-child th,div.DTFC_RightFootWrapper table{border-top:0}ul.ColVis_collection{width:auto!important} \ No newline at end of file diff --git a/intake/static/intake/css/intake.css b/intake/static/intake/css/intake.css deleted file mode 100755 index 18294f98..00000000 --- a/intake/static/intake/css/intake.css +++ /dev/null @@ -1,83 +0,0 @@ -#dataset_detail_view { - padding: 10px; - background:#F0E68C; -} -.dropdown-menu { - width:300px; - padding:5px; -} - -#select-study,#select-study-folder tbody tr { - cursor:pointer; -} -table.table-outside-borders { - border-style: solid; - border-width: 1px; - border-color: #c0c0c0; -} -table.tbl-fullwidth { - width:100%; -} -td.details-control { - background: url('../images/datatables/triangle_details_open.png') no-repeat center center; - background-size: 20px 20px; - width:20px; - height:20px; - cursor: pointer; -} -tr.shown td.details-control { - background: url('../images/datatables/triangle_details_close.png') no-repeat center center; - background-size: 20px 20px; - width:20px; - height:20px; - cursor: pointer; -} - -div.datasetstatus_frozen{ - background: url('../images/datatables/status_frozen.png') no-repeat center center; - background-size: 20px 20px; - width:20px; - height:20px; -} -div.datasetstatus_locked{ - background: url('../images/datatables/status_locked.png') no-repeat center center; - background-size: 20px 20px; - width:20px; - height:20px; -} -div.datasetstatus_scanned{ - background: url('../images/datatables/status_scanned.png') no-repeat center center; - background-size: 20px 20px; - width:20px; - height:20px; -} - -#datatable tbody tr.detailrow { - cursor:pointer; -} -#datatable_unrecognised tbody tr { - cursor:pointer; -} - -.ellipseDivText { - overflow:hidden; - text-overflow-multiline:ellipsis; -} - -.select-generic-iframe { - height:350px; width:99%; -} - -.w5px { width: 5px; } -.w10px { width: 10px; } -.w20px { width: 20px; } -.w30px { width: 30px; } -.w50px { width: 50px; } -.w80px { width: 80px; } -.w100px { width: 100px; } -.w135px { width: 135px; } -.w150px { width: 150px; } -.w200px { width: 250px; } -.w250px { width: 250px; } -.w300px { width: 300px; } -.w500px { width: 500px; } diff --git a/intake/static/intake/css/jquery.dataTables.css b/intake/static/intake/css/jquery.dataTables.css deleted file mode 100644 index 4e6fbe38..00000000 --- a/intake/static/intake/css/jquery.dataTables.css +++ /dev/null @@ -1,476 +0,0 @@ -/* - * Table styles - */ -table.dataTable { - width: 100%; - margin: 0 auto; - clear: both; - border-collapse: separate; - border-spacing: 0; - /* - * Header and footer styles - */ - /* - * Body styles - */ -} -table.dataTable thead th, -table.dataTable tfoot th { - font-weight: bold; -} -table.dataTable thead th, -table.dataTable thead td { - padding: 10px 18px; - border-bottom: 1px solid #111111; -} -table.dataTable thead th:active, -table.dataTable thead td:active { - outline: none; -} -table.dataTable tfoot th, -table.dataTable tfoot td { - padding: 10px 18px 6px 18px; - border-top: 1px solid #111111; -} -table.dataTable thead .sorting_asc, -table.dataTable thead .sorting_desc, -table.dataTable thead .sorting { - cursor: pointer; - *cursor: hand; -} -table.dataTable thead .sorting { - background: url("../images/sort_both.png") no-repeat center right; -} -table.dataTable thead .sorting_asc { - background: url("../images/sort_asc.png") no-repeat center right; -} -table.dataTable thead .sorting_desc { - background: url("../images/sort_desc.png") no-repeat center right; -} -table.dataTable thead .sorting_asc_disabled { - background: url("../images/sort_asc_disabled.png") no-repeat center right; -} -table.dataTable thead .sorting_desc_disabled { - background: url("../images/sort_desc_disabled.png") no-repeat center right; -} -table.dataTable tbody tr { - background-color: white; -} -table.dataTable tbody tr.selected { - background-color: #b0bed9; -} -table.dataTable tbody th, -table.dataTable tbody td { - padding: 8px 10px; -} -table.dataTable.row-border tbody th, table.dataTable.row-border tbody td, table.dataTable.display tbody th, table.dataTable.display tbody td { - border-top: 1px solid #dddddd; -} -table.dataTable.row-border tbody tr:first-child th, -table.dataTable.row-border tbody tr:first-child td, table.dataTable.display tbody tr:first-child th, -table.dataTable.display tbody tr:first-child td { - border-top: none; -} -table.dataTable.cell-border tbody th, table.dataTable.cell-border tbody td { - border-top: 1px solid #dddddd; - border-right: 1px solid #dddddd; -} -table.dataTable.cell-border tbody tr th:first-child, -table.dataTable.cell-border tbody tr td:first-child { - border-left: 1px solid #dddddd; -} -table.dataTable.cell-border tbody tr:first-child th, -table.dataTable.cell-border tbody tr:first-child td { - border-top: none; -} -table.dataTable.stripe tbody tr.odd, table.dataTable.display tbody tr.odd { - background-color: #f9f9f9; -} -table.dataTable.stripe tbody tr.odd.selected, table.dataTable.display tbody tr.odd.selected { - background-color: #abb9d3; -} -table.dataTable.hover tbody tr:hover, -table.dataTable.hover tbody tr.odd:hover, -table.dataTable.hover tbody tr.even:hover, table.dataTable.display tbody tr:hover, -table.dataTable.display tbody tr.odd:hover, -table.dataTable.display tbody tr.even:hover { - background-color: whitesmoke; -} -table.dataTable.hover tbody tr:hover.selected, -table.dataTable.hover tbody tr.odd:hover.selected, -table.dataTable.hover tbody tr.even:hover.selected, table.dataTable.display tbody tr:hover.selected, -table.dataTable.display tbody tr.odd:hover.selected, -table.dataTable.display tbody tr.even:hover.selected { - background-color: #a9b7d1; -} -table.dataTable.order-column tbody tr > .sorting_1, -table.dataTable.order-column tbody tr > .sorting_2, -table.dataTable.order-column tbody tr > .sorting_3, table.dataTable.display tbody tr > .sorting_1, -table.dataTable.display tbody tr > .sorting_2, -table.dataTable.display tbody tr > .sorting_3 { - background-color: #f9f9f9; -} -table.dataTable.order-column tbody tr.selected > .sorting_1, -table.dataTable.order-column tbody tr.selected > .sorting_2, -table.dataTable.order-column tbody tr.selected > .sorting_3, table.dataTable.display tbody tr.selected > .sorting_1, -table.dataTable.display tbody tr.selected > .sorting_2, -table.dataTable.display tbody tr.selected > .sorting_3 { - background-color: #acbad4; -} -table.dataTable.display tbody tr.odd > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd > .sorting_1 { - background-color: #f1f1f1; -} -table.dataTable.display tbody tr.odd > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd > .sorting_2 { - background-color: #f3f3f3; -} -table.dataTable.display tbody tr.odd > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd > .sorting_3 { - background-color: whitesmoke; -} -table.dataTable.display tbody tr.odd.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_1 { - background-color: #a6b3cd; -} -table.dataTable.display tbody tr.odd.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_2 { - background-color: #a7b5ce; -} -table.dataTable.display tbody tr.odd.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_3 { - background-color: #a9b6d0; -} -table.dataTable.display tbody tr.even > .sorting_1, table.dataTable.order-column.stripe tbody tr.even > .sorting_1 { - background-color: #f9f9f9; -} -table.dataTable.display tbody tr.even > .sorting_2, table.dataTable.order-column.stripe tbody tr.even > .sorting_2 { - background-color: #fbfbfb; -} -table.dataTable.display tbody tr.even > .sorting_3, table.dataTable.order-column.stripe tbody tr.even > .sorting_3 { - background-color: #fdfdfd; -} -table.dataTable.display tbody tr.even.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_1 { - background-color: #acbad4; -} -table.dataTable.display tbody tr.even.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_2 { - background-color: #adbbd6; -} -table.dataTable.display tbody tr.even.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_3 { - background-color: #afbdd8; -} -table.dataTable.display tbody tr:hover > .sorting_1, -table.dataTable.display tbody tr.odd:hover > .sorting_1, -table.dataTable.display tbody tr.even:hover > .sorting_1, table.dataTable.order-column.hover tbody tr:hover > .sorting_1, -table.dataTable.order-column.hover tbody tr.odd:hover > .sorting_1, -table.dataTable.order-column.hover tbody tr.even:hover > .sorting_1 { - background-color: #eaeaea; -} -table.dataTable.display tbody tr:hover > .sorting_2, -table.dataTable.display tbody tr.odd:hover > .sorting_2, -table.dataTable.display tbody tr.even:hover > .sorting_2, table.dataTable.order-column.hover tbody tr:hover > .sorting_2, -table.dataTable.order-column.hover tbody tr.odd:hover > .sorting_2, -table.dataTable.order-column.hover tbody tr.even:hover > .sorting_2 { - background-color: #ebebeb; -} -table.dataTable.display tbody tr:hover > .sorting_3, -table.dataTable.display tbody tr.odd:hover > .sorting_3, -table.dataTable.display tbody tr.even:hover > .sorting_3, table.dataTable.order-column.hover tbody tr:hover > .sorting_3, -table.dataTable.order-column.hover tbody tr.odd:hover > .sorting_3, -table.dataTable.order-column.hover tbody tr.even:hover > .sorting_3 { - background-color: #eeeeee; -} -table.dataTable.display tbody tr:hover.selected > .sorting_1, -table.dataTable.display tbody tr.odd:hover.selected > .sorting_1, -table.dataTable.display tbody tr.even:hover.selected > .sorting_1, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_1, -table.dataTable.order-column.hover tbody tr.odd:hover.selected > .sorting_1, -table.dataTable.order-column.hover tbody tr.even:hover.selected > .sorting_1 { - background-color: #a1aec7; -} -table.dataTable.display tbody tr:hover.selected > .sorting_2, -table.dataTable.display tbody tr.odd:hover.selected > .sorting_2, -table.dataTable.display tbody tr.even:hover.selected > .sorting_2, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_2, -table.dataTable.order-column.hover tbody tr.odd:hover.selected > .sorting_2, -table.dataTable.order-column.hover tbody tr.even:hover.selected > .sorting_2 { - background-color: #a2afc8; -} -table.dataTable.display tbody tr:hover.selected > .sorting_3, -table.dataTable.display tbody tr.odd:hover.selected > .sorting_3, -table.dataTable.display tbody tr.even:hover.selected > .sorting_3, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_3, -table.dataTable.order-column.hover tbody tr.odd:hover.selected > .sorting_3, -table.dataTable.order-column.hover tbody tr.even:hover.selected > .sorting_3 { - background-color: #a4b2cb; -} -table.dataTable.no-footer { - border-bottom: 1px solid #111111; -} -table.dataTable.nowrap th, table.dataTable.nowrap td { - white-space: nowrap; -} -table.dataTable.compact thead th, -table.dataTable.compact thead td { - padding: 5px 9px; -} -table.dataTable.compact tfoot th, -table.dataTable.compact tfoot td { - padding: 5px 9px 3px 9px; -} -table.dataTable.compact tbody th, -table.dataTable.compact tbody td { - padding: 4px 5px; -} -table.dataTable th.dt-left, -table.dataTable td.dt-left { - text-align: left; -} -table.dataTable th.dt-center, -table.dataTable td.dt-center, -table.dataTable td.dataTables_empty { - text-align: center; -} -table.dataTable th.dt-right, -table.dataTable td.dt-right { - text-align: right; -} -table.dataTable th.dt-justify, -table.dataTable td.dt-justify { - text-align: justify; -} -table.dataTable th.dt-nowrap, -table.dataTable td.dt-nowrap { - white-space: nowrap; -} -table.dataTable thead th.dt-head-left, -table.dataTable thead td.dt-head-left, -table.dataTable tfoot th.dt-head-left, -table.dataTable tfoot td.dt-head-left { - text-align: left; -} -table.dataTable thead th.dt-head-center, -table.dataTable thead td.dt-head-center, -table.dataTable tfoot th.dt-head-center, -table.dataTable tfoot td.dt-head-center { - text-align: center; -} -table.dataTable thead th.dt-head-right, -table.dataTable thead td.dt-head-right, -table.dataTable tfoot th.dt-head-right, -table.dataTable tfoot td.dt-head-right { - text-align: right; -} -table.dataTable thead th.dt-head-justify, -table.dataTable thead td.dt-head-justify, -table.dataTable tfoot th.dt-head-justify, -table.dataTable tfoot td.dt-head-justify { - text-align: justify; -} -table.dataTable thead th.dt-head-nowrap, -table.dataTable thead td.dt-head-nowrap, -table.dataTable tfoot th.dt-head-nowrap, -table.dataTable tfoot td.dt-head-nowrap { - white-space: nowrap; -} -table.dataTable tbody th.dt-body-left, -table.dataTable tbody td.dt-body-left { - text-align: left; -} -table.dataTable tbody th.dt-body-center, -table.dataTable tbody td.dt-body-center { - text-align: center; -} -table.dataTable tbody th.dt-body-right, -table.dataTable tbody td.dt-body-right { - text-align: right; -} -table.dataTable tbody th.dt-body-justify, -table.dataTable tbody td.dt-body-justify { - text-align: justify; -} -table.dataTable tbody th.dt-body-nowrap, -table.dataTable tbody td.dt-body-nowrap { - white-space: nowrap; -} - -table.dataTable, -table.dataTable th, -table.dataTable td { - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; -} - -/* - * Control feature layout - */ -.dataTables_wrapper { - position: relative; - clear: both; - *zoom: 1; - zoom: 1; -} -.dataTables_wrapper .dataTables_length { - float: left; -} -.dataTables_wrapper .dataTables_filter { - float: right; - text-align: right; -} -.dataTables_wrapper .dataTables_filter input { - margin-left: 0.5em; -} -.dataTables_wrapper .dataTables_info { - clear: both; - float: left; - padding-top: 0.755em; -} -.dataTables_wrapper .dataTables_paginate { - float: right; - text-align: right; - padding-top: 0.25em; -} -.dataTables_wrapper .dataTables_paginate .paginate_button { - box-sizing: border-box; - display: inline-block; - min-width: 1.5em; - padding: 0.5em 1em; - margin-left: 2px; - text-align: center; - text-decoration: none !important; - cursor: pointer; - *cursor: hand; - color: #333333 !important; - border: 1px solid transparent; -} -.dataTables_wrapper .dataTables_paginate .paginate_button.current, .dataTables_wrapper .dataTables_paginate .paginate_button.current:hover { - color: #333333 !important; - border: 1px solid #cacaca; - background-color: white; - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, white), color-stop(100%, gainsboro)); - /* Chrome,Safari4+ */ - background: -webkit-linear-gradient(top, white 0%, gainsboro 100%); - /* Chrome10+,Safari5.1+ */ - background: -moz-linear-gradient(top, white 0%, gainsboro 100%); - /* FF3.6+ */ - background: -ms-linear-gradient(top, white 0%, gainsboro 100%); - /* IE10+ */ - background: -o-linear-gradient(top, white 0%, gainsboro 100%); - /* Opera 11.10+ */ - background: linear-gradient(to bottom, white 0%, gainsboro 100%); - /* W3C */ -} -.dataTables_wrapper .dataTables_paginate .paginate_button.disabled, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active { - cursor: default; - color: #666 !important; - border: 1px solid transparent; - background: transparent; - box-shadow: none; -} -.dataTables_wrapper .dataTables_paginate .paginate_button:hover { - color: white !important; - border: 1px solid #111111; - background-color: #585858; - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111111)); - /* Chrome,Safari4+ */ - background: -webkit-linear-gradient(top, #585858 0%, #111111 100%); - /* Chrome10+,Safari5.1+ */ - background: -moz-linear-gradient(top, #585858 0%, #111111 100%); - /* FF3.6+ */ - background: -ms-linear-gradient(top, #585858 0%, #111111 100%); - /* IE10+ */ - background: -o-linear-gradient(top, #585858 0%, #111111 100%); - /* Opera 11.10+ */ - background: linear-gradient(to bottom, #585858 0%, #111111 100%); - /* W3C */ -} -.dataTables_wrapper .dataTables_paginate .paginate_button:active { - outline: none; - background-color: #2b2b2b; - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c)); - /* Chrome,Safari4+ */ - background: -webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); - /* Chrome10+,Safari5.1+ */ - background: -moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); - /* FF3.6+ */ - background: -ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); - /* IE10+ */ - background: -o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); - /* Opera 11.10+ */ - background: linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%); - /* W3C */ - box-shadow: inset 0 0 3px #111; -} -.dataTables_wrapper .dataTables_processing { - position: absolute; - top: 50%; - left: 50%; - width: 100%; - height: 40px; - margin-left: -50%; - margin-top: -25px; - padding-top: 20px; - text-align: center; - font-size: 1.2em; - background-color: white; - background: -webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255, 255, 255, 0)), color-stop(25%, rgba(255, 255, 255, 0.9)), color-stop(75%, rgba(255, 255, 255, 0.9)), color-stop(100%, rgba(255, 255, 255, 0))); - /* Chrome,Safari4+ */ - background: -webkit-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); - /* Chrome10+,Safari5.1+ */ - background: -moz-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); - /* FF3.6+ */ - background: -ms-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); - /* IE10+ */ - background: -o-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); - /* Opera 11.10+ */ - background: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); - /* W3C */ -} -.dataTables_wrapper .dataTables_length, -.dataTables_wrapper .dataTables_filter, -.dataTables_wrapper .dataTables_info, -.dataTables_wrapper .dataTables_processing, -.dataTables_wrapper .dataTables_paginate { - color: #333333; -} -.dataTables_wrapper .dataTables_scroll { - clear: both; -} -.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody { - *margin-top: -1px; - -webkit-overflow-scrolling: touch; -} -.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody th > div.dataTables_sizing, -.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody td > div.dataTables_sizing { - height: 0; - overflow: hidden; - margin: 0 !important; - padding: 0 !important; -} -.dataTables_wrapper.no-footer .dataTables_scrollBody { - border-bottom: 1px solid #111111; -} -.dataTables_wrapper.no-footer div.dataTables_scrollHead table, -.dataTables_wrapper.no-footer div.dataTables_scrollBody table { - border-bottom: none; -} -.dataTables_wrapper:after { - visibility: hidden; - display: block; - content: ""; - clear: both; - height: 0; -} - -@media screen and (max-width: 767px) { - .dataTables_wrapper .dataTables_info, - .dataTables_wrapper .dataTables_paginate { - float: none; - text-align: center; - } - .dataTables_wrapper .dataTables_paginate { - margin-top: 0.5em; - } -} -@media screen and (max-width: 640px) { - .dataTables_wrapper .dataTables_length, - .dataTables_wrapper .dataTables_filter { - float: none; - text-align: center; - } - .dataTables_wrapper .dataTables_filter { - margin-top: 0.5em; - } -} diff --git a/intake/static/intake/css/treetable/jquery.treetable.css b/intake/static/intake/css/treetable/jquery.treetable.css deleted file mode 100644 index 4e95bfd3..00000000 --- a/intake/static/intake/css/treetable/jquery.treetable.css +++ /dev/null @@ -1,28 +0,0 @@ -table.treetable span.indenter { - display: inline-block; - margin: 0; - padding: 0; - text-align: right; - - /* Disable text selection of nodes (for better D&D UX) */ - user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -o-user-select: none; - -webkit-user-select: none; - - /* Force content-box box model for indenter (Bootstrap compatibility) */ - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; - - width: 19px; -} - -table.treetable span.indenter a { - background-position: left center; - background-repeat: no-repeat; - display: inline-block; - text-decoration: none; - width: 19px; -} diff --git a/intake/static/intake/css/treetable/jquery.treetable.theme.default.css b/intake/static/intake/css/treetable/jquery.treetable.theme.default.css deleted file mode 100644 index a01d6361..00000000 --- a/intake/static/intake/css/treetable/jquery.treetable.theme.default.css +++ /dev/null @@ -1,96 +0,0 @@ -/* -table.treetable { - border: 1px solid #888; - border-collapse: collapse; - font-size: .8em; - line-height: 1; - margin: .6em 0 1.8em 0; - width: 100%; -} - -table.treetable caption { - font-size: .9em; - font-weight: bold; - margin-bottom: .2em; -} - -table.treetable thead { - background: #aaa url(data:image/png;base64,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) repeat-x top left; - font-size: .9em; -} - -table.treetable thead tr th { - border: 1px solid #888; - font-weight: normal; - padding: .3em 1em .1em 1em; - text-align: left; -} - -table.treetable tbody tr td { - cursor: default; - padding: .3em 1em; -} - -table.treetable span { - background-position: center left; - background-repeat: no-repeat; - padding: .2em 0 .2em 1.5em; -} -*/ - -table.treetable span.file { - background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAADoSURBVBgZBcExblNBGAbA2ceegTRBuIKOgiihSZNTcC5LUHAihNJR0kGKCDcYJY6D3/77MdOinTvzAgCw8ysThIvn/VojIyMjIyPP+bS1sUQIV2s95pBDDvmbP/mdkft83tpYguZq5Jh/OeaYh+yzy8hTHvNlaxNNczm+la9OTlar1UdA/+C2A4trRCnD3jS8BB1obq2Gk6GU6QbQAS4BUaYSQAf4bhhKKTFdAzrAOwAxEUAH+KEM01SY3gM6wBsEAQB0gJ+maZoC3gI6iPYaAIBJsiRmHU0AALOeFC3aK2cWAACUXe7+AwO0lc9eTHYTAAAAAElFTkSuQmCC); -} - -table.treetable span.folder { - background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGrSURBVDjLxZO7ihRBFIa/6u0ZW7GHBUV0UQQTZzd3QdhMQxOfwMRXEANBMNQX0MzAzFAwEzHwARbNFDdwEd31Mj3X7a6uOr9BtzNjYjKBJ6nicP7v3KqcJFaxhBVtZUAK8OHlld2st7Xl3DJPVONP+zEUV4HqL5UDYHr5xvuQAjgl/Qs7TzvOOVAjxjlC+ePSwe6DfbVegLVuT4r14eTr6zvA8xSAoBLzx6pvj4l+DZIezuVkG9fY2H7YRQIMZIBwycmzH1/s3F8AapfIPNF3kQk7+kw9PWBy+IZOdg5Ug3mkAATy/t0usovzGeCUWTjCz0B+Sj0ekfdvkZ3abBv+U4GaCtJ1iEm6ANQJ6fEzrG/engcKw/wXQvEKxSEKQxRGKE7Izt+DSiwBJMUSm71rguMYhQKrBygOIRStf4TiFFRBvbRGKiQLWP29yRSHKBTtfdBmHs0BUpgvtgF4yRFR+NUKi0XZcYjCeCG2smkzLAHkbRBmP0/Uk26O5YnUActBp1GsAI+S5nRJJJal5K1aAMrq0d6Tm9uI6zjyf75dAe6tx/SsWeD//o2/Ab6IH3/h25pOAAAAAElFTkSuQmCC); -} - - - -table.treetable tr.collapsed span.indenter a { - background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAHlJREFUeNrcU1sNgDAQ6wgmcAM2MICGGlg1gJnNzWQcvwQGy1j4oUl/7tH0mpwzM7SgQyO+EZAUWh2MkkzSWhJwuRAlHYsJwEwyvs1gABDuzqoJcTw5qxaIJN0bgQRgIjnlmn1heSO5PE6Y2YXe+5Cr5+h++gs12AcAS6FS+7YOsj4AAAAASUVORK5CYII=); -} - -table.treetable tr.expanded span.indenter a { - background-image: url(data:image/png;base64,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); -} - -/* - -table.treetable tr.branch { - background-color: #f9f9f9; -} - -table.treetable tr.selected { - background-color: #3875d7; - color: #fff; -} - -table.treetable tr span.indenter a { - outline: none; */ -/* Expander shows outline after upgrading to 3.0 (#141) *//* - -} - -table.treetable tr.collapsed.selected span.indenter a { - background-image: url(data:image/png;base64,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); -} - -table.treetable tr.expanded.selected span.indenter a { - background-image: url(data:image/png;base64,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); -} - -table.treetable tr.accept { - background-color: #a3bce4; - color: #fff -} - -table.treetable tr.collapsed.accept td span.indenter a { - background-image: url(data:image/x-png;base64,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); -} - -table.treetable tr.expanded.accept td span.indenter a { - background-image: url(data:image/x-png;base64,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); -} -*/ diff --git a/intake/static/intake/images/Thumbs.db b/intake/static/intake/images/Thumbs.db deleted file mode 100644 index 514fd18d..00000000 Binary files a/intake/static/intake/images/Thumbs.db and /dev/null differ diff --git a/intake/static/intake/images/ajax-loader.gif b/intake/static/intake/images/ajax-loader.gif deleted file mode 100644 index 3c2f7c05..00000000 Binary files a/intake/static/intake/images/ajax-loader.gif and /dev/null differ diff --git a/intake/static/intake/images/back_disabled.png b/intake/static/intake/images/back_disabled.png deleted file mode 100644 index 881de797..00000000 Binary files a/intake/static/intake/images/back_disabled.png and /dev/null differ diff --git a/intake/static/intake/images/back_enabled.png b/intake/static/intake/images/back_enabled.png deleted file mode 100644 index c608682b..00000000 Binary files a/intake/static/intake/images/back_enabled.png and /dev/null differ diff --git a/intake/static/intake/images/back_enabled_hover.png b/intake/static/intake/images/back_enabled_hover.png deleted file mode 100644 index d300f106..00000000 Binary files a/intake/static/intake/images/back_enabled_hover.png and /dev/null differ diff --git a/intake/static/intake/images/datatables/Sorting icons.psd b/intake/static/intake/images/datatables/Sorting icons.psd deleted file mode 100644 index 53b2e068..00000000 Binary files a/intake/static/intake/images/datatables/Sorting icons.psd and /dev/null differ diff --git a/intake/static/intake/images/datatables/back_disabled.png b/intake/static/intake/images/datatables/back_disabled.png deleted file mode 100644 index 881de797..00000000 Binary files a/intake/static/intake/images/datatables/back_disabled.png and /dev/null differ diff --git a/intake/static/intake/images/datatables/back_enabled.png b/intake/static/intake/images/datatables/back_enabled.png deleted file mode 100644 index c608682b..00000000 Binary files a/intake/static/intake/images/datatables/back_enabled.png and /dev/null differ diff --git a/intake/static/intake/images/datatables/back_enabled_hover.png b/intake/static/intake/images/datatables/back_enabled_hover.png deleted file mode 100644 index d300f106..00000000 Binary files a/intake/static/intake/images/datatables/back_enabled_hover.png and /dev/null differ diff --git a/intake/static/intake/images/datatables/details_close.gif b/intake/static/intake/images/datatables/details_close.gif deleted file mode 100644 index d91c37af..00000000 Binary files a/intake/static/intake/images/datatables/details_close.gif and /dev/null differ diff --git a/intake/static/intake/images/datatables/details_open.gif b/intake/static/intake/images/datatables/details_open.gif deleted file mode 100644 index 6d1d2134..00000000 Binary files a/intake/static/intake/images/datatables/details_open.gif and /dev/null differ diff --git a/intake/static/intake/images/datatables/favicon.ico b/intake/static/intake/images/datatables/favicon.ico deleted file mode 100644 index 6eeaa2a0..00000000 Binary files a/intake/static/intake/images/datatables/favicon.ico and /dev/null differ diff --git a/intake/static/intake/images/datatables/forward_disabled.png b/intake/static/intake/images/datatables/forward_disabled.png deleted file mode 100644 index 6a6ded7d..00000000 Binary files a/intake/static/intake/images/datatables/forward_disabled.png and /dev/null differ diff --git a/intake/static/intake/images/datatables/forward_enabled.png b/intake/static/intake/images/datatables/forward_enabled.png deleted file mode 100644 index a4e6b538..00000000 Binary files a/intake/static/intake/images/datatables/forward_enabled.png and /dev/null differ diff --git a/intake/static/intake/images/datatables/forward_enabled_hover.png b/intake/static/intake/images/datatables/forward_enabled_hover.png deleted file mode 100644 index fc46c5eb..00000000 Binary files a/intake/static/intake/images/datatables/forward_enabled_hover.png and /dev/null differ diff --git a/intake/static/intake/images/datatables/old_details_close.png b/intake/static/intake/images/datatables/old_details_close.png deleted file mode 100644 index 9c7d6982..00000000 Binary files a/intake/static/intake/images/datatables/old_details_close.png and /dev/null differ diff --git a/intake/static/intake/images/datatables/old_details_open.png b/intake/static/intake/images/datatables/old_details_open.png deleted file mode 100644 index c0edf448..00000000 Binary files a/intake/static/intake/images/datatables/old_details_open.png and /dev/null differ diff --git a/intake/static/intake/images/datatables/sort_asc.png b/intake/static/intake/images/datatables/sort_asc.png deleted file mode 100644 index a88d7975..00000000 Binary files a/intake/static/intake/images/datatables/sort_asc.png and /dev/null differ diff --git a/intake/static/intake/images/datatables/sort_asc_disabled.png b/intake/static/intake/images/datatables/sort_asc_disabled.png deleted file mode 100644 index 4e144cf0..00000000 Binary files a/intake/static/intake/images/datatables/sort_asc_disabled.png and /dev/null differ diff --git a/intake/static/intake/images/datatables/sort_both.png b/intake/static/intake/images/datatables/sort_both.png deleted file mode 100644 index 18670406..00000000 Binary files a/intake/static/intake/images/datatables/sort_both.png and /dev/null differ diff --git a/intake/static/intake/images/datatables/sort_desc.png b/intake/static/intake/images/datatables/sort_desc.png deleted file mode 100644 index def071ed..00000000 Binary files a/intake/static/intake/images/datatables/sort_desc.png and /dev/null differ diff --git a/intake/static/intake/images/datatables/sort_desc_disabled.png b/intake/static/intake/images/datatables/sort_desc_disabled.png deleted file mode 100644 index 7824973c..00000000 Binary files a/intake/static/intake/images/datatables/sort_desc_disabled.png and /dev/null differ diff --git a/intake/static/intake/images/datatables/status_frozen.png b/intake/static/intake/images/datatables/status_frozen.png deleted file mode 100644 index 9fb35e65..00000000 Binary files a/intake/static/intake/images/datatables/status_frozen.png and /dev/null differ diff --git a/intake/static/intake/images/datatables/status_locked.png b/intake/static/intake/images/datatables/status_locked.png deleted file mode 100644 index 168aa1a4..00000000 Binary files a/intake/static/intake/images/datatables/status_locked.png and /dev/null differ diff --git a/intake/static/intake/images/datatables/status_scanned.png b/intake/static/intake/images/datatables/status_scanned.png deleted file mode 100644 index db88283f..00000000 Binary files a/intake/static/intake/images/datatables/status_scanned.png and /dev/null differ diff --git a/intake/static/intake/images/datatables/triangle_details_close.png b/intake/static/intake/images/datatables/triangle_details_close.png deleted file mode 100644 index f7fbc84f..00000000 Binary files a/intake/static/intake/images/datatables/triangle_details_close.png and /dev/null differ diff --git a/intake/static/intake/images/datatables/triangle_details_open.png b/intake/static/intake/images/datatables/triangle_details_open.png deleted file mode 100644 index b54d94ad..00000000 Binary files a/intake/static/intake/images/datatables/triangle_details_open.png and /dev/null differ diff --git a/intake/static/intake/images/forward_disabled.png b/intake/static/intake/images/forward_disabled.png deleted file mode 100644 index 6a6ded7d..00000000 Binary files a/intake/static/intake/images/forward_disabled.png and /dev/null differ diff --git a/intake/static/intake/images/forward_enabled.png b/intake/static/intake/images/forward_enabled.png deleted file mode 100644 index a4e6b538..00000000 Binary files a/intake/static/intake/images/forward_enabled.png and /dev/null differ diff --git a/intake/static/intake/images/forward_enabled_hover.png b/intake/static/intake/images/forward_enabled_hover.png deleted file mode 100644 index fc46c5eb..00000000 Binary files a/intake/static/intake/images/forward_enabled_hover.png and /dev/null differ diff --git a/intake/static/intake/images/sort_asc.png b/intake/static/intake/images/sort_asc.png deleted file mode 100644 index a88d7975..00000000 Binary files a/intake/static/intake/images/sort_asc.png and /dev/null differ diff --git a/intake/static/intake/images/sort_asc_disabled.png b/intake/static/intake/images/sort_asc_disabled.png deleted file mode 100644 index 4e144cf0..00000000 Binary files a/intake/static/intake/images/sort_asc_disabled.png and /dev/null differ diff --git a/intake/static/intake/images/sort_both.png b/intake/static/intake/images/sort_both.png deleted file mode 100644 index 18670406..00000000 Binary files a/intake/static/intake/images/sort_both.png and /dev/null differ diff --git a/intake/static/intake/images/sort_desc.png b/intake/static/intake/images/sort_desc.png deleted file mode 100644 index def071ed..00000000 Binary files a/intake/static/intake/images/sort_desc.png and /dev/null differ diff --git a/intake/static/intake/images/sort_desc_disabled.png b/intake/static/intake/images/sort_desc_disabled.png deleted file mode 100644 index 7824973c..00000000 Binary files a/intake/static/intake/images/sort_desc_disabled.png and /dev/null differ diff --git a/intake/static/intake/images/uu-logo-footer.svg b/intake/static/intake/images/uu-logo-footer.svg deleted file mode 100644 index d2509486..00000000 --- a/intake/static/intake/images/uu-logo-footer.svg +++ /dev/null @@ -1,788 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/intake/static/intake/images/uu-logo.svg b/intake/static/intake/images/uu-logo.svg deleted file mode 100644 index 2aaa38e2..00000000 --- a/intake/static/intake/images/uu-logo.svg +++ /dev/null @@ -1,329 +0,0 @@ - - - - - - - - - - diff --git a/intake/static/intake/images/yoda/yoda-kleur.png b/intake/static/intake/images/yoda/yoda-kleur.png deleted file mode 100644 index 9d5352ee..00000000 Binary files a/intake/static/intake/images/yoda/yoda-kleur.png and /dev/null differ diff --git a/intake/static/intake/images/yoda/yoda-man.png b/intake/static/intake/images/yoda/yoda-man.png deleted file mode 100644 index c2fc97c5..00000000 Binary files a/intake/static/intake/images/yoda/yoda-man.png and /dev/null differ diff --git a/intake/static/intake/scripts/controllers/intake.js b/intake/static/intake/scripts/controllers/intake.js deleted file mode 100755 index 45e31be2..00000000 --- a/intake/static/intake/scripts/controllers/intake.js +++ /dev/null @@ -1,383 +0,0 @@ -$(function() { - var tableUnrecognised = $('#datatable_unrecognised').DataTable({ - "language": { - "sEmptyTable": "No data found", - "sInfo": "Total files: _TOTAL_", - "sInfoEmpty": "No files present", - "sLoadingRecords": "Loading...", - "sProcessing": "Processing...", - "sSearch": "Search", - "sZeroRecords": "No data found", - "oPaginate": { - "sFirst": "First", - "sLast": "Last", - "sNext": "Next", - "sPrevious": "Previous" - } - }, - "bSort": [], - "columns": [ - { "data": "date" }, - { "data": "name" }, - { "data": "pseudo" }, - { "data": "type" }, - { "data": "wave" }, - { "data": "version" }, - { "data": "status" }, - { "data": "creator" } - ], - "iDisplayLength": 50, - "bPaginate": false, - "bLengthChange": false, - "bFilter": false, - "order": [[ 6, "desc" ]], - "sDom": "<'row'<'col-sm-6'T><'col-sm-6'f>r>t<'row'<'col-sm-6'i><'col-sm-6'p>>", - "sPaginationType": "bootstrap", - "fnInitComplete": function(oSettings, json) { - //$('.dataTables_info span').text($('#totalSignups').text()); - } - }); - - $('#btn-start-scan').on('click', function (){ - var study_id = $('#studyID').val(); - var study_folder = $("#studyFolder").val(); - var collection_to_scan = Yoda.basePath + '/' + study_id; - if (study_folder) { - collection_to_scan += "/" + study_folder; - } - $(this).prop('disabled', true).addClass('disabled'); - inProgressStart('Scanning in progress...'); - Yoda.call('intake_scan_for_datasets', - {coll: collection_to_scan }).then((data) => { - console.log(data); - if (data.proc_status=='OK') { - reload_page_with_alert('5'); - } - else { - reload_page_with_alert('6') - } - }) - }); - - // datamanager only - $('#btn-lock').on('click', function (){ - var datasets = [], - intake_path = Yoda.basePath + '/' + $('#studyID').val(); - inProgressStart('Locking in progress...'); - - $('.cbDataSet').each(function(){ - if($(this).prop('checked')){ - datasets.push($(this).parent().parent().data('dataset-id')); - } - }); - handleLockingAndAlerts(intake_path, datasets); - }); - - // datamanager only - $('#btn-unlock').on('click', function (){ - var datasets = [], - intake_path = Yoda.basePath + '/' + $('#studyID').val(); - inProgressStart('Locking in progress...'); - - $('.cbDataSet').each(function(){ - if($(this).prop('checked')){ - datasets.push($(this).parent().parent().data('dataset-id')); - } - }); - handleUnlockingAndAlerts(intake_path, datasets); - }); - - async function handleLockingAndAlerts(intake_path, dataset_ids) - { - const batchSize = 50; - for (let i = 0; i < dataset_ids.length; i += batchSize) { - const batch = dataset_ids.slice(i, i + batchSize).toString(); - let result = await Yoda.call('intake_lock_dataset', {"path": intake_path, "dataset_ids": batch }); - console.log(result); - if (result.proc_status!='OK') { - alert(result.error_msg); - reload_page_with_alert('2'); - return; - } -  } - reload_page_with_alert('1'); - } - - async function handleUnlockingAndAlerts(intake_path, dataset_ids) - { - const batchSize = 50; - for (let i = 0; i < dataset_ids.length; i += batchSize) { - const batch = dataset_ids.slice(i, i + batchSize).toString(); - let result = await Yoda.call('intake_unlock_dataset', {"path": intake_path, "dataset_ids": batch }); - console.log(result); - if (result.proc_status!='OK') { - alert(result.error_msg); - reload_page_with_alert('4'); - return; - } -  } - reload_page_with_alert('3'); - } - - function addCommentToDataset(studyId, table, datasetId, comment) - { - if(comment.length==0){ - alert('Please enter a comment first.'); - } - else{ - Yoda.call('intake_dataset_add_comment', - {"study_id": studyId, - "dataset_id": datasetId, - "comment": comment}).then((data) => { - console.log(data); - $('tr:last', table).before( - '' + $('
').text(data.user).html() - + '' + $('
').text(data.timestamp).html() - + '' + $('
').text(data.comment).html() - + '' - ); - $('input[name="comments"]', table).val(''); - }) - - return; - - $.post( - Yoda.baseUrl + ['intake','saveDatasetComment'].join('/'), - { "studyID": study, - "datasetID":datasetId, - "comment": comment, - "csrf_yoda": csrf_key - }, - function (data) { - if(!data.hasError){ - console.log(data); - $('tr:last', table).before( - '' + $('
').text(data.output.user).html() - + '' + $('
').text(data.output.timestamp).html() - + '' + $('
').text(data.output.comment).html() - + '' - ); - $('input[name="comments"]', table).val(''); - } - else{ - alert('Your comment could not be processed. Please try again.'); - } - } - ); - } - } - - $('#datatable').on('keypress', 'input[name="comments"]', function(e) { - if (e.which == 13) { - var study = $('#studyID').val(); - var table = $(this).closest('table'); - var datasetId = table.data('dataset-id'); - var comment = $(this).val(); - - addCommentToDataset(study, table, datasetId, comment); - return false; - } - }); - - $('#datatable').on('click', '.btn-add-comment', function(e) { - var study = $('#studyID').val(); - var table = $(this).closest('table'); - var datasetId = table.data('dataset-id'); - var comment = $('input[name="comments"]', table).val(); - - addCommentToDataset(study, table, datasetId, comment); - }); - - // hiding of alert panel - $("[data-hide]").on("click", function(){ - $(this).closest("." + $(this).attr("data-hide")).hide(); - }); - - $('#datatable_unrecognised tbody').on('click', 'tr', function () { - var bodyText = $(this).data('path'); - if(bodyText) { - informDialog($(this).data('error'), bodyText); - } - }); - - $('#select-study tr').on('click', function (){ - document.location = $(this).data('study-url'); - }); - $('#select-study-folder tr').on('click', function (){ - document.location = $(this).data('study-folder-url'); - }); - - msg = '' - // Alert Handling after reload - if (alertNr=='1') { - msg = 'Successfully locked the selected dataset(s).'; - alertType = 'success'; - } - else if (alertNr=='2') { - msg = 'There was a problem locking the selected dataset(s).'; - alertType = 'danger'; - } - else if (alertNr=='3') { - msg = 'Successfully unlocked the selected dataset(s).'; - alertType = 'success'; - } - else if (alertNr=='4') { - msg = 'There was a problem unlocking the selected dataset(s)'; - alertType = 'danger'; - } - else if (alertNr=='5') { - msg = 'Successfully scanned for datasets.'; - alertType = 'success'; - } - else if (alertNr=='6') { - msg = 'There was a problem during the scanning process.'; - alertType = 'danger'; - } - - if (msg.length) { - $('#messages').html('
' + msg + '
'); - } - - console.log($("#studyID").val()) - console.log($("#studyFolder").val()); - console.log(window.location.origin); - console.log(window.location.pathname); - -}); - -function reload_page_with_alert(alertNr) { - console.log($("#studyID").val()) - console.log($("#studyFolder").val()); - var studyID = $("#studyID").val(), - studyFolder= $("#studyFolder").val(); - - // bring back to study-id alone without group qualification - parts = studyID.split('-'); - // take last only to get to study - params = '?studyID=' + parts[parts.length-1] - if (studyFolder) { - params += '&studyFolder=' + studyFolder; - } - window.location.replace(window.location.origin + window.location.pathname + params + '&alertNr=' + alertNr); -} - -function datasetRowClickForDetails(obj, mainTable) -{ - var tr = obj.closest('tr'); - var row = mainTable.row( tr ); - - if ( row.child.isShown() ) { - // This row is already open - close it - row.child.hide(); - tr.removeClass('shown'); - } - else { - // Open this row - var tbl_id = tr.data('row-id'), - url = Yoda.baseUrl + ['intake','getDatasetDetailView'].join('/'), - csrf_key = $('input[name="csrf_yoda"]').val(); - - //return; - // - // "csrf_token": Yoda.csrf.tokenValue - url = 'getDatasetDetailView' - $.post( - url, - { tbl_id: tbl_id, - path: tr.data('ref-path'), - studyID: $('#studyID').val(), - datasetID: tr.data('dataset-id'), -// csrf_yoda: csrf_key, - "csrf_token": Yoda.csrf.tokenValue - }, - function (data) { - if(!data.hasError){ - html_tree = data.output; - - row.child( html_tree ).show(); - - $("#tree"+tbl_id).treetable({ - expandable: true - }); - $("#tree"+tbl_id).treetable("expandAll"); - - tr.addClass('shown'); - } - } - ); - } -} - -function inProgressStart(progressText) -{ - $('.progress_indicator h1').text(progressText); - $('.progress_indicator').show(); -} - -function inProgressEnd() -{ - $('.progress_indicator').hide(); -} - -function informationPanel(alertClass, message) -{ - $('.alert').removeClass('alert-danger').removeClass('alert-success').addClass('alert-'+alertClass); - $('.alert .info_text').text(message); - $('.alert').show(); -} - -function informDialog(title, bodytext) -{ - var modal = $('#dialog-ok'); - - $('.modal-header h3', modal).text(title); - $('.modal-body .item', modal).text(bodytext); - - modal.modal('show'); -} - -function modalDialog(title, url) -{ - var modal = $('#select-generic-modal'), - iframeDocument = $('iframe', modal).get(0).contentWindow.document; - - $('.modal-header h3', modal).text(title); - - iframeDocument.location.href = url; - - $('.modal-body iframe', modal).show(); - $('#select-generic-modal').modal('show'); -} - -async function get_studies() -{ - let result = await Yoda.call('intake_list_studies', {}); - console.log(result); -} - -async function get_studies_dm() -{ - let result = await Yoda.call('intake_list_dm_studies', {}); - console.log(result); -} - -async function get_datasets(coll) -{ - let result = await Yoda.call('intake_list_datasets', - { - coll: Yoda.basePath + '/' + 'grp-intake-initial' - }) - - console.log(result); -} - - -async function get_unrecognized_files(coll) -{ - let result = await Yoda.call('intake_list_unrecognized_files', - { - coll: Yoda.basePath + '/' + 'grp-intake-initial' - }) - - console.log(result); -} diff --git a/intake/static/intake/scripts/controllers/intake_tree.js b/intake/static/intake/scripts/controllers/intake_tree.js deleted file mode 100644 index 8a702f2b..00000000 --- a/intake/static/intake/scripts/controllers/intake_tree.js +++ /dev/null @@ -1,66 +0,0 @@ -$(function() { - $("#youthdata-intake-tree").treetable({ - expandable: true - }); - - $('#btn-meta-data').on('click', function (){ - var path = $('#helper').text(); - getMetaDataOnPath( path ); - }); - - $("#youthdata-intake-tree tbody").on("mousedown", "tr", function() { - - var strNode = $(this).attr('data-tt-id'); - - $('#helper').text( getFullPathOnNode(strNode) ); - - }); -}); - -function getMetaDataOnPath(strPath){ - var url = 'https://localhost/uu/yodaportal/intake/getMetaData'; - - $.post( - url, - {path:strPath}, - function (data) { - if(!data.hasError){ - var strMeta=''; - if(data.allMetaData.length){ - for(i=0;i '+data.allMetaData[i]['value']+'\n'; - } - alert(strMeta); - } - } - else{ - alert('error'); - } - } - ); -} - -function getFullPathOnNode(strNode){ - var arNodes = strNode.split(".") - ,strPath='' - ,home_dir = $('#home-dir').text() - ,nodeId=''; - - for(i=1; i0){ - nodeId += '.'+ arNodes[n]; - }else{ - nodeId = arNodes[n] - } - } - - var tableRow = $("#youthdata-intake-tree tbody tr").filter(function() { - return $(this).attr('data-tt-id') == nodeId; - }); - - strPath += '/' + tableRow.attr('data-target'); - } - return home_dir + strPath; -} diff --git a/intake/static/intake/scripts/controllers/main.js b/intake/static/intake/scripts/controllers/main.js deleted file mode 100644 index 7878b114..00000000 --- a/intake/static/intake/scripts/controllers/main.js +++ /dev/null @@ -1,15 +0,0 @@ -$(function() { - $( ".datepicker" ).datepicker(); - - // Modal - delete - $('#confirm-delete').on('show.bs.modal', function(e) { - var item = $(e.relatedTarget).attr('value'); - $(this).find('.item').text(item); - - var url = $(e.relatedTarget).attr('data-url'); - if (url) - { - $(this).find('.btn-ok').attr('href', url); - } - }); -}); diff --git a/intake/static/intake/scripts/controllers/reports.js b/intake/static/intake/scripts/controllers/reports.js deleted file mode 100755 index 003c8bd7..00000000 --- a/intake/static/intake/scripts/controllers/reports.js +++ /dev/null @@ -1,9 +0,0 @@ -$(function() { - $('#select-study tr').on('click', function (){ - document.location = $(this).data('study-url'); - }); - - $('#export-data').on('click', function (){ - alert('This is not implemented yet.'); - }); -}); diff --git a/intake/static/intake/scripts/dataTables.bootstrap.js b/intake/static/intake/scripts/dataTables.bootstrap.js deleted file mode 100644 index e7781df6..00000000 --- a/intake/static/intake/scripts/dataTables.bootstrap.js +++ /dev/null @@ -1,185 +0,0 @@ -/*! DataTables Bootstrap 3 integration - * ©2011-2014 SpryMedia Ltd - datatables.net/license - */ - -/** - * DataTables integration for Bootstrap 3. This requires Bootstrap 3 and - * DataTables 1.10 or newer. - * - * This file sets the defaults and adds options to DataTables to style its - * controls using Bootstrap. See http://datatables.net/manual/styling/bootstrap - * for further information. - */ -(function(window, document, undefined){ - -var factory = function( $, DataTable ) { -"use strict"; - - -/* Set the defaults for DataTables initialisation */ -$.extend( true, DataTable.defaults, { - dom: - "<'row'<'col-sm-6'l><'col-sm-6'f>>" + - "<'row'<'col-sm-12'tr>>" + - "<'row'<'col-sm-6'i><'col-sm-6'p>>", - renderer: 'bootstrap' -} ); - - -/* Default class modification */ -$.extend( DataTable.ext.classes, { - sWrapper: "dataTables_wrapper dt-bootstrap", - sFilterInput: "form-control input-sm", - sLengthSelect: "form-control input-sm" -} ); - - -/* Bootstrap paging button renderer */ -DataTable.ext.renderer.pageButton.bootstrap = function ( settings, host, idx, buttons, page, pages ) { - var api = new DataTable.Api( settings ); - var classes = settings.oClasses; - var lang = settings.oLanguage.oPaginate; - var btnDisplay, btnClass; - - var attach = function( container, buttons ) { - var i, ien, node, button; - var clickHandler = function ( e ) { - e.preventDefault(); - if ( !$(e.currentTarget).hasClass('disabled') ) { - api.page( e.data.action ).draw( false ); - } - }; - - for ( i=0, ien=buttons.length ; i 0 ? - '' : ' disabled'); - break; - - case 'previous': - btnDisplay = lang.sPrevious; - btnClass = button + (page > 0 ? - '' : ' disabled'); - break; - - case 'next': - btnDisplay = lang.sNext; - btnClass = button + (page < pages-1 ? - '' : ' disabled'); - break; - - case 'last': - btnDisplay = lang.sLast; - btnClass = button + (page < pages-1 ? - '' : ' disabled'); - break; - - default: - btnDisplay = button + 1; - btnClass = page === button ? - 'active' : ''; - break; - } - - if ( btnDisplay ) { - node = $('
  • ', { - 'class': classes.sPageButton+' '+btnClass, - 'aria-controls': settings.sTableId, - 'tabindex': settings.iTabIndex, - 'id': idx === 0 && typeof button === 'string' ? - settings.sTableId +'_'+ button : - null - } ) - .append( $('', { - 'href': '#' - } ) - .html( btnDisplay ) - ) - .appendTo( container ); - - settings.oApi._fnBindAction( - node, {action: button}, clickHandler - ); - } - } - } - }; - - attach( - $(host).empty().html('
      ').children('ul'), - buttons - ); -}; - - -/* - * TableTools Bootstrap compatibility - * Required TableTools 2.1+ - */ -if ( DataTable.TableTools ) { - // Set the classes that TableTools uses to something suitable for Bootstrap - $.extend( true, DataTable.TableTools.classes, { - "container": "DTTT btn-group", - "buttons": { - "normal": "btn btn-default", - "disabled": "disabled" - }, - "collection": { - "container": "DTTT_dropdown dropdown-menu", - "buttons": { - "normal": "", - "disabled": "disabled" - } - }, - "print": { - "info": "DTTT_print_info" - }, - "select": { - "row": "active" - } - } ); - - // Have the collection use a bootstrap compatible drop down - $.extend( true, DataTable.TableTools.DEFAULTS.oTags, { - "collection": { - "container": "ul", - "button": "li", - "liner": "a" - } - } ); -} - -}; // /factory - - -// Define as an AMD module if possible -if ( typeof define === 'function' && define.amd ) { - define( ['jquery', 'datatables'], factory ); -} -else if ( typeof exports === 'object' ) { - // Node/CommonJS - factory( require('jquery'), require('datatables') ); -} -else if ( jQuery ) { - // Otherwise simply initialise as normal, stopping multiple evaluation - factory( jQuery, jQuery.fn.dataTable ); -} - - -})(window, document); diff --git a/intake/static/intake/scripts/dataTables.bootstrapPagination-3.js b/intake/static/intake/scripts/dataTables.bootstrapPagination-3.js deleted file mode 100644 index 52dabcf6..00000000 --- a/intake/static/intake/scripts/dataTables.bootstrapPagination-3.js +++ /dev/null @@ -1,117 +0,0 @@ -/* API method to get paging information */ -$.fn.dataTableExt.oApi.fnPagingInfo = function ( oSettings ) -{ - return { - "iStart": oSettings._iDisplayStart, - "iEnd": oSettings.fnDisplayEnd(), - "iLength": oSettings._iDisplayLength, - "iTotal": oSettings.fnRecordsTotal(), - "iFilteredTotal": oSettings.fnRecordsDisplay(), - "iPage": oSettings._iDisplayLength === -1 ? - 0 : Math.ceil( oSettings._iDisplayStart / oSettings._iDisplayLength ), - "iTotalPages": oSettings._iDisplayLength === -1 ? - 0 : Math.ceil( oSettings.fnRecordsDisplay() / oSettings._iDisplayLength ) - }; -} - -/* Bootstrap style pagination control */ -$.extend( $.fn.dataTableExt.oPagination, { - "bootstrap": { - "fnInit": function( oSettings, nPaging, fnDraw ) { - var oLang = oSettings.oLanguage.oPaginate; - var fnClickHandler = function ( e ) { - e.preventDefault(); - if ( oSettings.oApi._fnPageChange(oSettings, e.data.action) ) { - fnDraw( oSettings ); - } - }; - - $(nPaging).append( - '' - ); - var els = $('a', nPaging); - $(els[0]).bind( 'click.DT', { action: "previous" }, fnClickHandler ); - $(els[1]).bind( 'click.DT', { action: "next" }, fnClickHandler ); - }, - - "fnUpdate": function ( oSettings, fnDraw ) { - var iListLength = 5; - var oPaging = oSettings.oInstance.fnPagingInfo(); - var an = oSettings.aanFeatures.p; - var i, j, sClass, iStart, iEnd, iHalf=Math.floor(iListLength/2); - - if ( oPaging.iTotalPages < iListLength) { - iStart = 1; - iEnd = oPaging.iTotalPages; - } - else if ( oPaging.iPage <= iHalf ) { - iStart = 1; - iEnd = iListLength; - } else if ( oPaging.iPage >= (oPaging.iTotalPages-iHalf) ) { - iStart = oPaging.iTotalPages - iListLength + 1; - iEnd = oPaging.iTotalPages; - } else { - iStart = oPaging.iPage - iHalf + 1; - iEnd = iStart + iListLength - 1; - } - - for ( i=0, iLen=an.length ; i'+j+'') - .insertBefore( $('li:last', an[i])[0] ) - .bind('click', function (e) { - e.preventDefault(); - oSettings._iDisplayStart = (parseInt($('a', this).text(),10)-1) * oPaging.iLength; - fnDraw( oSettings ); - } ); - } - - // Add / remove disabled classes from the static elements - if ( oPaging.iPage === 0 ) { - $('li:first', an[i]).addClass('disabled'); - } else { - $('li:first', an[i]).removeClass('disabled'); - } - - if ( oPaging.iPage === oPaging.iTotalPages-1 || oPaging.iTotalPages === 0 ) { - $('li:last', an[i]).addClass('disabled'); - } else { - $('li:last', an[i]).removeClass('disabled'); - } - } - } - } -} ); - -$(function(){ - $('.datatable').each(function(){ - var datatable = $(this); - // SEARCH - Add the placeholder for Search and Turn this into in-line formcontrol - var search_input = datatable.closest('.dataTables_wrapper').find('div[id$=_filter] input'); - search_input.attr('placeholder', 'Search') - search_input.addClass('form-control input-small') - search_input.css('width', '250px') - - // SEARCH CLEAR - Use an Icon - var clear_input = datatable.closest('.dataTables_wrapper').find('div[id$=_filter] a'); - clear_input.html('') - clear_input.css('margin-left', '5px') - - // LENGTH - Inline-Form control - var length_sel = datatable.closest('.dataTables_wrapper').find('div[id$=_length] select'); - length_sel.addClass('form-control input-small') - length_sel.css('width', '75px') - - // LENGTH - Info adjust location - var length_sel = datatable.closest('.dataTables_wrapper').find('div[id$=_info]'); - length_sel.css('margin-top', '18px') - }); -}); diff --git a/intake/static/intake/scripts/datatables/intake_overview.js b/intake/static/intake/scripts/datatables/intake_overview.js deleted file mode 100644 index dddf6824..00000000 --- a/intake/static/intake/scripts/datatables/intake_overview.js +++ /dev/null @@ -1,153 +0,0 @@ -$(document).ready(function() { - var mainTable = $('#datatable').DataTable({ - "stateSave":true, - "language": { - "sEmptyTable": "No data found", - "sInfo": "Total datasets: _TOTAL_", - "sInfoEmpty": "No datasets present", - "sLoadingRecords": "Loading...", - "sProcessing": "Processing...", - "sSearch": "Search", - "sZeroRecords": "No data found", - "oPaginate": { - "sFirst": "First", - "sLast": "Last", - "sNext": "Next", - "sPrevious": "Previous" - } - }, - "bSort": [], - "columns": [ - { "data": "user"}, - { - "data": null, - "orderable": false, - "defaultContent": '' - }, - { - "className": 'details-control', - "orderable": false, - "data": null, - "defaultContent": '' - }, - { "data": "date" }, - { "data": "pseudo" }, - { "data": "type" }, - { "data": "wave" }, - { "data": "version" }, - { "data": "file_count" }, - { "data": "minfo" }, - { "data": "comment" }, - { "data": "status" }, - { "data": "creator" } - ], - "iDisplayLength": 50, - "bPaginate": false, - "bLengthChange": false, - "bFilter": false, - "columnDefs": [ - { "visible": false, "targets": 0 }, - { "type": "alt-string", "targets": 3 } - ], - "drawCallback": function ( settings ) { - var api = this.api(); - var rows = api.rows( ).nodes(); //{page:'current'} - var last=null; - - api.column(0).data().each( function ( group, i ) { - if ( last !== group ) { - groupname = '
      Scanned datasets'; - chbtext = ''; - if(group=='LOCKED'){ - groupname= '
      Submitted for transportation to vault - can be undone'; - chbtext = ' '; - } - if(group=='FROZEN'){ - groupname='
      Frozen for transportation to vault - cannot be undone'; - } - //$(rows).eq( i ).before( - // '' + chbtext + '' + groupname + '' - //); - - last = group; - } - }); - - // Required as every time page changes, this effect was lost. - $('.cbDataSet').on('click', function (event){ - event.stopPropagation(); - handleVaultButtonStatus(); - }); - - }, - "order": [[ 3, "desc" ]], - "sDom": "<'row'<'col-sm-6'T><'col-sm-6'f>r>t<'row'<'col-sm-6'i><'col-sm-6'p>>", - "sPaginationType": "bootstrap", - "fnInitComplete": function(oSettings, json) { - //$('.dataTables_info span').text($('#totalSignups').text()); - } - }); - - $('#datatable tbody tr .cbDataSet').each(function(){ - if($(this).parent().parent().data('error-count')){ - $(this).parent().html(''); - } - }); - - // remove the checkboxes from columns that hold frozen datasets - $('tr[data-target="FROZEN"] .cbDataSet').parent().html(''); - - - $('#datatable tbody').on('click', 'tr', function () { - datasetRowClickForDetails($(this), mainTable); - }); - - // 1) prevent opening of dataset details when clicking on row. - // 2) enable lock/unlock buttons as to make the relation between the checkboxes and buttons more evident - $('.cbDataSet').on('click', function (event){ - event.stopPropagation(); - handleVaultButtonStatus(); - }); - - // 1) check all checkboxes belonging to the group - // 2) lock/unlock buttons as to make the relation between the checkboxes and buttons more evident - $('#datatable tbody tr .group').on('click', function (){ - $('#datatable tbody tr[data-target="'+$(this).data('target')+'"] .cbDataSet').prop('checked',$(this).prop('checked')); - handleVaultButtonStatus(); - }); - - $('.control-all-cbDataSets').on('click', function (){ - $('.cbDataSet').prop('checked',$(this).prop('checked')); - handleVaultButtonStatus(); - }); - - // Initialize buttons - $('#btn-lock').prop('disabled', true).addClass('disabled'); - $('#btn-unlock').prop('disabled', true).addClass('disabled'); -} ); - -function handleVaultButtonStatus() -{ - // if no checkbox selected disable the buttons - var anyChecked=false; - $('.cbDataSet').each(function(){ - if($(this).prop('checked')){ - anyChecked=true; - return false; - } - }); - - if(anyChecked){ - //$('#btn-lock').prop('disabled', false); -// $('#btn-lock').prop('disabled', false).removeClass('btn-default').removeClass('disabled').addClass('btn-primary'); -// $('#btn-unlock').prop('disabled', false).removeClass('btn-default').removeClass('disabled').addClass('btn-warning'); - $('#btn-lock').prop('disabled', false).addClass('btn-info').removeClass('disabled'); //.removeClass('btn-default').addClass('btn-primary'); - $('#btn-unlock').prop('disabled', false).addClass('btn-warning').removeClass('disabled'); //.removeClass('btn-default').addClass('btn-warning'); - } - else{ - // $('#btn-lock').prop('disabled', true).removeClass('btn-primary').addClass('disabled').addClass('btn-default'); - // $('#btn-unlock').prop('disabled', true).removeClass('btn-warning').addClass('disabled').addClass('btn-default'); - $('#btn-lock').prop('disabled', true).removeClass('btn-info').addClass('disabled'); //.removeClass('btn-primary').addClass('btn-default'); - $('#btn-unlock').prop('disabled', true).removeClass('btn-warning').addClass('disabled');// .removeClass('btn-warning').addClass('btn-default'); - } -} diff --git a/intake/static/intake/scripts/datatables/intake_overview_assistant.js b/intake/static/intake/scripts/datatables/intake_overview_assistant.js deleted file mode 100644 index 8c6457b0..00000000 --- a/intake/static/intake/scripts/datatables/intake_overview_assistant.js +++ /dev/null @@ -1,84 +0,0 @@ -$(document).ready(function() { - var mainTable = $('#datatable').DataTable({ - "stateSave":true, - "language": { - "sEmptyTable": "No data found", - "sInfo": "Total datasets: _TOTAL_", - "sInfoEmpty": "No datasets present", - "sLoadingRecords": "Loading...", - "sProcessing": "Processing...", - "sSearch": "Search", - "sZeroRecords": "No data found", - "oPaginate": { - "sFirst": "First", - "sLast": "Last", - "sNext": "Next", - "sPrevious": "Previous" - } - }, - "bSort": [], - "columns": [ - { "data": "user"}, - { - "className": 'details-control', - "orderable": false, - "data": null, - "defaultContent": '' - }, - { "data": "date" }, - { "data": "pseudo" }, - { "data": "type" }, - { "data": "wave" }, - { "data": "version" }, - { "data": "file_count" }, - { "data": "minfo" }, - { "data": "comment" }, - { "data": "status" }, - { "data": "creator" } - ], - "iDisplayLength": 50, - "bPaginate": false, - "bLengthChange": false, - "bFilter": false, - "columnDefs": [ - { "visible": false, "targets": 0 }, - { "type": "alt-string", "targets": 2 } - ], - "drawCallback": function ( settings ) { - var api = this.api(); - var rows = api.rows( ).nodes(); //{page:'current'} - var last=null; - - api.column(0).data().each( function ( group, i ) { - if ( last !== group ) { - groupname = '
      Scanned datasets'; - if(group=='LOCKED'){ - groupname= '
      Submitted for transportation to vault - can be undone'; - } - if(group=='FROZEN'){ - groupname='
      Frozen for transportation to vault - cannot be undone'; - } - //$(rows).eq( i ).before( - // '' + ' ' + groupname + '' - //); - - last = group; - } - }); - }, - "order": [[ 2, "desc" ]], - "sDom": "<'row'<'col-sm-6'T><'col-sm-6'f>r>t<'row'<'col-sm-6'i><'col-sm-6'p>>", - "sPaginationType": "bootstrap", - "fnInitComplete": function(oSettings, json) { - //$('.dataTables_info span').text($('#totalSignups').text()); - } - }); - - $('#datatable tbody').on('click', 'tr', function () { - datasetRowClickForDetails($(this), mainTable); - }); - // prevent opening of dataset details when clicking on row. - $('.cbDataSet').on('click', function (event){ - event.stopPropagation(); - }); -} ); diff --git a/intake/static/intake/scripts/datatables/plugin_sort_on_image.js b/intake/static/intake/scripts/datatables/plugin_sort_on_image.js deleted file mode 100644 index 1624ddfb..00000000 --- a/intake/static/intake/scripts/datatables/plugin_sort_on_image.js +++ /dev/null @@ -1,19 +0,0 @@ -/* -This plugin is derived from http://cdn.datatables.net/plug-ins/1.10.6/sorting/alt-string.js -It makes sorting on the title of an html element possible. -In this case the div's that reside in the cells of a table column. - */ - -jQuery.extend( jQuery.fn.dataTableExt.oSort, { - "alt-string-pre": function ( a ) { - return a.match(/title="(.*?)"/)[1].toLowerCase(); - }, - - "alt-string-asc": function( a, b ) { - return ((a < b) ? -1 : ((a > b) ? 1 : 0)); - }, - - "alt-string-desc": function(a,b) { - return ((a < b) ? 1 : ((a > b) ? -1 : 0)); - } -}); diff --git a/intake/static/intake/scripts/jquery.dataTables.min.js b/intake/static/intake/scripts/jquery.dataTables.min.js deleted file mode 100644 index 2c64e9ce..00000000 --- a/intake/static/intake/scripts/jquery.dataTables.min.js +++ /dev/null @@ -1,158 +0,0 @@ -/*! DataTables 1.10.5 - * ©2008-2015 SpryMedia Ltd - datatables.net/license - */ -(function(Ea,P,k){var O=function(h){function V(a){var b,c,e={};h.each(a,function(d){if((b=d.match(/^([^A-Z]+?)([A-Z])/))&&-1!=="a aa ai ao as b fn i m o s ".indexOf(b[1]+" "))c=d.replace(b[0],b[2].toLowerCase()),e[c]=d,"o"===b[1]&&V(a[d])});a._hungarianMap=e}function H(a,b,c){a._hungarianMap||V(a);var e;h.each(b,function(d){e=a._hungarianMap[d];if(e!==k&&(c||b[e]===k))"o"===e.charAt(0)?(b[e]||(b[e]={}),h.extend(!0,b[e],b[d]),H(a[e],b[e],c)):b[e]=b[d]})}function O(a){var b=o.defaults.oLanguage,c=a.sZeroRecords; -!a.sEmptyTable&&(c&&"No data available in table"===b.sEmptyTable)&&E(a,a,"sZeroRecords","sEmptyTable");!a.sLoadingRecords&&(c&&"Loading..."===b.sLoadingRecords)&&E(a,a,"sZeroRecords","sLoadingRecords");a.sInfoThousands&&(a.sThousands=a.sInfoThousands);(a=a.sDecimal)&&db(a)}function eb(a){A(a,"ordering","bSort");A(a,"orderMulti","bSortMulti");A(a,"orderClasses","bSortClasses");A(a,"orderCellsTop","bSortCellsTop");A(a,"order","aaSorting");A(a,"orderFixed","aaSortingFixed");A(a,"paging","bPaginate"); -A(a,"pagingType","sPaginationType");A(a,"pageLength","iDisplayLength");A(a,"searching","bFilter");if(a=a.aoSearchCols)for(var b=0,c=a.length;b").css({position:"absolute",top:0,left:0,height:1,width:1,overflow:"hidden"}).append(h("
      ").css({position:"absolute",top:1,left:1,width:100, -overflow:"scroll"}).append(h('
      ').css({width:"100%",height:10}))).appendTo("body"),c=b.find(".test");a.bScrollOversize=100===c[0].offsetWidth;a.bScrollbarLeft=1!==c.offset().left;b.remove()}function hb(a,b,c,e,d,f){var g,j=!1;c!==k&&(g=c,j=!0);for(;e!==d;)a.hasOwnProperty(e)&&(g=j?b(g,a[e],e,a):a[e],j=!0,e+=f);return g}function Fa(a,b){var c=o.defaults.column,e=a.aoColumns.length,c=h.extend({},o.models.oColumn,c,{nTh:b?b:P.createElement("th"),sTitle:c.sTitle?c.sTitle:b?b.innerHTML: -"",aDataSort:c.aDataSort?c.aDataSort:[e],mData:c.mData?c.mData:e,idx:e});a.aoColumns.push(c);c=a.aoPreSearchCols;c[e]=h.extend({},o.models.oSearch,c[e]);ka(a,e,h(b).data())}function ka(a,b,c){var b=a.aoColumns[b],e=a.oClasses,d=h(b.nTh);if(!b.sWidthOrig){b.sWidthOrig=d.attr("width")||null;var f=(d.attr("style")||"").match(/width:\s*(\d+[pxem%]+)/);f&&(b.sWidthOrig=f[1])}c!==k&&null!==c&&(fb(c),H(o.defaults.column,c),c.mDataProp!==k&&!c.mData&&(c.mData=c.mDataProp),c.sType&&(b._sManualType=c.sType), -c.className&&!c.sClass&&(c.sClass=c.className),h.extend(b,c),E(b,c,"sWidth","sWidthOrig"),"number"===typeof c.iDataSort&&(b.aDataSort=[c.iDataSort]),E(b,c,"aDataSort"));var g=b.mData,j=W(g),i=b.mRender?W(b.mRender):null,c=function(a){return"string"===typeof a&&-1!==a.indexOf("@")};b._bAttrSrc=h.isPlainObject(g)&&(c(g.sort)||c(g.type)||c(g.filter));b.fnGetData=function(a,b,c){var e=j(a,b,k,c);return i&&b?i(e,b,a,c):e};b.fnSetData=function(a,b,c){return Q(g)(a,b,c)};"number"!==typeof g&&(a._rowReadObject= -!0);a.oFeatures.bSort||(b.bSortable=!1,d.addClass(e.sSortableNone));a=-1!==h.inArray("asc",b.asSorting);c=-1!==h.inArray("desc",b.asSorting);!b.bSortable||!a&&!c?(b.sSortingClass=e.sSortableNone,b.sSortingClassJUI=""):a&&!c?(b.sSortingClass=e.sSortableAsc,b.sSortingClassJUI=e.sSortJUIAscAllowed):!a&&c?(b.sSortingClass=e.sSortableDesc,b.sSortingClassJUI=e.sSortJUIDescAllowed):(b.sSortingClass=e.sSortable,b.sSortingClassJUI=e.sSortJUI)}function X(a){if(!1!==a.oFeatures.bAutoWidth){var b=a.aoColumns; -Ga(a);for(var c=0,e=b.length;cp[f])e(l.length+p[f],m);else if("string"===typeof p[f]){j=0;for(i=l.length;jb&&a[d]--; -1!=e&&c===k&&a.splice(e,1)}function ca(a,b,c,e){var d=a.aoData[b],f,g=function(c,f){for(;c.childNodes.length;)c.removeChild(c.firstChild);c.innerHTML=y(a,b,f,"display")};if("dom"===c||(!c||"auto"===c)&&"dom"===d.src)d._aData=na(a,d,e,e===k?k:d._aData).data;else{var j=d.anCells;if(j)if(e!==k)g(j[e],e);else{c=0;for(f=j.length;c").appendTo(g));b=0;for(c=l.length;btr").attr("role","row");h(g).find(">tr>th, >tr>td").addClass(m.sHeaderTH); -h(j).find(">tr>th, >tr>td").addClass(m.sFooterTH);if(null!==j){a=a.aoFooter[0];b=0;for(c=a.length;b=a.fnRecordsDisplay()?0:g,a.iInitDisplayStart=-1);var g=a._iDisplayStart,m=a.fnDisplayEnd();if(a.bDeferLoading)a.bDeferLoading=!1,a.iDraw++,C(a,!1);else if(j){if(!a.bDestroying&&!kb(a))return}else a.iDraw++;if(0!==i.length){f=j?a.aoData.length:m;for(j=j?0:g;j",{"class":d?e[0]:""}).append(h("",{valign:"top",colSpan:aa(a),"class":a.oClasses.sRowEmpty}).html(c))[0];w(a,"aoHeaderCallback","header",[h(a.nTHead).children("tr")[0],La(a),g,m,i]);w(a,"aoFooterCallback","footer",[h(a.nTFoot).children("tr")[0],La(a),g,m,i]);e=h(a.nTBody);e.children().detach();e.append(h(b));w(a,"aoDrawCallback","draw",[a]);a.bSorted=!1;a.bFiltered=!1;a.bDrawing= -!1}}function N(a,b){var c=a.oFeatures,e=c.bFilter;c.bSort&&lb(a);e?fa(a,a.oPreviousSearch):a.aiDisplay=a.aiDisplayMaster.slice();!0!==b&&(a._iDisplayStart=0);a._drawHold=b;M(a);a._drawHold=!1}function mb(a){var b=a.oClasses,c=h(a.nTable),c=h("
      ").insertBefore(c),e=a.oFeatures,d=h("
      ",{id:a.sTableId+"_wrapper","class":b.sWrapper+(a.nTFoot?"":" "+b.sNoFooter)});a.nHolding=c[0];a.nTableWrapper=d[0];a.nTableReinsertBefore=a.nTable.nextSibling;for(var f=a.sDom.split(""),g,j,i,m,l,p,n=0;n")[0];m=f[n+1];if("'"==m||'"'==m){l="";for(p=2;f[n+p]!=m;)l+=f[n+p],p++;"H"==l?l=b.sJUIHeader:"F"==l&&(l=b.sJUIFooter);-1!=l.indexOf(".")?(m=l.split("."),i.id=m[0].substr(1,m[0].length-1),i.className=m[1]):"#"==l.charAt(0)?i.id=l.substr(1,l.length-1):i.className=l;n+=p}d.append(i);d=h(i)}else if(">"==j)d=d.parent();else if("l"==j&&e.bPaginate&&e.bLengthChange)g=nb(a);else if("f"==j&&e.bFilter)g=ob(a);else if("r"==j&&e.bProcessing)g=pb(a);else if("t"==j)g=qb(a);else if("i"== -j&&e.bInfo)g=rb(a);else if("p"==j&&e.bPaginate)g=sb(a);else if(0!==o.ext.feature.length){i=o.ext.feature;p=0;for(m=i.length;p',j=e.sSearch,j=j.match(/_INPUT_/)?j.replace("_INPUT_",g):j+g,b=h("
      ",{id:!f.f?c+"_filter":null,"class":b.sFilter}).append(h("
      ").addClass(b.sLength); -a.aanFeatures.l||(i[0].id=c+"_length");i.children().append(a.oLanguage.sLengthMenu.replace("_MENU_",d[0].outerHTML));h("select",i).val(a._iDisplayLength).bind("change.DT",function(){Ra(a,h(this).val());M(a)});h(a.nTable).bind("length.dt.DT",function(b,c,f){a===c&&h("select",i).val(f)});return i[0]}function sb(a){var b=a.sPaginationType,c=o.ext.pager[b],e="function"===typeof c,d=function(a){M(a)},b=h("
      ").addClass(a.oClasses.sPaging+b)[0],f=a.aanFeatures;e||c.fnInit(a,b,d);f.p||(b.id=a.sTableId+ -"_paginate",a.aoDrawCallback.push({fn:function(a){if(e){var b=a._iDisplayStart,h=a._iDisplayLength,m=a.fnRecordsDisplay(),l=-1===h,b=l?0:Math.ceil(b/h),h=l?1:Math.ceil(m/h),m=c(b,h),p,l=0;for(p=f.p.length;lf&&(e=0)):"first"==b?e=0:"previous"==b?(e=0<=d?e-d:0,0>e&&(e=0)):"next"== -b?e+d",{id:!a.aanFeatures.r?a.sTableId+"_processing":null,"class":a.oClasses.sProcessing}).html(a.oLanguage.sProcessing).insertBefore(a.nTable)[0]}function C(a,b){a.oFeatures.bProcessing&&h(a.aanFeatures.r).css("display",b?"block":"none");w(a,null,"processing",[a,b])}function qb(a){var b=h(a.nTable);b.attr("role", -"grid");var c=a.oScroll;if(""===c.sX&&""===c.sY)return a.nTable;var e=c.sX,d=c.sY,f=a.oClasses,g=b.children("caption"),j=g.length?g[0]._captionSide:null,i=h(b[0].cloneNode(!1)),m=h(b[0].cloneNode(!1)),l=b.children("tfoot");c.sX&&"100%"===b.attr("width")&&b.removeAttr("width");l.length||(l=null);c=h("
      ",{"class":f.sScrollWrapper}).append(h("
      ",{"class":f.sScrollHead}).css({overflow:"hidden",position:"relative",border:0,width:e?!e?null:s(e):"100%"}).append(h("
      ",{"class":f.sScrollHeadInner}).css({"box-sizing":"content-box", -width:c.sXInner||"100%"}).append(i.removeAttr("id").css("margin-left",0).append("top"===j?g:null).append(b.children("thead"))))).append(h("
      ",{"class":f.sScrollBody}).css({overflow:"auto",height:!d?null:s(d),width:!e?null:s(e)}).append(b));l&&c.append(h("
      ",{"class":f.sScrollFoot}).css({overflow:"hidden",border:0,width:e?!e?null:s(e):"100%"}).append(h("
      ",{"class":f.sScrollFootInner}).append(m.removeAttr("id").css("margin-left",0).append("bottom"===j?g:null).append(b.children("tfoot"))))); -var b=c.children(),p=b[0],f=b[1],n=l?b[2]:null;if(e)h(f).on("scroll.DT",function(){var a=this.scrollLeft;p.scrollLeft=a;l&&(n.scrollLeft=a)});a.nScrollHead=p;a.nScrollBody=f;a.nScrollFoot=n;a.aoDrawCallback.push({fn:Y,sName:"scrolling"});return c[0]}function Y(a){var b=a.oScroll,c=b.sX,e=b.sXInner,d=b.sY,f=b.iBarWidth,g=h(a.nScrollHead),j=g[0].style,i=g.children("div"),m=i[0].style,l=i.children("table"),i=a.nScrollBody,p=h(i),n=i.style,k=h(a.nScrollFoot).children("div"),q=k.children("table"),o=h(a.nTHead), -r=h(a.nTable),t=r[0],u=t.style,K=a.nTFoot?h(a.nTFoot):null,ha=a.oBrowser,w=ha.bScrollOversize,x,v,y,L,z,A=[],B=[],C=[],D,E=function(a){a=a.style;a.paddingTop="0";a.paddingBottom="0";a.borderTopWidth="0";a.borderBottomWidth="0";a.height=0};r.children("thead, tfoot").remove();z=o.clone().prependTo(r);x=o.find("tr");y=z.find("tr");z.find("th, td").removeAttr("tabindex");K&&(L=K.clone().prependTo(r),v=K.find("tr"),L=L.find("tr"));c||(n.width="100%",g[0].style.width="100%");h.each(qa(a,z),function(b,c){D= -la(a,b);c.style.width=a.aoColumns[D].sWidth});K&&G(function(a){a.style.width=""},L);b.bCollapse&&""!==d&&(n.height=p[0].offsetHeight+o[0].offsetHeight+"px");g=r.outerWidth();if(""===c){if(u.width="100%",w&&(r.find("tbody").height()>i.offsetHeight||"scroll"==p.css("overflow-y")))u.width=s(r.outerWidth()-f)}else""!==e?u.width=s(e):g==p.width()&&p.height()g-f&&(u.width=s(g))):u.width=s(g);g=r.outerWidth();G(E,y);G(function(a){C.push(a.innerHTML);A.push(s(h(a).css("width")))}, -y);G(function(a,b){a.style.width=A[b]},x);h(y).height(0);K&&(G(E,L),G(function(a){B.push(s(h(a).css("width")))},L),G(function(a,b){a.style.width=B[b]},v),h(L).height(0));G(function(a,b){a.innerHTML='
      '+C[b]+"
      ";a.style.width=A[b]},y);K&&G(function(a,b){a.innerHTML="";a.style.width=B[b]},L);if(r.outerWidth()i.offsetHeight||"scroll"==p.css("overflow-y")?g+f:g;if(w&&(i.scrollHeight>i.offsetHeight||"scroll"==p.css("overflow-y")))u.width= -s(v-f);(""===c||""!==e)&&R(a,1,"Possible column misalignment",6)}else v="100%";n.width=s(v);j.width=s(v);K&&(a.nScrollFoot.style.width=s(v));!d&&w&&(n.height=s(t.offsetHeight+f));d&&b.bCollapse&&(n.height=s(d),b=c&&t.offsetWidth>i.offsetWidth?f:0,t.offsetHeighti.clientHeight||"scroll"==p.css("overflow-y");ha="padding"+(ha.bScrollbarLeft?"Left":"Right");m[ha]=l?f+"px":"0px";K&&(q[0].style.width= -s(b),k[0].style.width=s(b),k[0].style[ha]=l?f+"px":"0px");p.scroll();if((a.bSorted||a.bFiltered)&&!a._drawHold)i.scrollTop=0}function G(a,b,c){for(var e=0,d=0,f=b.length,g,j;d"));j.find("tfoot th, tfoot td").css("width","");var q=j.find("tbody tr"),i=qa(a,j.find("thead")[0]);for(n=0;n").css("width",s(a)).appendTo(b||P.body),e=c[0].offsetWidth;c.remove();return e} -function Fb(a,b){var c=a.oScroll;if(c.sX||c.sY)c=!c.sX?c.iBarWidth:0,b.style.width=s(h(b).outerWidth()-c)}function Eb(a,b){var c=Gb(a,b);if(0>c)return null;var e=a.aoData[c];return!e.nTr?h("").html(y(a,c,b,"display"))[0]:e.anCells[b]}function Gb(a,b){for(var c,e=-1,d=-1,f=0,g=a.aoData.length;fe&&(e=c.length,d=f);return d}function s(a){return null===a?"0px":"number"==typeof a?0>a?"0px":a+"px":a.match(/\d$/)?a+"px":a}function Hb(){if(!o.__scrollbarWidth){var a= -h("

      ").css({width:"100%",height:200,padding:0})[0],b=h("

      ").css({position:"absolute",top:0,left:0,width:200,height:150,padding:0,overflow:"hidden",visibility:"hidden"}).append(a).appendTo("body"),c=a.offsetWidth;b.css("overflow","scroll");a=a.offsetWidth;c===a&&(a=b[0].clientWidth);b.remove();o.__scrollbarWidth=c-a}return o.__scrollbarWidth}function T(a){var b,c,e=[],d=a.aoColumns,f,g,j,i;b=a.aaSortingFixed;c=h.isPlainObject(b);var m=[];f=function(a){a.length&&!h.isArray(a[0])?m.push(a):m.push.apply(m, -a)};h.isArray(b)&&f(b);c&&b.pre&&f(b.pre);f(a.aaSorting);c&&b.post&&f(b.post);for(a=0;ad?1:0,0!==c)return"asc"===h.dir?c:-c;c=e[a];d=e[b];return cd?1:0}):h.sort(function(a,b){var c,g,h,j,i=m.length,k=f[a]._aSortData,o=f[b]._aSortData;for(h=0;hg?1:0})}a.bSorted=!0}function Jb(a){for(var b,c,e=a.aoColumns,d=T(a),a=a.oLanguage.oAria,f=0,g=e.length;f/g,"");var i=c.nTh;i.removeAttribute("aria-sort");c.bSortable&&(0d?d+1:3));d=0;for(f=e.length;dd?d+1:3))}a.aLastSort=e}function Ib(a,b){var c=a.aoColumns[b],e=o.ext.order[c.sSortDataType], -d;e&&(d=e.call(a.oInstance,a,b,$(a,b)));for(var f,g=o.ext.type.order[c.sType+"-pre"],h=0,i=a.aoData.length;h=e.length?[0,c[1]]:c)});h.extend(a.oPreviousSearch,Ab(d.search));b=0;for(c=d.columns.length;b=c&&(b=c-e);b-=b%e;if(-1===e||0>b)b=0;a._iDisplayStart=b}function Pa(a,b){var c=a.renderer,e=o.ext.renderer[b];return h.isPlainObject(c)&&c[b]?e[c[b]]||e._:"string"===typeof c?e[c]||e._:e._}function B(a){return a.oFeatures.bServerSide?"ssp":a.ajax||a.sAjaxSource?"ajax":"dom"}function Wa(a,b){var c=[],c=Mb.numbers_length,e=Math.floor(c/2);b<=c?c=U(0,b):a<=e?(c=U(0,c-2),c.push("ellipsis"),c.push(b-1)):(a>=b-1-e?c=U(b-(c-2),b):(c=U(a-1,a+2),c.push("ellipsis"),c.push(b-1)),c.splice(0,0,"ellipsis"), -c.splice(0,0,0));c.DT_el="span";return c}function db(a){h.each({num:function(b){return Aa(b,a)},"num-fmt":function(b){return Aa(b,a,Xa)},"html-num":function(b){return Aa(b,a,Ba)},"html-num-fmt":function(b){return Aa(b,a,Ba,Xa)}},function(b,c){x.type.order[b+a+"-pre"]=c;b.match(/^html\-/)&&(x.type.search[b+a]=x.type.search.html)})}function Nb(a){return function(){var b=[za(this[o.ext.iApiIndex])].concat(Array.prototype.slice.call(arguments));return o.ext.internal[a].apply(this,b)}}var o,x,t,r,u,Ya= -{},Ob=/[\r\n]/g,Ba=/<.*?>/g,ac=/^[\w\+\-]/,bc=/[\w\+\-]$/,Yb=RegExp("(\\/|\\.|\\*|\\+|\\?|\\||\\(|\\)|\\[|\\]|\\{|\\}|\\\\|\\$|\\^|\\-)","g"),Xa=/[',$\u00a3\u20ac\u00a5%\u2009\u202F]/g,I=function(a){return!a||!0===a||"-"===a?!0:!1},Pb=function(a){var b=parseInt(a,10);return!isNaN(b)&&isFinite(a)?b:null},Qb=function(a,b){Ya[b]||(Ya[b]=RegExp(va(b),"g"));return"string"===typeof a&&"."!==b?a.replace(/\./g,"").replace(Ya[b],"."):a},Za=function(a,b,c){var e="string"===typeof a;b&&e&&(a=Qb(a,b));c&&e&& -(a=a.replace(Xa,""));return I(a)||!isNaN(parseFloat(a))&&isFinite(a)},Rb=function(a,b,c){return I(a)?!0:!(I(a)||"string"===typeof a)?null:Za(a.replace(Ba,""),b,c)?!0:null},D=function(a,b,c){var e=[],d=0,f=a.length;if(c!==k)for(;d")[0],Zb=wa.textContent!==k,$b=/<.*?>/g;o=function(a){this.$=function(a,b){return this.api(!0).$(a,b)};this._=function(a,b){return this.api(!0).rows(a, -b).data()};this.api=function(a){return a?new t(za(this[x.iApiIndex])):new t(this)};this.fnAddData=function(a,b){var c=this.api(!0),e=h.isArray(a)&&(h.isArray(a[0])||h.isPlainObject(a[0]))?c.rows.add(a):c.row.add(a);(b===k||b)&&c.draw();return e.flatten().toArray()};this.fnAdjustColumnSizing=function(a){var b=this.api(!0).columns.adjust(),c=b.settings()[0],e=c.oScroll;a===k||a?b.draw(!1):(""!==e.sX||""!==e.sY)&&Y(c)};this.fnClearTable=function(a){var b=this.api(!0).clear();(a===k||a)&&b.draw()};this.fnClose= -function(a){this.api(!0).row(a).child.hide()};this.fnDeleteRow=function(a,b,c){var e=this.api(!0),a=e.rows(a),d=a.settings()[0],h=d.aoData[a[0][0]];a.remove();b&&b.call(this,d,h);(c===k||c)&&e.draw();return h};this.fnDestroy=function(a){this.api(!0).destroy(a)};this.fnDraw=function(a){this.api(!0).draw(!a)};this.fnFilter=function(a,b,c,e,d,h){d=this.api(!0);null===b||b===k?d.search(a,c,e,h):d.column(b).search(a,c,e,h);d.draw()};this.fnGetData=function(a,b){var c=this.api(!0);if(a!==k){var e=a.nodeName? -a.nodeName.toLowerCase():"";return b!==k||"td"==e||"th"==e?c.cell(a,b).data():c.row(a).data()||null}return c.data().toArray()};this.fnGetNodes=function(a){var b=this.api(!0);return a!==k?b.row(a).node():b.rows().nodes().flatten().toArray()};this.fnGetPosition=function(a){var b=this.api(!0),c=a.nodeName.toUpperCase();return"TR"==c?b.row(a).index():"TD"==c||"TH"==c?(a=b.cell(a).index(),[a.row,a.columnVisible,a.column]):null};this.fnIsOpen=function(a){return this.api(!0).row(a).child.isShown()};this.fnOpen= -function(a,b,c){return this.api(!0).row(a).child(b,c).show().child()[0]};this.fnPageChange=function(a,b){var c=this.api(!0).page(a);(b===k||b)&&c.draw(!1)};this.fnSetColumnVis=function(a,b,c){a=this.api(!0).column(a).visible(b);(c===k||c)&&a.columns.adjust().draw()};this.fnSettings=function(){return za(this[x.iApiIndex])};this.fnSort=function(a){this.api(!0).order(a).draw()};this.fnSortListener=function(a,b,c){this.api(!0).order.listener(a,b,c)};this.fnUpdate=function(a,b,c,e,d){var h=this.api(!0); -c===k||null===c?h.row(b).data(a):h.cell(b,c).data(a);(d===k||d)&&h.columns.adjust();(e===k||e)&&h.draw();return 0};this.fnVersionCheck=x.fnVersionCheck;var b=this,c=a===k,e=this.length;c&&(a={});this.oApi=this.internal=x.internal;for(var d in o.ext.internal)d&&(this[d]=Nb(d));this.each(function(){var d={},d=1t<"F"ip>'),q.renderer)?h.isPlainObject(q.renderer)&&!q.renderer.header&&(q.renderer.header="jqueryui"):q.renderer="jqueryui":h.extend(i,o.ext.classes,d.oClasses);p.addClass(i.sTable);if(""!==q.oScroll.sX||""!==q.oScroll.sY)q.oScroll.iBarWidth=Hb();!0===q.oScroll.sX&& -(q.oScroll.sX="100%");q.iInitDisplayStart===k&&(q.iInitDisplayStart=d.iDisplayStart,q._iDisplayStart=d.iDisplayStart);null!==d.iDeferLoading&&(q.bDeferLoading=!0,g=h.isArray(d.iDeferLoading),q._iRecordsDisplay=g?d.iDeferLoading[0]:d.iDeferLoading,q._iRecordsTotal=g?d.iDeferLoading[1]:d.iDeferLoading);var t=q.oLanguage;h.extend(!0,t,d.oLanguage);""!==t.sUrl&&(h.ajax({dataType:"json",url:t.sUrl,success:function(a){O(a);H(l.oLanguage,a);h.extend(true,t,a);ga(q)},error:function(){ga(q)}}),m=!0);null=== -d.asStripeClasses&&(q.asStripeClasses=[i.sStripeOdd,i.sStripeEven]);var g=q.asStripeClasses,s=h("tbody tr",this).eq(0);-1!==h.inArray(!0,h.map(g,function(a){return s.hasClass(a)}))&&(h("tbody tr",this).removeClass(g.join(" ")),q.asDestroyStripes=g.slice());n=[];g=this.getElementsByTagName("thead");0!==g.length&&(da(q.aoHeader,g[0]),n=qa(q));if(null===d.aoColumns){r=[];g=0;for(j=n.length;g").appendTo(this));q.nTHead=j[0];j=p.children("tbody"); -0===j.length&&(j=h("").appendTo(this));q.nTBody=j[0];j=p.children("tfoot");if(0===j.length&&0").appendTo(this);0===j.length||0===j.children().length?p.addClass(i.sNoFooter):0a?new t(b[a],this[a]):null},filter:function(a){var b=[]; -if(v.filter)b=v.filter.call(this,a,this);else for(var c=0,e=this.length;c").addClass(b);h("td",c).addClass(b).html(a)[0].colSpan=aa(e);d.push(c[0])}};if(h.isArray(a)||a instanceof h)for(var g=0,j=a.length;g=0?b:g.length+b];if(typeof a==="function"){var d=Ca(c,f);return h.map(g,function(b,f){return a(f,Wb(c,f,0,0,d),i[f])?f:null})}var k=typeof a==="string"?a.match(dc):"";if(k)switch(k[2]){case "visIdx":case "visible":b=parseInt(k[1],10);if(b<0){var o=h.map(g,function(a,b){return a.bVisible?b:null});return[o[o.length+b]]}return[la(c,b)];case "name":return h.map(j,function(a,b){return a===k[1]?b:null})}else return h(i).filter(a).map(function(){return h.inArray(this, -i)}).toArray()})},1);c.selector.cols=a;c.selector.opts=b;return c});u("columns().header()","column().header()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].nTh},1)});u("columns().footer()","column().footer()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].nTf},1)});u("columns().data()","column().data()",function(){return this.iterator("column-rows",Wb,1)});u("columns().dataSrc()","column().dataSrc()",function(){return this.iterator("column", -function(a,b){return a.aoColumns[b].mData},1)});u("columns().cache()","column().cache()",function(a){return this.iterator("column-rows",function(b,c,e,d,f){return ia(b.aoData,f,"search"===a?"_aFilterData":"_aSortData",c)},1)});u("columns().nodes()","column().nodes()",function(){return this.iterator("column-rows",function(a,b,c,e,d){return ia(a.aoData,d,"anCells",b)},1)});u("columns().visible()","column().visible()",function(a,b){return this.iterator("column",function(c,e){if(a===k)return c.aoColumns[e].bVisible; -var d=c.aoColumns,f=d[e],g=c.aoData,j,i,m;if(a!==k&&f.bVisible!==a){if(a){var l=h.inArray(!0,D(d,"bVisible"),e+1);j=0;for(i=g.length;je;return!0};o.isDataTable=o.fnIsDataTable=function(a){var b=h(a).get(0),c=!1;h.each(o.settings, -function(a,d){if(d.nTable===b||h("table",d.nScrollHead)[0]===b||h("table",d.nScrollFoot)[0]===b)c=!0});return c};o.tables=o.fnTables=function(a){return h.map(o.settings,function(b){if(!a||a&&h(b.nTable).is(":visible"))return b.nTable})};o.util={throttle:ua,escapeRegex:va};o.camelToHungarian=H;r("$()",function(a,b){var c=this.rows(b).nodes(),c=h(c);return h([].concat(c.filter(a).toArray(),c.find(a).toArray()))});h.each(["on","one","off"],function(a,b){r(b+"()",function(){var a=Array.prototype.slice.call(arguments); -a[0].match(/\.dt\b/)||(a[0]+=".dt");var e=h(this.tables().nodes());e[b].apply(e,a);return this})});r("clear()",function(){return this.iterator("table",function(a){oa(a)})});r("settings()",function(){return new t(this.context,this.context)});r("data()",function(){return this.iterator("table",function(a){return D(a.aoData,"_aData")}).flatten()});r("destroy()",function(a){a=a||!1;return this.iterator("table",function(b){var c=b.nTableWrapper.parentNode,e=b.oClasses,d=b.nTable,f=b.nTBody,g=b.nTHead,j= -b.nTFoot,i=h(d),f=h(f),k=h(b.nTableWrapper),l=h.map(b.aoData,function(a){return a.nTr}),p;b.bDestroying=!0;w(b,"aoDestroyCallback","destroy",[b]);a||(new t(b)).columns().visible(!0);k.unbind(".DT").find(":not(tbody *)").unbind(".DT");h(Ea).unbind(".DT-"+b.sInstance);d!=g.parentNode&&(i.children("thead").detach(),i.append(g));j&&d!=j.parentNode&&(i.children("tfoot").detach(),i.append(j));i.detach();k.detach();b.aaSorting=[];b.aaSortingFixed=[];xa(b);h(l).removeClass(b.asStripeClasses.join(" "));h("th, td", -g).removeClass(e.sSortable+" "+e.sSortableAsc+" "+e.sSortableDesc+" "+e.sSortableNone);b.bJUI&&(h("th span."+e.sSortIcon+", td span."+e.sSortIcon,g).detach(),h("th, td",g).each(function(){var a=h("div."+e.sSortJUIWrapper,this);h(this).append(a.contents());a.detach()}));!a&&c&&c.insertBefore(d,b.nTableReinsertBefore);f.children().detach();f.append(l);i.css("width",b.sDestroyWidth).removeClass(e.sTable);(p=b.asDestroyStripes.length)&&f.children().each(function(a){h(this).addClass(b.asDestroyStripes[a% -p])});c=h.inArray(b,o.settings);-1!==c&&o.settings.splice(c,1)})});o.version="1.10.5";o.settings=[];o.models={};o.models.oSearch={bCaseInsensitive:!0,sSearch:"",bRegex:!1,bSmart:!0};o.models.oRow={nTr:null,anCells:null,_aData:[],_aSortData:null,_aFilterData:null,_sFilterRow:null,_sRowStripe:"",src:null};o.models.oColumn={idx:null,aDataSort:null,asSorting:null,bSearchable:null,bSortable:null,bVisible:null,_sManualType:null,_bAttrSrc:!1,fnCreatedCell:null,fnGetData:null,fnSetData:null,mData:null,mRender:null, -nTh:null,nTf:null,sClass:null,sContentPadding:null,sDefaultContent:null,sName:null,sSortDataType:"std",sSortingClass:null,sSortingClassJUI:null,sTitle:null,sType:null,sWidth:null,sWidthOrig:null};o.defaults={aaData:null,aaSorting:[[0,"asc"]],aaSortingFixed:[],ajax:null,aLengthMenu:[10,25,50,100],aoColumns:null,aoColumnDefs:null,aoSearchCols:[],asStripeClasses:null,bAutoWidth:!0,bDeferRender:!1,bDestroy:!1,bFilter:!0,bInfo:!0,bJQueryUI:!1,bLengthChange:!0,bPaginate:!0,bProcessing:!1,bRetrieve:!1,bScrollCollapse:!1, -bServerSide:!1,bSort:!0,bSortMulti:!0,bSortCellsTop:!1,bSortClasses:!0,bStateSave:!1,fnCreatedRow:null,fnDrawCallback:null,fnFooterCallback:null,fnFormatNumber:function(a){return a.toString().replace(/\B(?=(\d{3})+(?!\d))/g,this.oLanguage.sThousands)},fnHeaderCallback:null,fnInfoCallback:null,fnInitComplete:null,fnPreDrawCallback:null,fnRowCallback:null,fnServerData:null,fnServerParams:null,fnStateLoadCallback:function(a){try{return JSON.parse((-1===a.iStateDuration?sessionStorage:localStorage).getItem("DataTables_"+ -a.sInstance+"_"+location.pathname))}catch(b){}},fnStateLoadParams:null,fnStateLoaded:null,fnStateSaveCallback:function(a,b){try{(-1===a.iStateDuration?sessionStorage:localStorage).setItem("DataTables_"+a.sInstance+"_"+location.pathname,JSON.stringify(b))}catch(c){}},fnStateSaveParams:null,iStateDuration:7200,iDeferLoading:null,iDisplayLength:10,iDisplayStart:0,iTabIndex:0,oClasses:{},oLanguage:{oAria:{sSortAscending:": activate to sort column ascending",sSortDescending:": activate to sort column descending"}, -oPaginate:{sFirst:"First",sLast:"Last",sNext:"Next",sPrevious:"Previous"},sEmptyTable:"No data available in table",sInfo:"Showing _START_ to _END_ of _TOTAL_ entries",sInfoEmpty:"Showing 0 to 0 of 0 entries",sInfoFiltered:"(filtered from _MAX_ total entries)",sInfoPostFix:"",sDecimal:"",sThousands:",",sLengthMenu:"Show _MENU_ entries",sLoadingRecords:"Loading...",sProcessing:"Processing...",sSearch:"Search:",sSearchPlaceholder:"",sUrl:"",sZeroRecords:"No matching records found"},oSearch:h.extend({}, -o.models.oSearch),sAjaxDataProp:"data",sAjaxSource:null,sDom:"lfrtip",searchDelay:null,sPaginationType:"simple_numbers",sScrollX:"",sScrollXInner:"",sScrollY:"",sServerMethod:"GET",renderer:null};V(o.defaults);o.defaults.column={aDataSort:null,iDataSort:-1,asSorting:["asc","desc"],bSearchable:!0,bSortable:!0,bVisible:!0,fnCreatedCell:null,mData:null,mRender:null,sCellType:"td",sClass:"",sContentPadding:"",sDefaultContent:null,sName:"",sSortDataType:"std",sTitle:null,sType:null,sWidth:null};V(o.defaults.column); -o.models.oSettings={oFeatures:{bAutoWidth:null,bDeferRender:null,bFilter:null,bInfo:null,bLengthChange:null,bPaginate:null,bProcessing:null,bServerSide:null,bSort:null,bSortMulti:null,bSortClasses:null,bStateSave:null},oScroll:{bCollapse:null,iBarWidth:0,sX:null,sXInner:null,sY:null},oLanguage:{fnInfoCallback:null},oBrowser:{bScrollOversize:!1,bScrollbarLeft:!1},ajax:null,aanFeatures:[],aoData:[],aiDisplay:[],aiDisplayMaster:[],aoColumns:[],aoHeader:[],aoFooter:[],oPreviousSearch:{},aoPreSearchCols:[], -aaSorting:null,aaSortingFixed:[],asStripeClasses:null,asDestroyStripes:[],sDestroyWidth:0,aoRowCallback:[],aoHeaderCallback:[],aoFooterCallback:[],aoDrawCallback:[],aoRowCreatedCallback:[],aoPreDrawCallback:[],aoInitComplete:[],aoStateSaveParams:[],aoStateLoadParams:[],aoStateLoaded:[],sTableId:"",nTable:null,nTHead:null,nTFoot:null,nTBody:null,nTableWrapper:null,bDeferLoading:!1,bInitialised:!1,aoOpenRows:[],sDom:null,searchDelay:null,sPaginationType:"two_button",iStateDuration:0,aoStateSave:[], -aoStateLoad:[],oSavedState:null,oLoadedState:null,sAjaxSource:null,sAjaxDataProp:null,bAjaxDataGet:!0,jqXHR:null,json:k,oAjaxData:k,fnServerData:null,aoServerParams:[],sServerMethod:null,fnFormatNumber:null,aLengthMenu:null,iDraw:0,bDrawing:!1,iDrawError:-1,_iDisplayLength:10,_iDisplayStart:0,_iRecordsTotal:0,_iRecordsDisplay:0,bJUI:null,oClasses:{},bFiltered:!1,bSorted:!1,bSortCellsTop:null,oInit:null,aoDestroyCallback:[],fnRecordsTotal:function(){return"ssp"==B(this)?1*this._iRecordsTotal:this.aiDisplayMaster.length}, -fnRecordsDisplay:function(){return"ssp"==B(this)?1*this._iRecordsDisplay:this.aiDisplay.length},fnDisplayEnd:function(){var a=this._iDisplayLength,b=this._iDisplayStart,c=b+a,e=this.aiDisplay.length,d=this.oFeatures,f=d.bPaginate;return d.bServerSide?!1===f||-1===a?b+e:Math.min(b+a,this._iRecordsDisplay):!f||c>e||-1===a?e:c},oInstance:null,sInstance:null,iTabIndex:0,nScrollHead:null,nScrollFoot:null,aLastSort:[],oPlugins:{}};o.ext=x={buttons:{},classes:{},errMode:"alert",feature:[],search:[],internal:{}, -legacy:{ajax:null},pager:{},renderer:{pageButton:{},header:{}},order:{},type:{detect:[],search:{},order:{}},_unique:0,fnVersionCheck:o.fnVersionCheck,iApiIndex:0,oJUIClasses:{},sVersion:o.version};h.extend(x,{afnFiltering:x.search,aTypes:x.type.detect,ofnSearch:x.type.search,oSort:x.type.order,afnSortData:x.order,aoFeatures:x.feature,oApi:x.internal,oStdClasses:x.classes,oPagination:x.pager});h.extend(o.ext.classes,{sTable:"dataTable",sNoFooter:"no-footer",sPageButton:"paginate_button",sPageButtonActive:"current", -sPageButtonDisabled:"disabled",sStripeOdd:"odd",sStripeEven:"even",sRowEmpty:"dataTables_empty",sWrapper:"dataTables_wrapper",sFilter:"dataTables_filter",sInfo:"dataTables_info",sPaging:"dataTables_paginate paging_",sLength:"dataTables_length",sProcessing:"dataTables_processing",sSortAsc:"sorting_asc",sSortDesc:"sorting_desc",sSortable:"sorting",sSortableAsc:"sorting_asc_disabled",sSortableDesc:"sorting_desc_disabled",sSortableNone:"sorting_disabled",sSortColumn:"sorting_",sFilterInput:"",sLengthSelect:"", -sScrollWrapper:"dataTables_scroll",sScrollHead:"dataTables_scrollHead",sScrollHeadInner:"dataTables_scrollHeadInner",sScrollBody:"dataTables_scrollBody",sScrollFoot:"dataTables_scrollFoot",sScrollFootInner:"dataTables_scrollFootInner",sHeaderTH:"",sFooterTH:"",sSortJUIAsc:"",sSortJUIDesc:"",sSortJUI:"",sSortJUIAscAllowed:"",sSortJUIDescAllowed:"",sSortJUIWrapper:"",sSortIcon:"",sJUIHeader:"",sJUIFooter:""});var Da="",Da="",F=Da+"ui-state-default",ja=Da+"css_right ui-icon ui-icon-",Xb=Da+"fg-toolbar ui-toolbar ui-widget-header ui-helper-clearfix"; -h.extend(o.ext.oJUIClasses,o.ext.classes,{sPageButton:"fg-button ui-button "+F,sPageButtonActive:"ui-state-disabled",sPageButtonDisabled:"ui-state-disabled",sPaging:"dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi ui-buttonset-multi paging_",sSortAsc:F+" sorting_asc",sSortDesc:F+" sorting_desc",sSortable:F+" sorting",sSortableAsc:F+" sorting_asc_disabled",sSortableDesc:F+" sorting_desc_disabled",sSortableNone:F+" sorting_disabled",sSortJUIAsc:ja+"triangle-1-n",sSortJUIDesc:ja+"triangle-1-s", -sSortJUI:ja+"carat-2-n-s",sSortJUIAscAllowed:ja+"carat-1-n",sSortJUIDescAllowed:ja+"carat-1-s",sSortJUIWrapper:"DataTables_sort_wrapper",sSortIcon:"DataTables_sort_icon",sScrollHead:"dataTables_scrollHead "+F,sScrollFoot:"dataTables_scrollFoot "+F,sHeaderTH:F,sFooterTH:F,sJUIHeader:Xb+" ui-corner-tl ui-corner-tr",sJUIFooter:Xb+" ui-corner-bl ui-corner-br"});var Mb=o.ext.pager;h.extend(Mb,{simple:function(){return["previous","next"]},full:function(){return["first","previous","next","last"]},simple_numbers:function(a, -b){return["previous",Wa(a,b),"next"]},full_numbers:function(a,b){return["first","previous",Wa(a,b),"next","last"]},_numbers:Wa,numbers_length:7});h.extend(!0,o.ext.renderer,{pageButton:{_:function(a,b,c,e,d,f){var g=a.oClasses,j=a.oLanguage.oPaginate,i,k,l=0,o=function(b,e){var n,r,t,s,u=function(b){Ta(a,b.data.action,true)};n=0;for(r=e.length;n").appendTo(b);o(t,s)}else{k=i="";switch(s){case "ellipsis":b.append(""); -break;case "first":i=j.sFirst;k=s+(d>0?"":" "+g.sPageButtonDisabled);break;case "previous":i=j.sPrevious;k=s+(d>0?"":" "+g.sPageButtonDisabled);break;case "next":i=j.sNext;k=s+(d",{"class":g.sPageButton+" "+k,"aria-controls":a.sTableId,"data-dt-idx":l,tabindex:a.iTabIndex,id:c===0&&typeof s==="string"?a.sTableId+"_"+s:null}).html(i).appendTo(b); -Va(t,{action:s},u);l++}}}},n;try{n=h(P.activeElement).data("dt-idx")}catch(r){}o(h(b).empty(),e);n&&h(b).find("[data-dt-idx="+n+"]").focus()}}});h.extend(o.ext.type.detect,[function(a,b){var c=b.oLanguage.sDecimal;return Za(a,c)?"num"+c:null},function(a){if(a&&!(a instanceof Date)&&(!ac.test(a)||!bc.test(a)))return null;var b=Date.parse(a);return null!==b&&!isNaN(b)||I(a)?"date":null},function(a,b){var c=b.oLanguage.sDecimal;return Za(a,c,!0)?"num-fmt"+c:null},function(a,b){var c=b.oLanguage.sDecimal; -return Rb(a,c)?"html-num"+c:null},function(a,b){var c=b.oLanguage.sDecimal;return Rb(a,c,!0)?"html-num-fmt"+c:null},function(a){return I(a)||"string"===typeof a&&-1!==a.indexOf("<")?"html":null}]);h.extend(o.ext.type.search,{html:function(a){return I(a)?a:"string"===typeof a?a.replace(Ob," ").replace(Ba,""):""},string:function(a){return I(a)?a:"string"===typeof a?a.replace(Ob," "):a}});var Aa=function(a,b,c,e){if(0!==a&&(!a||"-"===a))return-Infinity;b&&(a=Qb(a,b));a.replace&&(c&&(a=a.replace(c,"")), -e&&(a=a.replace(e,"")));return 1*a};h.extend(x.type.order,{"date-pre":function(a){return Date.parse(a)||0},"html-pre":function(a){return I(a)?"":a.replace?a.replace(/<.*?>/g,"").toLowerCase():a+""},"string-pre":function(a){return I(a)?"":"string"===typeof a?a.toLowerCase():!a.toString?"":a.toString()},"string-asc":function(a,b){return ab?1:0},"string-desc":function(a,b){return ab?-1:0}});db("");h.extend(!0,o.ext.renderer,{header:{_:function(a,b,c,e){h(a.nTable).on("order.dt.DT",function(d, -f,g,h){if(a===f){d=c.idx;b.removeClass(c.sSortingClass+" "+e.sSortAsc+" "+e.sSortDesc).addClass(h[d]=="asc"?e.sSortAsc:h[d]=="desc"?e.sSortDesc:c.sSortingClass)}})},jqueryui:function(a,b,c,e){h("
      ").addClass(e.sSortJUIWrapper).append(b.contents()).append(h("").addClass(e.sSortIcon+" "+c.sSortingClassJUI)).appendTo(b);h(a.nTable).on("order.dt.DT",function(d,f,g,h){if(a===f){d=c.idx;b.removeClass(e.sSortAsc+" "+e.sSortDesc).addClass(h[d]=="asc"?e.sSortAsc:h[d]=="desc"?e.sSortDesc:c.sSortingClass); -b.find("span."+e.sSortIcon).removeClass(e.sSortJUIAsc+" "+e.sSortJUIDesc+" "+e.sSortJUI+" "+e.sSortJUIAscAllowed+" "+e.sSortJUIDescAllowed).addClass(h[d]=="asc"?e.sSortJUIAsc:h[d]=="desc"?e.sSortJUIDesc:c.sSortingClassJUI)}})}}});o.render={number:function(a,b,c,e){return{display:function(d){var f=0>d?"-":"",d=Math.abs(parseFloat(d)),g=parseInt(d,10),d=c?b+(d-g).toFixed(c).substring(2):"";return f+(e||"")+g.toString().replace(/\B(?=(\d{3})+(?!\d))/g,a)+d}}}};h.extend(o.ext.internal,{_fnExternApiFunc:Nb, -_fnBuildAjax:ra,_fnAjaxUpdate:kb,_fnAjaxParameters:tb,_fnAjaxUpdateDraw:ub,_fnAjaxDataSrc:sa,_fnAddColumn:Fa,_fnColumnOptions:ka,_fnAdjustColumnSizing:X,_fnVisibleToColumnIndex:la,_fnColumnIndexToVisible:$,_fnVisbleColumns:aa,_fnGetColumns:Z,_fnColumnTypes:Ha,_fnApplyColumnDefs:ib,_fnHungarianMap:V,_fnCamelToHungarian:H,_fnLanguageCompat:O,_fnBrowserDetect:gb,_fnAddData:J,_fnAddTr:ma,_fnNodeToDataIndex:function(a,b){return b._DT_RowIndex!==k?b._DT_RowIndex:null},_fnNodeToColumnIndex:function(a,b, -c){return h.inArray(c,a.aoData[b].anCells)},_fnGetCellData:y,_fnSetCellData:Ia,_fnSplitObjNotation:Ka,_fnGetObjectDataFn:W,_fnSetObjectDataFn:Q,_fnGetDataMaster:La,_fnClearTable:oa,_fnDeleteIndex:pa,_fnInvalidate:ca,_fnGetRowElements:na,_fnCreateTr:Ja,_fnBuildHead:jb,_fnDrawHead:ea,_fnDraw:M,_fnReDraw:N,_fnAddOptionsHtml:mb,_fnDetectHeader:da,_fnGetUniqueThs:qa,_fnFeatureHtmlFilter:ob,_fnFilterComplete:fa,_fnFilterCustom:xb,_fnFilterColumn:wb,_fnFilter:vb,_fnFilterCreateSearch:Qa,_fnEscapeRegex:va, -_fnFilterData:yb,_fnFeatureHtmlInfo:rb,_fnUpdateInfo:Bb,_fnInfoMacros:Cb,_fnInitialise:ga,_fnInitComplete:ta,_fnLengthChange:Ra,_fnFeatureHtmlLength:nb,_fnFeatureHtmlPaginate:sb,_fnPageChange:Ta,_fnFeatureHtmlProcessing:pb,_fnProcessingDisplay:C,_fnFeatureHtmlTable:qb,_fnScrollDraw:Y,_fnApplyToChildren:G,_fnCalculateColumnWidths:Ga,_fnThrottle:ua,_fnConvertToWidth:Db,_fnScrollingWidthAdjust:Fb,_fnGetWidestNode:Eb,_fnGetMaxLenString:Gb,_fnStringToCss:s,_fnScrollBarWidth:Hb,_fnSortFlatten:T,_fnSort:lb, -_fnSortAria:Jb,_fnSortListener:Ua,_fnSortAttachListener:Oa,_fnSortingClasses:xa,_fnSortData:Ib,_fnSaveState:ya,_fnLoadState:Kb,_fnSettingsFromNode:za,_fnLog:R,_fnMap:E,_fnBindAction:Va,_fnCallbackReg:z,_fnCallbackFire:w,_fnLengthOverflow:Sa,_fnRenderer:Pa,_fnDataSource:B,_fnRowAttributes:Ma,_fnCalculateEnd:function(){}});h.fn.dataTable=o;h.fn.dataTableSettings=o.settings;h.fn.dataTableExt=o.ext;h.fn.DataTable=function(a){return h(this).dataTable(a).api()};h.each(o,function(a,b){h.fn.DataTable[a]= -b});return h.fn.dataTable};"function"===typeof define&&define.amd?define("datatables",["jquery"],O):"object"===typeof exports?module.exports=O(require("jquery")):jQuery&&!jQuery.fn.dataTable&&O(jQuery)})(window,document); \ No newline at end of file diff --git a/intake/static/intake/scripts/treetable/jquery.treetable.js b/intake/static/intake/scripts/treetable/jquery.treetable.js deleted file mode 100644 index 5807986c..00000000 --- a/intake/static/intake/scripts/treetable/jquery.treetable.js +++ /dev/null @@ -1,650 +0,0 @@ -/* - * jQuery treetable Plugin 3.2.0 - * http://ludo.cubicphuse.nl/jquery-treetable - * - * Copyright 2013, Ludo van den Boom - * Dual licensed under the MIT or GPL Version 2 licenses. - */ -(function($) { - var Node, Tree, methods; - - Node = (function() { - function Node(row, tree, settings) { - var parentId; - - this.row = row; - this.tree = tree; - this.settings = settings; - - // TODO Ensure id/parentId is always a string (not int) - this.id = this.row.data(this.settings.nodeIdAttr); - - // TODO Move this to a setParentId function? - parentId = this.row.data(this.settings.parentIdAttr); - if (parentId != null && parentId !== "") { - this.parentId = parentId; - } - - this.treeCell = $(this.row.children(this.settings.columnElType)[this.settings.column]); - this.expander = $(this.settings.expanderTemplate); - this.indenter = $(this.settings.indenterTemplate); - this.children = []; - this.initialized = false; - this.treeCell.prepend(this.indenter); - } - - Node.prototype.addChild = function(child) { - return this.children.push(child); - }; - - Node.prototype.ancestors = function() { - var ancestors, node; - node = this; - ancestors = []; - while (node = node.parentNode()) { - ancestors.push(node); - } - return ancestors; - }; - - Node.prototype.collapse = function() { - if (this.collapsed()) { - return this; - } - - this.row.removeClass("expanded").addClass("collapsed"); - - this._hideChildren(); - this.expander.attr("title", this.settings.stringExpand); - - if (this.initialized && this.settings.onNodeCollapse != null) { - this.settings.onNodeCollapse.apply(this); - } - - return this; - }; - - Node.prototype.collapsed = function() { - return this.row.hasClass("collapsed"); - }; - - // TODO destroy: remove event handlers, expander, indenter, etc. - - Node.prototype.expand = function() { - if (this.expanded()) { - return this; - } - - this.row.removeClass("collapsed").addClass("expanded"); - - if (this.initialized && this.settings.onNodeExpand != null) { - this.settings.onNodeExpand.apply(this); - } - - if ($(this.row).is(":visible")) { - this._showChildren(); - } - - this.expander.attr("title", this.settings.stringCollapse); - - return this; - }; - - Node.prototype.expanded = function() { - return this.row.hasClass("expanded"); - }; - - Node.prototype.hide = function() { - this._hideChildren(); - this.row.hide(); - return this; - }; - - Node.prototype.isBranchNode = function() { - if(this.children.length > 0 || this.row.data(this.settings.branchAttr) === true) { - return true; - } else { - return false; - } - }; - - Node.prototype.updateBranchLeafClass = function(){ - this.row.removeClass('branch'); - this.row.removeClass('leaf'); - this.row.addClass(this.isBranchNode() ? 'branch' : 'leaf'); - }; - - Node.prototype.level = function() { - return this.ancestors().length; - }; - - Node.prototype.parentNode = function() { - if (this.parentId != null) { - return this.tree[this.parentId]; - } else { - return null; - } - }; - - Node.prototype.removeChild = function(child) { - var i = $.inArray(child, this.children); - return this.children.splice(i, 1) - }; - - Node.prototype.render = function() { - var handler, - settings = this.settings, - target; - - if (settings.expandable === true && this.isBranchNode()) { - handler = function(e) { - $(this).parents("table").treetable("node", $(this).parents("tr").data(settings.nodeIdAttr)).toggle(); - return e.preventDefault(); - }; - - this.indenter.html(this.expander); - target = settings.clickableNodeNames === true ? this.treeCell : this.expander; - - target.off("click.treetable").on("click.treetable", handler); - target.off("keydown.treetable").on("keydown.treetable", function(e) { - if (e.keyCode == 13) { - handler.apply(this, [e]); - } - }); - } - - this.indenter[0].style.paddingLeft = "" + (this.level() * settings.indent) + "px"; - - return this; - }; - - Node.prototype.reveal = function() { - if (this.parentId != null) { - this.parentNode().reveal(); - } - return this.expand(); - }; - - Node.prototype.setParent = function(node) { - if (this.parentId != null) { - this.tree[this.parentId].removeChild(this); - } - this.parentId = node.id; - this.row.data(this.settings.parentIdAttr, node.id); - return node.addChild(this); - }; - - Node.prototype.show = function() { - if (!this.initialized) { - this._initialize(); - } - this.row.show(); - if (this.expanded()) { - this._showChildren(); - } - return this; - }; - - Node.prototype.toggle = function() { - if (this.expanded()) { - this.collapse(); - } else { - this.expand(); - } - return this; - }; - - Node.prototype._hideChildren = function() { - var child, _i, _len, _ref, _results; - _ref = this.children; - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - child = _ref[_i]; - _results.push(child.hide()); - } - return _results; - }; - - Node.prototype._initialize = function() { - var settings = this.settings; - - this.render(); - - if (settings.expandable === true && settings.initialState === "collapsed") { - this.collapse(); - } else { - this.expand(); - } - - if (settings.onNodeInitialized != null) { - settings.onNodeInitialized.apply(this); - } - - return this.initialized = true; - }; - - Node.prototype._showChildren = function() { - var child, _i, _len, _ref, _results; - _ref = this.children; - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - child = _ref[_i]; - _results.push(child.show()); - } - return _results; - }; - - return Node; - })(); - - Tree = (function() { - function Tree(table, settings) { - this.table = table; - this.settings = settings; - this.tree = {}; - - // Cache the nodes and roots in simple arrays for quick access/iteration - this.nodes = []; - this.roots = []; - } - - Tree.prototype.collapseAll = function() { - var node, _i, _len, _ref, _results; - _ref = this.nodes; - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - node = _ref[_i]; - _results.push(node.collapse()); - } - return _results; - }; - - Tree.prototype.expandAll = function() { - var node, _i, _len, _ref, _results; - _ref = this.nodes; - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - node = _ref[_i]; - _results.push(node.expand()); - } - return _results; - }; - - Tree.prototype.findLastNode = function (node) { - if (node.children.length > 0) { - return this.findLastNode(node.children[node.children.length - 1]); - } else { - return node; - } - }; - - Tree.prototype.loadRows = function(rows) { - var node, row, i; - - if (rows != null) { - for (i = 0; i < rows.length; i++) { - row = $(rows[i]); - - if (row.data(this.settings.nodeIdAttr) != null) { - node = new Node(row, this.tree, this.settings); - this.nodes.push(node); - this.tree[node.id] = node; - - if (node.parentId != null && this.tree[node.parentId]) { - this.tree[node.parentId].addChild(node); - } else { - this.roots.push(node); - } - } - } - } - - for (i = 0; i < this.nodes.length; i++) { - node = this.nodes[i].updateBranchLeafClass(); - } - - return this; - }; - - Tree.prototype.move = function(node, destination) { - // Conditions: - // 1: +node+ should not be inserted as a child of +node+ itself. - // 2: +destination+ should not be the same as +node+'s current parent (this - // prevents +node+ from being moved to the same location where it already - // is). - // 3: +node+ should not be inserted in a location in a branch if this would - // result in +node+ being an ancestor of itself. - var nodeParent = node.parentNode(); - if (node !== destination && destination.id !== node.parentId && $.inArray(node, destination.ancestors()) === -1) { - node.setParent(destination); - this._moveRows(node, destination); - - // Re-render parentNode if this is its first child node, and therefore - // doesn't have the expander yet. - if (node.parentNode().children.length === 1) { - node.parentNode().render(); - } - } - - if(nodeParent){ - nodeParent.updateBranchLeafClass(); - } - if(node.parentNode()){ - node.parentNode().updateBranchLeafClass(); - } - node.updateBranchLeafClass(); - return this; - }; - - Tree.prototype.removeNode = function(node) { - // Recursively remove all descendants of +node+ - this.unloadBranch(node); - - // Remove node from DOM () - node.row.remove(); - - // Remove node from parent children list - if (node.parentId != null) { - node.parentNode().removeChild(node); - } - - // Clean up Tree object (so Node objects are GC-ed) - delete this.tree[node.id]; - this.nodes.splice($.inArray(node, this.nodes), 1); - - return this; - } - - Tree.prototype.render = function() { - var root, _i, _len, _ref; - _ref = this.roots; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - root = _ref[_i]; - - // Naming is confusing (show/render). I do not call render on node from - // here. - root.show(); - } - return this; - }; - - Tree.prototype.sortBranch = function(node, sortFun) { - // First sort internal array of children - node.children.sort(sortFun); - - // Next render rows in correct order on page - this._sortChildRows(node); - - return this; - }; - - Tree.prototype.unloadBranch = function(node) { - // Use a copy of the children array to not have other functions interfere - // with this function if they manipulate the children array - // (eg removeNode). - var children = node.children.slice(0), - i; - - for (i = 0; i < children.length; i++) { - this.removeNode(children[i]); - } - - // Reset node's collection of children - node.children = []; - - node.updateBranchLeafClass(); - - return this; - }; - - Tree.prototype._moveRows = function(node, destination) { - var children = node.children, i; - - node.row.insertAfter(destination.row); - node.render(); - - // Loop backwards through children to have them end up on UI in correct - // order (see #112) - for (i = children.length - 1; i >= 0; i--) { - this._moveRows(children[i], node); - } - }; - - // Special _moveRows case, move children to itself to force sorting - Tree.prototype._sortChildRows = function(parentNode) { - return this._moveRows(parentNode, parentNode); - }; - - return Tree; - })(); - - // jQuery Plugin - methods = { - init: function(options, force) { - var settings; - - settings = $.extend({ - branchAttr: "ttBranch", - clickableNodeNames: false, - column: 0, - columnElType: "td", // i.e. 'td', 'th' or 'td,th' - expandable: false, - expanderTemplate: " ", - indent: 19, - indenterTemplate: "", - initialState: "collapsed", - nodeIdAttr: "ttId", // maps to data-tt-id - parentIdAttr: "ttParentId", // maps to data-tt-parent-id - stringExpand: "Expand", - stringCollapse: "Collapse", - - // Events - onInitialized: null, - onNodeCollapse: null, - onNodeExpand: null, - onNodeInitialized: null - }, options); - - return this.each(function() { - var el = $(this), tree; - - if (force || el.data("treetable") === undefined) { - tree = new Tree(this, settings); - tree.loadRows(this.rows).render(); - - el.addClass("treetable").data("treetable", tree); - - if (settings.onInitialized != null) { - settings.onInitialized.apply(tree); - } - } - - return el; - }); - }, - - reInit: function(options){ - var settings = this.settings; - - return this.each(function() { - var el = $(this), tree; - - if (true) { - tree = new Tree(this, settings); - tree.loadRows(this.rows).render(); - - el.addClass("treetable").data("treetable", tree); - - if (true) { - settings.onInitialized.apply(tree); - } - } - - return el; - }); - }, - - destroy: function() { - return this.each(function() { - return $(this).removeData("treetable").removeClass("treetable"); - }); - }, - - collapseAll: function() { - this.data("treetable").collapseAll(); - return this; - }, - - collapseNode: function(id) { - var node = this.data("treetable").tree[id]; - - if (node) { - node.collapse(); - } else { - throw new Error("Unknown node '" + id + "'"); - } - - return this; - }, - - expandAll: function() { - this.data("treetable").expandAll(); - return this; - }, - - expandNode: function(id) { - var node = this.data("treetable").tree[id]; - - if (node) { - if (!node.initialized) { - node._initialize(); - } - - node.expand(); - } else { - throw new Error("Unknown node '" + id + "'"); - } - - return this; - }, - - loadBranch: function(node, rows) { - var settings = this.data("treetable").settings, - tree = this.data("treetable").tree; - - // TODO Switch to $.parseHTML - rows = $(rows); - - if (node == null) { // Inserting new root nodes - this.append(rows); - } else { - var lastNode = this.data("treetable").findLastNode(node); - rows.insertAfter(lastNode.row); - } - - this.data("treetable").loadRows(rows); - - // Make sure nodes are properly initialized - rows.filter("tr").each(function() { - tree[$(this).data(settings.nodeIdAttr)].show(); - }); - - if (node != null) { - // Re-render parent to ensure expander icon is shown (#79) - node.render().expand(); - } - - return this; - }, - - move: function(nodeId, destinationId) { - var destination, node; - - node = this.data("treetable").tree[nodeId]; - destination = this.data("treetable").tree[destinationId]; - this.data("treetable").move(node, destination); - - return this; - }, - - node: function(id) { - return this.data("treetable").tree[id]; - }, - - removeNode: function(id) { - var node = this.data("treetable").tree[id]; - - if (node) { - this.data("treetable").removeNode(node); - } else { - throw new Error("Unknown node '" + id + "'"); - } - - return this; - }, - - reveal: function(id) { - var node = this.data("treetable").tree[id]; - - if (node) { - node.reveal(); - } else { - throw new Error("Unknown node '" + id + "'"); - } - - return this; - }, - - sortBranch: function(node, columnOrFunction) { - var settings = this.data("treetable").settings, - prepValue, - sortFun; - - columnOrFunction = columnOrFunction || settings.column; - sortFun = columnOrFunction; - - if ($.isNumeric(columnOrFunction)) { - sortFun = function(a, b) { - var extractValue, valA, valB; - - extractValue = function(node) { - var val = node.row.find("td:eq(" + columnOrFunction + ")").text(); - // Ignore trailing/leading whitespace and use uppercase values for - // case insensitive ordering - return $.trim(val).toUpperCase(); - } - - valA = extractValue(a); - valB = extractValue(b); - - if (valA < valB) return -1; - if (valA > valB) return 1; - return 0; - }; - } - - this.data("treetable").sortBranch(node, sortFun); - return this; - }, - - unloadBranch: function(node) { - this.data("treetable").unloadBranch(node); - return this; - } - }; - - $.fn.treetable = function(method) { - if (methods[method]) { - return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); - } else if (typeof method === 'object' || !method) { - return methods.init.apply(this, arguments); - } else { - return $.error("Method " + method + " does not exist on jQuery.treetable"); - } - }; - - // Expose classes to world - this.TreeTable || (this.TreeTable = {}); - this.TreeTable.Node = Node; - this.TreeTable.Tree = Tree; -})(jQuery); diff --git a/intake/templates/intake/dataset_detail_view.html b/intake/templates/intake/dataset_detail_view.html deleted file mode 100644 index 33d9b36d..00000000 --- a/intake/templates/intake/dataset_detail_view.html +++ /dev/null @@ -1,104 +0,0 @@ -
      -

      Dataset

      - - - - - - - - - -
      Path{{ datasetPath | e }}
      Scanned by - {{ scannedByWhen.0 }} {{ scannedByWhen.1 }} -
      - - {% if datasetErrors or datasetWarnings %} -

      Errors and warnings

      - - - - - - - - - {% for item in datasetErrors %} - - - - - {% endfor %} - {% for item in datasetWarnings %} - - - - {% endfor %} - -
      Description
      {{ item }}
      {{ item }}
      - {% endif %} - - -

      Comments

      - - - - - - - - - - {% for item in datasetComments %} - - - - - - {% endfor %} - - - - -
      UserDateComment
      {{ item.name }}{{ item.time }}{{ item.comment }}
      -
      -
      - - - - -
      -
      -
      - - -

      File information

      - - - - - - - - - {% for node_id in path_nodes_ordered %} - {% if not (pathItems[node_id].parent_id=='' and node_id=='') %} - - - - - {% endif %} - {% endfor %} - -
      NameErrors and warnings
      {{ pathItems[node_id].name }} - {% if pathItems[node_id].errors %} - Error(s)
      - {{ pathItems[node_id].errors|join('
      ') }} - {% endif %} - {% if pathItems[node_id].warnings %} - Warning(s)
      - {{ pathItems[node_id].warnings|join('
      ') }} - {% endif %} -
      - -
      diff --git a/intake/templates/intake/intake.html b/intake/templates/intake/intake.html deleted file mode 100644 index cf0df18a..00000000 --- a/intake/templates/intake/intake.html +++ /dev/null @@ -1,311 +0,0 @@ -{% extends 'base.html' %} - -{% block title %}{{ super() }} - Intake{% endblock title %} - -{% block style %} - - - - - -{% endblock style %} - -{% block scripts %} - - - - - {% if permissions.manager %} - - {% else %} - - {% endif %} - - - - - - -{% endblock scripts %} - -{% block content %} - -{% if alertNr == 100 %} - - -{% else %} - - - - -
      -
      - -
      -
      - -
      -
      -
      - - -
      - {% if selectableScanFolders %} -
      - - -
      - {% endif %} - -
      - -
      - - {% if permissions.manager %} -
      - -
      -
      - -
      - - {% endif %} - - - - - -
      -
      - -
      -
      - {% if not permissions.manager %} - {% include 'intake/table_files_unrecognised.html' %} - {% endif %} - - - - {% if permissions.manager %} - - {% endif %} - - - - - - - - - - - - - - - - {% for data in dataSets %} - - - - {% if permissions.manager %} - - {% endif %} - - - - - - - - - - - - - {% endfor %} - -
      StatusDatePseudocodeExperiment typeWaveVersionNr. of filesNr. of errors/
      warnings
      Nr. of
      comments
      Created by
      - {{ data.datasetStatus | upper }} - - - -
      -
      {{ data.datasetCreateDateFormatted }}{{ data.pseudocode }}{{ data.experiment_type }}{{ data.wave }}{{ data.version }}{{ data.objects }} - {{ (data.datasetErrors + data.objectErrors) if (data.datasetErrors + data.objectErrors)>0 else '-' }} - / - {{ (data.datasetWarnings + data.objectWarnings) if (data.datasetWarnings + data.objectWarnings)>0 else '-' }} - - {{ data.datasetComments if data.datasetComments else '-' }} - - {{ data.datasetCreateName }} -
      - - {% if permissions.manager %} - {% include 'intake/table_files_unrecognised.html' %} - {% endif %} -
      -
      - - - -{% endif %} - -{% endblock content %} diff --git a/intake/templates/intake/reports.html b/intake/templates/intake/reports.html deleted file mode 100644 index eef2c8d0..00000000 --- a/intake/templates/intake/reports.html +++ /dev/null @@ -1,231 +0,0 @@ -{% extends 'base.html' %} - -{% block title %}{{ super() }} - Intake{% endblock title %} - -{% block style %} - -{% endblock style %} - -{% block scripts %} - -{% endblock scripts %} - -{% block content %} -{% if access_denied %} -
      -
      -
      - -
      - This area or study is not accessible for you. -
      -
      -
      - Please click here to go to an area that is accessible for you. -
      - Intake -
      -
      -
      -
      -
      - -{% else %} - - - -
      -
      -
      - - - -
      - -
      - Intake -
      -
      -
      - -
      -
      -

      Raw

      - {% set exists = [] %} - - - - - - - - - - {% set counter = 0 %} - {% for type in datasetTypeCounts %} - {% for wave in datasetTypeCounts[type] %} - {% for version in datasetTypeCounts[type][wave] %} - {% if version=='raw' %} - {% if exists.append(1) %}{% endif %} - - - - - - {% endif %} - {% endfor %} - {% endfor %} - {% endfor %} - - -
      TypeWaveCount
      {{ type }}{{ wave }}{{ datasetTypeCounts[type][wave][version] }}
      - {% if not exists %} - No data found. - {% endif %} - -
      -
      -

      Processed

      - {% set exists = [] %} - - - - - - - - - - - {% for type in datasetTypeCounts %} - {% for wave in datasetTypeCounts[type] %} - {% for version in datasetTypeCounts[type][wave] %} - {% if version!='raw' %} - {% if exists.append(1) %}{% endif %} - - - - - - - {% endif %} - {% endfor %} - {% endfor %} - {% endfor %} - -
      TypeVersionWaveCount
      {{ type }}{{ version }}{{ wave }}{{ datasetTypeCounts[type][wave][version] }}
      - {% if not exists %} - No data found. - {% endif %} -
      -
      -
      -
      -
      -

      Raw

      - - - {% for version in aggregatedInfo %} - {% if version == 'raw' %} - {% for descr in aggregatedInfo[version] %} - - - - - {% endfor %} - {% endif %} - {% endfor %} - -
      {{ title_translate[descr] }} - {% if descr in ['totalFileSize', 'totalFileSizeMonthGrowth'] %} - {{ aggregatedInfo[version][descr] | filesizeformat(false) }} - {% else %} - {{ aggregatedInfo[version][descr] }} - {% endif %} -
      -
      -
      -

      Processed

      - - - {% for version in aggregatedInfo %} - {% if version == 'notRaw' %} - {% for descr in aggregatedInfo[version] %} - - - - - {% endfor %} - {% endif %} - {% endfor %} - -
      {{ title_translate[descr] }} - {% if descr in ['totalFileSize', 'totalFileSizeMonthGrowth'] %} - {{ aggregatedInfo[version][descr] | filesizeformat(false) }} - {% else %} - {{ aggregatedInfo[version][descr] }} - {% endif %} -
      -
      -
      -

      Total

      - - - {% for version in aggregatedInfo %} - {% if version == 'total' %} - {% for descr in aggregatedInfo[version] %} - - - - - {% endfor %} - {% endif %} - {% endfor %} - -
      {{ title_translate[descr] }} - {% if descr in ['totalFileSize', 'totalFileSizeMonthGrowth'] %} - {{ aggregatedInfo[version][descr] | filesizeformat(false) }} - {% else %} - {{ aggregatedInfo[version][descr] }} - {% endif %} -
      -
      -
      -{% endif %} -{% endblock content %} diff --git a/intake/templates/intake/table_files_unrecognised.html b/intake/templates/intake/table_files_unrecognised.html deleted file mode 100644 index c624229f..00000000 --- a/intake/templates/intake/table_files_unrecognised.html +++ /dev/null @@ -1,41 +0,0 @@ -

      - Unrecognised {% if totalErrorCount %}({{ totalErrorCount }}) {% endif %} - and unscanned - {% if (totalFileCount - totalDatasetFiles - totalErrorCount) > 0 %} - ({{ totalFileCount - totalDatasetFiles - totalErrorCount }}) - {% else %} - (-) - {% endif %} - files -

      - - - - - - - - - - - - - - - - {% for row in dataErroneousFiles %} - - - - - - - - - - - {% endfor %} - -
      NameDatePseudocodeExperiment typeWaveVersionStatusCreated by
      {{ row.name }}
      {{ row.date }}{{ row.pseudocode }}{{ row.experiment_type }}{{ row.wave }}{{ row.version }}Unrecognised{{ row.creator }}
      diff --git a/package.json b/package.json index 8d7663a9..cb8dce15 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,6 @@ ], "ignore": [ "**/lib/", - "**/intake/", "**/metadata-form/", "metadata-form.js", "datarequest/static/**" diff --git a/setup.cfg b/setup.cfg index 8f4785f7..6db22464 100644 --- a/setup.cfg +++ b/setup.cfg @@ -4,7 +4,7 @@ import-order-style=smarkets strictness=short docstring_style=sphinx max-line-length=127 -application-import-names=admin,api,connman,errors,fileviewer,general,group_manager,monitor,research,search,open_search,stats,user,vault,deposit,intake,datarequest,util +application-import-names=admin,api,connman,errors,fileviewer,general,group_manager,monitor,research,search,open_search,stats,user,vault,deposit,datarequest,util exclude=venv [mypy] diff --git a/static/lib/jquery-migrate-3.4.1/jquery-migrate-3.4.1.js b/static/lib/jquery-migrate-3.4.1/jquery-migrate-3.4.1.js deleted file mode 100644 index 5ef505ed..00000000 --- a/static/lib/jquery-migrate-3.4.1/jquery-migrate-3.4.1.js +++ /dev/null @@ -1,1018 +0,0 @@ -/*! - * jQuery Migrate - v3.4.1 - 2023-02-23T15:31Z - * Copyright OpenJS Foundation and other contributors - */ -( function( factory ) { - "use strict"; - - if ( typeof define === "function" && define.amd ) { - - // AMD. Register as an anonymous module. - define( [ "jquery" ], function( jQuery ) { - return factory( jQuery, window ); - } ); - } else if ( typeof module === "object" && module.exports ) { - - // Node/CommonJS - // eslint-disable-next-line no-undef - module.exports = factory( require( "jquery" ), window ); - } else { - - // Browser globals - factory( jQuery, window ); - } -} )( function( jQuery, window ) { -"use strict"; - -jQuery.migrateVersion = "3.4.1"; - -// Returns 0 if v1 == v2, -1 if v1 < v2, 1 if v1 > v2 -function compareVersions( v1, v2 ) { - var i, - rVersionParts = /^(\d+)\.(\d+)\.(\d+)/, - v1p = rVersionParts.exec( v1 ) || [ ], - v2p = rVersionParts.exec( v2 ) || [ ]; - - for ( i = 1; i <= 3; i++ ) { - if ( +v1p[ i ] > +v2p[ i ] ) { - return 1; - } - if ( +v1p[ i ] < +v2p[ i ] ) { - return -1; - } - } - return 0; -} - -function jQueryVersionSince( version ) { - return compareVersions( jQuery.fn.jquery, version ) >= 0; -} - -// A map from disabled patch codes to `true`. This should really -// be a `Set` but those are unsupported in IE. -var disabledPatches = Object.create( null ); - -// Don't apply patches for specified codes. Helpful for code bases -// where some Migrate warnings have been addressed and it's desirable -// to avoid needless patches or false positives. -jQuery.migrateDisablePatches = function() { - var i; - for ( i = 0; i < arguments.length; i++ ) { - disabledPatches[ arguments[ i ] ] = true; - } -}; - -// Allow enabling patches disabled via `jQuery.migrateDisablePatches`. -// Helpful if you want to disable a patch only for some code that won't -// be updated soon to be able to focus on other warnings - and enable it -// immediately after such a call: -// ```js -// jQuery.migrateDisablePatches( "workaroundA" ); -// elem.pluginViolatingWarningA( "pluginMethod" ); -// jQuery.migrateEnablePatches( "workaroundA" ); -// ``` -jQuery.migrateEnablePatches = function() { - var i; - for ( i = 0; i < arguments.length; i++ ) { - delete disabledPatches[ arguments[ i ] ]; - } -}; - -jQuery.migrateIsPatchEnabled = function( patchCode ) { - return !disabledPatches[ patchCode ]; -}; - -( function() { - - // Support: IE9 only - // IE9 only creates console object when dev tools are first opened - // IE9 console is a host object, callable but doesn't have .apply() - if ( !window.console || !window.console.log ) { - return; - } - - // Need jQuery 3.x-4.x and no older Migrate loaded - if ( !jQuery || !jQueryVersionSince( "3.0.0" ) || - jQueryVersionSince( "5.0.0" ) ) { - window.console.log( "JQMIGRATE: jQuery 3.x-4.x REQUIRED" ); - } - if ( jQuery.migrateWarnings ) { - window.console.log( "JQMIGRATE: Migrate plugin loaded multiple times" ); - } - - // Show a message on the console so devs know we're active - window.console.log( "JQMIGRATE: Migrate is installed" + - ( jQuery.migrateMute ? "" : " with logging active" ) + - ", version " + jQuery.migrateVersion ); - -} )(); - -var warnedAbout = {}; - -// By default each warning is only reported once. -jQuery.migrateDeduplicateWarnings = true; - -// List of warnings already given; public read only -jQuery.migrateWarnings = []; - -// Set to false to disable traces that appear with warnings -if ( jQuery.migrateTrace === undefined ) { - jQuery.migrateTrace = true; -} - -// Forget any warnings we've already given; public -jQuery.migrateReset = function() { - warnedAbout = {}; - jQuery.migrateWarnings.length = 0; -}; - -function migrateWarn( code, msg ) { - var console = window.console; - if ( jQuery.migrateIsPatchEnabled( code ) && - ( !jQuery.migrateDeduplicateWarnings || !warnedAbout[ msg ] ) ) { - warnedAbout[ msg ] = true; - jQuery.migrateWarnings.push( msg + " [" + code + "]" ); - if ( console && console.warn && !jQuery.migrateMute ) { - console.warn( "JQMIGRATE: " + msg ); - if ( jQuery.migrateTrace && console.trace ) { - console.trace(); - } - } - } -} - -function migrateWarnProp( obj, prop, value, code, msg ) { - Object.defineProperty( obj, prop, { - configurable: true, - enumerable: true, - get: function() { - migrateWarn( code, msg ); - return value; - }, - set: function( newValue ) { - migrateWarn( code, msg ); - value = newValue; - } - } ); -} - -function migrateWarnFuncInternal( obj, prop, newFunc, code, msg ) { - var finalFunc, - origFunc = obj[ prop ]; - - obj[ prop ] = function() { - - // If `msg` not provided, do not warn; more sophisticated warnings - // logic is most likely embedded in `newFunc`, in that case here - // we just care about the logic choosing the proper implementation - // based on whether the patch is disabled or not. - if ( msg ) { - migrateWarn( code, msg ); - } - - // Since patches can be disabled & enabled dynamically, we - // need to decide which implementation to run on each invocation. - finalFunc = jQuery.migrateIsPatchEnabled( code ) ? - newFunc : - - // The function may not have existed originally so we need a fallback. - ( origFunc || jQuery.noop ); - - return finalFunc.apply( this, arguments ); - }; -} - -function migratePatchAndWarnFunc( obj, prop, newFunc, code, msg ) { - if ( !msg ) { - throw new Error( "No warning message provided" ); - } - return migrateWarnFuncInternal( obj, prop, newFunc, code, msg ); -} - -function migratePatchFunc( obj, prop, newFunc, code ) { - return migrateWarnFuncInternal( obj, prop, newFunc, code ); -} - -if ( window.document.compatMode === "BackCompat" ) { - - // jQuery has never supported or tested Quirks Mode - migrateWarn( "quirks", "jQuery is not compatible with Quirks Mode" ); -} - -var findProp, - class2type = {}, - oldInit = jQuery.fn.init, - oldFind = jQuery.find, - - rattrHashTest = /\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/, - rattrHashGlob = /\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/g, - - // Require that the "whitespace run" starts from a non-whitespace - // to avoid O(N^2) behavior when the engine would try matching "\s+$" at each space position. - rtrim = /^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g; - -migratePatchFunc( jQuery.fn, "init", function( arg1 ) { - var args = Array.prototype.slice.call( arguments ); - - if ( jQuery.migrateIsPatchEnabled( "selector-empty-id" ) && - typeof arg1 === "string" && arg1 === "#" ) { - - // JQuery( "#" ) is a bogus ID selector, but it returned an empty set - // before jQuery 3.0 - migrateWarn( "selector-empty-id", "jQuery( '#' ) is not a valid selector" ); - args[ 0 ] = []; - } - - return oldInit.apply( this, args ); -}, "selector-empty-id" ); - -// This is already done in Core but the above patch will lose this assignment -// so we need to redo it. It doesn't matter whether the patch is enabled or not -// as the method is always going to be a Migrate-created wrapper. -jQuery.fn.init.prototype = jQuery.fn; - -migratePatchFunc( jQuery, "find", function( selector ) { - var args = Array.prototype.slice.call( arguments ); - - // Support: PhantomJS 1.x - // String#match fails to match when used with a //g RegExp, only on some strings - if ( typeof selector === "string" && rattrHashTest.test( selector ) ) { - - // The nonstandard and undocumented unquoted-hash was removed in jQuery 1.12.0 - // First see if qS thinks it's a valid selector, if so avoid a false positive - try { - window.document.querySelector( selector ); - } catch ( err1 ) { - - // Didn't *look* valid to qSA, warn and try quoting what we think is the value - selector = selector.replace( rattrHashGlob, function( _, attr, op, value ) { - return "[" + attr + op + "\"" + value + "\"]"; - } ); - - // If the regexp *may* have created an invalid selector, don't update it - // Note that there may be false alarms if selector uses jQuery extensions - try { - window.document.querySelector( selector ); - migrateWarn( "selector-hash", - "Attribute selector with '#' must be quoted: " + args[ 0 ] ); - args[ 0 ] = selector; - } catch ( err2 ) { - migrateWarn( "selector-hash", - "Attribute selector with '#' was not fixed: " + args[ 0 ] ); - } - } - } - - return oldFind.apply( this, args ); -}, "selector-hash" ); - -// Copy properties attached to original jQuery.find method (e.g. .attr, .isXML) -for ( findProp in oldFind ) { - if ( Object.prototype.hasOwnProperty.call( oldFind, findProp ) ) { - jQuery.find[ findProp ] = oldFind[ findProp ]; - } -} - -// The number of elements contained in the matched element set -migratePatchAndWarnFunc( jQuery.fn, "size", function() { - return this.length; -}, "size", -"jQuery.fn.size() is deprecated and removed; use the .length property" ); - -migratePatchAndWarnFunc( jQuery, "parseJSON", function() { - return JSON.parse.apply( null, arguments ); -}, "parseJSON", -"jQuery.parseJSON is deprecated; use JSON.parse" ); - -migratePatchAndWarnFunc( jQuery, "holdReady", jQuery.holdReady, - "holdReady", "jQuery.holdReady is deprecated" ); - -migratePatchAndWarnFunc( jQuery, "unique", jQuery.uniqueSort, - "unique", "jQuery.unique is deprecated; use jQuery.uniqueSort" ); - -// Now jQuery.expr.pseudos is the standard incantation -migrateWarnProp( jQuery.expr, "filters", jQuery.expr.pseudos, "expr-pre-pseudos", - "jQuery.expr.filters is deprecated; use jQuery.expr.pseudos" ); -migrateWarnProp( jQuery.expr, ":", jQuery.expr.pseudos, "expr-pre-pseudos", - "jQuery.expr[':'] is deprecated; use jQuery.expr.pseudos" ); - -// Prior to jQuery 3.1.1 there were internal refs so we don't warn there -if ( jQueryVersionSince( "3.1.1" ) ) { - migratePatchAndWarnFunc( jQuery, "trim", function( text ) { - return text == null ? - "" : - ( text + "" ).replace( rtrim, "$1" ); - }, "trim", - "jQuery.trim is deprecated; use String.prototype.trim" ); -} - -// Prior to jQuery 3.2 there were internal refs so we don't warn there -if ( jQueryVersionSince( "3.2.0" ) ) { - migratePatchAndWarnFunc( jQuery, "nodeName", function( elem, name ) { - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); - }, "nodeName", - "jQuery.nodeName is deprecated" ); - - migratePatchAndWarnFunc( jQuery, "isArray", Array.isArray, "isArray", - "jQuery.isArray is deprecated; use Array.isArray" - ); -} - -if ( jQueryVersionSince( "3.3.0" ) ) { - - migratePatchAndWarnFunc( jQuery, "isNumeric", function( obj ) { - - // As of jQuery 3.0, isNumeric is limited to - // strings and numbers (primitives or objects) - // that can be coerced to finite numbers (gh-2662) - var type = typeof obj; - return ( type === "number" || type === "string" ) && - - // parseFloat NaNs numeric-cast false positives ("") - // ...but misinterprets leading-number strings, e.g. hex literals ("0x...") - // subtraction forces infinities to NaN - !isNaN( obj - parseFloat( obj ) ); - }, "isNumeric", - "jQuery.isNumeric() is deprecated" - ); - - // Populate the class2type map - jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol". - split( " " ), - function( _, name ) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); - } ); - - migratePatchAndWarnFunc( jQuery, "type", function( obj ) { - if ( obj == null ) { - return obj + ""; - } - - // Support: Android <=2.3 only (functionish RegExp) - return typeof obj === "object" || typeof obj === "function" ? - class2type[ Object.prototype.toString.call( obj ) ] || "object" : - typeof obj; - }, "type", - "jQuery.type is deprecated" ); - - migratePatchAndWarnFunc( jQuery, "isFunction", - function( obj ) { - return typeof obj === "function"; - }, "isFunction", - "jQuery.isFunction() is deprecated" ); - - migratePatchAndWarnFunc( jQuery, "isWindow", - function( obj ) { - return obj != null && obj === obj.window; - }, "isWindow", - "jQuery.isWindow() is deprecated" - ); -} - -// Support jQuery slim which excludes the ajax module -if ( jQuery.ajax ) { - -var oldAjax = jQuery.ajax, - rjsonp = /(=)\?(?=&|$)|\?\?/; - -migratePatchFunc( jQuery, "ajax", function() { - var jQXHR = oldAjax.apply( this, arguments ); - - // Be sure we got a jQXHR (e.g., not sync) - if ( jQXHR.promise ) { - migratePatchAndWarnFunc( jQXHR, "success", jQXHR.done, "jqXHR-methods", - "jQXHR.success is deprecated and removed" ); - migratePatchAndWarnFunc( jQXHR, "error", jQXHR.fail, "jqXHR-methods", - "jQXHR.error is deprecated and removed" ); - migratePatchAndWarnFunc( jQXHR, "complete", jQXHR.always, "jqXHR-methods", - "jQXHR.complete is deprecated and removed" ); - } - - return jQXHR; -}, "jqXHR-methods" ); - -// Only trigger the logic in jQuery <4 as the JSON-to-JSONP auto-promotion -// behavior is gone in jQuery 4.0 and as it has security implications, we don't -// want to restore the legacy behavior. -if ( !jQueryVersionSince( "4.0.0" ) ) { - - // Register this prefilter before the jQuery one. Otherwise, a promoted - // request is transformed into one with the script dataType and we can't - // catch it anymore. - jQuery.ajaxPrefilter( "+json", function( s ) { - - // Warn if JSON-to-JSONP auto-promotion happens. - if ( s.jsonp !== false && ( rjsonp.test( s.url ) || - typeof s.data === "string" && - ( s.contentType || "" ) - .indexOf( "application/x-www-form-urlencoded" ) === 0 && - rjsonp.test( s.data ) - ) ) { - migrateWarn( "jsonp-promotion", "JSON-to-JSONP auto-promotion is deprecated" ); - } - } ); -} - -} - -var oldRemoveAttr = jQuery.fn.removeAttr, - oldToggleClass = jQuery.fn.toggleClass, - rmatchNonSpace = /\S+/g; - -migratePatchFunc( jQuery.fn, "removeAttr", function( name ) { - var self = this, - patchNeeded = false; - - jQuery.each( name.match( rmatchNonSpace ), function( _i, attr ) { - if ( jQuery.expr.match.bool.test( attr ) ) { - - // Only warn if at least a single node had the property set to - // something else than `false`. Otherwise, this Migrate patch - // doesn't influence the behavior and there's no need to set or warn. - self.each( function() { - if ( jQuery( this ).prop( attr ) !== false ) { - patchNeeded = true; - return false; - } - } ); - } - - if ( patchNeeded ) { - migrateWarn( "removeAttr-bool", - "jQuery.fn.removeAttr no longer sets boolean properties: " + attr ); - self.prop( attr, false ); - } - } ); - - return oldRemoveAttr.apply( this, arguments ); -}, "removeAttr-bool" ); - -migratePatchFunc( jQuery.fn, "toggleClass", function( state ) { - - // Only deprecating no-args or single boolean arg - if ( state !== undefined && typeof state !== "boolean" ) { - - return oldToggleClass.apply( this, arguments ); - } - - migrateWarn( "toggleClass-bool", "jQuery.fn.toggleClass( boolean ) is deprecated" ); - - // Toggle entire class name of each element - return this.each( function() { - var className = this.getAttribute && this.getAttribute( "class" ) || ""; - - if ( className ) { - jQuery.data( this, "__className__", className ); - } - - // If the element has a class name or if we're passed `false`, - // then remove the whole classname (if there was one, the above saved it). - // Otherwise bring back whatever was previously saved (if anything), - // falling back to the empty string if nothing was stored. - if ( this.setAttribute ) { - this.setAttribute( "class", - className || state === false ? - "" : - jQuery.data( this, "__className__" ) || "" - ); - } - } ); -}, "toggleClass-bool" ); - -function camelCase( string ) { - return string.replace( /-([a-z])/g, function( _, letter ) { - return letter.toUpperCase(); - } ); -} - -var origFnCss, internalCssNumber, - internalSwapCall = false, - ralphaStart = /^[a-z]/, - - // The regex visualized: - // - // /----------\ - // | | /-------\ - // | / Top \ | | | - // /--- Border ---+-| Right |-+---+- Width -+---\ - // | | Bottom | | - // | \ Left / | - // | | - // | /----------\ | - // | /-------------\ | | |- END - // | | | | / Top \ | | - // | | / Margin \ | | | Right | | | - // |---------+-| |-+---+-| Bottom |-+----| - // | \ Padding / \ Left / | - // BEGIN -| | - // | /---------\ | - // | | | | - // | | / Min \ | / Width \ | - // \--------------+-| |-+---| |---/ - // \ Max / \ Height / - rautoPx = /^(?:Border(?:Top|Right|Bottom|Left)?(?:Width|)|(?:Margin|Padding)?(?:Top|Right|Bottom|Left)?|(?:Min|Max)?(?:Width|Height))$/; - -// If this version of jQuery has .swap(), don't false-alarm on internal uses -if ( jQuery.swap ) { - jQuery.each( [ "height", "width", "reliableMarginRight" ], function( _, name ) { - var oldHook = jQuery.cssHooks[ name ] && jQuery.cssHooks[ name ].get; - - if ( oldHook ) { - jQuery.cssHooks[ name ].get = function() { - var ret; - - internalSwapCall = true; - ret = oldHook.apply( this, arguments ); - internalSwapCall = false; - return ret; - }; - } - } ); -} - -migratePatchFunc( jQuery, "swap", function( elem, options, callback, args ) { - var ret, name, - old = {}; - - if ( !internalSwapCall ) { - migrateWarn( "swap", "jQuery.swap() is undocumented and deprecated" ); - } - - // Remember the old values, and insert the new ones - for ( name in options ) { - old[ name ] = elem.style[ name ]; - elem.style[ name ] = options[ name ]; - } - - ret = callback.apply( elem, args || [] ); - - // Revert the old values - for ( name in options ) { - elem.style[ name ] = old[ name ]; - } - - return ret; -}, "swap" ); - -if ( jQueryVersionSince( "3.4.0" ) && typeof Proxy !== "undefined" ) { - jQuery.cssProps = new Proxy( jQuery.cssProps || {}, { - set: function() { - migrateWarn( "cssProps", "jQuery.cssProps is deprecated" ); - return Reflect.set.apply( this, arguments ); - } - } ); -} - -// In jQuery >=4 where jQuery.cssNumber is missing fill it with the latest 3.x version: -// https://github.com/jquery/jquery/blob/3.6.0/src/css.js#L212-L233 -// This way, number values for the CSS properties below won't start triggering -// Migrate warnings when jQuery gets updated to >=4.0.0 (gh-438). -if ( jQueryVersionSince( "4.0.0" ) ) { - - // We need to keep this as a local variable as we need it internally - // in a `jQuery.fn.css` patch and this usage shouldn't warn. - internalCssNumber = { - animationIterationCount: true, - columnCount: true, - fillOpacity: true, - flexGrow: true, - flexShrink: true, - fontWeight: true, - gridArea: true, - gridColumn: true, - gridColumnEnd: true, - gridColumnStart: true, - gridRow: true, - gridRowEnd: true, - gridRowStart: true, - lineHeight: true, - opacity: true, - order: true, - orphans: true, - widows: true, - zIndex: true, - zoom: true - }; - - if ( typeof Proxy !== "undefined" ) { - jQuery.cssNumber = new Proxy( internalCssNumber, { - get: function() { - migrateWarn( "css-number", "jQuery.cssNumber is deprecated" ); - return Reflect.get.apply( this, arguments ); - }, - set: function() { - migrateWarn( "css-number", "jQuery.cssNumber is deprecated" ); - return Reflect.set.apply( this, arguments ); - } - } ); - } else { - - // Support: IE 9-11+ - // IE doesn't support proxies, but we still want to restore the legacy - // jQuery.cssNumber there. - jQuery.cssNumber = internalCssNumber; - } -} else { - - // Make `internalCssNumber` defined for jQuery <4 as well as it's needed - // in the `jQuery.fn.css` patch below. - internalCssNumber = jQuery.cssNumber; -} - -function isAutoPx( prop ) { - - // The first test is used to ensure that: - // 1. The prop starts with a lowercase letter (as we uppercase it for the second regex). - // 2. The prop is not empty. - return ralphaStart.test( prop ) && - rautoPx.test( prop[ 0 ].toUpperCase() + prop.slice( 1 ) ); -} - -origFnCss = jQuery.fn.css; - -migratePatchFunc( jQuery.fn, "css", function( name, value ) { - var camelName, - origThis = this; - - if ( name && typeof name === "object" && !Array.isArray( name ) ) { - jQuery.each( name, function( n, v ) { - jQuery.fn.css.call( origThis, n, v ); - } ); - return this; - } - - if ( typeof value === "number" ) { - camelName = camelCase( name ); - - // Use `internalCssNumber` to avoid triggering our warnings in this - // internal check. - if ( !isAutoPx( camelName ) && !internalCssNumber[ camelName ] ) { - migrateWarn( "css-number", - "Number-typed values are deprecated for jQuery.fn.css( \"" + - name + "\", value )" ); - } - } - - return origFnCss.apply( this, arguments ); -}, "css-number" ); - -var origData = jQuery.data; - -migratePatchFunc( jQuery, "data", function( elem, name, value ) { - var curData, sameKeys, key; - - // Name can be an object, and each entry in the object is meant to be set as data - if ( name && typeof name === "object" && arguments.length === 2 ) { - - curData = jQuery.hasData( elem ) && origData.call( this, elem ); - sameKeys = {}; - for ( key in name ) { - if ( key !== camelCase( key ) ) { - migrateWarn( "data-camelCase", - "jQuery.data() always sets/gets camelCased names: " + key ); - curData[ key ] = name[ key ]; - } else { - sameKeys[ key ] = name[ key ]; - } - } - - origData.call( this, elem, sameKeys ); - - return name; - } - - // If the name is transformed, look for the un-transformed name in the data object - if ( name && typeof name === "string" && name !== camelCase( name ) ) { - - curData = jQuery.hasData( elem ) && origData.call( this, elem ); - if ( curData && name in curData ) { - migrateWarn( "data-camelCase", - "jQuery.data() always sets/gets camelCased names: " + name ); - if ( arguments.length > 2 ) { - curData[ name ] = value; - } - return curData[ name ]; - } - } - - return origData.apply( this, arguments ); -}, "data-camelCase" ); - -// Support jQuery slim which excludes the effects module -if ( jQuery.fx ) { - -var intervalValue, intervalMsg, - oldTweenRun = jQuery.Tween.prototype.run, - linearEasing = function( pct ) { - return pct; - }; - -migratePatchFunc( jQuery.Tween.prototype, "run", function( ) { - if ( jQuery.easing[ this.easing ].length > 1 ) { - migrateWarn( - "easing-one-arg", - "'jQuery.easing." + this.easing.toString() + "' should use only one argument" - ); - - jQuery.easing[ this.easing ] = linearEasing; - } - - oldTweenRun.apply( this, arguments ); -}, "easing-one-arg" ); - -intervalValue = jQuery.fx.interval; -intervalMsg = "jQuery.fx.interval is deprecated"; - -// Support: IE9, Android <=4.4 -// Avoid false positives on browsers that lack rAF -// Don't warn if document is hidden, jQuery uses setTimeout (#292) -if ( window.requestAnimationFrame ) { - Object.defineProperty( jQuery.fx, "interval", { - configurable: true, - enumerable: true, - get: function() { - if ( !window.document.hidden ) { - migrateWarn( "fx-interval", intervalMsg ); - } - - // Only fallback to the default if patch is enabled - if ( !jQuery.migrateIsPatchEnabled( "fx-interval" ) ) { - return intervalValue; - } - return intervalValue === undefined ? 13 : intervalValue; - }, - set: function( newValue ) { - migrateWarn( "fx-interval", intervalMsg ); - intervalValue = newValue; - } - } ); -} - -} - -var oldLoad = jQuery.fn.load, - oldEventAdd = jQuery.event.add, - originalFix = jQuery.event.fix; - -jQuery.event.props = []; -jQuery.event.fixHooks = {}; - -migrateWarnProp( jQuery.event.props, "concat", jQuery.event.props.concat, - "event-old-patch", - "jQuery.event.props.concat() is deprecated and removed" ); - -migratePatchFunc( jQuery.event, "fix", function( originalEvent ) { - var event, - type = originalEvent.type, - fixHook = this.fixHooks[ type ], - props = jQuery.event.props; - - if ( props.length ) { - migrateWarn( "event-old-patch", - "jQuery.event.props are deprecated and removed: " + props.join() ); - while ( props.length ) { - jQuery.event.addProp( props.pop() ); - } - } - - if ( fixHook && !fixHook._migrated_ ) { - fixHook._migrated_ = true; - migrateWarn( "event-old-patch", - "jQuery.event.fixHooks are deprecated and removed: " + type ); - if ( ( props = fixHook.props ) && props.length ) { - while ( props.length ) { - jQuery.event.addProp( props.pop() ); - } - } - } - - event = originalFix.call( this, originalEvent ); - - return fixHook && fixHook.filter ? - fixHook.filter( event, originalEvent ) : - event; -}, "event-old-patch" ); - -migratePatchFunc( jQuery.event, "add", function( elem, types ) { - - // This misses the multiple-types case but that seems awfully rare - if ( elem === window && types === "load" && window.document.readyState === "complete" ) { - migrateWarn( "load-after-event", - "jQuery(window).on('load'...) called after load event occurred" ); - } - return oldEventAdd.apply( this, arguments ); -}, "load-after-event" ); - -jQuery.each( [ "load", "unload", "error" ], function( _, name ) { - - migratePatchFunc( jQuery.fn, name, function() { - var args = Array.prototype.slice.call( arguments, 0 ); - - // If this is an ajax load() the first arg should be the string URL; - // technically this could also be the "Anything" arg of the event .load() - // which just goes to show why this dumb signature has been deprecated! - // jQuery custom builds that exclude the Ajax module justifiably die here. - if ( name === "load" && typeof args[ 0 ] === "string" ) { - return oldLoad.apply( this, args ); - } - - migrateWarn( "shorthand-removed-v3", - "jQuery.fn." + name + "() is deprecated" ); - - args.splice( 0, 0, name ); - if ( arguments.length ) { - return this.on.apply( this, args ); - } - - // Use .triggerHandler here because: - // - load and unload events don't need to bubble, only applied to window or image - // - error event should not bubble to window, although it does pre-1.7 - // See http://bugs.jquery.com/ticket/11820 - this.triggerHandler.apply( this, args ); - return this; - }, "shorthand-removed-v3" ); - -} ); - -jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " + - "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + - "change select submit keydown keypress keyup contextmenu" ).split( " " ), - function( _i, name ) { - - // Handle event binding - migratePatchAndWarnFunc( jQuery.fn, name, function( data, fn ) { - return arguments.length > 0 ? - this.on( name, null, data, fn ) : - this.trigger( name ); - }, - "shorthand-deprecated-v3", - "jQuery.fn." + name + "() event shorthand is deprecated" ); -} ); - -// Trigger "ready" event only once, on document ready -jQuery( function() { - jQuery( window.document ).triggerHandler( "ready" ); -} ); - -jQuery.event.special.ready = { - setup: function() { - if ( this === window.document ) { - migrateWarn( "ready-event", "'ready' event is deprecated" ); - } - } -}; - -migratePatchAndWarnFunc( jQuery.fn, "bind", function( types, data, fn ) { - return this.on( types, null, data, fn ); -}, "pre-on-methods", "jQuery.fn.bind() is deprecated" ); -migratePatchAndWarnFunc( jQuery.fn, "unbind", function( types, fn ) { - return this.off( types, null, fn ); -}, "pre-on-methods", "jQuery.fn.unbind() is deprecated" ); -migratePatchAndWarnFunc( jQuery.fn, "delegate", function( selector, types, data, fn ) { - return this.on( types, selector, data, fn ); -}, "pre-on-methods", "jQuery.fn.delegate() is deprecated" ); -migratePatchAndWarnFunc( jQuery.fn, "undelegate", function( selector, types, fn ) { - return arguments.length === 1 ? - this.off( selector, "**" ) : - this.off( types, selector || "**", fn ); -}, "pre-on-methods", "jQuery.fn.undelegate() is deprecated" ); -migratePatchAndWarnFunc( jQuery.fn, "hover", function( fnOver, fnOut ) { - return this.on( "mouseenter", fnOver ).on( "mouseleave", fnOut || fnOver ); -}, "pre-on-methods", "jQuery.fn.hover() is deprecated" ); - -var rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi, - makeMarkup = function( html ) { - var doc = window.document.implementation.createHTMLDocument( "" ); - doc.body.innerHTML = html; - return doc.body && doc.body.innerHTML; - }, - warnIfChanged = function( html ) { - var changed = html.replace( rxhtmlTag, "<$1>" ); - if ( changed !== html && makeMarkup( html ) !== makeMarkup( changed ) ) { - migrateWarn( "self-closed-tags", - "HTML tags must be properly nested and closed: " + html ); - } - }; - -/** - * Deprecated, please use `jQuery.migrateDisablePatches( "self-closed-tags" )` instead. - * @deprecated - */ -jQuery.UNSAFE_restoreLegacyHtmlPrefilter = function() { - jQuery.migrateEnablePatches( "self-closed-tags" ); -}; - -migratePatchFunc( jQuery, "htmlPrefilter", function( html ) { - warnIfChanged( html ); - return html.replace( rxhtmlTag, "<$1>" ); -}, "self-closed-tags" ); - -// This patch needs to be disabled by default as it re-introduces -// security issues (CVE-2020-11022, CVE-2020-11023). -jQuery.migrateDisablePatches( "self-closed-tags" ); - -var origOffset = jQuery.fn.offset; - -migratePatchFunc( jQuery.fn, "offset", function() { - var elem = this[ 0 ]; - - if ( elem && ( !elem.nodeType || !elem.getBoundingClientRect ) ) { - migrateWarn( "offset-valid-elem", "jQuery.fn.offset() requires a valid DOM element" ); - return arguments.length ? this : undefined; - } - - return origOffset.apply( this, arguments ); -}, "offset-valid-elem" ); - -// Support jQuery slim which excludes the ajax module -// The jQuery.param patch is about respecting `jQuery.ajaxSettings.traditional` -// so it doesn't make sense for the slim build. -if ( jQuery.ajax ) { - -var origParam = jQuery.param; - -migratePatchFunc( jQuery, "param", function( data, traditional ) { - var ajaxTraditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional; - - if ( traditional === undefined && ajaxTraditional ) { - - migrateWarn( "param-ajax-traditional", - "jQuery.param() no longer uses jQuery.ajaxSettings.traditional" ); - traditional = ajaxTraditional; - } - - return origParam.call( this, data, traditional ); -}, "param-ajax-traditional" ); - -} - -migratePatchAndWarnFunc( jQuery.fn, "andSelf", jQuery.fn.addBack, "andSelf", - "jQuery.fn.andSelf() is deprecated and removed, use jQuery.fn.addBack()" ); - -// Support jQuery slim which excludes the deferred module in jQuery 4.0+ -if ( jQuery.Deferred ) { - -var oldDeferred = jQuery.Deferred, - tuples = [ - - // Action, add listener, callbacks, .then handlers, final state - [ "resolve", "done", jQuery.Callbacks( "once memory" ), - jQuery.Callbacks( "once memory" ), "resolved" ], - [ "reject", "fail", jQuery.Callbacks( "once memory" ), - jQuery.Callbacks( "once memory" ), "rejected" ], - [ "notify", "progress", jQuery.Callbacks( "memory" ), - jQuery.Callbacks( "memory" ) ] - ]; - -migratePatchFunc( jQuery, "Deferred", function( func ) { - var deferred = oldDeferred(), - promise = deferred.promise(); - - function newDeferredPipe( /* fnDone, fnFail, fnProgress */ ) { - var fns = arguments; - - return jQuery.Deferred( function( newDefer ) { - jQuery.each( tuples, function( i, tuple ) { - var fn = typeof fns[ i ] === "function" && fns[ i ]; - - // Deferred.done(function() { bind to newDefer or newDefer.resolve }) - // deferred.fail(function() { bind to newDefer or newDefer.reject }) - // deferred.progress(function() { bind to newDefer or newDefer.notify }) - deferred[ tuple[ 1 ] ]( function() { - var returned = fn && fn.apply( this, arguments ); - if ( returned && typeof returned.promise === "function" ) { - returned.promise() - .done( newDefer.resolve ) - .fail( newDefer.reject ) - .progress( newDefer.notify ); - } else { - newDefer[ tuple[ 0 ] + "With" ]( - this === promise ? newDefer.promise() : this, - fn ? [ returned ] : arguments - ); - } - } ); - } ); - fns = null; - } ).promise(); - } - - migratePatchAndWarnFunc( deferred, "pipe", newDeferredPipe, "deferred-pipe", - "deferred.pipe() is deprecated" ); - migratePatchAndWarnFunc( promise, "pipe", newDeferredPipe, "deferred-pipe", - "deferred.pipe() is deprecated" ); - - if ( func ) { - func.call( deferred, deferred ); - } - - return deferred; -}, "deferred-pipe" ); - -// Preserve handler of uncaught exceptions in promise chains -jQuery.Deferred.exceptionHook = oldDeferred.exceptionHook; - -} - -return jQuery; -} ); diff --git a/static/lib/jquery-migrate-3.4.1/jquery-migrate-3.4.1.min.js b/static/lib/jquery-migrate-3.4.1/jquery-migrate-3.4.1.min.js deleted file mode 100644 index 29a4939d..00000000 --- a/static/lib/jquery-migrate-3.4.1/jquery-migrate-3.4.1.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery Migrate v3.4.1 | (c) OpenJS Foundation and other contributors | jquery.org/license */ -"undefined"==typeof jQuery.migrateMute&&(jQuery.migrateMute=!0),function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery"],function(e){return t(e,window)}):"object"==typeof module&&module.exports?module.exports=t(require("jquery"),window):t(jQuery,window)}(function(s,n){"use strict";function e(e){return 0<=function(e,t){for(var r=/^(\d+)\.(\d+)\.(\d+)/,n=r.exec(e)||[],o=r.exec(t)||[],a=1;a<=3;a++){if(+o[a]<+n[a])return 1;if(+n[a]<+o[a])return-1}return 0}(s.fn.jquery,e)}s.migrateVersion="3.4.1";var t=Object.create(null);s.migrateDisablePatches=function(){for(var e=0;e\x20\t\r\n\f]*)[^>]*)\/>/gi;s.UNSAFE_restoreLegacyHtmlPrefilter=function(){s.migrateEnablePatches("self-closed-tags")},i(s,"htmlPrefilter",function(e){var t,r;return(r=(t=e).replace(F,"<$1>"))!==t&&T(t)!==T(r)&&u("self-closed-tags","HTML tags must be properly nested and closed: "+t),e.replace(F,"<$1>")},"self-closed-tags"),s.migrateDisablePatches("self-closed-tags");var D,W,_,I=s.fn.offset;return i(s.fn,"offset",function(){var e=this[0];return!e||e.nodeType&&e.getBoundingClientRect?I.apply(this,arguments):(u("offset-valid-elem","jQuery.fn.offset() requires a valid DOM element"),arguments.length?this:void 0)},"offset-valid-elem"),s.ajax&&(D=s.param,i(s,"param",function(e,t){var r=s.ajaxSettings&&s.ajaxSettings.traditional;return void 0===t&&r&&(u("param-ajax-traditional","jQuery.param() no longer uses jQuery.ajaxSettings.traditional"),t=r),D.call(this,e,t)},"param-ajax-traditional")),c(s.fn,"andSelf",s.fn.addBack,"andSelf","jQuery.fn.andSelf() is deprecated and removed, use jQuery.fn.addBack()"),s.Deferred&&(W=s.Deferred,_=[["resolve","done",s.Callbacks("once memory"),s.Callbacks("once memory"),"resolved"],["reject","fail",s.Callbacks("once memory"),s.Callbacks("once memory"),"rejected"],["notify","progress",s.Callbacks("memory"),s.Callbacks("memory")]],i(s,"Deferred",function(e){var a=W(),i=a.promise();function t(){var o=arguments;return s.Deferred(function(n){s.each(_,function(e,t){var r="function"==typeof o[e]&&o[e];a[t[1]](function(){var e=r&&r.apply(this,arguments);e&&"function"==typeof e.promise?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[t[0]+"With"](this===i?n.promise():this,r?[e]:arguments)})}),o=null}).promise()}return c(a,"pipe",t,"deferred-pipe","deferred.pipe() is deprecated"),c(i,"pipe",t,"deferred-pipe","deferred.pipe() is deprecated"),e&&e.call(a,a),a},"deferred-pipe"),s.Deferred.exceptionHook=W.exceptionHook),s}); diff --git a/user/user.py b/user/user.py index 5036a66a..172cada3 100644 --- a/user/user.py +++ b/user/user.py @@ -436,9 +436,6 @@ def irods_login(username: str, password: str) -> None: **app.config.get('IRODS_SESSION_OPTIONS') ) - if app.config.get('INTAKE_ENABLED'): - irods.connection_timeout = app.config.get('INTAKE_EXT_TIMEOUT', 120) - # This implicitly creates connections, and raises an exception on failure _ = irods.server_version