Path: blob/main/website/GAUSS/js/jquery.inputfile.js
2941 views
/*jslint browser:true */1/*global jQuery */23(function ($) {45"use strict";67var methods = {},8BASE_CLASS = 'inputfile',9BUTTON_CLASS = 'upload-button',10PREVIOUS_CLASS = 'previous-file',11DELETED_CLASS = 'deleted',12LINK_CLASS = 'upload-button-link',13REMOVE_CLASS = 'upload-button-remove';1415function selectFile(evt) {1617var $input = $(evt.currentTarget),18$base = $input.parents('.' + BASE_CLASS),19$div = $base.find('.' + PREVIOUS_CLASS),20$link = $div.find('a'),21$checkbox = $base.find('input[type="checkbox"]');2223$div.show();2425$checkbox.attr('disabled', 'disabled');26$div.removeClass(DELETED_CLASS);2728$link.attr('href', '#');29//$link.html($input.val());30$link.html($input.val().split('C:\\fakepath\\')[1]);31$link.on('click', function () { return false; });32}3334function removeSelectedFile(evt) {35var $button = $(evt.currentTarget),36$base = $button.parents('.' + BASE_CLASS),37$file = $base.find('input[type="file"]'),38$parent = $button.parent(),39$link = $parent.find('a'),40$checkbox = $base.find('input[type="checkbox"]');4142if ($file.attr('data-value')) {43if ($parent.hasClass(DELETED_CLASS)) {44$checkbox.removeAttr('checked');45$checkbox.attr('disabled', 'disabled');4647$parent.removeClass(DELETED_CLASS);48} else {4950if ($link.attr('href') !== $file.attr('data-value')) {51$link.attr('href', $file.attr('data-value'));52$link.html($file.attr('data-text'));53} else {54$checkbox.attr('checked', 'checked');55$checkbox.removeAttr('disabled');5657$parent.addClass(DELETED_CLASS);58}59}6061} else {62$parent.hide();63$parent.addClass(DELETED_CLASS);6465$checkbox.removeAttr('disabled', 'disabled');66$link.html('');67$file.replaceWith($file.clone(true));68}6970return false;71}7273function init(params) {7475this.each(function () {7677var $self = $(this),78fileUrl = $self.data('value'),79fileText = $self.data('text'),80config = $.extend({}, $self.inputfile.config, params),81$button,82$base,83$previous,84$link,85$remove,86removeName,87$checkbox,88$fileButton;8990// Set the html91$self.wrap('<div class="' + BASE_CLASS + '"><div class="' + BUTTON_CLASS + '"></div></div>');9293$button = $self.parent();94$base = $button.parent();9596$previous = $('<div class="' + PREVIOUS_CLASS + '"></div>').prependTo($base);97$link = $('<a href="#" class="' + LINK_CLASS + '" target="_blank"></a>').appendTo($previous);9899if (!params.dontRemove) {100$remove = $('<button class="' + REMOVE_CLASS + ' ' + config.removeButtonClass + '"></button>').appendTo($previous);101102$remove.append($(config.removeText).addClass('remove-icon'));103$remove.append($(config.restoreText).addClass('restore-icon'));104105removeName = config.removeName || $self.attr('name');106$checkbox = $('<input type="checkbox" name="' + removeName + '" value="' + config.removeValue + '" disabled/>');107108$checkbox.hide().appendTo($remove);109}110111if (!fileUrl) {112$previous.hide();113} else {114$link.attr('href', fileUrl);115$link.html(fileText || fileUrl);116}117118$fileButton = $('<button class="' + config.uploadButtonClass + '">' + config.uploadText + '</button>').insertBefore($self);119120// Event listeners121$self.on('change', selectFile);122123if ($remove) {124$remove.on('click', removeSelectedFile);125}126});127}128129$.fn.inputfile = function (method) {130131if (methods[method]) {132return methods[method].apply($(this), Array.prototype.slice.call(arguments, 1));133} else if (!method || (method && method.constructor === Object)) {134return init.apply(this, arguments);135}136};137138$.fn.inputfile.config = {139uploadText: '<i class="icon-upload"></i> Upload file',140removeText: '<i class="icon-trash"></i>',141restoreText: '<i class="icon-undo"></i>',142143uploadButtonClass: 'btn',144removeButtonClass: 'btn',145146removeName: '',147removeValue: 1,148149dontRemove: false150};151152}(jQuery));153154