forked from ScoDoc/ScoDoc
Merge branch 'entreprises' of https://scodoc.org/git/arthur.zhu/ScoDoc into entreprises
This commit is contained in:
commit
99edd6605b
@ -20,10 +20,10 @@ Flask, SQLAlchemy, au lien de Python2/Zope dans les versions précédentes).
|
|||||||
|
|
||||||
### État actuel (26 jan 22)
|
### État actuel (26 jan 22)
|
||||||
|
|
||||||
- 9.1 (master) reproduit l'ensemble des fonctions de ScoDoc 7 (donc pas de BUT), sauf:
|
- 9.1.5x (master) reproduit l'ensemble des fonctions de ScoDoc 7 (donc pas de BUT), sauf:
|
||||||
- ancien module "Entreprises" (obsolète) et ajoute la gestion du BUT.
|
- ancien module "Entreprises" (obsolète) et ajoute la gestion du BUT.
|
||||||
|
|
||||||
- 9.2 (branche refactor_nt) est la version de développement.
|
- 9.2 (branche dev92) est la version de développement.
|
||||||
|
|
||||||
|
|
||||||
### Lignes de commandes
|
### Lignes de commandes
|
||||||
|
@ -190,6 +190,7 @@ def create_app(config_class=DevConfig):
|
|||||||
|
|
||||||
app.register_error_handler(ScoGenError, handle_sco_value_error)
|
app.register_error_handler(ScoGenError, handle_sco_value_error)
|
||||||
app.register_error_handler(ScoValueError, handle_sco_value_error)
|
app.register_error_handler(ScoValueError, handle_sco_value_error)
|
||||||
|
app.register_error_handler(404, handle_sco_value_error)
|
||||||
|
|
||||||
app.register_error_handler(AccessDenied, handle_access_denied)
|
app.register_error_handler(AccessDenied, handle_access_denied)
|
||||||
app.register_error_handler(500, internal_server_error)
|
app.register_error_handler(500, internal_server_error)
|
||||||
@ -201,7 +202,7 @@ def create_app(config_class=DevConfig):
|
|||||||
app.register_blueprint(auth_bp, url_prefix="/auth")
|
app.register_blueprint(auth_bp, url_prefix="/auth")
|
||||||
|
|
||||||
from app.entreprises import bp as entreprises_bp
|
from app.entreprises import bp as entreprises_bp
|
||||||
|
|
||||||
app.register_blueprint(entreprises_bp, url_prefix="/ScoDoc/entreprises")
|
app.register_blueprint(entreprises_bp, url_prefix="/ScoDoc/entreprises")
|
||||||
|
|
||||||
from app.views import scodoc_bp
|
from app.views import scodoc_bp
|
||||||
@ -295,10 +296,12 @@ def create_app(config_class=DevConfig):
|
|||||||
|
|
||||||
from app.scodoc.sco_bulletins_legacy import BulletinGeneratorLegacy
|
from app.scodoc.sco_bulletins_legacy import BulletinGeneratorLegacy
|
||||||
from app.scodoc.sco_bulletins_standard import BulletinGeneratorStandard
|
from app.scodoc.sco_bulletins_standard import BulletinGeneratorStandard
|
||||||
|
from app.but.bulletin_but_pdf import BulletinGeneratorStandardBUT
|
||||||
from app.scodoc.sco_bulletins_ucac import BulletinGeneratorUCAC
|
from app.scodoc.sco_bulletins_ucac import BulletinGeneratorUCAC
|
||||||
|
|
||||||
# l'ordre est important, le premeir sera le "défaut" pour les nouveaux départements.
|
# l'ordre est important, le premier sera le "défaut" pour les nouveaux départements.
|
||||||
sco_bulletins_generator.register_bulletin_class(BulletinGeneratorStandard)
|
sco_bulletins_generator.register_bulletin_class(BulletinGeneratorStandard)
|
||||||
|
sco_bulletins_generator.register_bulletin_class(BulletinGeneratorStandardBUT)
|
||||||
sco_bulletins_generator.register_bulletin_class(BulletinGeneratorLegacy)
|
sco_bulletins_generator.register_bulletin_class(BulletinGeneratorLegacy)
|
||||||
sco_bulletins_generator.register_bulletin_class(BulletinGeneratorUCAC)
|
sco_bulletins_generator.register_bulletin_class(BulletinGeneratorUCAC)
|
||||||
if app.testing or app.debug:
|
if app.testing or app.debug:
|
||||||
|
@ -9,14 +9,15 @@
|
|||||||
|
|
||||||
import datetime
|
import datetime
|
||||||
from flask import url_for, g
|
from flask import url_for, g
|
||||||
from app.models.formsemestre import FormSemestre
|
|
||||||
|
|
||||||
from app.scodoc import sco_utils as scu
|
from app.comp.res_but import ResultatsSemestreBUT
|
||||||
|
from app.models import FormSemestre, Identite, formsemestre
|
||||||
|
from app.scodoc import sco_bulletins, sco_utils as scu
|
||||||
from app.scodoc import sco_bulletins_json
|
from app.scodoc import sco_bulletins_json
|
||||||
|
from app.scodoc import sco_bulletins_pdf
|
||||||
from app.scodoc import sco_preferences
|
from app.scodoc import sco_preferences
|
||||||
from app.scodoc.sco_codes_parcours import UE_SPORT
|
from app.scodoc.sco_codes_parcours import UE_SPORT
|
||||||
from app.scodoc.sco_utils import fmt_note
|
from app.scodoc.sco_utils import fmt_note
|
||||||
from app.comp.res_but import ResultatsSemestreBUT
|
|
||||||
|
|
||||||
|
|
||||||
class BulletinBUT:
|
class BulletinBUT:
|
||||||
@ -28,6 +29,7 @@ class BulletinBUT:
|
|||||||
def __init__(self, formsemestre: FormSemestre):
|
def __init__(self, formsemestre: FormSemestre):
|
||||||
""" """
|
""" """
|
||||||
self.res = ResultatsSemestreBUT(formsemestre)
|
self.res = ResultatsSemestreBUT(formsemestre)
|
||||||
|
self.prefs = sco_preferences.SemPreferences(formsemestre.id)
|
||||||
|
|
||||||
def etud_ue_mod_results(self, etud, ue, modimpls) -> dict:
|
def etud_ue_mod_results(self, etud, ue, modimpls) -> dict:
|
||||||
"dict synthèse résultats dans l'UE pour les modules indiqués"
|
"dict synthèse résultats dans l'UE pour les modules indiqués"
|
||||||
@ -84,7 +86,7 @@ class BulletinBUT:
|
|||||||
"saes": self.etud_ue_mod_results(etud, ue, res.saes),
|
"saes": self.etud_ue_mod_results(etud, ue, res.saes),
|
||||||
}
|
}
|
||||||
if ue.type != UE_SPORT:
|
if ue.type != UE_SPORT:
|
||||||
if sco_preferences.get_preference("bul_show_ue_rangs", res.formsemestre.id):
|
if self.prefs["bul_show_ue_rangs"]:
|
||||||
rangs, effectif = res.ue_rangs[ue.id]
|
rangs, effectif = res.ue_rangs[ue.id]
|
||||||
rang = rangs[etud.id]
|
rang = rangs[etud.id]
|
||||||
else:
|
else:
|
||||||
@ -155,9 +157,7 @@ class BulletinBUT:
|
|||||||
if e.visibulletin
|
if e.visibulletin
|
||||||
and (
|
and (
|
||||||
modimpl_results.evaluations_etat[e.id].is_complete
|
modimpl_results.evaluations_etat[e.id].is_complete
|
||||||
or sco_preferences.get_preference(
|
or self.prefs["bul_show_all_evals"]
|
||||||
"bul_show_all_evals", res.formsemestre.id
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
@ -216,9 +216,11 @@ class BulletinBUT:
|
|||||||
else:
|
else:
|
||||||
return f"Bonus de {fmt_note(bonus_vect.iloc[0])}"
|
return f"Bonus de {fmt_note(bonus_vect.iloc[0])}"
|
||||||
|
|
||||||
def bulletin_etud(self, etud, formsemestre, force_publishing=False) -> dict:
|
def bulletin_etud(
|
||||||
"""Le bulletin de l'étudiant dans ce semestre.
|
self, etud: Identite, formsemestre: FormSemestre, force_publishing=False
|
||||||
Si force_publishing, rempli le bulletin même si bul_hide_xml est vrai
|
) -> dict:
|
||||||
|
"""Le bulletin de l'étudiant dans ce semestre: dict pour la version JSON / HTML.
|
||||||
|
- Si force_publishing, rempli le bulletin même si bul_hide_xml est vrai
|
||||||
(bulletins non publiés).
|
(bulletins non publiés).
|
||||||
"""
|
"""
|
||||||
res = self.res
|
res = self.res
|
||||||
@ -239,7 +241,9 @@ class BulletinBUT:
|
|||||||
},
|
},
|
||||||
"formsemestre_id": formsemestre.id,
|
"formsemestre_id": formsemestre.id,
|
||||||
"etat_inscription": etat_inscription,
|
"etat_inscription": etat_inscription,
|
||||||
"options": sco_preferences.bulletin_option_affichage(formsemestre.id),
|
"options": sco_preferences.bulletin_option_affichage(
|
||||||
|
formsemestre.id, self.prefs
|
||||||
|
),
|
||||||
}
|
}
|
||||||
if not published:
|
if not published:
|
||||||
return d
|
return d
|
||||||
@ -312,3 +316,30 @@ class BulletinBUT:
|
|||||||
)
|
)
|
||||||
|
|
||||||
return d
|
return d
|
||||||
|
|
||||||
|
def bulletin_etud_complet(self, etud: Identite) -> dict:
|
||||||
|
"""Bulletin dict complet avec toutes les infos pour les bulletins pdf"""
|
||||||
|
d = self.bulletin_etud(etud, self.res.formsemestre, force_publishing=True)
|
||||||
|
d["etudid"] = etud.id
|
||||||
|
d["etud"] = d["etudiant"]
|
||||||
|
d["etud"]["nomprenom"] = etud.nomprenom
|
||||||
|
d.update(self.res.sem)
|
||||||
|
d["filigranne"] = sco_bulletins_pdf.get_filigranne(
|
||||||
|
self.res.get_etud_etat(etud.id),
|
||||||
|
self.prefs,
|
||||||
|
decision_sem=d["semestre"].get("decision_sem"),
|
||||||
|
)
|
||||||
|
# --- Absences
|
||||||
|
d["nbabs"], d["nbabsjust"] = self.res.formsemestre.get_abs_count(etud.id)
|
||||||
|
# --- Rangs
|
||||||
|
d[
|
||||||
|
"rang_nt"
|
||||||
|
] = f"{d['semestre']['rang']['value']} / {d['semestre']['rang']['total']}"
|
||||||
|
d["rang_txt"] = "Rang " + d["rang_nt"]
|
||||||
|
|
||||||
|
# --- Appréciations
|
||||||
|
d.update(
|
||||||
|
sco_bulletins.get_appreciations_list(self.res.formsemestre.id, etud.id)
|
||||||
|
)
|
||||||
|
# XXX TODO A COMPLETER ?
|
||||||
|
return d
|
||||||
|
116
app/but/bulletin_but_pdf.py
Normal file
116
app/but/bulletin_but_pdf.py
Normal file
@ -0,0 +1,116 @@
|
|||||||
|
##############################################################################
|
||||||
|
# ScoDoc
|
||||||
|
# Copyright (c) 1999 - 2022 Emmanuel Viennet. All rights reserved.
|
||||||
|
# See LICENSE
|
||||||
|
##############################################################################
|
||||||
|
|
||||||
|
"""Génération bulletin BUT au format PDF standard
|
||||||
|
"""
|
||||||
|
|
||||||
|
import datetime
|
||||||
|
from app.scodoc.sco_pdf import blue, cm, mm
|
||||||
|
|
||||||
|
from flask import url_for, g
|
||||||
|
from app.models.formsemestre import FormSemestre
|
||||||
|
|
||||||
|
from app.scodoc import gen_tables
|
||||||
|
from app.scodoc import sco_utils as scu
|
||||||
|
from app.scodoc import sco_bulletins_json
|
||||||
|
from app.scodoc import sco_preferences
|
||||||
|
from app.scodoc.sco_codes_parcours import UE_SPORT
|
||||||
|
from app.scodoc.sco_utils import fmt_note
|
||||||
|
from app.comp.res_but import ResultatsSemestreBUT
|
||||||
|
|
||||||
|
from app.scodoc.sco_bulletins_standard import BulletinGeneratorStandard
|
||||||
|
|
||||||
|
|
||||||
|
class BulletinGeneratorStandardBUT(BulletinGeneratorStandard):
|
||||||
|
"""Génération du bulletin de BUT au format PDF.
|
||||||
|
|
||||||
|
self.infos est le dict issu de BulletinBUT.bulletin_etud_complet()
|
||||||
|
"""
|
||||||
|
|
||||||
|
list_in_menu = False # spécialisation du BulletinGeneratorStandard, ne pas présenter à l'utilisateur
|
||||||
|
|
||||||
|
def bul_table(self, format="html"):
|
||||||
|
"""Génère la table centrale du bulletin de notes
|
||||||
|
Renvoie:
|
||||||
|
- en HTML: une chaine
|
||||||
|
- en PDF: une liste d'objets PLATYPUS (eg instance de Table).
|
||||||
|
"""
|
||||||
|
formsemestre_id = self.infos["formsemestre_id"]
|
||||||
|
(
|
||||||
|
synth_col_keys,
|
||||||
|
synth_P,
|
||||||
|
synth_pdf_style,
|
||||||
|
synth_col_widths,
|
||||||
|
) = self.but_table_synthese()
|
||||||
|
#
|
||||||
|
table_synthese = gen_tables.GenTable(
|
||||||
|
rows=synth_P,
|
||||||
|
columns_ids=synth_col_keys,
|
||||||
|
pdf_table_style=synth_pdf_style,
|
||||||
|
pdf_col_widths=[synth_col_widths[k] for k in synth_col_keys],
|
||||||
|
preferences=self.preferences,
|
||||||
|
html_class="notes_bulletin",
|
||||||
|
html_class_ignore_default=True,
|
||||||
|
html_with_td_classes=True,
|
||||||
|
)
|
||||||
|
# Ici on ajoutera table des ressources, tables des UE
|
||||||
|
# TODO
|
||||||
|
|
||||||
|
# XXX à modifier pour générer plusieurs tables:
|
||||||
|
return table_synthese.gen(format=format)
|
||||||
|
|
||||||
|
def but_table_synthese(self):
|
||||||
|
"""La table de synthèse; pour chaque UE, liste des ressources et SAÉs avec leurs notes
|
||||||
|
et leurs coefs.
|
||||||
|
Renvoie: colkeys, P, pdf_style, colWidths
|
||||||
|
- colkeys: nom des colonnes de la table (clés)
|
||||||
|
- P : table (liste de dicts de chaines de caracteres)
|
||||||
|
- pdf_style : commandes table Platypus
|
||||||
|
- largeurs de colonnes pour PDF
|
||||||
|
"""
|
||||||
|
col_widths = {
|
||||||
|
"titre": None,
|
||||||
|
"moyenne": 2 * cm,
|
||||||
|
"coef": 2 * cm,
|
||||||
|
}
|
||||||
|
P = [] # elems pour générer table avec gen_table (liste de dicts)
|
||||||
|
col_keys = ["titre", "moyenne"] # noms des colonnes à afficher
|
||||||
|
for ue_acronym, ue in self.infos["ues"].items():
|
||||||
|
# 1er ligne titre UE
|
||||||
|
moy_ue = ue.get("moyenne")
|
||||||
|
t = {
|
||||||
|
"titre": f"{ue_acronym} - {ue['titre']}",
|
||||||
|
"moyenne": moy_ue.get("value", "-") if moy_ue is not None else "-",
|
||||||
|
"_css_row_class": "note_bold",
|
||||||
|
"_pdf_row_markup": ["b"],
|
||||||
|
"_pdf_style": [],
|
||||||
|
}
|
||||||
|
P.append(t)
|
||||||
|
# 2eme ligne titre UE (bonus/malus/ects)
|
||||||
|
t = {
|
||||||
|
"titre": "",
|
||||||
|
"moyenne": f"""Bonus: {ue['bonus']} - Malus: {
|
||||||
|
ue["malus"]} - ECTS: {ue["ECTS"]["acquis"]} / {ue["ECTS"]["total"]}""",
|
||||||
|
"_css_row_class": "note_bold",
|
||||||
|
"_pdf_row_markup": ["b"],
|
||||||
|
"_pdf_style": [
|
||||||
|
(
|
||||||
|
"LINEBELOW",
|
||||||
|
(0, 0),
|
||||||
|
(-1, 0),
|
||||||
|
self.PDF_LINEWIDTH,
|
||||||
|
self.PDF_LINECOLOR,
|
||||||
|
)
|
||||||
|
],
|
||||||
|
}
|
||||||
|
P.append(t)
|
||||||
|
|
||||||
|
# Global pdf style commands:
|
||||||
|
pdf_style = [
|
||||||
|
("VALIGN", (0, 0), (-1, -1), "TOP"),
|
||||||
|
("BOX", (0, 0), (-1, -1), 0.4, blue), # ajoute cadre extérieur bleu:
|
||||||
|
]
|
||||||
|
return col_keys, P, pdf_style, col_widths
|
@ -37,8 +37,11 @@ from app.entreprises.models import (
|
|||||||
EntrepriseContact,
|
EntrepriseContact,
|
||||||
EntrepriseOffre,
|
EntrepriseOffre,
|
||||||
EntrepriseOffreDepartement,
|
EntrepriseOffreDepartement,
|
||||||
|
EntreprisePreferences,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
from app import email
|
||||||
|
from app.scodoc import sco_preferences
|
||||||
from app.models import Departement
|
from app.models import Departement
|
||||||
from app.scodoc.sco_permissions import Permission
|
from app.scodoc.sco_permissions import Permission
|
||||||
|
|
||||||
@ -101,6 +104,37 @@ def get_offre_files_and_depts(offre: EntrepriseOffre, depts: list):
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def send_email_notifications_entreprise(
|
||||||
|
subject, entreprise: Entreprise, contact: EntrepriseContact
|
||||||
|
):
|
||||||
|
txt = [
|
||||||
|
"Une entreprise est en attente de validation",
|
||||||
|
"Entreprise:",
|
||||||
|
f"\tnom: {entreprise.nom}",
|
||||||
|
f"\tsiret: {entreprise.siret}",
|
||||||
|
f"\tadresse: {entreprise.adresse}",
|
||||||
|
f"\tcode postal: {entreprise.codepostal}",
|
||||||
|
f"\tville: {entreprise.ville}",
|
||||||
|
f"\tpays: {entreprise.pays}",
|
||||||
|
"",
|
||||||
|
"Contact:",
|
||||||
|
f"nom: {contact.nom}",
|
||||||
|
f"prenom: {contact.prenom}",
|
||||||
|
f"telephone: {contact.telephone}",
|
||||||
|
f"mail: {contact.mail}",
|
||||||
|
f"poste: {contact.poste}",
|
||||||
|
f"service: {contact.service}",
|
||||||
|
]
|
||||||
|
txt = "\n".join(txt)
|
||||||
|
email.send_email(
|
||||||
|
subject,
|
||||||
|
sco_preferences.get_preference("email_from_addr"),
|
||||||
|
[EntreprisePreferences.get_email_notifications],
|
||||||
|
txt,
|
||||||
|
)
|
||||||
|
return txt
|
||||||
|
|
||||||
|
|
||||||
def verif_contact_data(contact_data):
|
def verif_contact_data(contact_data):
|
||||||
"""
|
"""
|
||||||
Verifie les données d'une ligne Excel (contact)
|
Verifie les données d'une ligne Excel (contact)
|
||||||
@ -117,13 +151,13 @@ def verif_contact_data(contact_data):
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
# entreprise_id existant
|
# entreprise_id existant
|
||||||
entreprise = Entreprise.query.filter_by(id=contact_data[6]).first()
|
entreprise = Entreprise.query.filter_by(siret=contact_data[6]).first()
|
||||||
if entreprise is None:
|
if entreprise is None:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
# contact possède le meme nom et prénom dans la meme entreprise
|
# contact possède le meme nom et prénom dans la meme entreprise
|
||||||
contact = EntrepriseContact.query.filter_by(
|
contact = EntrepriseContact.query.filter_by(
|
||||||
nom=contact_data[0], prenom=contact_data[1], entreprise_id=contact_data[6]
|
nom=contact_data[0], prenom=contact_data[1], entreprise_id=entreprise.id
|
||||||
).first()
|
).first()
|
||||||
if contact is not None:
|
if contact is not None:
|
||||||
return False
|
return False
|
||||||
@ -138,16 +172,27 @@ def verif_entreprise_data(entreprise_data):
|
|||||||
"""
|
"""
|
||||||
Verifie les données d'une ligne Excel (entreprise)
|
Verifie les données d'une ligne Excel (entreprise)
|
||||||
"""
|
"""
|
||||||
for data in entreprise_data: # champs obligatoires
|
if EntreprisePreferences.get_check_siret():
|
||||||
if data == "":
|
for data in entreprise_data: # champs obligatoires
|
||||||
|
if data == "":
|
||||||
|
return False
|
||||||
|
else:
|
||||||
|
for data in entreprise_data[1:]: # champs obligatoires
|
||||||
|
if data == "":
|
||||||
|
return False
|
||||||
|
if EntreprisePreferences.get_check_siret():
|
||||||
|
siret = entreprise_data[0].strip() # vérification sur le siret
|
||||||
|
if re.match("^\d{14}$", siret) is None:
|
||||||
|
return False
|
||||||
|
try:
|
||||||
|
req = requests.get(
|
||||||
|
f"https://entreprise.data.gouv.fr/api/sirene/v1/siret/{siret}"
|
||||||
|
)
|
||||||
|
except requests.ConnectionError:
|
||||||
|
print("no internet")
|
||||||
|
if req.status_code != 200:
|
||||||
|
return False
|
||||||
|
entreprise = Entreprise.query.filter_by(siret=siret).first()
|
||||||
|
if entreprise is not None:
|
||||||
return False
|
return False
|
||||||
siret = entreprise_data[0].strip() # vérification sur le siret
|
|
||||||
if re.match("^\d{14}$", siret) is None:
|
|
||||||
return False
|
|
||||||
req = requests.get(f"https://entreprise.data.gouv.fr/api/sirene/v1/siret/{siret}")
|
|
||||||
if req.status_code != 200:
|
|
||||||
return False
|
|
||||||
entreprise = Entreprise.query.filter_by(siret=siret).first()
|
|
||||||
if entreprise is not None:
|
|
||||||
return False
|
|
||||||
return True
|
return True
|
||||||
|
@ -39,11 +39,12 @@ from wtforms import (
|
|||||||
HiddenField,
|
HiddenField,
|
||||||
SelectMultipleField,
|
SelectMultipleField,
|
||||||
DateField,
|
DateField,
|
||||||
|
BooleanField,
|
||||||
)
|
)
|
||||||
from wtforms.validators import ValidationError, DataRequired, Email, Optional
|
from wtforms.validators import ValidationError, DataRequired, Email, Optional
|
||||||
from wtforms.widgets import ListWidget, CheckboxInput
|
from wtforms.widgets import ListWidget, CheckboxInput
|
||||||
|
|
||||||
from app.entreprises.models import Entreprise, EntrepriseContact
|
from app.entreprises.models import Entreprise, EntrepriseContact, EntreprisePreferences
|
||||||
from app.models import Identite, Departement
|
from app.models import Identite, Departement
|
||||||
from app.auth.models import User
|
from app.auth.models import User
|
||||||
|
|
||||||
@ -64,20 +65,20 @@ def _build_string_field(label, required=True, render_kw=None):
|
|||||||
|
|
||||||
class EntrepriseCreationForm(FlaskForm):
|
class EntrepriseCreationForm(FlaskForm):
|
||||||
siret = _build_string_field(
|
siret = _build_string_field(
|
||||||
"SIRET",
|
"SIRET (*)",
|
||||||
render_kw={"placeholder": "Numéro composé de 14 chiffres", "maxlength": "14"},
|
render_kw={"placeholder": "Numéro composé de 14 chiffres", "maxlength": "14"},
|
||||||
)
|
)
|
||||||
nom_entreprise = _build_string_field("Nom de l'entreprise")
|
nom_entreprise = _build_string_field("Nom de l'entreprise (*)")
|
||||||
adresse = _build_string_field("Adresse de l'entreprise")
|
adresse = _build_string_field("Adresse de l'entreprise (*)")
|
||||||
codepostal = _build_string_field("Code postal de l'entreprise")
|
codepostal = _build_string_field("Code postal de l'entreprise (*)")
|
||||||
ville = _build_string_field("Ville de l'entreprise")
|
ville = _build_string_field("Ville de l'entreprise (*)")
|
||||||
pays = _build_string_field("Pays de l'entreprise")
|
pays = _build_string_field("Pays de l'entreprise", required=False)
|
||||||
|
|
||||||
nom_contact = _build_string_field("Nom du contact")
|
nom_contact = _build_string_field("Nom du contact (*)")
|
||||||
prenom_contact = _build_string_field("Prénom du contact")
|
prenom_contact = _build_string_field("Prénom du contact (*)")
|
||||||
telephone = _build_string_field("Téléphone du contact", required=False)
|
telephone = _build_string_field("Téléphone du contact (*)", required=False)
|
||||||
mail = StringField(
|
mail = StringField(
|
||||||
"Mail du contact",
|
"Mail du contact (*)",
|
||||||
validators=[Optional(), Email(message="Adresse e-mail invalide")],
|
validators=[Optional(), Email(message="Adresse e-mail invalide")],
|
||||||
)
|
)
|
||||||
poste = _build_string_field("Poste du contact", required=False)
|
poste = _build_string_field("Poste du contact", required=False)
|
||||||
@ -99,31 +100,43 @@ class EntrepriseCreationForm(FlaskForm):
|
|||||||
return validate
|
return validate
|
||||||
|
|
||||||
def validate_siret(self, siret):
|
def validate_siret(self, siret):
|
||||||
siret = siret.data.strip()
|
if EntreprisePreferences.get_check_siret():
|
||||||
if re.match("^\d{14}$", siret) is None:
|
siret = siret.data.strip()
|
||||||
raise ValidationError("Format incorrect")
|
if re.match("^\d{14}$", siret) is None:
|
||||||
req = requests.get(
|
raise ValidationError("Format incorrect")
|
||||||
f"https://entreprise.data.gouv.fr/api/sirene/v1/siret/{siret}"
|
try:
|
||||||
)
|
req = requests.get(
|
||||||
if req.status_code != 200:
|
f"https://entreprise.data.gouv.fr/api/sirene/v1/siret/{siret}"
|
||||||
raise ValidationError("SIRET inexistant")
|
)
|
||||||
entreprise = Entreprise.query.filter_by(siret=siret).first()
|
except requests.ConnectionError:
|
||||||
if entreprise is not None:
|
print("no internet")
|
||||||
lien = f'<a href="/ScoDoc/entreprises/fiche_entreprise/{entreprise.id}">ici</a>'
|
if req.status_code != 200:
|
||||||
raise ValidationError(
|
raise ValidationError("SIRET inexistant")
|
||||||
Markup(f"Entreprise déjà présent, lien vers la fiche : {lien}")
|
entreprise = Entreprise.query.filter_by(siret=siret).first()
|
||||||
)
|
if entreprise is not None:
|
||||||
|
lien = f'<a href="/ScoDoc/entreprises/fiche_entreprise/{entreprise.id}">ici</a>'
|
||||||
|
raise ValidationError(
|
||||||
|
Markup(f"Entreprise déjà présent, lien vers la fiche : {lien}")
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class EntrepriseModificationForm(FlaskForm):
|
class EntrepriseModificationForm(FlaskForm):
|
||||||
siret = StringField("SIRET", render_kw={"disabled": ""})
|
hidden_entreprise_siret = HiddenField()
|
||||||
nom = _build_string_field("Nom de l'entreprise")
|
siret = StringField("SIRET (*)")
|
||||||
adresse = _build_string_field("Adresse")
|
nom = _build_string_field("Nom de l'entreprise (*)")
|
||||||
codepostal = _build_string_field("Code postal")
|
adresse = _build_string_field("Adresse (*)")
|
||||||
ville = _build_string_field("Ville")
|
codepostal = _build_string_field("Code postal (*)")
|
||||||
pays = _build_string_field("Pays")
|
ville = _build_string_field("Ville (*)")
|
||||||
|
pays = _build_string_field("Pays", required=False)
|
||||||
submit = SubmitField("Modifier", render_kw=SUBMIT_MARGE)
|
submit = SubmitField("Modifier", render_kw=SUBMIT_MARGE)
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
super().__init__(*args, **kwargs)
|
||||||
|
self.siret.render_kw = {
|
||||||
|
"disabled": "",
|
||||||
|
"value": self.hidden_entreprise_siret.data,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
class MultiCheckboxField(SelectMultipleField):
|
class MultiCheckboxField(SelectMultipleField):
|
||||||
widget = ListWidget(prefix_label=False)
|
widget = ListWidget(prefix_label=False)
|
||||||
@ -131,21 +144,21 @@ class MultiCheckboxField(SelectMultipleField):
|
|||||||
|
|
||||||
|
|
||||||
class OffreCreationForm(FlaskForm):
|
class OffreCreationForm(FlaskForm):
|
||||||
intitule = _build_string_field("Intitulé")
|
intitule = _build_string_field("Intitulé (*)")
|
||||||
description = TextAreaField(
|
description = TextAreaField(
|
||||||
"Description", validators=[DataRequired(message=CHAMP_REQUIS)]
|
"Description (*)", validators=[DataRequired(message=CHAMP_REQUIS)]
|
||||||
)
|
)
|
||||||
type_offre = SelectField(
|
type_offre = SelectField(
|
||||||
"Type de l'offre",
|
"Type de l'offre (*)",
|
||||||
choices=[("Stage"), ("Alternance")],
|
choices=[("Stage"), ("Alternance")],
|
||||||
validators=[DataRequired(message=CHAMP_REQUIS)],
|
validators=[DataRequired(message=CHAMP_REQUIS)],
|
||||||
)
|
)
|
||||||
missions = _build_string_field("Missions")
|
missions = TextAreaField(
|
||||||
duree = _build_string_field("Durée")
|
"Missions (*)", validators=[DataRequired(message=CHAMP_REQUIS)]
|
||||||
depts = MultiCheckboxField("Départements", validators=[Optional()], coerce=int)
|
|
||||||
expiration_date = DateField(
|
|
||||||
"Date expiration", validators=[DataRequired(message=CHAMP_REQUIS)]
|
|
||||||
)
|
)
|
||||||
|
duree = _build_string_field("Durée (*)")
|
||||||
|
depts = MultiCheckboxField("Départements", validators=[Optional()], coerce=int)
|
||||||
|
expiration_date = DateField("Date expiration", validators=[Optional()])
|
||||||
submit = SubmitField("Envoyer", render_kw=SUBMIT_MARGE)
|
submit = SubmitField("Envoyer", render_kw=SUBMIT_MARGE)
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
@ -157,21 +170,21 @@ class OffreCreationForm(FlaskForm):
|
|||||||
|
|
||||||
|
|
||||||
class OffreModificationForm(FlaskForm):
|
class OffreModificationForm(FlaskForm):
|
||||||
intitule = _build_string_field("Intitulé")
|
intitule = _build_string_field("Intitulé (*)")
|
||||||
description = TextAreaField(
|
description = TextAreaField(
|
||||||
"Description", validators=[DataRequired(message=CHAMP_REQUIS)]
|
"Description (*)", validators=[DataRequired(message=CHAMP_REQUIS)]
|
||||||
)
|
)
|
||||||
type_offre = SelectField(
|
type_offre = SelectField(
|
||||||
"Type de l'offre",
|
"Type de l'offre (*)",
|
||||||
choices=[("Stage"), ("Alternance")],
|
choices=[("Stage"), ("Alternance")],
|
||||||
validators=[DataRequired(message=CHAMP_REQUIS)],
|
validators=[DataRequired(message=CHAMP_REQUIS)],
|
||||||
)
|
)
|
||||||
missions = _build_string_field("Missions")
|
missions = TextAreaField(
|
||||||
duree = _build_string_field("Durée")
|
"Missions (*)", validators=[DataRequired(message=CHAMP_REQUIS)]
|
||||||
depts = MultiCheckboxField("Départements", validators=[Optional()], coerce=int)
|
|
||||||
expiration_date = DateField(
|
|
||||||
"Date expiration", validators=[DataRequired(message=CHAMP_REQUIS)]
|
|
||||||
)
|
)
|
||||||
|
duree = _build_string_field("Durée (*)")
|
||||||
|
depts = MultiCheckboxField("Départements", validators=[Optional()], coerce=int)
|
||||||
|
expiration_date = DateField("Date expiration", validators=[Optional()])
|
||||||
submit = SubmitField("Modifier", render_kw=SUBMIT_MARGE)
|
submit = SubmitField("Modifier", render_kw=SUBMIT_MARGE)
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
@ -184,11 +197,11 @@ class OffreModificationForm(FlaskForm):
|
|||||||
|
|
||||||
class ContactCreationForm(FlaskForm):
|
class ContactCreationForm(FlaskForm):
|
||||||
hidden_entreprise_id = HiddenField()
|
hidden_entreprise_id = HiddenField()
|
||||||
nom = _build_string_field("Nom")
|
nom = _build_string_field("Nom (*)")
|
||||||
prenom = _build_string_field("Prénom")
|
prenom = _build_string_field("Prénom (*)")
|
||||||
telephone = _build_string_field("Téléphone", required=False)
|
telephone = _build_string_field("Téléphone (*)", required=False)
|
||||||
mail = StringField(
|
mail = StringField(
|
||||||
"Mail",
|
"Mail (*)",
|
||||||
validators=[Optional(), Email(message="Adresse e-mail invalide")],
|
validators=[Optional(), Email(message="Adresse e-mail invalide")],
|
||||||
)
|
)
|
||||||
poste = _build_string_field("Poste", required=False)
|
poste = _build_string_field("Poste", required=False)
|
||||||
@ -223,11 +236,11 @@ class ContactCreationForm(FlaskForm):
|
|||||||
class ContactModificationForm(FlaskForm):
|
class ContactModificationForm(FlaskForm):
|
||||||
hidden_contact_id = HiddenField()
|
hidden_contact_id = HiddenField()
|
||||||
hidden_entreprise_id = HiddenField()
|
hidden_entreprise_id = HiddenField()
|
||||||
nom = _build_string_field("Nom")
|
nom = _build_string_field("Nom (*)")
|
||||||
prenom = _build_string_field("Prénom")
|
prenom = _build_string_field("Prénom (*)")
|
||||||
telephone = _build_string_field("Téléphone", required=False)
|
telephone = _build_string_field("Téléphone (*)", required=False)
|
||||||
mail = StringField(
|
mail = StringField(
|
||||||
"Mail",
|
"Mail (*)",
|
||||||
validators=[Optional(), Email(message="Adresse e-mail invalide")],
|
validators=[Optional(), Email(message="Adresse e-mail invalide")],
|
||||||
)
|
)
|
||||||
poste = _build_string_field("Poste", required=False)
|
poste = _build_string_field("Poste", required=False)
|
||||||
@ -262,18 +275,20 @@ class ContactModificationForm(FlaskForm):
|
|||||||
|
|
||||||
class HistoriqueCreationForm(FlaskForm):
|
class HistoriqueCreationForm(FlaskForm):
|
||||||
etudiant = _build_string_field(
|
etudiant = _build_string_field(
|
||||||
"Étudiant",
|
"Étudiant (*)",
|
||||||
render_kw={"placeholder": "Tapez le nom de l'étudiant"},
|
render_kw={"placeholder": "Tapez le nom de l'étudiant"},
|
||||||
)
|
)
|
||||||
type_offre = SelectField(
|
type_offre = SelectField(
|
||||||
"Type de l'offre",
|
"Type de l'offre (*)",
|
||||||
choices=[("Stage"), ("Alternance")],
|
choices=[("Stage"), ("Alternance")],
|
||||||
validators=[DataRequired(message=CHAMP_REQUIS)],
|
validators=[DataRequired(message=CHAMP_REQUIS)],
|
||||||
)
|
)
|
||||||
date_debut = DateField(
|
date_debut = DateField(
|
||||||
"Date début", validators=[DataRequired(message=CHAMP_REQUIS)]
|
"Date début (*)", validators=[DataRequired(message=CHAMP_REQUIS)]
|
||||||
|
)
|
||||||
|
date_fin = DateField(
|
||||||
|
"Date fin (*)", validators=[DataRequired(message=CHAMP_REQUIS)]
|
||||||
)
|
)
|
||||||
date_fin = DateField("Date fin", validators=[DataRequired(message=CHAMP_REQUIS)])
|
|
||||||
submit = SubmitField("Envoyer", render_kw=SUBMIT_MARGE)
|
submit = SubmitField("Envoyer", render_kw=SUBMIT_MARGE)
|
||||||
|
|
||||||
def validate(self):
|
def validate(self):
|
||||||
@ -306,7 +321,7 @@ class HistoriqueCreationForm(FlaskForm):
|
|||||||
|
|
||||||
class EnvoiOffreForm(FlaskForm):
|
class EnvoiOffreForm(FlaskForm):
|
||||||
responsable = _build_string_field(
|
responsable = _build_string_field(
|
||||||
"Responsable de formation",
|
"Responsable de formation (*)",
|
||||||
render_kw={"placeholder": "Tapez le nom du responsable de formation"},
|
render_kw={"placeholder": "Tapez le nom du responsable de formation"},
|
||||||
)
|
)
|
||||||
submit = SubmitField("Envoyer", render_kw=SUBMIT_MARGE)
|
submit = SubmitField("Envoyer", render_kw=SUBMIT_MARGE)
|
||||||
@ -327,7 +342,7 @@ class EnvoiOffreForm(FlaskForm):
|
|||||||
|
|
||||||
class AjoutFichierForm(FlaskForm):
|
class AjoutFichierForm(FlaskForm):
|
||||||
fichier = FileField(
|
fichier = FileField(
|
||||||
"Fichier",
|
"Fichier (*)",
|
||||||
validators=[
|
validators=[
|
||||||
FileRequired(message=CHAMP_REQUIS),
|
FileRequired(message=CHAMP_REQUIS),
|
||||||
FileAllowed(["pdf", "docx"], "Fichier .pdf ou .docx uniquement"),
|
FileAllowed(["pdf", "docx"], "Fichier .pdf ou .docx uniquement"),
|
||||||
@ -346,10 +361,19 @@ class ValidationConfirmationForm(FlaskForm):
|
|||||||
|
|
||||||
class ImportForm(FlaskForm):
|
class ImportForm(FlaskForm):
|
||||||
fichier = FileField(
|
fichier = FileField(
|
||||||
"Fichier",
|
"Fichier (*)",
|
||||||
validators=[
|
validators=[
|
||||||
FileRequired(message=CHAMP_REQUIS),
|
FileRequired(message=CHAMP_REQUIS),
|
||||||
FileAllowed(["xlsx"], "Fichier .xlsx uniquement"),
|
FileAllowed(["xlsx"], "Fichier .xlsx uniquement"),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
submit = SubmitField("Importer", render_kw=SUBMIT_MARGE)
|
submit = SubmitField("Importer", render_kw=SUBMIT_MARGE)
|
||||||
|
|
||||||
|
|
||||||
|
class PreferencesForm(FlaskForm):
|
||||||
|
mail_entreprise = StringField(
|
||||||
|
"Mail notifications",
|
||||||
|
validators=[Optional(), Email(message="Adresse e-mail invalide")],
|
||||||
|
)
|
||||||
|
check_siret = BooleanField("Vérification SIRET")
|
||||||
|
submit = SubmitField("Valider", render_kw=SUBMIT_MARGE)
|
||||||
|
@ -9,7 +9,7 @@ class Entreprise(db.Model):
|
|||||||
adresse = db.Column(db.Text)
|
adresse = db.Column(db.Text)
|
||||||
codepostal = db.Column(db.Text)
|
codepostal = db.Column(db.Text)
|
||||||
ville = db.Column(db.Text)
|
ville = db.Column(db.Text)
|
||||||
pays = db.Column(db.Text)
|
pays = db.Column(db.Text, default="FRANCE")
|
||||||
visible = db.Column(db.Boolean, default=False)
|
visible = db.Column(db.Boolean, default=False)
|
||||||
contacts = db.relationship(
|
contacts = db.relationship(
|
||||||
"EntrepriseContact",
|
"EntrepriseContact",
|
||||||
@ -27,7 +27,7 @@ class Entreprise(db.Model):
|
|||||||
def to_dict(self):
|
def to_dict(self):
|
||||||
return {
|
return {
|
||||||
"siret": self.siret,
|
"siret": self.siret,
|
||||||
"nom": self.nom,
|
"nom_entreprise": self.nom,
|
||||||
"adresse": self.adresse,
|
"adresse": self.adresse,
|
||||||
"code_postal": self.codepostal,
|
"code_postal": self.codepostal,
|
||||||
"ville": self.ville,
|
"ville": self.ville,
|
||||||
@ -36,7 +36,7 @@ class Entreprise(db.Model):
|
|||||||
|
|
||||||
|
|
||||||
class EntrepriseContact(db.Model):
|
class EntrepriseContact(db.Model):
|
||||||
__tablename__ = "are_entreprise_contact"
|
__tablename__ = "are_contacts"
|
||||||
id = db.Column(db.Integer, primary_key=True)
|
id = db.Column(db.Integer, primary_key=True)
|
||||||
entreprise_id = db.Column(
|
entreprise_id = db.Column(
|
||||||
db.Integer, db.ForeignKey("are_entreprises.id", ondelete="cascade")
|
db.Integer, db.ForeignKey("are_entreprises.id", ondelete="cascade")
|
||||||
@ -49,6 +49,7 @@ class EntrepriseContact(db.Model):
|
|||||||
service = db.Column(db.Text)
|
service = db.Column(db.Text)
|
||||||
|
|
||||||
def to_dict(self):
|
def to_dict(self):
|
||||||
|
entreprise = Entreprise.query.filter_by(id=self.entreprise_id).first()
|
||||||
return {
|
return {
|
||||||
"nom": self.nom,
|
"nom": self.nom,
|
||||||
"prenom": self.prenom,
|
"prenom": self.prenom,
|
||||||
@ -56,12 +57,12 @@ class EntrepriseContact(db.Model):
|
|||||||
"mail": self.mail,
|
"mail": self.mail,
|
||||||
"poste": self.poste,
|
"poste": self.poste,
|
||||||
"service": self.service,
|
"service": self.service,
|
||||||
"entreprise_id": self.entreprise_id,
|
"entreprise_siret": entreprise.siret,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class EntrepriseOffre(db.Model):
|
class EntrepriseOffre(db.Model):
|
||||||
__tablename__ = "are_entreprise_offre"
|
__tablename__ = "are_offres"
|
||||||
id = db.Column(db.Integer, primary_key=True)
|
id = db.Column(db.Integer, primary_key=True)
|
||||||
entreprise_id = db.Column(
|
entreprise_id = db.Column(
|
||||||
db.Integer, db.ForeignKey("are_entreprises.id", ondelete="cascade")
|
db.Integer, db.ForeignKey("are_entreprises.id", ondelete="cascade")
|
||||||
@ -73,6 +74,7 @@ class EntrepriseOffre(db.Model):
|
|||||||
missions = db.Column(db.Text)
|
missions = db.Column(db.Text)
|
||||||
duree = db.Column(db.Text)
|
duree = db.Column(db.Text)
|
||||||
expiration_date = db.Column(db.Date)
|
expiration_date = db.Column(db.Date)
|
||||||
|
expired = db.Column(db.Boolean, default=False)
|
||||||
|
|
||||||
def to_dict(self):
|
def to_dict(self):
|
||||||
return {
|
return {
|
||||||
@ -85,7 +87,7 @@ class EntrepriseOffre(db.Model):
|
|||||||
|
|
||||||
|
|
||||||
class EntrepriseLog(db.Model):
|
class EntrepriseLog(db.Model):
|
||||||
__tablename__ = "are_entreprise_log"
|
__tablename__ = "are_logs"
|
||||||
id = db.Column(db.Integer, primary_key=True)
|
id = db.Column(db.Integer, primary_key=True)
|
||||||
date = db.Column(db.DateTime(timezone=True), server_default=db.func.now())
|
date = db.Column(db.DateTime(timezone=True), server_default=db.func.now())
|
||||||
authenticated_user = db.Column(db.Text)
|
authenticated_user = db.Column(db.Text)
|
||||||
@ -94,7 +96,7 @@ class EntrepriseLog(db.Model):
|
|||||||
|
|
||||||
|
|
||||||
class EntrepriseEtudiant(db.Model):
|
class EntrepriseEtudiant(db.Model):
|
||||||
__tablename__ = "are_entreprise_etudiant"
|
__tablename__ = "are_etudiants"
|
||||||
id = db.Column(db.Integer, primary_key=True)
|
id = db.Column(db.Integer, primary_key=True)
|
||||||
entreprise_id = db.Column(
|
entreprise_id = db.Column(
|
||||||
db.Integer, db.ForeignKey("are_entreprises.id", ondelete="cascade")
|
db.Integer, db.ForeignKey("are_entreprises.id", ondelete="cascade")
|
||||||
@ -108,33 +110,78 @@ class EntrepriseEtudiant(db.Model):
|
|||||||
|
|
||||||
|
|
||||||
class EntrepriseEnvoiOffre(db.Model):
|
class EntrepriseEnvoiOffre(db.Model):
|
||||||
__tablename__ = "are_entreprise_envoi_offre"
|
__tablename__ = "are_envoi_offre"
|
||||||
id = db.Column(db.Integer, primary_key=True)
|
id = db.Column(db.Integer, primary_key=True)
|
||||||
sender_id = db.Column(db.Integer, db.ForeignKey("user.id", ondelete="cascade"))
|
sender_id = db.Column(db.Integer, db.ForeignKey("user.id", ondelete="cascade"))
|
||||||
receiver_id = db.Column(db.Integer, db.ForeignKey("user.id", ondelete="cascade"))
|
receiver_id = db.Column(db.Integer, db.ForeignKey("user.id", ondelete="cascade"))
|
||||||
offre_id = db.Column(
|
offre_id = db.Column(db.Integer, db.ForeignKey("are_offres.id", ondelete="cascade"))
|
||||||
db.Integer, db.ForeignKey("are_entreprise_offre.id", ondelete="cascade")
|
|
||||||
)
|
|
||||||
date_envoi = db.Column(db.DateTime(timezone=True), server_default=db.func.now())
|
date_envoi = db.Column(db.DateTime(timezone=True), server_default=db.func.now())
|
||||||
|
|
||||||
|
|
||||||
class EntrepriseEnvoiOffreEtudiant(db.Model):
|
class EntrepriseEnvoiOffreEtudiant(db.Model):
|
||||||
__tablename__ = "are_entreprise_envoi_offre_etudiant"
|
__tablename__ = "are_envoi_offre_etudiant"
|
||||||
id = db.Column(db.Integer, primary_key=True)
|
id = db.Column(db.Integer, primary_key=True)
|
||||||
sender_id = db.Column(db.Integer, db.ForeignKey("user.id", ondelete="cascade"))
|
sender_id = db.Column(db.Integer, db.ForeignKey("user.id", ondelete="cascade"))
|
||||||
receiver_id = db.Column(
|
receiver_id = db.Column(
|
||||||
db.Integer, db.ForeignKey("identite.id", ondelete="cascade")
|
db.Integer, db.ForeignKey("identite.id", ondelete="cascade")
|
||||||
)
|
)
|
||||||
offre_id = db.Column(
|
offre_id = db.Column(db.Integer, db.ForeignKey("are_offres.id", ondelete="cascade"))
|
||||||
db.Integer, db.ForeignKey("are_entreprise_offre.id", ondelete="cascade")
|
|
||||||
)
|
|
||||||
date_envoi = db.Column(db.DateTime(timezone=True), server_default=db.func.now())
|
date_envoi = db.Column(db.DateTime(timezone=True), server_default=db.func.now())
|
||||||
|
|
||||||
|
|
||||||
class EntrepriseOffreDepartement(db.Model):
|
class EntrepriseOffreDepartement(db.Model):
|
||||||
__tablename__ = "are_entreprise_offre_departement"
|
__tablename__ = "are_offre_departement"
|
||||||
id = db.Column(db.Integer, primary_key=True)
|
id = db.Column(db.Integer, primary_key=True)
|
||||||
offre_id = db.Column(
|
offre_id = db.Column(db.Integer, db.ForeignKey("are_offres.id", ondelete="cascade"))
|
||||||
db.Integer, db.ForeignKey("are_entreprise_offre.id", ondelete="cascade")
|
|
||||||
)
|
|
||||||
dept_id = db.Column(db.Integer, db.ForeignKey("departement.id", ondelete="cascade"))
|
dept_id = db.Column(db.Integer, db.ForeignKey("departement.id", ondelete="cascade"))
|
||||||
|
|
||||||
|
|
||||||
|
class EntreprisePreferences(db.Model):
|
||||||
|
__tablename__ = "are_preferences"
|
||||||
|
id = db.Column(db.Integer, primary_key=True)
|
||||||
|
name = db.Column(db.Text)
|
||||||
|
value = db.Column(db.Text)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_email_notifications(cls):
|
||||||
|
mail = EntreprisePreferences.query.filter_by(
|
||||||
|
name="mail_notifications_entreprise"
|
||||||
|
).first()
|
||||||
|
if mail is None:
|
||||||
|
return ""
|
||||||
|
else:
|
||||||
|
return mail.value
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def set_email_notifications(cls, mail: str):
|
||||||
|
if mail != cls.get_email_notifications():
|
||||||
|
m = EntreprisePreferences.query.filter_by(
|
||||||
|
name="mail_notifications_entreprise"
|
||||||
|
).first()
|
||||||
|
if m is None:
|
||||||
|
prefs = EntreprisePreferences(
|
||||||
|
name="mail_notifications_entreprise",
|
||||||
|
value=mail,
|
||||||
|
)
|
||||||
|
db.session.add(prefs)
|
||||||
|
else:
|
||||||
|
m.value = mail
|
||||||
|
db.session.commit()
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_check_siret(cls):
|
||||||
|
check_siret = EntreprisePreferences.query.filter_by(name="check_siret").first()
|
||||||
|
if check_siret is None:
|
||||||
|
return 1
|
||||||
|
else:
|
||||||
|
return int(check_siret.value)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def set_check_siret(cls, check_siret: int):
|
||||||
|
cs = EntreprisePreferences.query.filter_by(name="check_siret").first()
|
||||||
|
if cs is None:
|
||||||
|
prefs = EntreprisePreferences(name="check_siret", value=check_siret)
|
||||||
|
db.session.add(prefs)
|
||||||
|
else:
|
||||||
|
cs.value = check_siret
|
||||||
|
db.session.commit()
|
||||||
|
@ -24,6 +24,7 @@ from app.entreprises.forms import (
|
|||||||
AjoutFichierForm,
|
AjoutFichierForm,
|
||||||
ValidationConfirmationForm,
|
ValidationConfirmationForm,
|
||||||
ImportForm,
|
ImportForm,
|
||||||
|
PreferencesForm,
|
||||||
)
|
)
|
||||||
from app.entreprises import bp
|
from app.entreprises import bp
|
||||||
from app.entreprises.models import (
|
from app.entreprises.models import (
|
||||||
@ -34,6 +35,7 @@ from app.entreprises.models import (
|
|||||||
EntrepriseEtudiant,
|
EntrepriseEtudiant,
|
||||||
EntrepriseEnvoiOffre,
|
EntrepriseEnvoiOffre,
|
||||||
EntrepriseOffreDepartement,
|
EntrepriseOffreDepartement,
|
||||||
|
EntreprisePreferences,
|
||||||
)
|
)
|
||||||
from app.entreprises import app_relations_entreprises as are
|
from app.entreprises import app_relations_entreprises as are
|
||||||
from app.models import Identite
|
from app.models import Identite
|
||||||
@ -51,12 +53,9 @@ from werkzeug.utils import secure_filename
|
|||||||
@permission_required(Permission.RelationsEntreprisesView)
|
@permission_required(Permission.RelationsEntreprisesView)
|
||||||
def index():
|
def index():
|
||||||
"""
|
"""
|
||||||
Permet d'afficher une page avec la liste des entreprises et une liste des dernières opérations
|
Permet d'afficher une page avec la liste des entreprises (visible) et une liste des dernières opérations
|
||||||
"""
|
"""
|
||||||
page = request.args.get("page", 1, type=int)
|
entreprises = Entreprise.query.filter_by(visible=True)
|
||||||
entreprises = Entreprise.query.filter_by(visible=True).paginate(
|
|
||||||
page=page, per_page=10
|
|
||||||
)
|
|
||||||
logs = EntrepriseLog.query.order_by(EntrepriseLog.date.desc()).limit(LOGS_LEN).all()
|
logs = EntrepriseLog.query.order_by(EntrepriseLog.date.desc()).limit(LOGS_LEN).all()
|
||||||
return render_template(
|
return render_template(
|
||||||
"entreprises/entreprises.html",
|
"entreprises/entreprises.html",
|
||||||
@ -87,7 +86,7 @@ def logs():
|
|||||||
@permission_required(Permission.RelationsEntreprisesValidate)
|
@permission_required(Permission.RelationsEntreprisesValidate)
|
||||||
def validation():
|
def validation():
|
||||||
"""
|
"""
|
||||||
Permet d'afficher une page avec la liste des entreprises a valider
|
Permet d'afficher une page avec la liste des entreprises a valider (non visible)
|
||||||
"""
|
"""
|
||||||
entreprises = Entreprise.query.filter_by(visible=False).all()
|
entreprises = Entreprise.query.filter_by(visible=False).all()
|
||||||
return render_template(
|
return render_template(
|
||||||
@ -101,14 +100,12 @@ def validation():
|
|||||||
@permission_required(Permission.RelationsEntreprisesView)
|
@permission_required(Permission.RelationsEntreprisesView)
|
||||||
def contacts():
|
def contacts():
|
||||||
"""
|
"""
|
||||||
Permet d'afficher une page la liste des contacts et une liste des dernières opérations
|
Permet d'afficher une page avec la liste des contacts des entreprises visibles et une liste des dernières opérations
|
||||||
"""
|
"""
|
||||||
page = request.args.get("page", 1, type=int)
|
|
||||||
contacts = (
|
contacts = (
|
||||||
db.session.query(EntrepriseContact, Entreprise)
|
db.session.query(EntrepriseContact, Entreprise)
|
||||||
.join(Entreprise, EntrepriseContact.entreprise_id == Entreprise.id)
|
.join(Entreprise, EntrepriseContact.entreprise_id == Entreprise.id)
|
||||||
.filter_by(visible=True)
|
.filter_by(visible=True)
|
||||||
.paginate(page=page, per_page=10)
|
|
||||||
)
|
)
|
||||||
logs = EntrepriseLog.query.order_by(EntrepriseLog.date.desc()).limit(LOGS_LEN).all()
|
logs = EntrepriseLog.query.order_by(EntrepriseLog.date.desc()).limit(LOGS_LEN).all()
|
||||||
return render_template(
|
return render_template(
|
||||||
@ -128,11 +125,19 @@ def fiche_entreprise(id):
|
|||||||
La fiche entreprise comporte les informations de l'entreprise, les contacts de l'entreprise et
|
La fiche entreprise comporte les informations de l'entreprise, les contacts de l'entreprise et
|
||||||
les offres de l'entreprise.
|
les offres de l'entreprise.
|
||||||
"""
|
"""
|
||||||
entreprise = Entreprise.query.filter_by(id=id, visible=True).first_or_404()
|
entreprise = Entreprise.query.filter_by(id=id, visible=True).first_or_404(
|
||||||
|
description=f"fiche entreprise {id} inconnue"
|
||||||
|
)
|
||||||
offres_with_files = []
|
offres_with_files = []
|
||||||
depts = are.get_depts()
|
depts = are.get_depts()
|
||||||
for offre in entreprise.offres:
|
for offre in entreprise.offres:
|
||||||
if date.today() < offre.expiration_date:
|
if not offre.expired and (
|
||||||
|
offre.expiration_date is None
|
||||||
|
or (
|
||||||
|
offre.expiration_date is not None
|
||||||
|
and date.today() < offre.expiration_date
|
||||||
|
)
|
||||||
|
):
|
||||||
offre_with_files = are.get_offre_files_and_depts(offre, depts)
|
offre_with_files = are.get_offre_files_and_depts(offre, depts)
|
||||||
if offre_with_files is not None:
|
if offre_with_files is not None:
|
||||||
offres_with_files.append(offre_with_files)
|
offres_with_files.append(offre_with_files)
|
||||||
@ -165,10 +170,12 @@ def fiche_entreprise(id):
|
|||||||
@permission_required(Permission.RelationsEntreprisesView)
|
@permission_required(Permission.RelationsEntreprisesView)
|
||||||
def logs_entreprise(id):
|
def logs_entreprise(id):
|
||||||
"""
|
"""
|
||||||
Permet d'afficher les logs (toutes les entreprises)
|
Permet d'afficher les logs d'une entreprise
|
||||||
"""
|
"""
|
||||||
page = request.args.get("page", 1, type=int)
|
page = request.args.get("page", 1, type=int)
|
||||||
entreprise = Entreprise.query.filter_by(id=id, visible=True).first_or_404()
|
entreprise = Entreprise.query.filter_by(id=id, visible=True).first_or_404(
|
||||||
|
description=f"logs fiche entreprise {id} inconnu"
|
||||||
|
)
|
||||||
logs = (
|
logs = (
|
||||||
EntrepriseLog.query.order_by(EntrepriseLog.date.desc())
|
EntrepriseLog.query.order_by(EntrepriseLog.date.desc())
|
||||||
.filter_by(object=id)
|
.filter_by(object=id)
|
||||||
@ -188,7 +195,9 @@ def fiche_entreprise_validation(id):
|
|||||||
"""
|
"""
|
||||||
Permet d'afficher la fiche entreprise d'une entreprise a valider
|
Permet d'afficher la fiche entreprise d'une entreprise a valider
|
||||||
"""
|
"""
|
||||||
entreprise = Entreprise.query.filter_by(id=id, visible=False).first_or_404()
|
entreprise = Entreprise.query.filter_by(id=id, visible=False).first_or_404(
|
||||||
|
description=f"fiche entreprise (validation) {id} inconnue"
|
||||||
|
)
|
||||||
contacts = entreprise.contacts
|
contacts = entreprise.contacts
|
||||||
return render_template(
|
return render_template(
|
||||||
"entreprises/fiche_entreprise_validation.html",
|
"entreprises/fiche_entreprise_validation.html",
|
||||||
@ -202,7 +211,7 @@ def fiche_entreprise_validation(id):
|
|||||||
@permission_required(Permission.RelationsEntreprisesView)
|
@permission_required(Permission.RelationsEntreprisesView)
|
||||||
def offres_recues():
|
def offres_recues():
|
||||||
"""
|
"""
|
||||||
Permet d'afficher la page où l'on recoit les offres
|
Permet d'afficher la page où l'on peut voir les offres reçues
|
||||||
"""
|
"""
|
||||||
offres_recues = (
|
offres_recues = (
|
||||||
db.session.query(EntrepriseEnvoiOffre, EntrepriseOffre)
|
db.session.query(EntrepriseEnvoiOffre, EntrepriseOffre)
|
||||||
@ -240,11 +249,15 @@ def offres_expirees(id):
|
|||||||
"""
|
"""
|
||||||
Permet d'afficher la liste des offres expirés d'une entreprise
|
Permet d'afficher la liste des offres expirés d'une entreprise
|
||||||
"""
|
"""
|
||||||
entreprise = Entreprise.query.filter_by(id=id, visible=True).first_or_404()
|
entreprise = Entreprise.query.filter_by(id=id, visible=True).first_or_404(
|
||||||
|
description=f"fiche entreprise {id} inconnue"
|
||||||
|
)
|
||||||
offres_expirees_with_files = []
|
offres_expirees_with_files = []
|
||||||
depts = are.get_depts()
|
depts = are.get_depts()
|
||||||
for offre in entreprise.offres:
|
for offre in entreprise.offres:
|
||||||
if date.today() > offre.expiration_date:
|
if offre.expired or (
|
||||||
|
offre.expiration_date is not None and date.today() > offre.expiration_date
|
||||||
|
):
|
||||||
offre_expiree_with_files = are.get_offre_files_and_depts(offre, depts)
|
offre_expiree_with_files = are.get_offre_files_and_depts(offre, depts)
|
||||||
if offre_expiree_with_files is not None:
|
if offre_expiree_with_files is not None:
|
||||||
offres_expirees_with_files.append(offre_expiree_with_files)
|
offres_expirees_with_files.append(offre_expiree_with_files)
|
||||||
@ -270,7 +283,7 @@ def add_entreprise():
|
|||||||
adresse=form.adresse.data.strip(),
|
adresse=form.adresse.data.strip(),
|
||||||
codepostal=form.codepostal.data.strip(),
|
codepostal=form.codepostal.data.strip(),
|
||||||
ville=form.ville.data.strip(),
|
ville=form.ville.data.strip(),
|
||||||
pays=form.pays.data.strip(),
|
pays=form.pays.data.strip() if form.pays.data.strip() else "FRANCE",
|
||||||
)
|
)
|
||||||
db.session.add(entreprise)
|
db.session.add(entreprise)
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
@ -299,6 +312,10 @@ def add_entreprise():
|
|||||||
else:
|
else:
|
||||||
entreprise.visible = False
|
entreprise.visible = False
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
if EntreprisePreferences.get_email_notifications():
|
||||||
|
are.send_email_notifications_entreprise(
|
||||||
|
"entreprise en attente de validation", entreprise, contact
|
||||||
|
)
|
||||||
flash("L'entreprise a été ajouté à la liste pour la validation.")
|
flash("L'entreprise a été ajouté à la liste pour la validation.")
|
||||||
return redirect(url_for("entreprises.index"))
|
return redirect(url_for("entreprises.index"))
|
||||||
return render_template(
|
return render_template(
|
||||||
@ -314,15 +331,17 @@ def edit_entreprise(id):
|
|||||||
"""
|
"""
|
||||||
Permet de modifier une entreprise de la base avec un formulaire
|
Permet de modifier une entreprise de la base avec un formulaire
|
||||||
"""
|
"""
|
||||||
entreprise = Entreprise.query.filter_by(id=id, visible=True).first_or_404()
|
entreprise = Entreprise.query.filter_by(id=id, visible=True).first_or_404(
|
||||||
form = EntrepriseModificationForm()
|
description=f"entreprise {id} inconnue"
|
||||||
|
)
|
||||||
|
form = EntrepriseModificationForm(hidden_entreprise_siret=entreprise.siret)
|
||||||
if form.validate_on_submit():
|
if form.validate_on_submit():
|
||||||
nom_entreprise = f"<a href=/ScoDoc/entreprises/fiche_entreprise/{entreprise.id}>{form.nom.data.strip()}</a>"
|
nom_entreprise = f"<a href=/ScoDoc/entreprises/fiche_entreprise/{entreprise.id}>{form.nom.data.strip()}</a>"
|
||||||
if entreprise.nom != form.nom.data.strip():
|
if entreprise.nom != form.nom.data.strip():
|
||||||
log = EntrepriseLog(
|
log = EntrepriseLog(
|
||||||
authenticated_user=current_user.user_name,
|
authenticated_user=current_user.user_name,
|
||||||
object=entreprise.id,
|
object=entreprise.id,
|
||||||
text=f"{nom_entreprise} - Modification du nom (ancien nom : {entreprise.nom})",
|
text=f"{nom_entreprise} - Modification du nom (ancien nom: {entreprise.nom})",
|
||||||
)
|
)
|
||||||
entreprise.nom = form.nom.data.strip()
|
entreprise.nom = form.nom.data.strip()
|
||||||
db.session.add(log)
|
db.session.add(log)
|
||||||
@ -330,7 +349,7 @@ def edit_entreprise(id):
|
|||||||
log = EntrepriseLog(
|
log = EntrepriseLog(
|
||||||
authenticated_user=current_user.user_name,
|
authenticated_user=current_user.user_name,
|
||||||
object=entreprise.id,
|
object=entreprise.id,
|
||||||
text=f"{nom_entreprise} - Modification de l'adresse (ancienne adresse : {entreprise.adresse})",
|
text=f"{nom_entreprise} - Modification de l'adresse (ancienne adresse: {entreprise.adresse})",
|
||||||
)
|
)
|
||||||
entreprise.adresse = form.adresse.data.strip()
|
entreprise.adresse = form.adresse.data.strip()
|
||||||
db.session.add(log)
|
db.session.add(log)
|
||||||
@ -338,7 +357,7 @@ def edit_entreprise(id):
|
|||||||
log = EntrepriseLog(
|
log = EntrepriseLog(
|
||||||
authenticated_user=current_user.user_name,
|
authenticated_user=current_user.user_name,
|
||||||
object=entreprise.id,
|
object=entreprise.id,
|
||||||
text=f"{nom_entreprise} - Modification du code postal (ancien code postal : {entreprise.codepostal})",
|
text=f"{nom_entreprise} - Modification du code postal (ancien code postal: {entreprise.codepostal})",
|
||||||
)
|
)
|
||||||
entreprise.codepostal = form.codepostal.data.strip()
|
entreprise.codepostal = form.codepostal.data.strip()
|
||||||
db.session.add(log)
|
db.session.add(log)
|
||||||
@ -346,17 +365,19 @@ def edit_entreprise(id):
|
|||||||
log = EntrepriseLog(
|
log = EntrepriseLog(
|
||||||
authenticated_user=current_user.user_name,
|
authenticated_user=current_user.user_name,
|
||||||
object=entreprise.id,
|
object=entreprise.id,
|
||||||
text=f"{nom_entreprise} - Modification de la ville (ancienne ville : {entreprise.ville})",
|
text=f"{nom_entreprise} - Modification de la ville (ancienne ville: {entreprise.ville})",
|
||||||
)
|
)
|
||||||
entreprise.ville = form.ville.data.strip()
|
entreprise.ville = form.ville.data.strip()
|
||||||
db.session.add(log)
|
db.session.add(log)
|
||||||
if entreprise.pays != form.pays.data.strip():
|
if entreprise.pays != form.pays.data.strip() or not form.pays.data.strip():
|
||||||
log = EntrepriseLog(
|
log = EntrepriseLog(
|
||||||
authenticated_user=current_user.user_name,
|
authenticated_user=current_user.user_name,
|
||||||
object=entreprise.id,
|
object=entreprise.id,
|
||||||
text=f"{nom_entreprise} - Modification du pays (ancien pays : {entreprise.pays})",
|
text=f"{nom_entreprise} - Modification du pays (ancien pays: {entreprise.pays})",
|
||||||
|
)
|
||||||
|
entreprise.pays = (
|
||||||
|
form.pays.data.strip() if form.pays.data.strip() else "FRANCE"
|
||||||
)
|
)
|
||||||
entreprise.pays = form.pays.data.strip()
|
|
||||||
db.session.add(log)
|
db.session.add(log)
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
flash("L'entreprise a été modifié.")
|
flash("L'entreprise a été modifié.")
|
||||||
@ -369,7 +390,7 @@ def edit_entreprise(id):
|
|||||||
form.ville.data = entreprise.ville
|
form.ville.data = entreprise.ville
|
||||||
form.pays.data = entreprise.pays
|
form.pays.data = entreprise.pays
|
||||||
return render_template(
|
return render_template(
|
||||||
"entreprises/form.html",
|
"entreprises/form_modification_entreprise.html",
|
||||||
title="Modification entreprise",
|
title="Modification entreprise",
|
||||||
form=form,
|
form=form,
|
||||||
)
|
)
|
||||||
@ -381,7 +402,9 @@ def delete_entreprise(id):
|
|||||||
"""
|
"""
|
||||||
Permet de supprimer une entreprise de la base avec un formulaire de confirmation
|
Permet de supprimer une entreprise de la base avec un formulaire de confirmation
|
||||||
"""
|
"""
|
||||||
entreprise = Entreprise.query.filter_by(id=id, visible=True).first_or_404()
|
entreprise = Entreprise.query.filter_by(id=id, visible=True).first_or_404(
|
||||||
|
description=f"entreprise {id} inconnue"
|
||||||
|
)
|
||||||
form = SuppressionConfirmationForm()
|
form = SuppressionConfirmationForm()
|
||||||
if form.validate_on_submit():
|
if form.validate_on_submit():
|
||||||
db.session.delete(entreprise)
|
db.session.delete(entreprise)
|
||||||
@ -416,7 +439,9 @@ def validate_entreprise(id):
|
|||||||
Permet de valider une entreprise
|
Permet de valider une entreprise
|
||||||
"""
|
"""
|
||||||
form = ValidationConfirmationForm()
|
form = ValidationConfirmationForm()
|
||||||
entreprise = Entreprise.query.filter_by(id=id, visible=False).first_or_404()
|
entreprise = Entreprise.query.filter_by(id=id, visible=False).first_or_404(
|
||||||
|
description=f"entreprise (validation) {id} inconnue"
|
||||||
|
)
|
||||||
if form.validate_on_submit():
|
if form.validate_on_submit():
|
||||||
entreprise.visible = True
|
entreprise.visible = True
|
||||||
nom_entreprise = f"<a href=/ScoDoc/entreprises/fiche_entreprise/{entreprise.id}>{entreprise.nom}</a>"
|
nom_entreprise = f"<a href=/ScoDoc/entreprises/fiche_entreprise/{entreprise.id}>{entreprise.nom}</a>"
|
||||||
@ -441,7 +466,9 @@ def delete_validation_entreprise(id):
|
|||||||
"""
|
"""
|
||||||
Permet de supprimer une entreprise en attente de validation avec une formulaire de validation
|
Permet de supprimer une entreprise en attente de validation avec une formulaire de validation
|
||||||
"""
|
"""
|
||||||
entreprise = Entreprise.query.filter_by(id=id, visible=False).first_or_404()
|
entreprise = Entreprise.query.filter_by(id=id, visible=False).first_or_404(
|
||||||
|
description=f"entreprise (validation) {id} inconnue"
|
||||||
|
)
|
||||||
form = SuppressionConfirmationForm()
|
form = SuppressionConfirmationForm()
|
||||||
if form.validate_on_submit():
|
if form.validate_on_submit():
|
||||||
db.session.delete(entreprise)
|
db.session.delete(entreprise)
|
||||||
@ -461,7 +488,9 @@ def add_offre(id):
|
|||||||
"""
|
"""
|
||||||
Permet d'ajouter une offre a une entreprise
|
Permet d'ajouter une offre a une entreprise
|
||||||
"""
|
"""
|
||||||
entreprise = Entreprise.query.filter_by(id=id, visible=True).first_or_404()
|
entreprise = Entreprise.query.filter_by(id=id, visible=True).first_or_404(
|
||||||
|
description=f"entreprise {id} inconnue"
|
||||||
|
)
|
||||||
form = OffreCreationForm()
|
form = OffreCreationForm()
|
||||||
if form.validate_on_submit():
|
if form.validate_on_submit():
|
||||||
offre = EntrepriseOffre(
|
offre = EntrepriseOffre(
|
||||||
@ -504,7 +533,9 @@ def edit_offre(id):
|
|||||||
"""
|
"""
|
||||||
Permet de modifier une offre
|
Permet de modifier une offre
|
||||||
"""
|
"""
|
||||||
offre = EntrepriseOffre.query.filter_by(id=id).first_or_404()
|
offre = EntrepriseOffre.query.filter_by(id=id).first_or_404(
|
||||||
|
description=f"offre {id} inconnue"
|
||||||
|
)
|
||||||
offre_depts = EntrepriseOffreDepartement.query.filter_by(offre_id=offre.id).all()
|
offre_depts = EntrepriseOffreDepartement.query.filter_by(offre_id=offre.id).all()
|
||||||
form = OffreModificationForm()
|
form = OffreModificationForm()
|
||||||
offre_depts_list = [(offre_dept.dept_id) for offre_dept in offre_depts]
|
offre_depts_list = [(offre_dept.dept_id) for offre_dept in offre_depts]
|
||||||
@ -559,7 +590,9 @@ def delete_offre(id):
|
|||||||
"""
|
"""
|
||||||
Permet de supprimer une offre
|
Permet de supprimer une offre
|
||||||
"""
|
"""
|
||||||
offre = EntrepriseOffre.query.filter_by(id=id).first_or_404()
|
offre = EntrepriseOffre.query.filter_by(id=id).first_or_404(
|
||||||
|
description=f"offre {id} inconnue"
|
||||||
|
)
|
||||||
entreprise_id = offre.entreprise.id
|
entreprise_id = offre.entreprise.id
|
||||||
form = SuppressionConfirmationForm()
|
form = SuppressionConfirmationForm()
|
||||||
if form.validate_on_submit():
|
if form.validate_on_submit():
|
||||||
@ -591,21 +624,44 @@ def delete_offre(id):
|
|||||||
@bp.route("/delete_offre_recue/<int:id>", methods=["GET", "POST"])
|
@bp.route("/delete_offre_recue/<int:id>", methods=["GET", "POST"])
|
||||||
@permission_required(Permission.RelationsEntreprisesView)
|
@permission_required(Permission.RelationsEntreprisesView)
|
||||||
def delete_offre_recue(id):
|
def delete_offre_recue(id):
|
||||||
|
"""
|
||||||
|
Permet de supprimer une offre reçue
|
||||||
|
"""
|
||||||
offre_recue = EntrepriseEnvoiOffre.query.filter_by(
|
offre_recue = EntrepriseEnvoiOffre.query.filter_by(
|
||||||
id=id, receiver_id=current_user.id
|
id=id, receiver_id=current_user.id
|
||||||
).first_or_404()
|
).first_or_404(description=f"offre recu {id} inconnue")
|
||||||
db.session.delete(offre_recue)
|
db.session.delete(offre_recue)
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
return redirect(url_for("entreprises.offres_recues"))
|
return redirect(url_for("entreprises.offres_recues"))
|
||||||
|
|
||||||
|
|
||||||
|
@bp.route("/expired/<int:id>", methods=["GET", "POST"])
|
||||||
|
@permission_required(Permission.RelationsEntreprisesChange)
|
||||||
|
def expired(id):
|
||||||
|
"""
|
||||||
|
Permet de rendre expirée et non expirée une offre
|
||||||
|
"""
|
||||||
|
offre = EntrepriseOffre.query.filter_by(id=id).first_or_404(
|
||||||
|
description=f"offre {id} inconnue"
|
||||||
|
)
|
||||||
|
offre.expired = not offre.expired
|
||||||
|
db.session.commit()
|
||||||
|
if offre.expired:
|
||||||
|
flash("L'offre a été rendu expirée")
|
||||||
|
else:
|
||||||
|
flash("L'offre a été rendu non expirée")
|
||||||
|
return redirect(url_for("entreprises.fiche_entreprise", id=offre.entreprise_id))
|
||||||
|
|
||||||
|
|
||||||
@bp.route("/add_contact/<int:id>", methods=["GET", "POST"])
|
@bp.route("/add_contact/<int:id>", methods=["GET", "POST"])
|
||||||
@permission_required(Permission.RelationsEntreprisesChange)
|
@permission_required(Permission.RelationsEntreprisesChange)
|
||||||
def add_contact(id):
|
def add_contact(id):
|
||||||
"""
|
"""
|
||||||
Permet d'ajouter un contact a une entreprise
|
Permet d'ajouter un contact a une entreprise
|
||||||
"""
|
"""
|
||||||
entreprise = Entreprise.query.filter_by(id=id, visible=True).first_or_404()
|
entreprise = Entreprise.query.filter_by(id=id, visible=True).first_or_404(
|
||||||
|
description=f"entreprise {id} inconnue"
|
||||||
|
)
|
||||||
form = ContactCreationForm(hidden_entreprise_id=entreprise.id)
|
form = ContactCreationForm(hidden_entreprise_id=entreprise.id)
|
||||||
if form.validate_on_submit():
|
if form.validate_on_submit():
|
||||||
contact = EntrepriseContact(
|
contact = EntrepriseContact(
|
||||||
@ -640,7 +696,9 @@ def edit_contact(id):
|
|||||||
"""
|
"""
|
||||||
Permet de modifier un contact
|
Permet de modifier un contact
|
||||||
"""
|
"""
|
||||||
contact = EntrepriseContact.query.filter_by(id=id).first_or_404()
|
contact = EntrepriseContact.query.filter_by(id=id).first_or_404(
|
||||||
|
description=f"contact {id} inconnu"
|
||||||
|
)
|
||||||
form = ContactModificationForm(
|
form = ContactModificationForm(
|
||||||
hidden_entreprise_id=contact.entreprise_id,
|
hidden_entreprise_id=contact.entreprise_id,
|
||||||
hidden_contact_id=contact.id,
|
hidden_contact_id=contact.id,
|
||||||
@ -683,7 +741,9 @@ def delete_contact(id):
|
|||||||
"""
|
"""
|
||||||
Permet de supprimer un contact
|
Permet de supprimer un contact
|
||||||
"""
|
"""
|
||||||
contact = EntrepriseContact.query.filter_by(id=id).first_or_404()
|
contact = EntrepriseContact.query.filter_by(id=id).first_or_404(
|
||||||
|
description=f"contact {id} inconnu"
|
||||||
|
)
|
||||||
form = SuppressionConfirmationForm()
|
form = SuppressionConfirmationForm()
|
||||||
if form.validate_on_submit():
|
if form.validate_on_submit():
|
||||||
contact_count = EntrepriseContact.query.filter_by(
|
contact_count = EntrepriseContact.query.filter_by(
|
||||||
@ -722,7 +782,9 @@ def add_historique(id):
|
|||||||
"""
|
"""
|
||||||
Permet d'ajouter un étudiant ayant réalisé un stage ou une alternance sur la fiche entreprise de l'entreprise
|
Permet d'ajouter un étudiant ayant réalisé un stage ou une alternance sur la fiche entreprise de l'entreprise
|
||||||
"""
|
"""
|
||||||
entreprise = Entreprise.query.filter_by(id=id, visible=True).first_or_404()
|
entreprise = Entreprise.query.filter_by(id=id, visible=True).first_or_404(
|
||||||
|
description=f"entreprise {id} inconnue"
|
||||||
|
)
|
||||||
form = HistoriqueCreationForm()
|
form = HistoriqueCreationForm()
|
||||||
if form.validate_on_submit():
|
if form.validate_on_submit():
|
||||||
etudiant_nomcomplet = form.etudiant.data.upper().strip()
|
etudiant_nomcomplet = form.etudiant.data.upper().strip()
|
||||||
@ -763,9 +825,11 @@ def add_historique(id):
|
|||||||
@permission_required(Permission.RelationsEntreprisesSend)
|
@permission_required(Permission.RelationsEntreprisesSend)
|
||||||
def envoyer_offre(id):
|
def envoyer_offre(id):
|
||||||
"""
|
"""
|
||||||
Permet d'envoyer une offre à un utilisateur
|
Permet d'envoyer une offre à un utilisateur ScoDoc
|
||||||
"""
|
"""
|
||||||
offre = EntrepriseOffre.query.filter_by(id=id).first_or_404()
|
offre = EntrepriseOffre.query.filter_by(id=id).first_or_404(
|
||||||
|
description=f"offre {id} inconnue"
|
||||||
|
)
|
||||||
form = EnvoiOffreForm()
|
form = EnvoiOffreForm()
|
||||||
if form.validate_on_submit():
|
if form.validate_on_submit():
|
||||||
responsable_data = form.responsable.data.upper().strip()
|
responsable_data = form.responsable.data.upper().strip()
|
||||||
@ -799,7 +863,7 @@ def json_etudiants():
|
|||||||
"""
|
"""
|
||||||
Permet de récuperer un JSON avec tous les étudiants
|
Permet de récuperer un JSON avec tous les étudiants
|
||||||
"""
|
"""
|
||||||
if request.args.get("term") == None:
|
if request.args.get("term") is None:
|
||||||
abort(400)
|
abort(400)
|
||||||
term = request.args.get("term").strip()
|
term = request.args.get("term").strip()
|
||||||
etudiants = Identite.query.filter(Identite.nom.ilike(f"%{term}%")).all()
|
etudiants = Identite.query.filter(Identite.nom.ilike(f"%{term}%")).all()
|
||||||
@ -823,9 +887,9 @@ def json_etudiants():
|
|||||||
@permission_required(Permission.RelationsEntreprisesChange)
|
@permission_required(Permission.RelationsEntreprisesChange)
|
||||||
def json_responsables():
|
def json_responsables():
|
||||||
"""
|
"""
|
||||||
Permet de récuperer un JSON avec tous les étudiants
|
Permet de récuperer un JSON avec tous les utilisateurs ScoDoc
|
||||||
"""
|
"""
|
||||||
if request.args.get("term") == None:
|
if request.args.get("term") is None:
|
||||||
abort(400)
|
abort(400)
|
||||||
term = request.args.get("term").strip()
|
term = request.args.get("term").strip()
|
||||||
responsables = User.query.filter(
|
responsables = User.query.filter(
|
||||||
@ -849,7 +913,7 @@ def export_entreprises():
|
|||||||
"""
|
"""
|
||||||
entreprises = Entreprise.query.filter_by(visible=True).all()
|
entreprises = Entreprise.query.filter_by(visible=True).all()
|
||||||
if entreprises:
|
if entreprises:
|
||||||
keys = ["siret", "nom", "adresse", "ville", "code_postal", "pays"]
|
keys = ["siret", "nom_entreprise", "adresse", "ville", "code_postal", "pays"]
|
||||||
titles = keys[:]
|
titles = keys[:]
|
||||||
L = [
|
L = [
|
||||||
[entreprise.to_dict().get(k, "") for k in keys]
|
[entreprise.to_dict().get(k, "") for k in keys]
|
||||||
@ -867,14 +931,14 @@ def export_entreprises():
|
|||||||
@permission_required(Permission.RelationsEntreprisesExport)
|
@permission_required(Permission.RelationsEntreprisesExport)
|
||||||
def get_import_entreprises_file_sample():
|
def get_import_entreprises_file_sample():
|
||||||
"""
|
"""
|
||||||
Permet de récupérer un fichier pour pouvoir importer des entreprises
|
Permet de récupérer un fichier exemple vide pour pouvoir importer des entreprises
|
||||||
"""
|
"""
|
||||||
keys = [
|
keys = [
|
||||||
"siret",
|
"siret",
|
||||||
"nom_entreprise",
|
"nom_entreprise",
|
||||||
"adresse",
|
"adresse",
|
||||||
"ville",
|
"ville",
|
||||||
"codepostal",
|
"code_postal",
|
||||||
"pays",
|
"pays",
|
||||||
]
|
]
|
||||||
titles = keys[:]
|
titles = keys[:]
|
||||||
@ -902,7 +966,7 @@ def import_entreprises():
|
|||||||
entreprises_import = []
|
entreprises_import = []
|
||||||
siret_list = []
|
siret_list = []
|
||||||
ligne = 0
|
ligne = 0
|
||||||
titles = ["siret", "nom_entreprise", "adresse", "ville", "codepostal", "pays"]
|
titles = ["siret", "nom_entreprise", "adresse", "ville", "code_postal", "pays"]
|
||||||
if data[1][0] != titles:
|
if data[1][0] != titles:
|
||||||
flash("Veuillez utilisez la feuille excel à remplir")
|
flash("Veuillez utilisez la feuille excel à remplir")
|
||||||
return render_template(
|
return render_template(
|
||||||
@ -982,7 +1046,7 @@ def export_contacts():
|
|||||||
"mail",
|
"mail",
|
||||||
"poste",
|
"poste",
|
||||||
"service",
|
"service",
|
||||||
"entreprise_id",
|
"entreprise_siret",
|
||||||
]
|
]
|
||||||
titles = keys[:]
|
titles = keys[:]
|
||||||
L = [[contact.to_dict().get(k, "") for k in keys] for contact in contacts]
|
L = [[contact.to_dict().get(k, "") for k in keys] for contact in contacts]
|
||||||
@ -998,7 +1062,7 @@ def export_contacts():
|
|||||||
@permission_required(Permission.RelationsEntreprisesExport)
|
@permission_required(Permission.RelationsEntreprisesExport)
|
||||||
def get_import_contacts_file_sample():
|
def get_import_contacts_file_sample():
|
||||||
"""
|
"""
|
||||||
Permet de récupérer un fichier pour pouvoir importer des contacts
|
Permet de récupérer un fichier exemple vide pour pouvoir importer des contacts
|
||||||
"""
|
"""
|
||||||
keys = [
|
keys = [
|
||||||
"nom",
|
"nom",
|
||||||
@ -1007,7 +1071,7 @@ def get_import_contacts_file_sample():
|
|||||||
"mail",
|
"mail",
|
||||||
"poste",
|
"poste",
|
||||||
"service",
|
"service",
|
||||||
"entreprise_id",
|
"entreprise_siret",
|
||||||
]
|
]
|
||||||
titles = keys[:]
|
titles = keys[:]
|
||||||
title = "ImportContacts"
|
title = "ImportContacts"
|
||||||
@ -1041,7 +1105,7 @@ def import_contacts():
|
|||||||
"mail",
|
"mail",
|
||||||
"poste",
|
"poste",
|
||||||
"service",
|
"service",
|
||||||
"entreprise_id",
|
"entreprise_siret",
|
||||||
]
|
]
|
||||||
if data[1][0] != titles:
|
if data[1][0] != titles:
|
||||||
flash("Veuillez utilisez la feuille excel à remplir")
|
flash("Veuillez utilisez la feuille excel à remplir")
|
||||||
@ -1131,7 +1195,7 @@ def get_offre_file(entreprise_id, offre_id, filedir, filename):
|
|||||||
as_attachment=True,
|
as_attachment=True,
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
abort(404)
|
abort(404, description=f"fichier {filename} inconnu")
|
||||||
|
|
||||||
|
|
||||||
@bp.route("/add_offre_file/<int:offre_id>", methods=["GET", "POST"])
|
@bp.route("/add_offre_file/<int:offre_id>", methods=["GET", "POST"])
|
||||||
@ -1140,7 +1204,9 @@ def add_offre_file(offre_id):
|
|||||||
"""
|
"""
|
||||||
Permet d'ajouter un fichier à une offre
|
Permet d'ajouter un fichier à une offre
|
||||||
"""
|
"""
|
||||||
offre = EntrepriseOffre.query.filter_by(id=offre_id).first_or_404()
|
offre = EntrepriseOffre.query.filter_by(id=offre_id).first_or_404(
|
||||||
|
description=f"offre {offre_id} inconnue"
|
||||||
|
)
|
||||||
form = AjoutFichierForm()
|
form = AjoutFichierForm()
|
||||||
if form.validate_on_submit():
|
if form.validate_on_submit():
|
||||||
date = f"{datetime.now().strftime('%Y-%m-%d-%H-%M-%S')}"
|
date = f"{datetime.now().strftime('%Y-%m-%d-%H-%M-%S')}"
|
||||||
@ -1170,7 +1236,9 @@ def delete_offre_file(offre_id, filedir):
|
|||||||
"""
|
"""
|
||||||
Permet de supprimer un fichier d'une offre
|
Permet de supprimer un fichier d'une offre
|
||||||
"""
|
"""
|
||||||
offre = EntrepriseOffre.query.filter_by(id=offre_id).first_or_404()
|
offre = EntrepriseOffre.query.filter_by(id=offre_id).first_or_404(
|
||||||
|
description=f"offre {offre_id} inconnue"
|
||||||
|
)
|
||||||
form = SuppressionConfirmationForm()
|
form = SuppressionConfirmationForm()
|
||||||
if form.validate_on_submit():
|
if form.validate_on_submit():
|
||||||
path = os.path.join(
|
path = os.path.join(
|
||||||
@ -1191,3 +1259,24 @@ def delete_offre_file(offre_id, filedir):
|
|||||||
title="Suppression fichier d'une offre",
|
title="Suppression fichier d'une offre",
|
||||||
form=form,
|
form=form,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@bp.route("/preferences", methods=["GET", "POST"])
|
||||||
|
@permission_required(Permission.RelationsEntreprisesValidate)
|
||||||
|
def preferences():
|
||||||
|
"""
|
||||||
|
Permet d'afficher la page des préférences du module gestion des relations entreprises
|
||||||
|
"""
|
||||||
|
form = PreferencesForm()
|
||||||
|
if form.validate_on_submit():
|
||||||
|
EntreprisePreferences.set_email_notifications(form.mail_entreprise.data.strip())
|
||||||
|
EntreprisePreferences.set_check_siret(int(form.check_siret.data))
|
||||||
|
return redirect(url_for("entreprises.index"))
|
||||||
|
elif request.method == "GET":
|
||||||
|
form.mail_entreprise.data = EntreprisePreferences.get_email_notifications()
|
||||||
|
form.check_siret.data = int(EntreprisePreferences.get_check_siret())
|
||||||
|
return render_template(
|
||||||
|
"entreprises/preferences.html",
|
||||||
|
title="Préférences",
|
||||||
|
form=form,
|
||||||
|
)
|
||||||
|
@ -122,6 +122,7 @@ class FormSemestre(db.Model):
|
|||||||
return f"<{self.__class__.__name__} {self.id} {self.titre_num()}>"
|
return f"<{self.__class__.__name__} {self.id} {self.titre_num()}>"
|
||||||
|
|
||||||
def to_dict(self):
|
def to_dict(self):
|
||||||
|
"dict (compatible ScoDoc7)"
|
||||||
d = dict(self.__dict__)
|
d = dict(self.__dict__)
|
||||||
d.pop("_sa_instance_state", None)
|
d.pop("_sa_instance_state", None)
|
||||||
# ScoDoc7 output_formators: (backward compat)
|
# ScoDoc7 output_formators: (backward compat)
|
||||||
@ -364,7 +365,7 @@ class FormSemestre(db.Model):
|
|||||||
|
|
||||||
def get_abs_count(self, etudid):
|
def get_abs_count(self, etudid):
|
||||||
"""Les comptes d'absences de cet étudiant dans ce semestre:
|
"""Les comptes d'absences de cet étudiant dans ce semestre:
|
||||||
tuple (nb abs non justifiées, nb abs justifiées)
|
tuple (nb abs, nb abs justifiées)
|
||||||
Utilise un cache.
|
Utilise un cache.
|
||||||
"""
|
"""
|
||||||
from app.scodoc import sco_abs
|
from app.scodoc import sco_abs
|
||||||
|
@ -1037,7 +1037,7 @@ def get_abs_count(etudid, sem):
|
|||||||
|
|
||||||
def get_abs_count_in_interval(etudid, date_debut_iso, date_fin_iso):
|
def get_abs_count_in_interval(etudid, date_debut_iso, date_fin_iso):
|
||||||
"""Les comptes d'absences de cet étudiant entre ces deux dates, incluses:
|
"""Les comptes d'absences de cet étudiant entre ces deux dates, incluses:
|
||||||
tuple (nb abs non justifiées, nb abs justifiées)
|
tuple (nb abs, nb abs justifiées)
|
||||||
Utilise un cache.
|
Utilise un cache.
|
||||||
"""
|
"""
|
||||||
key = str(etudid) + "_" + date_debut_iso + "_" + date_fin_iso
|
key = str(etudid) + "_" + date_debut_iso + "_" + date_fin_iso
|
||||||
|
@ -28,30 +28,21 @@
|
|||||||
"""Génération des bulletins de notes
|
"""Génération des bulletins de notes
|
||||||
|
|
||||||
"""
|
"""
|
||||||
from app.models import formsemestre
|
|
||||||
import time
|
|
||||||
import pprint
|
|
||||||
import email
|
import email
|
||||||
from email.mime.multipart import MIMEMultipart
|
import pprint
|
||||||
from email.mime.text import MIMEText
|
import time
|
||||||
from email.mime.base import MIMEBase
|
|
||||||
from email.header import Header
|
|
||||||
from reportlab.lib.colors import Color
|
|
||||||
import urllib
|
|
||||||
|
|
||||||
from flask import g, request
|
from flask import g, request
|
||||||
from flask import url_for
|
from flask import url_for
|
||||||
from flask_login import current_user
|
from flask_login import current_user
|
||||||
from flask_mail import Message
|
from flask_mail import Message
|
||||||
from app.models.moduleimpls import ModuleImplInscription
|
|
||||||
|
|
||||||
import app.scodoc.sco_utils as scu
|
from app import email
|
||||||
from app.scodoc.sco_utils import ModuleType
|
|
||||||
import app.scodoc.notesdb as ndb
|
|
||||||
from app import log
|
from app import log
|
||||||
|
from app.but import bulletin_but
|
||||||
from app.comp import res_sem
|
from app.comp import res_sem
|
||||||
from app.comp.res_common import NotesTableCompat
|
from app.comp.res_common import NotesTableCompat
|
||||||
from app.models import FormSemestre
|
from app.models import FormSemestre, Identite, ModuleImplInscription
|
||||||
from app.scodoc.sco_permissions import Permission
|
from app.scodoc.sco_permissions import Permission
|
||||||
from app.scodoc.sco_exceptions import AccessDenied, ScoValueError
|
from app.scodoc.sco_exceptions import AccessDenied, ScoValueError
|
||||||
from app.scodoc import html_sco_header
|
from app.scodoc import html_sco_header
|
||||||
@ -60,9 +51,9 @@ from app.scodoc import sco_abs
|
|||||||
from app.scodoc import sco_abs_views
|
from app.scodoc import sco_abs_views
|
||||||
from app.scodoc import sco_bulletins_generator
|
from app.scodoc import sco_bulletins_generator
|
||||||
from app.scodoc import sco_bulletins_json
|
from app.scodoc import sco_bulletins_json
|
||||||
|
from app.scodoc import sco_bulletins_pdf
|
||||||
from app.scodoc import sco_bulletins_xml
|
from app.scodoc import sco_bulletins_xml
|
||||||
from app.scodoc import sco_codes_parcours
|
from app.scodoc import sco_codes_parcours
|
||||||
from app.scodoc import sco_cache
|
|
||||||
from app.scodoc import sco_etud
|
from app.scodoc import sco_etud
|
||||||
from app.scodoc import sco_evaluation_db
|
from app.scodoc import sco_evaluation_db
|
||||||
from app.scodoc import sco_formations
|
from app.scodoc import sco_formations
|
||||||
@ -73,7 +64,9 @@ from app.scodoc import sco_photos
|
|||||||
from app.scodoc import sco_preferences
|
from app.scodoc import sco_preferences
|
||||||
from app.scodoc import sco_pvjury
|
from app.scodoc import sco_pvjury
|
||||||
from app.scodoc import sco_users
|
from app.scodoc import sco_users
|
||||||
from app import email
|
import app.scodoc.sco_utils as scu
|
||||||
|
from app.scodoc.sco_utils import ModuleType, fmt_note
|
||||||
|
import app.scodoc.notesdb as ndb
|
||||||
|
|
||||||
# ----- CLASSES DE BULLETINS DE NOTES
|
# ----- CLASSES DE BULLETINS DE NOTES
|
||||||
from app.scodoc import sco_bulletins_standard
|
from app.scodoc import sco_bulletins_standard
|
||||||
@ -190,39 +183,23 @@ def formsemestre_bulletinetud_dict(formsemestre_id, etudid, version="long"):
|
|||||||
show_mention=prefs["bul_show_mention"],
|
show_mention=prefs["bul_show_mention"],
|
||||||
)
|
)
|
||||||
|
|
||||||
if dpv:
|
|
||||||
I["decision_sem"] = dpv["decisions"][0]["decision_sem"]
|
|
||||||
else:
|
|
||||||
I["decision_sem"] = ""
|
|
||||||
I.update(infos)
|
I.update(infos)
|
||||||
|
|
||||||
I["etud_etat_html"] = _get_etud_etat_html(
|
I["etud_etat_html"] = _get_etud_etat_html(
|
||||||
formsemestre.etuds_inscriptions[etudid].etat
|
formsemestre.etuds_inscriptions[etudid].etat
|
||||||
)
|
)
|
||||||
I["etud_etat"] = nt.get_etud_etat(etudid)
|
I["etud_etat"] = nt.get_etud_etat(etudid)
|
||||||
I["filigranne"] = ""
|
I["filigranne"] = sco_bulletins_pdf.get_filigranne(
|
||||||
|
I["etud_etat"], prefs, decision_dem=I["decision_sem"]
|
||||||
|
)
|
||||||
I["demission"] = ""
|
I["demission"] = ""
|
||||||
if I["etud_etat"] == "D":
|
if I["etud_etat"] == scu.DEMISSION:
|
||||||
I["demission"] = "(Démission)"
|
I["demission"] = "(Démission)"
|
||||||
I["filigranne"] = "Démission"
|
|
||||||
elif I["etud_etat"] == sco_codes_parcours.DEF:
|
elif I["etud_etat"] == sco_codes_parcours.DEF:
|
||||||
I["demission"] = "(Défaillant)"
|
I["demission"] = "(Défaillant)"
|
||||||
I["filigranne"] = "Défaillant"
|
|
||||||
elif (prefs["bul_show_temporary"] and not I["decision_sem"]) or prefs[
|
|
||||||
"bul_show_temporary_forced"
|
|
||||||
]:
|
|
||||||
I["filigranne"] = prefs["bul_temporary_txt"]
|
|
||||||
|
|
||||||
# --- Appreciations
|
# --- Appreciations
|
||||||
cnx = ndb.GetDBConnexion()
|
I.update(get_appreciations_list(formsemestre_id, etudid))
|
||||||
apprecs = sco_etud.appreciations_list(
|
|
||||||
cnx, args={"etudid": etudid, "formsemestre_id": formsemestre_id}
|
|
||||||
)
|
|
||||||
I["appreciations_list"] = apprecs
|
|
||||||
I["appreciations_txt"] = [x["date"] + ": " + x["comment"] for x in apprecs]
|
|
||||||
I["appreciations"] = I[
|
|
||||||
"appreciations_txt"
|
|
||||||
] # deprecated / keep it for backward compat in templates
|
|
||||||
|
|
||||||
# --- Notes
|
# --- Notes
|
||||||
ues = nt.get_ues_stat_dict()
|
ues = nt.get_ues_stat_dict()
|
||||||
@ -316,7 +293,7 @@ def formsemestre_bulletinetud_dict(formsemestre_id, etudid, version="long"):
|
|||||||
else:
|
else:
|
||||||
u["cur_moy_ue_txt"] = "bonus appliqué sur les UEs"
|
u["cur_moy_ue_txt"] = "bonus appliqué sur les UEs"
|
||||||
else:
|
else:
|
||||||
u["cur_moy_ue_txt"] = "bonus de %.3g points" % x
|
u["cur_moy_ue_txt"] = f"bonus de {fmt_note(x)} points"
|
||||||
if nt.bonus_ues is not None:
|
if nt.bonus_ues is not None:
|
||||||
u["cur_moy_ue_txt"] += " (+ues)"
|
u["cur_moy_ue_txt"] += " (+ues)"
|
||||||
u["moy_ue_txt"] = scu.fmt_note(ue_status["moy"])
|
u["moy_ue_txt"] = scu.fmt_note(ue_status["moy"])
|
||||||
@ -414,6 +391,21 @@ def formsemestre_bulletinetud_dict(formsemestre_id, etudid, version="long"):
|
|||||||
return C
|
return C
|
||||||
|
|
||||||
|
|
||||||
|
def get_appreciations_list(formsemestre_id: int, etudid: int) -> dict:
|
||||||
|
"""Appréciations pour cet étudiant dans ce semestre"""
|
||||||
|
cnx = ndb.GetDBConnexion()
|
||||||
|
apprecs = sco_etud.appreciations_list(
|
||||||
|
cnx, args={"etudid": etudid, "formsemestre_id": formsemestre_id}
|
||||||
|
)
|
||||||
|
d = {
|
||||||
|
"appreciations_list": apprecs,
|
||||||
|
"appreciations_txt": [x["date"] + ": " + x["comment"] for x in apprecs],
|
||||||
|
}
|
||||||
|
# deprecated / keep it for backward compat in templates:
|
||||||
|
d["appreciations"] = d["appreciations_txt"]
|
||||||
|
return d
|
||||||
|
|
||||||
|
|
||||||
def _get_etud_etat_html(etat: str) -> str:
|
def _get_etud_etat_html(etat: str) -> str:
|
||||||
"""chaine html représentant l'état (backward compat sco7)"""
|
"""chaine html représentant l'état (backward compat sco7)"""
|
||||||
if etat == scu.INSCRIT: # "I"
|
if etat == scu.INSCRIT: # "I"
|
||||||
@ -689,6 +681,7 @@ def etud_descr_situation_semestre(
|
|||||||
descr_defaillance : "Défaillant" ou vide si non défaillant.
|
descr_defaillance : "Défaillant" ou vide si non défaillant.
|
||||||
decision_jury : "Validé", "Ajourné", ... (code semestre)
|
decision_jury : "Validé", "Ajourné", ... (code semestre)
|
||||||
descr_decision_jury : "Décision jury: Validé" (une phrase)
|
descr_decision_jury : "Décision jury: Validé" (une phrase)
|
||||||
|
decision_sem :
|
||||||
decisions_ue : noms (acronymes) des UE validées, séparées par des virgules.
|
decisions_ue : noms (acronymes) des UE validées, séparées par des virgules.
|
||||||
descr_decisions_ue : ' UE acquises: UE1, UE2', ou vide si pas de dec. ou si pas show_uevalid
|
descr_decisions_ue : ' UE acquises: UE1, UE2', ou vide si pas de dec. ou si pas show_uevalid
|
||||||
descr_mention : 'Mention Bien', ou vide si pas de mention ou si pas show_mention
|
descr_mention : 'Mention Bien', ou vide si pas de mention ou si pas show_mention
|
||||||
@ -698,7 +691,7 @@ def etud_descr_situation_semestre(
|
|||||||
|
|
||||||
# --- Situation et décisions jury
|
# --- Situation et décisions jury
|
||||||
|
|
||||||
# demission/inscription ?
|
# démission/inscription ?
|
||||||
events = sco_etud.scolar_events_list(
|
events = sco_etud.scolar_events_list(
|
||||||
cnx, args={"etudid": etudid, "formsemestre_id": formsemestre_id}
|
cnx, args={"etudid": etudid, "formsemestre_id": formsemestre_id}
|
||||||
)
|
)
|
||||||
@ -765,11 +758,15 @@ def etud_descr_situation_semestre(
|
|||||||
infos["situation"] += " " + infos["descr_defaillance"]
|
infos["situation"] += " " + infos["descr_defaillance"]
|
||||||
|
|
||||||
dpv = sco_pvjury.dict_pvjury(formsemestre_id, etudids=[etudid])
|
dpv = sco_pvjury.dict_pvjury(formsemestre_id, etudids=[etudid])
|
||||||
|
if dpv:
|
||||||
|
infos["decision_sem"] = dpv["decisions"][0]["decision_sem"]
|
||||||
|
else:
|
||||||
|
infos["decision_sem"] = ""
|
||||||
|
|
||||||
if not show_decisions:
|
if not show_decisions:
|
||||||
return infos, dpv
|
return infos, dpv
|
||||||
|
|
||||||
# Decisions de jury:
|
# Décisions de jury:
|
||||||
pv = dpv["decisions"][0]
|
pv = dpv["decisions"][0]
|
||||||
dec = ""
|
dec = ""
|
||||||
if pv["decision_sem_descr"]:
|
if pv["decision_sem_descr"]:
|
||||||
@ -821,11 +818,15 @@ def formsemestre_bulletinetud(
|
|||||||
except:
|
except:
|
||||||
sco_etud.log_unknown_etud()
|
sco_etud.log_unknown_etud()
|
||||||
raise ScoValueError("étudiant inconnu")
|
raise ScoValueError("étudiant inconnu")
|
||||||
# API, donc erreurs admises en ScoValueError
|
|
||||||
sem = sco_formsemestre.get_formsemestre(formsemestre_id, raise_soft_exc=True)
|
formsemestre: FormSemestre = FormSemestre.query.get(formsemestre_id)
|
||||||
|
if not formsemestre:
|
||||||
|
# API, donc erreurs admises
|
||||||
|
raise ScoValueError(f"semestre {formsemestre_id} inconnu !")
|
||||||
|
sem = formsemestre.to_dict()
|
||||||
|
|
||||||
bulletin = do_formsemestre_bulletinetud(
|
bulletin = do_formsemestre_bulletinetud(
|
||||||
formsemestre_id,
|
formsemestre,
|
||||||
etudid,
|
etudid,
|
||||||
format=format,
|
format=format,
|
||||||
version=version,
|
version=version,
|
||||||
@ -837,7 +838,6 @@ def formsemestre_bulletinetud(
|
|||||||
filename = scu.bul_filename(sem, etud, format)
|
filename = scu.bul_filename(sem, etud, format)
|
||||||
return scu.send_file(bulletin, filename, mime=scu.get_mime_suffix(format)[0])
|
return scu.send_file(bulletin, filename, mime=scu.get_mime_suffix(format)[0])
|
||||||
|
|
||||||
sem = sco_formsemestre.get_formsemestre(formsemestre_id)
|
|
||||||
H = [
|
H = [
|
||||||
_formsemestre_bulletinetud_header_html(
|
_formsemestre_bulletinetud_header_html(
|
||||||
etud, etudid, sem, formsemestre_id, format, version
|
etud, etudid, sem, formsemestre_id, format, version
|
||||||
@ -894,14 +894,14 @@ def can_send_bulletin_by_mail(formsemestre_id):
|
|||||||
|
|
||||||
|
|
||||||
def do_formsemestre_bulletinetud(
|
def do_formsemestre_bulletinetud(
|
||||||
formsemestre_id,
|
formsemestre: FormSemestre,
|
||||||
etudid,
|
etudid: int,
|
||||||
version="long", # short, long, selectedevals
|
version="long", # short, long, selectedevals
|
||||||
format="html",
|
format="html",
|
||||||
nohtml=False,
|
nohtml=False,
|
||||||
xml_with_decisions=False, # force decisions dans XML
|
xml_with_decisions=False, # force décisions dans XML
|
||||||
force_publishing=False, # force publication meme si semestre non publie sur "portail"
|
force_publishing=False, # force publication meme si semestre non publié sur "portail"
|
||||||
prefer_mail_perso=False, # mails envoyes sur adresse perso si non vide
|
prefer_mail_perso=False, # mails envoyés sur adresse perso si non vide
|
||||||
):
|
):
|
||||||
"""Génère le bulletin au format demandé.
|
"""Génère le bulletin au format demandé.
|
||||||
Retourne: (bul, filigranne)
|
Retourne: (bul, filigranne)
|
||||||
@ -910,7 +910,7 @@ def do_formsemestre_bulletinetud(
|
|||||||
"""
|
"""
|
||||||
if format == "xml":
|
if format == "xml":
|
||||||
bul = sco_bulletins_xml.make_xml_formsemestre_bulletinetud(
|
bul = sco_bulletins_xml.make_xml_formsemestre_bulletinetud(
|
||||||
formsemestre_id,
|
formsemestre.id,
|
||||||
etudid,
|
etudid,
|
||||||
xml_with_decisions=xml_with_decisions,
|
xml_with_decisions=xml_with_decisions,
|
||||||
force_publishing=force_publishing,
|
force_publishing=force_publishing,
|
||||||
@ -921,7 +921,7 @@ def do_formsemestre_bulletinetud(
|
|||||||
|
|
||||||
elif format == "json":
|
elif format == "json":
|
||||||
bul = sco_bulletins_json.make_json_formsemestre_bulletinetud(
|
bul = sco_bulletins_json.make_json_formsemestre_bulletinetud(
|
||||||
formsemestre_id,
|
formsemestre.id,
|
||||||
etudid,
|
etudid,
|
||||||
xml_with_decisions=xml_with_decisions,
|
xml_with_decisions=xml_with_decisions,
|
||||||
force_publishing=force_publishing,
|
force_publishing=force_publishing,
|
||||||
@ -929,8 +929,13 @@ def do_formsemestre_bulletinetud(
|
|||||||
)
|
)
|
||||||
return bul, ""
|
return bul, ""
|
||||||
|
|
||||||
I = formsemestre_bulletinetud_dict(formsemestre_id, etudid)
|
if formsemestre.formation.is_apc():
|
||||||
etud = I["etud"]
|
etud = Identite.query.get(etudid)
|
||||||
|
r = bulletin_but.BulletinBUT(formsemestre)
|
||||||
|
I = r.bulletin_etud_complet(etud)
|
||||||
|
else:
|
||||||
|
I = formsemestre_bulletinetud_dict(formsemestre.id, etudid)
|
||||||
|
etud = I["etud"]
|
||||||
|
|
||||||
if format == "html":
|
if format == "html":
|
||||||
htm, _ = sco_bulletins_generator.make_formsemestre_bulletinetud(
|
htm, _ = sco_bulletins_generator.make_formsemestre_bulletinetud(
|
||||||
@ -956,7 +961,7 @@ def do_formsemestre_bulletinetud(
|
|||||||
elif format == "pdfmail":
|
elif format == "pdfmail":
|
||||||
# format pdfmail: envoie le pdf par mail a l'etud, et affiche le html
|
# format pdfmail: envoie le pdf par mail a l'etud, et affiche le html
|
||||||
# check permission
|
# check permission
|
||||||
if not can_send_bulletin_by_mail(formsemestre_id):
|
if not can_send_bulletin_by_mail(formsemestre.id):
|
||||||
raise AccessDenied("Vous n'avez pas le droit d'effectuer cette opération !")
|
raise AccessDenied("Vous n'avez pas le droit d'effectuer cette opération !")
|
||||||
|
|
||||||
if nohtml:
|
if nohtml:
|
||||||
@ -985,7 +990,7 @@ def do_formsemestre_bulletinetud(
|
|||||||
) + htm
|
) + htm
|
||||||
return h, I["filigranne"]
|
return h, I["filigranne"]
|
||||||
#
|
#
|
||||||
mail_bulletin(formsemestre_id, I, pdfdata, filename, recipient_addr)
|
mail_bulletin(formsemestre.id, I, pdfdata, filename, recipient_addr)
|
||||||
emaillink = '<a class="stdlink" href="mailto:%s">%s</a>' % (
|
emaillink = '<a class="stdlink" href="mailto:%s">%s</a>' % (
|
||||||
recipient_addr,
|
recipient_addr,
|
||||||
recipient_addr,
|
recipient_addr,
|
||||||
|
@ -63,48 +63,14 @@ from app.scodoc import sco_pdf
|
|||||||
from app.scodoc.sco_pdf import PDFLOCK
|
from app.scodoc.sco_pdf import PDFLOCK
|
||||||
import sco_version
|
import sco_version
|
||||||
|
|
||||||
# Liste des types des classes de générateurs de bulletins PDF:
|
|
||||||
BULLETIN_CLASSES = collections.OrderedDict()
|
|
||||||
|
|
||||||
|
class BulletinGenerator:
|
||||||
def register_bulletin_class(klass):
|
|
||||||
BULLETIN_CLASSES[klass.__name__] = klass
|
|
||||||
|
|
||||||
|
|
||||||
def bulletin_class_descriptions():
|
|
||||||
return [x.description for x in BULLETIN_CLASSES.values()]
|
|
||||||
|
|
||||||
|
|
||||||
def bulletin_class_names():
|
|
||||||
return list(BULLETIN_CLASSES.keys())
|
|
||||||
|
|
||||||
|
|
||||||
def bulletin_default_class_name():
|
|
||||||
return bulletin_class_names()[0]
|
|
||||||
|
|
||||||
|
|
||||||
def bulletin_get_class(class_name):
|
|
||||||
return BULLETIN_CLASSES[class_name]
|
|
||||||
|
|
||||||
|
|
||||||
def bulletin_get_class_name_displayed(formsemestre_id):
|
|
||||||
"""Le nom du générateur utilisé, en clair"""
|
|
||||||
from app.scodoc import sco_preferences
|
|
||||||
|
|
||||||
bul_class_name = sco_preferences.get_preference("bul_class_name", formsemestre_id)
|
|
||||||
try:
|
|
||||||
gen_class = bulletin_get_class(bul_class_name)
|
|
||||||
return gen_class.description
|
|
||||||
except:
|
|
||||||
return "invalide ! (voir paramètres)"
|
|
||||||
|
|
||||||
|
|
||||||
class BulletinGenerator(object):
|
|
||||||
"Virtual superclass for PDF bulletin generators" ""
|
"Virtual superclass for PDF bulletin generators" ""
|
||||||
# Here some helper methods
|
# Here some helper methods
|
||||||
# see sco_bulletins_standard.BulletinGeneratorStandard subclass for real methods
|
# see sco_bulletins_standard.BulletinGeneratorStandard subclass for real methods
|
||||||
supported_formats = [] # should list supported formats, eg [ 'html', 'pdf' ]
|
supported_formats = [] # should list supported formats, eg [ 'html', 'pdf' ]
|
||||||
description = "superclass for bulletins" # description for user interface
|
description = "superclass for bulletins" # description for user interface
|
||||||
|
list_in_menu = True # la classe doit-elle est montrée dans le menu de config ?
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
@ -270,9 +236,14 @@ def make_formsemestre_bulletinetud(
|
|||||||
|
|
||||||
formsemestre_id = infos["formsemestre_id"]
|
formsemestre_id = infos["formsemestre_id"]
|
||||||
bul_class_name = sco_preferences.get_preference("bul_class_name", formsemestre_id)
|
bul_class_name = sco_preferences.get_preference("bul_class_name", formsemestre_id)
|
||||||
try:
|
|
||||||
|
gen_class = None
|
||||||
|
if infos.get("type") == "BUT" and format.startswith("pdf"):
|
||||||
|
gen_class = bulletin_get_class(bul_class_name + "BUT")
|
||||||
|
if gen_class is None:
|
||||||
gen_class = bulletin_get_class(bul_class_name)
|
gen_class = bulletin_get_class(bul_class_name)
|
||||||
except:
|
|
||||||
|
if gen_class is None:
|
||||||
raise ValueError(
|
raise ValueError(
|
||||||
"Type de bulletin PDF invalide (paramètre: %s)" % bul_class_name
|
"Type de bulletin PDF invalide (paramètre: %s)" % bul_class_name
|
||||||
)
|
)
|
||||||
@ -313,3 +284,48 @@ def make_formsemestre_bulletinetud(
|
|||||||
filename = bul_generator.get_filename()
|
filename = bul_generator.get_filename()
|
||||||
|
|
||||||
return data, filename
|
return data, filename
|
||||||
|
|
||||||
|
|
||||||
|
####
|
||||||
|
|
||||||
|
# Liste des types des classes de générateurs de bulletins PDF:
|
||||||
|
BULLETIN_CLASSES = collections.OrderedDict()
|
||||||
|
|
||||||
|
|
||||||
|
def register_bulletin_class(klass):
|
||||||
|
BULLETIN_CLASSES[klass.__name__] = klass
|
||||||
|
|
||||||
|
|
||||||
|
def bulletin_class_descriptions():
|
||||||
|
return [x.description for x in BULLETIN_CLASSES.values()]
|
||||||
|
|
||||||
|
|
||||||
|
def bulletin_class_names() -> list[str]:
|
||||||
|
"Liste les noms des classes de bulletins à présenter à l'utilisateur"
|
||||||
|
return [
|
||||||
|
class_name
|
||||||
|
for class_name in BULLETIN_CLASSES
|
||||||
|
if BULLETIN_CLASSES[class_name].list_in_menu
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
def bulletin_default_class_name():
|
||||||
|
return bulletin_class_names()[0]
|
||||||
|
|
||||||
|
|
||||||
|
def bulletin_get_class(class_name: str) -> BulletinGenerator:
|
||||||
|
"""La class de génération de bulletin de ce nom,
|
||||||
|
ou None si pas trouvée
|
||||||
|
"""
|
||||||
|
return BULLETIN_CLASSES.get(class_name)
|
||||||
|
|
||||||
|
|
||||||
|
def bulletin_get_class_name_displayed(formsemestre_id):
|
||||||
|
"""Le nom du générateur utilisé, en clair"""
|
||||||
|
from app.scodoc import sco_preferences
|
||||||
|
|
||||||
|
bul_class_name = sco_preferences.get_preference("bul_class_name", formsemestre_id)
|
||||||
|
gen_class = bulletin_get_class(bul_class_name)
|
||||||
|
if gen_class is None:
|
||||||
|
return "invalide ! (voir paramètres)"
|
||||||
|
return gen_class.description
|
||||||
|
@ -61,12 +61,10 @@ from reportlab.platypus.doctemplate import BaseDocTemplate
|
|||||||
from flask import g, request
|
from flask import g, request
|
||||||
|
|
||||||
from app import log, ScoValueError
|
from app import log, ScoValueError
|
||||||
from app.comp import res_sem
|
|
||||||
from app.comp.res_common import NotesTableCompat
|
|
||||||
from app.models import FormSemestre
|
from app.models import FormSemestre
|
||||||
|
|
||||||
from app.scodoc import sco_cache
|
from app.scodoc import sco_cache
|
||||||
from app.scodoc import sco_formsemestre
|
from app.scodoc import sco_codes_parcours
|
||||||
from app.scodoc import sco_pdf
|
from app.scodoc import sco_pdf
|
||||||
from app.scodoc import sco_preferences
|
from app.scodoc import sco_preferences
|
||||||
from app.scodoc import sco_etud
|
from app.scodoc import sco_etud
|
||||||
@ -190,7 +188,7 @@ def get_formsemestre_bulletins_pdf(formsemestre_id, version="selectedevals"):
|
|||||||
i = 1
|
i = 1
|
||||||
for etud in formsemestre.get_inscrits(include_demdef=True, order=True):
|
for etud in formsemestre.get_inscrits(include_demdef=True, order=True):
|
||||||
frag, filigranne = sco_bulletins.do_formsemestre_bulletinetud(
|
frag, filigranne = sco_bulletins.do_formsemestre_bulletinetud(
|
||||||
formsemestre_id,
|
formsemestre,
|
||||||
etud.id,
|
etud.id,
|
||||||
format="pdfpart",
|
format="pdfpart",
|
||||||
version=version,
|
version=version,
|
||||||
@ -239,8 +237,9 @@ def get_etud_bulletins_pdf(etudid, version="selectedevals"):
|
|||||||
filigrannes = {}
|
filigrannes = {}
|
||||||
i = 1
|
i = 1
|
||||||
for sem in etud["sems"]:
|
for sem in etud["sems"]:
|
||||||
|
formsemestre = FormSemestre.query.get(sem["formsemestre_id"])
|
||||||
frag, filigranne = sco_bulletins.do_formsemestre_bulletinetud(
|
frag, filigranne = sco_bulletins.do_formsemestre_bulletinetud(
|
||||||
sem["formsemestre_id"],
|
formsemestre,
|
||||||
etudid,
|
etudid,
|
||||||
format="pdfpart",
|
format="pdfpart",
|
||||||
version=version,
|
version=version,
|
||||||
@ -275,3 +274,16 @@ def get_etud_bulletins_pdf(etudid, version="selectedevals"):
|
|||||||
)
|
)
|
||||||
|
|
||||||
return pdfdoc, filename
|
return pdfdoc, filename
|
||||||
|
|
||||||
|
|
||||||
|
def get_filigranne(etud_etat: str, prefs, decision_sem=None) -> str:
|
||||||
|
"""Texte à placer en "filigranne" sur le bulletin pdf"""
|
||||||
|
if etud_etat == scu.DEMISSION:
|
||||||
|
return "Démission"
|
||||||
|
elif etud_etat == sco_codes_parcours.DEF:
|
||||||
|
return "Défaillant"
|
||||||
|
elif (prefs["bul_show_temporary"] and not decision_sem) or prefs[
|
||||||
|
"bul_show_temporary_forced"
|
||||||
|
]:
|
||||||
|
return prefs["bul_temporary_txt"]
|
||||||
|
return ""
|
||||||
|
@ -66,7 +66,8 @@ from app.scodoc import sco_groups
|
|||||||
from app.scodoc import sco_evaluations
|
from app.scodoc import sco_evaluations
|
||||||
from app.scodoc import gen_tables
|
from app.scodoc import gen_tables
|
||||||
|
|
||||||
# Important: Le nom de la classe ne doit pas changer (bien le choisir), car il sera stocké en base de données (dans les préférences)
|
# Important: Le nom de la classe ne doit pas changer (bien le choisir),
|
||||||
|
# car il sera stocké en base de données (dans les préférences)
|
||||||
class BulletinGeneratorStandard(sco_bulletins_generator.BulletinGenerator):
|
class BulletinGeneratorStandard(sco_bulletins_generator.BulletinGenerator):
|
||||||
description = "standard ScoDoc (version 2011)" # la description doit être courte: elle apparait dans le menu de paramètrage ScoDoc
|
description = "standard ScoDoc (version 2011)" # la description doit être courte: elle apparait dans le menu de paramètrage ScoDoc
|
||||||
supported_formats = ["html", "pdf"]
|
supported_formats = ["html", "pdf"]
|
||||||
@ -264,11 +265,11 @@ class BulletinGeneratorStandard(sco_bulletins_generator.BulletinGenerator):
|
|||||||
|
|
||||||
def build_bulletin_table(self):
|
def build_bulletin_table(self):
|
||||||
"""Génère la table centrale du bulletin de notes
|
"""Génère la table centrale du bulletin de notes
|
||||||
Renvoie: colkeys, P, pdf_style, colWidths
|
Renvoie: col_keys, P, pdf_style, col_widths
|
||||||
- colkeys: nom des colonnes de la table (clés)
|
- col_keys: nom des colonnes de la table (clés)
|
||||||
- table (liste de dicts de chaines de caracteres)
|
- table: liste de dicts de chaines de caractères
|
||||||
- style (commandes table Platypus)
|
- pdf_style: commandes table Platypus
|
||||||
- largeurs de colonnes pour PDF
|
- col_widths: largeurs de colonnes pour PDF
|
||||||
"""
|
"""
|
||||||
I = self.infos
|
I = self.infos
|
||||||
P = [] # elems pour générer table avec gen_table (liste de dicts)
|
P = [] # elems pour générer table avec gen_table (liste de dicts)
|
||||||
@ -287,25 +288,25 @@ class BulletinGeneratorStandard(sco_bulletins_generator.BulletinGenerator):
|
|||||||
with_col_coef = prefs["bul_show_coef"] or prefs["bul_show_ue_coef"]
|
with_col_coef = prefs["bul_show_coef"] or prefs["bul_show_ue_coef"]
|
||||||
with_col_ects = prefs["bul_show_ects"]
|
with_col_ects = prefs["bul_show_ects"]
|
||||||
|
|
||||||
colkeys = ["titre", "module"] # noms des colonnes à afficher
|
col_keys = ["titre", "module"] # noms des colonnes à afficher
|
||||||
if with_col_rang:
|
if with_col_rang:
|
||||||
colkeys += ["rang"]
|
col_keys += ["rang"]
|
||||||
if with_col_minmax:
|
if with_col_minmax:
|
||||||
colkeys += ["min"]
|
col_keys += ["min"]
|
||||||
if with_col_moypromo:
|
if with_col_moypromo:
|
||||||
colkeys += ["moy"]
|
col_keys += ["moy"]
|
||||||
if with_col_minmax:
|
if with_col_minmax:
|
||||||
colkeys += ["max"]
|
col_keys += ["max"]
|
||||||
colkeys += ["note"]
|
col_keys += ["note"]
|
||||||
if with_col_coef:
|
if with_col_coef:
|
||||||
colkeys += ["coef"]
|
col_keys += ["coef"]
|
||||||
if with_col_ects:
|
if with_col_ects:
|
||||||
colkeys += ["ects"]
|
col_keys += ["ects"]
|
||||||
if with_col_abs:
|
if with_col_abs:
|
||||||
colkeys += ["abs"]
|
col_keys += ["abs"]
|
||||||
colidx = {} # { nom_colonne : indice à partir de 0 } (pour styles platypus)
|
colidx = {} # { nom_colonne : indice à partir de 0 } (pour styles platypus)
|
||||||
i = 0
|
i = 0
|
||||||
for k in colkeys:
|
for k in col_keys:
|
||||||
colidx[k] = i
|
colidx[k] = i
|
||||||
i += 1
|
i += 1
|
||||||
|
|
||||||
@ -313,7 +314,7 @@ class BulletinGeneratorStandard(sco_bulletins_generator.BulletinGenerator):
|
|||||||
bul_pdf_mod_colwidth = float(prefs["bul_pdf_mod_colwidth"]) * cm
|
bul_pdf_mod_colwidth = float(prefs["bul_pdf_mod_colwidth"]) * cm
|
||||||
else:
|
else:
|
||||||
bul_pdf_mod_colwidth = None
|
bul_pdf_mod_colwidth = None
|
||||||
colWidths = {
|
col_widths = {
|
||||||
"titre": None,
|
"titre": None,
|
||||||
"module": bul_pdf_mod_colwidth,
|
"module": bul_pdf_mod_colwidth,
|
||||||
"min": 1.5 * cm,
|
"min": 1.5 * cm,
|
||||||
@ -541,7 +542,7 @@ class BulletinGeneratorStandard(sco_bulletins_generator.BulletinGenerator):
|
|||||||
("BOX", (0, 0), (-1, -1), 0.4, blue), # ajoute cadre extérieur bleu:
|
("BOX", (0, 0), (-1, -1), 0.4, blue), # ajoute cadre extérieur bleu:
|
||||||
]
|
]
|
||||||
#
|
#
|
||||||
return colkeys, P, pdf_style, colWidths
|
return col_keys, P, pdf_style, col_widths
|
||||||
|
|
||||||
def _list_modules(
|
def _list_modules(
|
||||||
self,
|
self,
|
||||||
|
@ -512,8 +512,8 @@ def module_edit(module_id=None):
|
|||||||
]
|
]
|
||||||
else:
|
else:
|
||||||
mat_names = ["%s / %s" % (mat.ue.acronyme, mat.titre or "") for mat in matieres]
|
mat_names = ["%s / %s" % (mat.ue.acronyme, mat.titre or "") for mat in matieres]
|
||||||
ue_mat_ids = ["%s!%s" % (mat.ue.id, mat.id) for mat in matieres]
|
|
||||||
|
|
||||||
|
ue_mat_ids = ["%s!%s" % (mat.ue.id, mat.id) for mat in matieres]
|
||||||
module["ue_matiere_id"] = "%s!%s" % (module["ue_id"], module["matiere_id"])
|
module["ue_matiere_id"] = "%s!%s" % (module["ue_id"], module["matiere_id"])
|
||||||
|
|
||||||
semestres_indices = list(range(1, parcours.NB_SEM + 1))
|
semestres_indices = list(range(1, parcours.NB_SEM + 1))
|
||||||
@ -748,8 +748,11 @@ def module_edit(module_id=None):
|
|||||||
else:
|
else:
|
||||||
# l'UE de rattachement peut changer
|
# l'UE de rattachement peut changer
|
||||||
tf[2]["ue_id"], tf[2]["matiere_id"] = tf[2]["ue_matiere_id"].split("!")
|
tf[2]["ue_id"], tf[2]["matiere_id"] = tf[2]["ue_matiere_id"].split("!")
|
||||||
|
x, y = tf[2]["ue_matiere_id"].split("!")
|
||||||
|
tf[2]["ue_id"] = int(x)
|
||||||
|
tf[2]["matiere_id"] = int(y)
|
||||||
old_ue_id = a_module.ue.id
|
old_ue_id = a_module.ue.id
|
||||||
new_ue_id = int(tf[2]["ue_id"])
|
new_ue_id = tf[2]["ue_id"]
|
||||||
if (old_ue_id != new_ue_id) and in_use:
|
if (old_ue_id != new_ue_id) and in_use:
|
||||||
new_ue = UniteEns.query.get_or_404(new_ue_id)
|
new_ue = UniteEns.query.get_or_404(new_ue_id)
|
||||||
if new_ue.semestre_idx != a_module.ue.semestre_idx:
|
if new_ue.semestre_idx != a_module.ue.semestre_idx:
|
||||||
|
@ -954,13 +954,13 @@ def _ue_table_ues(
|
|||||||
|
|
||||||
if cur_ue_semestre_id != ue["semestre_id"]:
|
if cur_ue_semestre_id != ue["semestre_id"]:
|
||||||
cur_ue_semestre_id = ue["semestre_id"]
|
cur_ue_semestre_id = ue["semestre_id"]
|
||||||
# if iue > 0:
|
|
||||||
# H.append("</ul>")
|
|
||||||
if ue["semestre_id"] == sco_codes_parcours.UE_SEM_DEFAULT:
|
if ue["semestre_id"] == sco_codes_parcours.UE_SEM_DEFAULT:
|
||||||
lab = "Pas d'indication de semestre:"
|
lab = "Pas d'indication de semestre:"
|
||||||
else:
|
else:
|
||||||
lab = "Semestre %s:" % ue["semestre_id"]
|
lab = "Semestre %s:" % ue["semestre_id"]
|
||||||
H.append('<div class="ue_list_tit_sem">%s</div>' % lab)
|
H.append(
|
||||||
|
'<div class="ue_list_div"><div class="ue_list_tit_sem">%s</div>' % lab
|
||||||
|
)
|
||||||
H.append('<ul class="notes_ue_list">')
|
H.append('<ul class="notes_ue_list">')
|
||||||
H.append('<li class="notes_ue_list">')
|
H.append('<li class="notes_ue_list">')
|
||||||
if iue != 0 and editable:
|
if iue != 0 and editable:
|
||||||
@ -1028,7 +1028,9 @@ def _ue_table_ues(
|
|||||||
H.append(
|
H.append(
|
||||||
f"""</ul><ul><li><a href="{url_for('notes.ue_create', scodoc_dept=g.scodoc_dept,
|
f"""</ul><ul><li><a href="{url_for('notes.ue_create', scodoc_dept=g.scodoc_dept,
|
||||||
formation_id=ue['formation_id'], semestre_idx=ue['semestre_id'])
|
formation_id=ue['formation_id'], semestre_idx=ue['semestre_id'])
|
||||||
}">Ajouter une UE dans le semestre {ue['semestre_id'] or ''}</a></li></ul>"""
|
}">Ajouter une UE dans le semestre {ue['semestre_id'] or ''}</a></li></ul>
|
||||||
|
</div>
|
||||||
|
"""
|
||||||
)
|
)
|
||||||
iue += 1
|
iue += 1
|
||||||
|
|
||||||
|
@ -2124,7 +2124,7 @@ class BasePreferences(object):
|
|||||||
return form
|
return form
|
||||||
|
|
||||||
|
|
||||||
class SemPreferences(object):
|
class SemPreferences:
|
||||||
"""Preferences for a formsemestre"""
|
"""Preferences for a formsemestre"""
|
||||||
|
|
||||||
def __init__(self, formsemestre_id=None):
|
def __init__(self, formsemestre_id=None):
|
||||||
@ -2280,9 +2280,8 @@ def doc_preferences():
|
|||||||
return "\n".join([" | ".join(x) for x in L])
|
return "\n".join([" | ".join(x) for x in L])
|
||||||
|
|
||||||
|
|
||||||
def bulletin_option_affichage(formsemestre_id: int) -> dict:
|
def bulletin_option_affichage(formsemestre_id: int, prefs: SemPreferences) -> dict:
|
||||||
"dict avec les options d'affichages (préférences) pour ce semestre"
|
"dict avec les options d'affichages (préférences) pour ce semestre"
|
||||||
prefs = SemPreferences(formsemestre_id)
|
|
||||||
fields = (
|
fields = (
|
||||||
"bul_show_abs",
|
"bul_show_abs",
|
||||||
"bul_show_abs_modules",
|
"bul_show_abs_modules",
|
||||||
|
@ -0,0 +1,289 @@
|
|||||||
|
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 td.dt-control {
|
||||||
|
text-align: center;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
table.dataTable td.dt-control:before {
|
||||||
|
height: 1em;
|
||||||
|
width: 1em;
|
||||||
|
margin-top: -9px;
|
||||||
|
display: inline-block;
|
||||||
|
color: white;
|
||||||
|
border: 0.15em solid white;
|
||||||
|
border-radius: 1em;
|
||||||
|
box-shadow: 0 0 0.2em #444;
|
||||||
|
box-sizing: content-box;
|
||||||
|
text-align: center;
|
||||||
|
text-indent: 0 !important;
|
||||||
|
font-family: "Courier New", Courier, monospace;
|
||||||
|
line-height: 1em;
|
||||||
|
content: "+";
|
||||||
|
background-color: #31b131;
|
||||||
|
}
|
||||||
|
table.dataTable tr.dt-hasChild td.dt-control:before {
|
||||||
|
content: "-";
|
||||||
|
background-color: #d33333;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.dataTable {
|
||||||
|
clear: both;
|
||||||
|
margin-top: 6px !important;
|
||||||
|
margin-bottom: 6px !important;
|
||||||
|
max-width: none !important;
|
||||||
|
border-collapse: separate !important;
|
||||||
|
}
|
||||||
|
table.dataTable td,
|
||||||
|
table.dataTable th {
|
||||||
|
-webkit-box-sizing: content-box;
|
||||||
|
box-sizing: content-box;
|
||||||
|
}
|
||||||
|
table.dataTable td.dataTables_empty,
|
||||||
|
table.dataTable th.dataTables_empty {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
table.dataTable.nowrap th,
|
||||||
|
table.dataTable.nowrap td {
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_wrapper div.dataTables_length label {
|
||||||
|
font-weight: normal;
|
||||||
|
text-align: left;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_length select {
|
||||||
|
width: 75px;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_filter {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_filter label {
|
||||||
|
font-weight: normal;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_filter input {
|
||||||
|
margin-left: 0.5em;
|
||||||
|
display: inline-block;
|
||||||
|
width: auto;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_info {
|
||||||
|
padding-top: 8px;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_paginate {
|
||||||
|
margin: 0;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_paginate ul.pagination {
|
||||||
|
margin: 2px 0;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_processing {
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
width: 200px;
|
||||||
|
margin-left: -100px;
|
||||||
|
margin-top: -26px;
|
||||||
|
text-align: center;
|
||||||
|
padding: 1em 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.dataTable thead > tr > th.sorting_asc, table.dataTable thead > tr > th.sorting_desc, table.dataTable thead > tr > th.sorting,
|
||||||
|
table.dataTable thead > tr > td.sorting_asc,
|
||||||
|
table.dataTable thead > tr > td.sorting_desc,
|
||||||
|
table.dataTable thead > tr > td.sorting {
|
||||||
|
padding-right: 30px;
|
||||||
|
}
|
||||||
|
table.dataTable thead > tr > th:active,
|
||||||
|
table.dataTable thead > tr > td:active {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
table.dataTable thead .sorting,
|
||||||
|
table.dataTable thead .sorting_asc,
|
||||||
|
table.dataTable thead .sorting_desc,
|
||||||
|
table.dataTable thead .sorting_asc_disabled,
|
||||||
|
table.dataTable thead .sorting_desc_disabled {
|
||||||
|
cursor: pointer;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
table.dataTable thead .sorting:after,
|
||||||
|
table.dataTable thead .sorting_asc:after,
|
||||||
|
table.dataTable thead .sorting_desc:after,
|
||||||
|
table.dataTable thead .sorting_asc_disabled:after,
|
||||||
|
table.dataTable thead .sorting_desc_disabled:after {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 8px;
|
||||||
|
right: 8px;
|
||||||
|
display: block;
|
||||||
|
font-family: "Glyphicons Halflings", sans-serif;
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
|
table.dataTable thead .sorting:after {
|
||||||
|
opacity: 0.2;
|
||||||
|
content: "\e150";
|
||||||
|
/* sort */
|
||||||
|
}
|
||||||
|
table.dataTable thead .sorting_asc:after {
|
||||||
|
opacity: 0.5;
|
||||||
|
content: "\e155";
|
||||||
|
/* sort-by-attributes */
|
||||||
|
}
|
||||||
|
table.dataTable thead .sorting_desc:after {
|
||||||
|
opacity: 0.5;
|
||||||
|
content: "\e156";
|
||||||
|
/* sort-by-attributes-alt */
|
||||||
|
}
|
||||||
|
table.dataTable thead .sorting_asc_disabled:after,
|
||||||
|
table.dataTable thead .sorting_desc_disabled:after {
|
||||||
|
color: #eee;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_scrollHead table.dataTable {
|
||||||
|
margin-bottom: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_scrollBody > table {
|
||||||
|
border-top: none;
|
||||||
|
margin-top: 0 !important;
|
||||||
|
margin-bottom: 0 !important;
|
||||||
|
}
|
||||||
|
div.dataTables_scrollBody > table > thead .sorting:after,
|
||||||
|
div.dataTables_scrollBody > table > thead .sorting_asc:after,
|
||||||
|
div.dataTables_scrollBody > table > thead .sorting_desc:after {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
div.dataTables_scrollBody > table > tbody > tr:first-child > th,
|
||||||
|
div.dataTables_scrollBody > table > tbody > tr:first-child > td {
|
||||||
|
border-top: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_scrollFoot > .dataTables_scrollFootInner {
|
||||||
|
box-sizing: content-box;
|
||||||
|
}
|
||||||
|
div.dataTables_scrollFoot > .dataTables_scrollFootInner > table {
|
||||||
|
margin-top: 0 !important;
|
||||||
|
border-top: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 767px) {
|
||||||
|
div.dataTables_wrapper div.dataTables_length,
|
||||||
|
div.dataTables_wrapper div.dataTables_filter,
|
||||||
|
div.dataTables_wrapper div.dataTables_info,
|
||||||
|
div.dataTables_wrapper div.dataTables_paginate {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
table.dataTable.table-condensed > thead > tr > th {
|
||||||
|
padding-right: 20px;
|
||||||
|
}
|
||||||
|
table.dataTable.table-condensed .sorting:after,
|
||||||
|
table.dataTable.table-condensed .sorting_asc:after,
|
||||||
|
table.dataTable.table-condensed .sorting_desc:after {
|
||||||
|
top: 6px;
|
||||||
|
right: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.table-bordered.dataTable {
|
||||||
|
border-right-width: 0;
|
||||||
|
}
|
||||||
|
table.table-bordered.dataTable th,
|
||||||
|
table.table-bordered.dataTable td {
|
||||||
|
border-left-width: 0;
|
||||||
|
}
|
||||||
|
table.table-bordered.dataTable th:last-child, table.table-bordered.dataTable th:last-child,
|
||||||
|
table.table-bordered.dataTable td:last-child,
|
||||||
|
table.table-bordered.dataTable td:last-child {
|
||||||
|
border-right-width: 1px;
|
||||||
|
}
|
||||||
|
table.table-bordered.dataTable tbody th,
|
||||||
|
table.table-bordered.dataTable tbody td {
|
||||||
|
border-bottom-width: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_scrollHead table.table-bordered {
|
||||||
|
border-bottom-width: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.table-responsive > div.dataTables_wrapper > div.row {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
div.table-responsive > div.dataTables_wrapper > div.row > div[class^=col-]:first-child {
|
||||||
|
padding-left: 0;
|
||||||
|
}
|
||||||
|
div.table-responsive > div.dataTables_wrapper > div.row > div[class^=col-]:last-child {
|
||||||
|
padding-right: 0;
|
||||||
|
}
|
1
app/static/DataTables2022/DataTables-1.11.4/css/dataTables.bootstrap.min.css
vendored
Normal file
1
app/static/DataTables2022/DataTables-1.11.4/css/dataTables.bootstrap.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
@ -0,0 +1,307 @@
|
|||||||
|
@charset "UTF-8";
|
||||||
|
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 td.dt-control {
|
||||||
|
text-align: center;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
table.dataTable td.dt-control:before {
|
||||||
|
height: 1em;
|
||||||
|
width: 1em;
|
||||||
|
margin-top: -9px;
|
||||||
|
display: inline-block;
|
||||||
|
color: white;
|
||||||
|
border: 0.15em solid white;
|
||||||
|
border-radius: 1em;
|
||||||
|
box-shadow: 0 0 0.2em #444;
|
||||||
|
box-sizing: content-box;
|
||||||
|
text-align: center;
|
||||||
|
text-indent: 0 !important;
|
||||||
|
font-family: "Courier New", Courier, monospace;
|
||||||
|
line-height: 1em;
|
||||||
|
content: "+";
|
||||||
|
background-color: #31b131;
|
||||||
|
}
|
||||||
|
table.dataTable tr.dt-hasChild td.dt-control:before {
|
||||||
|
content: "-";
|
||||||
|
background-color: #d33333;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.dataTable {
|
||||||
|
clear: both;
|
||||||
|
margin-top: 6px !important;
|
||||||
|
margin-bottom: 6px !important;
|
||||||
|
max-width: none !important;
|
||||||
|
border-collapse: separate !important;
|
||||||
|
border-spacing: 0;
|
||||||
|
}
|
||||||
|
table.dataTable td,
|
||||||
|
table.dataTable th {
|
||||||
|
-webkit-box-sizing: content-box;
|
||||||
|
box-sizing: content-box;
|
||||||
|
}
|
||||||
|
table.dataTable td.dataTables_empty,
|
||||||
|
table.dataTable th.dataTables_empty {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
table.dataTable.nowrap th,
|
||||||
|
table.dataTable.nowrap td {
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_wrapper div.dataTables_length label {
|
||||||
|
font-weight: normal;
|
||||||
|
text-align: left;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_length select {
|
||||||
|
width: auto;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_filter {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_filter label {
|
||||||
|
font-weight: normal;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_filter input {
|
||||||
|
margin-left: 0.5em;
|
||||||
|
display: inline-block;
|
||||||
|
width: auto;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_info {
|
||||||
|
padding-top: 0.85em;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_paginate {
|
||||||
|
margin: 0;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_paginate ul.pagination {
|
||||||
|
margin: 2px 0;
|
||||||
|
white-space: nowrap;
|
||||||
|
justify-content: flex-end;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_processing {
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
width: 200px;
|
||||||
|
margin-left: -100px;
|
||||||
|
margin-top: -26px;
|
||||||
|
text-align: center;
|
||||||
|
padding: 1em 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.dataTable > thead > tr > th:active,
|
||||||
|
table.dataTable > thead > tr > td:active {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
table.dataTable > thead > tr > th:not(.sorting_disabled),
|
||||||
|
table.dataTable > thead > tr > td:not(.sorting_disabled) {
|
||||||
|
padding-right: 30px;
|
||||||
|
}
|
||||||
|
table.dataTable > thead .sorting,
|
||||||
|
table.dataTable > thead .sorting_asc,
|
||||||
|
table.dataTable > thead .sorting_desc,
|
||||||
|
table.dataTable > thead .sorting_asc_disabled,
|
||||||
|
table.dataTable > thead .sorting_desc_disabled {
|
||||||
|
cursor: pointer;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
table.dataTable > thead .sorting:before, table.dataTable > thead .sorting:after,
|
||||||
|
table.dataTable > thead .sorting_asc:before,
|
||||||
|
table.dataTable > thead .sorting_asc:after,
|
||||||
|
table.dataTable > thead .sorting_desc:before,
|
||||||
|
table.dataTable > thead .sorting_desc:after,
|
||||||
|
table.dataTable > thead .sorting_asc_disabled:before,
|
||||||
|
table.dataTable > thead .sorting_asc_disabled:after,
|
||||||
|
table.dataTable > thead .sorting_desc_disabled:before,
|
||||||
|
table.dataTable > thead .sorting_desc_disabled:after {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0.9em;
|
||||||
|
display: block;
|
||||||
|
opacity: 0.3;
|
||||||
|
}
|
||||||
|
table.dataTable > thead .sorting:before,
|
||||||
|
table.dataTable > thead .sorting_asc:before,
|
||||||
|
table.dataTable > thead .sorting_desc:before,
|
||||||
|
table.dataTable > thead .sorting_asc_disabled:before,
|
||||||
|
table.dataTable > thead .sorting_desc_disabled:before {
|
||||||
|
right: 1em;
|
||||||
|
content: "↑";
|
||||||
|
}
|
||||||
|
table.dataTable > thead .sorting:after,
|
||||||
|
table.dataTable > thead .sorting_asc:after,
|
||||||
|
table.dataTable > thead .sorting_desc:after,
|
||||||
|
table.dataTable > thead .sorting_asc_disabled:after,
|
||||||
|
table.dataTable > thead .sorting_desc_disabled:after {
|
||||||
|
right: 0.5em;
|
||||||
|
content: "↓";
|
||||||
|
}
|
||||||
|
table.dataTable > thead .sorting_asc:before,
|
||||||
|
table.dataTable > thead .sorting_desc:after {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
table.dataTable > thead .sorting_asc_disabled:before,
|
||||||
|
table.dataTable > thead .sorting_desc_disabled:after {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_scrollHead table.dataTable {
|
||||||
|
margin-bottom: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_scrollBody > table {
|
||||||
|
border-top: none;
|
||||||
|
margin-top: 0 !important;
|
||||||
|
margin-bottom: 0 !important;
|
||||||
|
}
|
||||||
|
div.dataTables_scrollBody > table > thead .sorting:before,
|
||||||
|
div.dataTables_scrollBody > table > thead .sorting_asc:before,
|
||||||
|
div.dataTables_scrollBody > table > thead .sorting_desc:before,
|
||||||
|
div.dataTables_scrollBody > table > thead .sorting:after,
|
||||||
|
div.dataTables_scrollBody > table > thead .sorting_asc:after,
|
||||||
|
div.dataTables_scrollBody > table > thead .sorting_desc:after {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
div.dataTables_scrollBody > table > tbody tr:first-child th,
|
||||||
|
div.dataTables_scrollBody > table > tbody tr:first-child td {
|
||||||
|
border-top: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_scrollFoot > .dataTables_scrollFootInner {
|
||||||
|
box-sizing: content-box;
|
||||||
|
}
|
||||||
|
div.dataTables_scrollFoot > .dataTables_scrollFootInner > table {
|
||||||
|
margin-top: 0 !important;
|
||||||
|
border-top: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 767px) {
|
||||||
|
div.dataTables_wrapper div.dataTables_length,
|
||||||
|
div.dataTables_wrapper div.dataTables_filter,
|
||||||
|
div.dataTables_wrapper div.dataTables_info,
|
||||||
|
div.dataTables_wrapper div.dataTables_paginate {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_paginate ul.pagination {
|
||||||
|
justify-content: center !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
table.dataTable.table-sm > thead > tr > th:not(.sorting_disabled) {
|
||||||
|
padding-right: 20px;
|
||||||
|
}
|
||||||
|
table.dataTable.table-sm .sorting:before,
|
||||||
|
table.dataTable.table-sm .sorting_asc:before,
|
||||||
|
table.dataTable.table-sm .sorting_desc:before {
|
||||||
|
top: 5px;
|
||||||
|
right: 0.85em;
|
||||||
|
}
|
||||||
|
table.dataTable.table-sm .sorting:after,
|
||||||
|
table.dataTable.table-sm .sorting_asc:after,
|
||||||
|
table.dataTable.table-sm .sorting_desc:after {
|
||||||
|
top: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.table-bordered.dataTable {
|
||||||
|
border-right-width: 0;
|
||||||
|
}
|
||||||
|
table.table-bordered.dataTable th,
|
||||||
|
table.table-bordered.dataTable td {
|
||||||
|
border-left-width: 0;
|
||||||
|
}
|
||||||
|
table.table-bordered.dataTable th:last-child, table.table-bordered.dataTable th:last-child,
|
||||||
|
table.table-bordered.dataTable td:last-child,
|
||||||
|
table.table-bordered.dataTable td:last-child {
|
||||||
|
border-right-width: 1px;
|
||||||
|
}
|
||||||
|
table.table-bordered.dataTable tbody th,
|
||||||
|
table.table-bordered.dataTable tbody td {
|
||||||
|
border-bottom-width: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_scrollHead table.table-bordered {
|
||||||
|
border-bottom-width: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.table-responsive > div.dataTables_wrapper > div.row {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
div.table-responsive > div.dataTables_wrapper > div.row > div[class^=col-]:first-child {
|
||||||
|
padding-left: 0;
|
||||||
|
}
|
||||||
|
div.table-responsive > div.dataTables_wrapper > div.row > div[class^=col-]:last-child {
|
||||||
|
padding-right: 0;
|
||||||
|
}
|
1
app/static/DataTables2022/DataTables-1.11.4/css/dataTables.bootstrap4.min.css
vendored
Normal file
1
app/static/DataTables2022/DataTables-1.11.4/css/dataTables.bootstrap4.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
@ -0,0 +1,328 @@
|
|||||||
|
@charset "UTF-8";
|
||||||
|
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 td.dt-control {
|
||||||
|
text-align: center;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
table.dataTable td.dt-control:before {
|
||||||
|
height: 1em;
|
||||||
|
width: 1em;
|
||||||
|
margin-top: -9px;
|
||||||
|
display: inline-block;
|
||||||
|
color: white;
|
||||||
|
border: 0.15em solid white;
|
||||||
|
border-radius: 1em;
|
||||||
|
box-shadow: 0 0 0.2em #444;
|
||||||
|
box-sizing: content-box;
|
||||||
|
text-align: center;
|
||||||
|
text-indent: 0 !important;
|
||||||
|
font-family: "Courier New", Courier, monospace;
|
||||||
|
line-height: 1em;
|
||||||
|
content: "+";
|
||||||
|
background-color: #31b131;
|
||||||
|
}
|
||||||
|
table.dataTable tr.dt-hasChild td.dt-control:before {
|
||||||
|
content: "-";
|
||||||
|
background-color: #d33333;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*! Bootstrap 5 integration for DataTables
|
||||||
|
*
|
||||||
|
* ©2020 SpryMedia Ltd, all rights reserved.
|
||||||
|
* License: MIT datatables.net/license/mit
|
||||||
|
*/
|
||||||
|
table.dataTable {
|
||||||
|
clear: both;
|
||||||
|
margin-top: 6px !important;
|
||||||
|
margin-bottom: 6px !important;
|
||||||
|
max-width: none !important;
|
||||||
|
border-collapse: separate !important;
|
||||||
|
border-spacing: 0;
|
||||||
|
}
|
||||||
|
table.dataTable td,
|
||||||
|
table.dataTable th {
|
||||||
|
-webkit-box-sizing: content-box;
|
||||||
|
box-sizing: content-box;
|
||||||
|
}
|
||||||
|
table.dataTable td.dataTables_empty,
|
||||||
|
table.dataTable th.dataTables_empty {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
table.dataTable.nowrap th,
|
||||||
|
table.dataTable.nowrap td {
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_wrapper div.dataTables_length label {
|
||||||
|
font-weight: normal;
|
||||||
|
text-align: left;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_length select {
|
||||||
|
width: auto;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_filter {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_filter label {
|
||||||
|
font-weight: normal;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_filter input {
|
||||||
|
margin-left: 0.5em;
|
||||||
|
display: inline-block;
|
||||||
|
width: auto;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_info {
|
||||||
|
padding-top: 0.85em;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_paginate {
|
||||||
|
margin: 0;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_paginate ul.pagination {
|
||||||
|
margin: 2px 0;
|
||||||
|
white-space: nowrap;
|
||||||
|
justify-content: flex-end;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_processing {
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
width: 200px;
|
||||||
|
margin-left: -100px;
|
||||||
|
margin-top: -26px;
|
||||||
|
text-align: center;
|
||||||
|
padding: 1em 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.dataTable > thead > tr > th:active,
|
||||||
|
table.dataTable > thead > tr > td:active {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
table.dataTable > thead > tr > th:not(.sorting_disabled),
|
||||||
|
table.dataTable > thead > tr > td:not(.sorting_disabled) {
|
||||||
|
padding-right: 30px;
|
||||||
|
}
|
||||||
|
table.dataTable > thead .sorting,
|
||||||
|
table.dataTable > thead .sorting_asc,
|
||||||
|
table.dataTable > thead .sorting_desc,
|
||||||
|
table.dataTable > thead .sorting_asc_disabled,
|
||||||
|
table.dataTable > thead .sorting_desc_disabled {
|
||||||
|
cursor: pointer;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
table.dataTable > thead .sorting:before, table.dataTable > thead .sorting:after,
|
||||||
|
table.dataTable > thead .sorting_asc:before,
|
||||||
|
table.dataTable > thead .sorting_asc:after,
|
||||||
|
table.dataTable > thead .sorting_desc:before,
|
||||||
|
table.dataTable > thead .sorting_desc:after,
|
||||||
|
table.dataTable > thead .sorting_asc_disabled:before,
|
||||||
|
table.dataTable > thead .sorting_asc_disabled:after,
|
||||||
|
table.dataTable > thead .sorting_desc_disabled:before,
|
||||||
|
table.dataTable > thead .sorting_desc_disabled:after {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0.5em;
|
||||||
|
display: block;
|
||||||
|
opacity: 0.3;
|
||||||
|
}
|
||||||
|
table.dataTable > thead .sorting:before,
|
||||||
|
table.dataTable > thead .sorting_asc:before,
|
||||||
|
table.dataTable > thead .sorting_desc:before,
|
||||||
|
table.dataTable > thead .sorting_asc_disabled:before,
|
||||||
|
table.dataTable > thead .sorting_desc_disabled:before {
|
||||||
|
right: 1em;
|
||||||
|
content: "↑";
|
||||||
|
}
|
||||||
|
table.dataTable > thead .sorting:after,
|
||||||
|
table.dataTable > thead .sorting_asc:after,
|
||||||
|
table.dataTable > thead .sorting_desc:after,
|
||||||
|
table.dataTable > thead .sorting_asc_disabled:after,
|
||||||
|
table.dataTable > thead .sorting_desc_disabled:after {
|
||||||
|
right: 0.5em;
|
||||||
|
content: "↓";
|
||||||
|
}
|
||||||
|
table.dataTable > thead .sorting_asc:before,
|
||||||
|
table.dataTable > thead .sorting_desc:after {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
table.dataTable > thead .sorting_asc_disabled:before,
|
||||||
|
table.dataTable > thead .sorting_desc_disabled:after {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_scrollHead table.dataTable {
|
||||||
|
margin-bottom: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_scrollBody > table {
|
||||||
|
border-top: none;
|
||||||
|
margin-top: 0 !important;
|
||||||
|
margin-bottom: 0 !important;
|
||||||
|
}
|
||||||
|
div.dataTables_scrollBody > table > thead .sorting:before,
|
||||||
|
div.dataTables_scrollBody > table > thead .sorting_asc:before,
|
||||||
|
div.dataTables_scrollBody > table > thead .sorting_desc:before,
|
||||||
|
div.dataTables_scrollBody > table > thead .sorting:after,
|
||||||
|
div.dataTables_scrollBody > table > thead .sorting_asc:after,
|
||||||
|
div.dataTables_scrollBody > table > thead .sorting_desc:after {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
div.dataTables_scrollBody > table > tbody tr:first-child th,
|
||||||
|
div.dataTables_scrollBody > table > tbody tr:first-child td {
|
||||||
|
border-top: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_scrollFoot > .dataTables_scrollFootInner {
|
||||||
|
box-sizing: content-box;
|
||||||
|
}
|
||||||
|
div.dataTables_scrollFoot > .dataTables_scrollFootInner > table {
|
||||||
|
margin-top: 0 !important;
|
||||||
|
border-top: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 767px) {
|
||||||
|
div.dataTables_wrapper div.dataTables_length,
|
||||||
|
div.dataTables_wrapper div.dataTables_filter,
|
||||||
|
div.dataTables_wrapper div.dataTables_info,
|
||||||
|
div.dataTables_wrapper div.dataTables_paginate {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_paginate ul.pagination {
|
||||||
|
justify-content: center !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
table.dataTable.table-sm > thead > tr > th:not(.sorting_disabled) {
|
||||||
|
padding-right: 20px;
|
||||||
|
}
|
||||||
|
table.dataTable.table-sm .sorting:before,
|
||||||
|
table.dataTable.table-sm .sorting_asc:before,
|
||||||
|
table.dataTable.table-sm .sorting_desc:before {
|
||||||
|
top: 5px;
|
||||||
|
right: 0.85em;
|
||||||
|
}
|
||||||
|
table.dataTable.table-sm .sorting:after,
|
||||||
|
table.dataTable.table-sm .sorting_asc:after,
|
||||||
|
table.dataTable.table-sm .sorting_desc:after {
|
||||||
|
top: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.table-bordered.dataTable {
|
||||||
|
border-right-width: 0;
|
||||||
|
}
|
||||||
|
table.table-bordered.dataTable thead tr:first-child th,
|
||||||
|
table.table-bordered.dataTable thead tr:first-child td {
|
||||||
|
border-top-width: 1px;
|
||||||
|
}
|
||||||
|
table.table-bordered.dataTable th,
|
||||||
|
table.table-bordered.dataTable td {
|
||||||
|
border-left-width: 0;
|
||||||
|
}
|
||||||
|
table.table-bordered.dataTable th:first-child, table.table-bordered.dataTable th:first-child,
|
||||||
|
table.table-bordered.dataTable td:first-child,
|
||||||
|
table.table-bordered.dataTable td:first-child {
|
||||||
|
border-left-width: 1px;
|
||||||
|
}
|
||||||
|
table.table-bordered.dataTable th:last-child, table.table-bordered.dataTable th:last-child,
|
||||||
|
table.table-bordered.dataTable td:last-child,
|
||||||
|
table.table-bordered.dataTable td:last-child {
|
||||||
|
border-right-width: 1px;
|
||||||
|
}
|
||||||
|
table.table-bordered.dataTable th,
|
||||||
|
table.table-bordered.dataTable td {
|
||||||
|
border-bottom-width: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_scrollHead table.table-bordered {
|
||||||
|
border-bottom-width: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.table-responsive > div.dataTables_wrapper > div.row {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
div.table-responsive > div.dataTables_wrapper > div.row > div[class^=col-]:first-child {
|
||||||
|
padding-left: 0;
|
||||||
|
}
|
||||||
|
div.table-responsive > div.dataTables_wrapper > div.row > div[class^=col-]:last-child {
|
||||||
|
padding-right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.dataTable.table-striped > tbody > tr:nth-of-type(2n+1) {
|
||||||
|
--bs-table-accent-bg: transparent;
|
||||||
|
}
|
||||||
|
table.dataTable.table-striped > tbody > tr.odd {
|
||||||
|
--bs-table-accent-bg: var(--bs-table-striped-bg);
|
||||||
|
}
|
5
app/static/DataTables2022/DataTables-1.11.4/css/dataTables.bootstrap5.min.css
vendored
Normal file
5
app/static/DataTables2022/DataTables-1.11.4/css/dataTables.bootstrap5.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
@ -0,0 +1,252 @@
|
|||||||
|
@charset "UTF-8";
|
||||||
|
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 td.dt-control {
|
||||||
|
text-align: center;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
table.dataTable td.dt-control:before {
|
||||||
|
height: 1em;
|
||||||
|
width: 1em;
|
||||||
|
margin-top: -9px;
|
||||||
|
display: inline-block;
|
||||||
|
color: white;
|
||||||
|
border: 0.15em solid white;
|
||||||
|
border-radius: 1em;
|
||||||
|
box-shadow: 0 0 0.2em #444;
|
||||||
|
box-sizing: content-box;
|
||||||
|
text-align: center;
|
||||||
|
text-indent: 0 !important;
|
||||||
|
font-family: "Courier New", Courier, monospace;
|
||||||
|
line-height: 1em;
|
||||||
|
content: "+";
|
||||||
|
background-color: #31b131;
|
||||||
|
}
|
||||||
|
table.dataTable tr.dt-hasChild td.dt-control:before {
|
||||||
|
content: "-";
|
||||||
|
background-color: #d33333;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*! DataTables Bulma integration
|
||||||
|
* ©2020 SpryMedia Ltd - datatables.net/license
|
||||||
|
*/
|
||||||
|
table.dataTable {
|
||||||
|
clear: both;
|
||||||
|
margin-top: 6px !important;
|
||||||
|
margin-bottom: 6px !important;
|
||||||
|
max-width: none !important;
|
||||||
|
border-collapse: separate !important;
|
||||||
|
border-spacing: 0;
|
||||||
|
}
|
||||||
|
table.dataTable td,
|
||||||
|
table.dataTable th {
|
||||||
|
-webkit-box-sizing: content-box;
|
||||||
|
box-sizing: content-box;
|
||||||
|
}
|
||||||
|
table.dataTable td.dataTables_empty,
|
||||||
|
table.dataTable th.dataTables_empty {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
table.dataTable.nowrap th,
|
||||||
|
table.dataTable.nowrap td {
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_wrapper div.dataTables_length label {
|
||||||
|
font-weight: normal;
|
||||||
|
text-align: left;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_length div {
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_length select {
|
||||||
|
width: auto;
|
||||||
|
display: inline-block;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_filter {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_filter label {
|
||||||
|
font-weight: normal;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_filter input {
|
||||||
|
margin-left: 0.5em;
|
||||||
|
width: auto;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_info {
|
||||||
|
padding-top: 0.5em;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_paginate ul {
|
||||||
|
justify-content: flex-end;
|
||||||
|
list-style: none;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_processing {
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
width: 200px;
|
||||||
|
margin-left: -100px;
|
||||||
|
margin-top: -26px;
|
||||||
|
text-align: center;
|
||||||
|
padding: 1em 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.dataTable > thead > tr > th:active,
|
||||||
|
table.dataTable > thead > tr > td:active {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
table.dataTable > thead > tr > th:not(.sorting_disabled),
|
||||||
|
table.dataTable > thead > tr > td:not(.sorting_disabled) {
|
||||||
|
padding-right: 30px;
|
||||||
|
}
|
||||||
|
table.dataTable > thead .sorting,
|
||||||
|
table.dataTable > thead .sorting_asc,
|
||||||
|
table.dataTable > thead .sorting_desc,
|
||||||
|
table.dataTable > thead .sorting_asc_disabled,
|
||||||
|
table.dataTable > thead .sorting_desc_disabled {
|
||||||
|
cursor: pointer;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
table.dataTable > thead .sorting:before, table.dataTable > thead .sorting:after,
|
||||||
|
table.dataTable > thead .sorting_asc:before,
|
||||||
|
table.dataTable > thead .sorting_asc:after,
|
||||||
|
table.dataTable > thead .sorting_desc:before,
|
||||||
|
table.dataTable > thead .sorting_desc:after,
|
||||||
|
table.dataTable > thead .sorting_asc_disabled:before,
|
||||||
|
table.dataTable > thead .sorting_asc_disabled:after,
|
||||||
|
table.dataTable > thead .sorting_desc_disabled:before,
|
||||||
|
table.dataTable > thead .sorting_desc_disabled:after {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0.7em;
|
||||||
|
display: block;
|
||||||
|
opacity: 0.3;
|
||||||
|
}
|
||||||
|
table.dataTable > thead .sorting:before,
|
||||||
|
table.dataTable > thead .sorting_asc:before,
|
||||||
|
table.dataTable > thead .sorting_desc:before,
|
||||||
|
table.dataTable > thead .sorting_asc_disabled:before,
|
||||||
|
table.dataTable > thead .sorting_desc_disabled:before {
|
||||||
|
right: 1em;
|
||||||
|
content: "↑";
|
||||||
|
}
|
||||||
|
table.dataTable > thead .sorting:after,
|
||||||
|
table.dataTable > thead .sorting_asc:after,
|
||||||
|
table.dataTable > thead .sorting_desc:after,
|
||||||
|
table.dataTable > thead .sorting_asc_disabled:after,
|
||||||
|
table.dataTable > thead .sorting_desc_disabled:after {
|
||||||
|
right: 0.5em;
|
||||||
|
content: "↓";
|
||||||
|
}
|
||||||
|
table.dataTable > thead .sorting_asc:before,
|
||||||
|
table.dataTable > thead .sorting_desc:after {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
table.dataTable > thead .sorting_asc_disabled:before,
|
||||||
|
table.dataTable > thead .sorting_desc_disabled:after {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_scrollHead table.dataTable {
|
||||||
|
margin-bottom: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_scrollBody table {
|
||||||
|
border-top: none;
|
||||||
|
margin-top: 0 !important;
|
||||||
|
margin-bottom: 0 !important;
|
||||||
|
}
|
||||||
|
div.dataTables_scrollBody table thead .sorting:before,
|
||||||
|
div.dataTables_scrollBody table thead .sorting_asc:before,
|
||||||
|
div.dataTables_scrollBody table thead .sorting_desc:before,
|
||||||
|
div.dataTables_scrollBody table thead .sorting:after,
|
||||||
|
div.dataTables_scrollBody table thead .sorting_asc:after,
|
||||||
|
div.dataTables_scrollBody table thead .sorting_desc:after {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
div.dataTables_scrollBody table tbody tr:first-child th,
|
||||||
|
div.dataTables_scrollBody table tbody tr:first-child td {
|
||||||
|
border-top: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_scrollFoot > .dataTables_scrollFootInner {
|
||||||
|
box-sizing: content-box;
|
||||||
|
}
|
||||||
|
div.dataTables_scrollFoot > .dataTables_scrollFootInner > table {
|
||||||
|
margin-top: 0 !important;
|
||||||
|
border-top: none;
|
||||||
|
}
|
3
app/static/DataTables2022/DataTables-1.11.4/css/dataTables.bulma.min.css
vendored
Normal file
3
app/static/DataTables2022/DataTables-1.11.4/css/dataTables.bulma.min.css
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
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 td.dt-control{text-align:center;cursor:pointer}table.dataTable td.dt-control:before{height:1em;width:1em;margin-top:-9px;display:inline-block;color:white;border:.15em solid white;border-radius:1em;box-shadow:0 0 .2em #444;box-sizing:content-box;text-align:center;text-indent:0 !important;font-family:"Courier New",Courier,monospace;line-height:1em;content:"+";background-color:#31b131}table.dataTable tr.dt-hasChild td.dt-control:before{content:"-";background-color:#d33333}/*! DataTables Bulma integration
|
||||||
|
* ©2020 SpryMedia Ltd - datatables.net/license
|
||||||
|
*/table.dataTable{clear:both;margin-top:6px !important;margin-bottom:6px !important;max-width:none !important;border-collapse:separate !important;border-spacing:0}table.dataTable td,table.dataTable th{-webkit-box-sizing:content-box;box-sizing:content-box}table.dataTable td.dataTables_empty,table.dataTable th.dataTables_empty{text-align:center}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}div.dataTables_wrapper div.dataTables_length label{font-weight:normal;text-align:left;white-space:nowrap}div.dataTables_wrapper div.dataTables_length div{vertical-align:middle}div.dataTables_wrapper div.dataTables_length select{width:auto;display:inline-block;vertical-align:middle}div.dataTables_wrapper div.dataTables_filter{text-align:right}div.dataTables_wrapper div.dataTables_filter label{font-weight:normal;white-space:nowrap;text-align:left}div.dataTables_wrapper div.dataTables_filter input{margin-left:.5em;width:auto;vertical-align:middle}div.dataTables_wrapper div.dataTables_info{padding-top:.5em}div.dataTables_wrapper div.dataTables_paginate ul{justify-content:flex-end;list-style:none;margin:0}div.dataTables_wrapper div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-26px;text-align:center;padding:1em 0}table.dataTable>thead>tr>th:active,table.dataTable>thead>tr>td:active{outline:none}table.dataTable>thead>tr>th:not(.sorting_disabled),table.dataTable>thead>tr>td:not(.sorting_disabled){padding-right:30px}table.dataTable>thead .sorting,table.dataTable>thead .sorting_asc,table.dataTable>thead .sorting_desc,table.dataTable>thead .sorting_asc_disabled,table.dataTable>thead .sorting_desc_disabled{cursor:pointer;position:relative}table.dataTable>thead .sorting:before,table.dataTable>thead .sorting:after,table.dataTable>thead .sorting_asc:before,table.dataTable>thead .sorting_asc:after,table.dataTable>thead .sorting_desc:before,table.dataTable>thead .sorting_desc:after,table.dataTable>thead .sorting_asc_disabled:before,table.dataTable>thead .sorting_asc_disabled:after,table.dataTable>thead .sorting_desc_disabled:before,table.dataTable>thead .sorting_desc_disabled:after{position:absolute;bottom:.7em;display:block;opacity:.3}table.dataTable>thead .sorting:before,table.dataTable>thead .sorting_asc:before,table.dataTable>thead .sorting_desc:before,table.dataTable>thead .sorting_asc_disabled:before,table.dataTable>thead .sorting_desc_disabled:before{right:1em;content:"↑"}table.dataTable>thead .sorting:after,table.dataTable>thead .sorting_asc:after,table.dataTable>thead .sorting_desc:after,table.dataTable>thead .sorting_asc_disabled:after,table.dataTable>thead .sorting_desc_disabled:after{right:.5em;content:"↓"}table.dataTable>thead .sorting_asc:before,table.dataTable>thead .sorting_desc:after{opacity:1}table.dataTable>thead .sorting_asc_disabled:before,table.dataTable>thead .sorting_desc_disabled:after{opacity:0}div.dataTables_scrollHead table.dataTable{margin-bottom:0 !important}div.dataTables_scrollBody table{border-top:none;margin-top:0 !important;margin-bottom:0 !important}div.dataTables_scrollBody table thead .sorting:before,div.dataTables_scrollBody table thead .sorting_asc:before,div.dataTables_scrollBody table thead .sorting_desc:before,div.dataTables_scrollBody table thead .sorting:after,div.dataTables_scrollBody table thead .sorting_asc:after,div.dataTables_scrollBody table thead .sorting_desc:after{display:none}div.dataTables_scrollBody table tbody tr:first-child th,div.dataTables_scrollBody table tbody tr:first-child td{border-top:none}div.dataTables_scrollFoot>.dataTables_scrollFootInner{box-sizing:content-box}div.dataTables_scrollFoot>.dataTables_scrollFootInner>table{margin-top:0 !important;border-top:none}
|
@ -0,0 +1,555 @@
|
|||||||
|
@charset "UTF-8";
|
||||||
|
td.dt-control {
|
||||||
|
background: url("https://www.datatables.net/examples/resources/details_open.png") no-repeat center center;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
tr.dt-hasChild td.dt-control {
|
||||||
|
background: url("https://www.datatables.net/examples/resources/details_close.png") no-repeat center center;
|
||||||
|
}
|
||||||
|
|
||||||
|
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 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 rgba(0, 0, 0, 0.3);
|
||||||
|
}
|
||||||
|
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 rgba(0, 0, 0, 0.3);
|
||||||
|
}
|
||||||
|
table.dataTable tbody tr {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
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 rgba(0, 0, 0, 0.15);
|
||||||
|
}
|
||||||
|
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 rgba(0, 0, 0, 0.15);
|
||||||
|
border-right: 1px solid rgba(0, 0, 0, 0.15);
|
||||||
|
}
|
||||||
|
table.dataTable.cell-border tbody tr th:first-child,
|
||||||
|
table.dataTable.cell-border tbody tr td:first-child {
|
||||||
|
border-left: 1px solid rgba(0, 0, 0, 0.15);
|
||||||
|
}
|
||||||
|
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: rgba(0, 0, 0, 0.0235);
|
||||||
|
}
|
||||||
|
table.dataTable.stripe tbody tr.odd.selected, table.dataTable.display tbody tr.odd.selected {
|
||||||
|
background-color: #acbad4;
|
||||||
|
}
|
||||||
|
table.dataTable.hover tbody tr:hover, table.dataTable.display tbody tr:hover {
|
||||||
|
background-color: rgba(0, 0, 0, 0.036);
|
||||||
|
}
|
||||||
|
table.dataTable.hover tbody tr:hover.selected, table.dataTable.display tbody tr:hover.selected {
|
||||||
|
background-color: #aab7d1;
|
||||||
|
}
|
||||||
|
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: rgba(0, 0, 0, 0.02);
|
||||||
|
}
|
||||||
|
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: #acbad5;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.odd > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd > .sorting_1 {
|
||||||
|
background-color: rgba(0, 0, 0, 0.054);
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.odd > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd > .sorting_2 {
|
||||||
|
background-color: rgba(0, 0, 0, 0.047);
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.odd > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd > .sorting_3 {
|
||||||
|
background-color: rgba(0, 0, 0, 0.039);
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.odd.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_1 {
|
||||||
|
background-color: #a6b4cd;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.odd.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_2 {
|
||||||
|
background-color: #a8b5cf;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.odd.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_3 {
|
||||||
|
background-color: #a9b7d1;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.even > .sorting_1, table.dataTable.order-column.stripe tbody tr.even > .sorting_1 {
|
||||||
|
background-color: rgba(0, 0, 0, 0.02);
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.even > .sorting_2, table.dataTable.order-column.stripe tbody tr.even > .sorting_2 {
|
||||||
|
background-color: rgba(0, 0, 0, 0.012);
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.even > .sorting_3, table.dataTable.order-column.stripe tbody tr.even > .sorting_3 {
|
||||||
|
background-color: rgba(0, 0, 0, 0.004);
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.even.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_1 {
|
||||||
|
background-color: #acbad5;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.even.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_2 {
|
||||||
|
background-color: #aebcd6;
|
||||||
|
}
|
||||||
|
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.order-column.hover tbody tr:hover > .sorting_1 {
|
||||||
|
background-color: rgba(0, 0, 0, 0.082);
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr:hover > .sorting_2, table.dataTable.order-column.hover tbody tr:hover > .sorting_2 {
|
||||||
|
background-color: rgba(0, 0, 0, 0.075);
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr:hover > .sorting_3, table.dataTable.order-column.hover tbody tr:hover > .sorting_3 {
|
||||||
|
background-color: rgba(0, 0, 0, 0.063);
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr:hover.selected > .sorting_1, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_1 {
|
||||||
|
background-color: #a2aec7;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr:hover.selected > .sorting_2, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_2 {
|
||||||
|
background-color: #a3b0c9;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr:hover.selected > .sorting_3, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_3 {
|
||||||
|
background-color: #a5b2cb;
|
||||||
|
}
|
||||||
|
table.dataTable.no-footer {
|
||||||
|
border-bottom: 1px solid rgba(0, 0, 0, 0.3);
|
||||||
|
}
|
||||||
|
table.dataTable.nowrap th, table.dataTable.nowrap td {
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
table.dataTable.compact thead th,
|
||||||
|
table.dataTable.compact thead td {
|
||||||
|
padding: 4px 17px;
|
||||||
|
}
|
||||||
|
table.dataTable.compact tfoot th,
|
||||||
|
table.dataTable.compact tfoot td {
|
||||||
|
padding: 4px;
|
||||||
|
}
|
||||||
|
table.dataTable.compact tbody th,
|
||||||
|
table.dataTable.compact tbody td {
|
||||||
|
padding: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
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 thead > tr > th.dt-orderable-asc, table.dataTable thead > tr > th.dt-orderable-desc,
|
||||||
|
table.dataTable thead > tr > td.dt-orderable-asc,
|
||||||
|
table.dataTable thead > tr > td.dt-orderable-desc {
|
||||||
|
padding-right: 30px;
|
||||||
|
}
|
||||||
|
table.dataTable thead > tr > th:active,
|
||||||
|
table.dataTable thead > tr > td:active {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
table.dataTable thead > tr > th.dt-orderable-asc, table.dataTable thead > tr > th.dt-orderable-desc,
|
||||||
|
table.dataTable thead > tr > td.dt-orderable-asc,
|
||||||
|
table.dataTable thead > tr > td.dt-orderable-desc {
|
||||||
|
cursor: pointer;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
table.dataTable thead > tr > th.dt-orderable-asc:before, table.dataTable thead > tr > th.dt-orderable-asc:after, table.dataTable thead > tr > th.dt-orderable-desc:before, table.dataTable thead > tr > th.dt-orderable-desc:after,
|
||||||
|
table.dataTable thead > tr > td.dt-orderable-asc:before,
|
||||||
|
table.dataTable thead > tr > td.dt-orderable-asc:after,
|
||||||
|
table.dataTable thead > tr > td.dt-orderable-desc:before,
|
||||||
|
table.dataTable thead > tr > td.dt-orderable-desc:after {
|
||||||
|
position: absolute;
|
||||||
|
display: block;
|
||||||
|
opacity: 0.125;
|
||||||
|
right: 1em;
|
||||||
|
line-height: 9px;
|
||||||
|
font-size: 0.9em;
|
||||||
|
}
|
||||||
|
table.dataTable thead > tr > th.dt-orderable-asc:before, table.dataTable thead > tr > th.dt-orderable-desc:before,
|
||||||
|
table.dataTable thead > tr > td.dt-orderable-asc:before,
|
||||||
|
table.dataTable thead > tr > td.dt-orderable-desc:before {
|
||||||
|
bottom: 50%;
|
||||||
|
content: "▴";
|
||||||
|
}
|
||||||
|
table.dataTable thead > tr > th.dt-orderable-asc:after, table.dataTable thead > tr > th.dt-orderable-desc:after,
|
||||||
|
table.dataTable thead > tr > td.dt-orderable-asc:after,
|
||||||
|
table.dataTable thead > tr > td.dt-orderable-desc:after {
|
||||||
|
top: 50%;
|
||||||
|
content: "▾";
|
||||||
|
}
|
||||||
|
table.dataTable thead > tr > th.dt-ordering-asc:before, table.dataTable thead > tr > th.dt-ordering-desc:after,
|
||||||
|
table.dataTable thead > tr > td.dt-ordering-asc:before,
|
||||||
|
table.dataTable thead > tr > td.dt-ordering-desc:after {
|
||||||
|
opacity: 0.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.dataTable,
|
||||||
|
table.dataTable th,
|
||||||
|
table.dataTable td {
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Control feature layout
|
||||||
|
*/
|
||||||
|
div.dataTables_wrapper {
|
||||||
|
position: relative;
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_layout_row {
|
||||||
|
display: table;
|
||||||
|
clear: both;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_layout_cell {
|
||||||
|
display: table-cell;
|
||||||
|
vertical-align: middle;
|
||||||
|
padding: 5px 0;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_layout_cell.dt-full {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_layout_cell.dt-left {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_layout_cell.dt-right {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper .dataTables_filter input {
|
||||||
|
border: 1px solid #aaa;
|
||||||
|
border-radius: 3px;
|
||||||
|
padding: 5px;
|
||||||
|
background-color: transparent;
|
||||||
|
margin-left: 3px;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper .dt-input {
|
||||||
|
border: 1px solid #aaa;
|
||||||
|
border-radius: 3px;
|
||||||
|
padding: 5px;
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper select.dt-input {
|
||||||
|
padding: 4px;
|
||||||
|
}
|
||||||
|
div.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: #333 !important;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
border-radius: 2px;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper .dataTables_paginate .paginate_button.current, div.dataTables_wrapper .dataTables_paginate .paginate_button.current:hover {
|
||||||
|
color: #333 !important;
|
||||||
|
border: 1px solid rgba(0, 0, 0, 0.3);
|
||||||
|
background-color: rgba(230, 230, 230, 0.1);
|
||||||
|
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(230, 230, 230, 0.1)), color-stop(100%, rgba(0, 0, 0, 0.1)));
|
||||||
|
/* Chrome,Safari4+ */
|
||||||
|
background: -webkit-linear-gradient(top, rgba(230, 230, 230, 0.1) 0%, rgba(0, 0, 0, 0.1) 100%);
|
||||||
|
/* Chrome10+,Safari5.1+ */
|
||||||
|
background: -moz-linear-gradient(top, rgba(230, 230, 230, 0.1) 0%, rgba(0, 0, 0, 0.1) 100%);
|
||||||
|
/* FF3.6+ */
|
||||||
|
background: -ms-linear-gradient(top, rgba(230, 230, 230, 0.1) 0%, rgba(0, 0, 0, 0.1) 100%);
|
||||||
|
/* IE10+ */
|
||||||
|
background: -o-linear-gradient(top, rgba(230, 230, 230, 0.1) 0%, rgba(0, 0, 0, 0.1) 100%);
|
||||||
|
/* Opera 11.10+ */
|
||||||
|
background: linear-gradient(to bottom, rgba(230, 230, 230, 0.1) 0%, rgba(0, 0, 0, 0.1) 100%);
|
||||||
|
/* W3C */
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper .dataTables_paginate .paginate_button.disabled, div.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover, div.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active {
|
||||||
|
cursor: default;
|
||||||
|
color: rgba(0, 0, 0, 0.5) !important;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
background: transparent;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper .dataTables_paginate .paginate_button:hover {
|
||||||
|
color: white !important;
|
||||||
|
border: 1px solid #111;
|
||||||
|
background-color: #585858;
|
||||||
|
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111));
|
||||||
|
/* Chrome,Safari4+ */
|
||||||
|
background: -webkit-linear-gradient(top, #585858 0%, #111 100%);
|
||||||
|
/* Chrome10+,Safari5.1+ */
|
||||||
|
background: -moz-linear-gradient(top, #585858 0%, #111 100%);
|
||||||
|
/* FF3.6+ */
|
||||||
|
background: -ms-linear-gradient(top, #585858 0%, #111 100%);
|
||||||
|
/* IE10+ */
|
||||||
|
background: -o-linear-gradient(top, #585858 0%, #111 100%);
|
||||||
|
/* Opera 11.10+ */
|
||||||
|
background: linear-gradient(to bottom, #585858 0%, #111 100%);
|
||||||
|
/* W3C */
|
||||||
|
}
|
||||||
|
div.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;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper .dataTables_paginate .ellipsis {
|
||||||
|
padding: 0 1em;
|
||||||
|
}
|
||||||
|
div.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(0, 0, 0, 0)), color-stop(25%, rgba(0, 0, 0, 0.9)), color-stop(75%, rgba(0, 0, 0, 0.9)), color-stop(100%, rgba(255, 255, 255, 0)));
|
||||||
|
background: -webkit-linear-gradient(left, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.9) 25%, rgba(0, 0, 0, 0.9) 75%, rgba(0, 0, 0, 0) 100%);
|
||||||
|
background: -moz-linear-gradient(left, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.9) 25%, rgba(0, 0, 0, 0.9) 75%, rgba(0, 0, 0, 0) 100%);
|
||||||
|
background: -ms-linear-gradient(left, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.9) 25%, rgba(0, 0, 0, 0.9) 75%, rgba(0, 0, 0, 0) 100%);
|
||||||
|
background: -o-linear-gradient(left, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.9) 25%, rgba(0, 0, 0, 0.9) 75%, rgba(0, 0, 0, 0) 100%);
|
||||||
|
background: linear-gradient(to right, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.9) 25%, rgba(0, 0, 0, 0.9) 75%, rgba(0, 0, 0, 0) 100%);
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper .dataTables_length,
|
||||||
|
div.dataTables_wrapper .dataTables_filter,
|
||||||
|
div.dataTables_wrapper .dataTables_info,
|
||||||
|
div.dataTables_wrapper .dataTables_processing,
|
||||||
|
div.dataTables_wrapper .dataTables_paginate {
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper .dataTables_scroll {
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody {
|
||||||
|
*margin-top: -1px;
|
||||||
|
-webkit-overflow-scrolling: touch;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > th, div.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > td, div.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > th, div.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > td {
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > th > div.dataTables_sizing,
|
||||||
|
div.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > td > div.dataTables_sizing, div.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > th > div.dataTables_sizing,
|
||||||
|
div.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > td > div.dataTables_sizing {
|
||||||
|
height: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
margin: 0 !important;
|
||||||
|
padding: 0 !important;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper.no-footer .dataTables_scrollBody {
|
||||||
|
border-bottom: 1px solid rgba(0, 0, 0, 0.3);
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper.no-footer div.dataTables_scrollHead table.dataTable,
|
||||||
|
div.dataTables_wrapper.no-footer div.dataTables_scrollBody > table {
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper:after {
|
||||||
|
visibility: hidden;
|
||||||
|
display: block;
|
||||||
|
content: "";
|
||||||
|
clear: both;
|
||||||
|
height: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 767px) {
|
||||||
|
div.dataTables_wrapper div.dataTables_layout_row {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_layout_cell {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_layout_cell.dt-full, div.dataTables_wrapper div.dataTables_layout_cell.dt-left, div.dataTables_wrapper div.dataTables_layout_cell.dt-right {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
}
|
1
app/static/DataTables2022/DataTables-1.11.4/css/dataTables.dataTables.min.css
vendored
Normal file
1
app/static/DataTables2022/DataTables-1.11.4/css/dataTables.dataTables.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
@ -0,0 +1,215 @@
|
|||||||
|
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 td.dt-control {
|
||||||
|
text-align: center;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
table.dataTable td.dt-control:before {
|
||||||
|
height: 1em;
|
||||||
|
width: 1em;
|
||||||
|
margin-top: -9px;
|
||||||
|
display: inline-block;
|
||||||
|
color: white;
|
||||||
|
border: 0.15em solid white;
|
||||||
|
border-radius: 1em;
|
||||||
|
box-shadow: 0 0 0.2em #444;
|
||||||
|
box-sizing: content-box;
|
||||||
|
text-align: center;
|
||||||
|
text-indent: 0 !important;
|
||||||
|
font-family: "Courier New", Courier, monospace;
|
||||||
|
line-height: 1em;
|
||||||
|
content: "+";
|
||||||
|
background-color: #31b131;
|
||||||
|
}
|
||||||
|
table.dataTable tr.dt-hasChild td.dt-control:before {
|
||||||
|
content: "-";
|
||||||
|
background-color: #d33333;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.dataTable {
|
||||||
|
clear: both;
|
||||||
|
margin: 0.5em 0 !important;
|
||||||
|
max-width: none !important;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
table.dataTable td,
|
||||||
|
table.dataTable th {
|
||||||
|
-webkit-box-sizing: content-box;
|
||||||
|
box-sizing: content-box;
|
||||||
|
}
|
||||||
|
table.dataTable td.dataTables_empty,
|
||||||
|
table.dataTable th.dataTables_empty {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
table.dataTable.nowrap th, table.dataTable.nowrap td {
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_wrapper {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_length label {
|
||||||
|
float: left;
|
||||||
|
text-align: left;
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_length select {
|
||||||
|
width: 75px;
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_filter label {
|
||||||
|
float: right;
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_filter input {
|
||||||
|
display: inline-block !important;
|
||||||
|
width: auto !important;
|
||||||
|
margin-bottom: 0;
|
||||||
|
margin-left: 0.5em;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_info {
|
||||||
|
padding-top: 2px;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_paginate {
|
||||||
|
float: right;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_processing {
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
width: 200px;
|
||||||
|
margin-left: -100px;
|
||||||
|
margin-top: -26px;
|
||||||
|
text-align: center;
|
||||||
|
padding: 1rem 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.dataTable thead > tr > th.sorting_asc, table.dataTable thead > tr > th.sorting_desc, table.dataTable thead > tr > th.sorting,
|
||||||
|
table.dataTable thead > tr > td.sorting_asc,
|
||||||
|
table.dataTable thead > tr > td.sorting_desc,
|
||||||
|
table.dataTable thead > tr > td.sorting {
|
||||||
|
padding-right: 1.5rem;
|
||||||
|
}
|
||||||
|
table.dataTable thead > tr > th:active,
|
||||||
|
table.dataTable thead > tr > td:active {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
table.dataTable thead .sorting,
|
||||||
|
table.dataTable thead .sorting_asc,
|
||||||
|
table.dataTable thead .sorting_desc,
|
||||||
|
table.dataTable thead .sorting_asc_disabled,
|
||||||
|
table.dataTable thead .sorting_desc_disabled {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
table.dataTable thead .sorting,
|
||||||
|
table.dataTable thead .sorting_asc,
|
||||||
|
table.dataTable thead .sorting_desc,
|
||||||
|
table.dataTable thead .sorting_asc_disabled,
|
||||||
|
table.dataTable thead .sorting_desc_disabled {
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: center right;
|
||||||
|
}
|
||||||
|
table.dataTable thead .sorting {
|
||||||
|
background-image: url("../images/sort_both.png");
|
||||||
|
}
|
||||||
|
table.dataTable thead .sorting_asc {
|
||||||
|
background-image: url("../images/sort_asc.png") !important;
|
||||||
|
}
|
||||||
|
table.dataTable thead .sorting_desc {
|
||||||
|
background-image: url("../images/sort_desc.png") !important;
|
||||||
|
}
|
||||||
|
table.dataTable thead .sorting_asc_disabled {
|
||||||
|
background-image: url("../images/sort_asc_disabled.png");
|
||||||
|
}
|
||||||
|
table.dataTable thead .sorting_desc_disabled {
|
||||||
|
background-image: url("../images/sort_desc_disabled.png");
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_scrollHead table {
|
||||||
|
margin-bottom: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_scrollBody table {
|
||||||
|
border-top: none;
|
||||||
|
margin-top: 0 !important;
|
||||||
|
margin-bottom: 0 !important;
|
||||||
|
}
|
||||||
|
div.dataTables_scrollBody table tbody tr:first-child th,
|
||||||
|
div.dataTables_scrollBody table tbody tr:first-child td {
|
||||||
|
border-top: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_scrollFoot table {
|
||||||
|
margin-top: 0 !important;
|
||||||
|
border-top: none;
|
||||||
|
}
|
1
app/static/DataTables2022/DataTables-1.11.4/css/dataTables.foundation.min.css
vendored
Normal file
1
app/static/DataTables2022/DataTables-1.11.4/css/dataTables.foundation.min.css
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
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 td.dt-control{text-align:center;cursor:pointer}table.dataTable td.dt-control:before{height:1em;width:1em;margin-top:-9px;display:inline-block;color:white;border:.15em solid white;border-radius:1em;box-shadow:0 0 .2em #444;box-sizing:content-box;text-align:center;text-indent:0 !important;font-family:"Courier New",Courier,monospace;line-height:1em;content:"+";background-color:#31b131}table.dataTable tr.dt-hasChild td.dt-control:before{content:"-";background-color:#d33333}table.dataTable{clear:both;margin:.5em 0 !important;max-width:none !important;width:100%}table.dataTable td,table.dataTable th{-webkit-box-sizing:content-box;box-sizing:content-box}table.dataTable td.dataTables_empty,table.dataTable th.dataTables_empty{text-align:center}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}div.dataTables_wrapper{position:relative}div.dataTables_wrapper div.dataTables_length label{float:left;text-align:left;margin-bottom:0}div.dataTables_wrapper div.dataTables_length select{width:75px;margin-bottom:0}div.dataTables_wrapper div.dataTables_filter label{float:right;margin-bottom:0}div.dataTables_wrapper div.dataTables_filter input{display:inline-block !important;width:auto !important;margin-bottom:0;margin-left:.5em}div.dataTables_wrapper div.dataTables_info{padding-top:2px}div.dataTables_wrapper div.dataTables_paginate{float:right;margin:0}div.dataTables_wrapper div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-26px;text-align:center;padding:1rem 0}table.dataTable thead>tr>th.sorting_asc,table.dataTable thead>tr>th.sorting_desc,table.dataTable thead>tr>th.sorting,table.dataTable thead>tr>td.sorting_asc,table.dataTable thead>tr>td.sorting_desc,table.dataTable thead>tr>td.sorting{padding-right:1.5rem}table.dataTable thead>tr>th:active,table.dataTable thead>tr>td:active{outline:none}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc_disabled{cursor:pointer}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc_disabled{background-repeat:no-repeat;background-position:center right}table.dataTable thead .sorting{background-image:url("../images/sort_both.png")}table.dataTable thead .sorting_asc{background-image:url("../images/sort_asc.png") !important}table.dataTable thead .sorting_desc{background-image:url("../images/sort_desc.png") !important}table.dataTable thead .sorting_asc_disabled{background-image:url("../images/sort_asc_disabled.png")}table.dataTable thead .sorting_desc_disabled{background-image:url("../images/sort_desc_disabled.png")}div.dataTables_scrollHead table{margin-bottom:0 !important}div.dataTables_scrollBody table{border-top:none;margin-top:0 !important;margin-bottom:0 !important}div.dataTables_scrollBody table tbody tr:first-child th,div.dataTables_scrollBody table tbody tr:first-child td{border-top:none}div.dataTables_scrollFoot table{margin-top:0 !important;border-top:none}
|
@ -0,0 +1,612 @@
|
|||||||
|
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 td.dt-control {
|
||||||
|
text-align: center;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
table.dataTable td.dt-control:before {
|
||||||
|
height: 1em;
|
||||||
|
width: 1em;
|
||||||
|
margin-top: -9px;
|
||||||
|
display: inline-block;
|
||||||
|
color: white;
|
||||||
|
border: 0.15em solid white;
|
||||||
|
border-radius: 1em;
|
||||||
|
box-shadow: 0 0 0.2em #444;
|
||||||
|
box-sizing: content-box;
|
||||||
|
text-align: center;
|
||||||
|
text-indent: 0 !important;
|
||||||
|
font-family: "Courier New", Courier, monospace;
|
||||||
|
line-height: 1em;
|
||||||
|
content: "+";
|
||||||
|
background-color: #31b131;
|
||||||
|
}
|
||||||
|
table.dataTable tr.dt-hasChild td.dt-control:before {
|
||||||
|
content: "-";
|
||||||
|
background-color: #d33333;
|
||||||
|
}
|
||||||
|
|
||||||
|
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 td.dt-control {
|
||||||
|
text-align: center;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
table.dataTable td.dt-control:before {
|
||||||
|
height: 1em;
|
||||||
|
width: 1em;
|
||||||
|
margin-top: -9px;
|
||||||
|
display: inline-block;
|
||||||
|
color: white;
|
||||||
|
border: 0.15em solid white;
|
||||||
|
border-radius: 1em;
|
||||||
|
box-shadow: 0 0 0.2em #444;
|
||||||
|
box-sizing: content-box;
|
||||||
|
text-align: center;
|
||||||
|
text-indent: 0 !important;
|
||||||
|
font-family: "Courier New", Courier, monospace;
|
||||||
|
line-height: 1em;
|
||||||
|
content: "+";
|
||||||
|
background-color: #31b131;
|
||||||
|
}
|
||||||
|
table.dataTable tr.dt-hasChild td.dt-control:before {
|
||||||
|
content: "-";
|
||||||
|
background-color: #d33333;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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;
|
||||||
|
}
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
table.dataTable tbody tr {
|
||||||
|
background-color: #ffffff;
|
||||||
|
}
|
||||||
|
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 #ddd;
|
||||||
|
}
|
||||||
|
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 #ddd;
|
||||||
|
border-right: 1px solid #ddd;
|
||||||
|
}
|
||||||
|
table.dataTable.cell-border tbody tr th:first-child,
|
||||||
|
table.dataTable.cell-border tbody tr td:first-child {
|
||||||
|
border-left: 1px solid #ddd;
|
||||||
|
}
|
||||||
|
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: #acbad4;
|
||||||
|
}
|
||||||
|
table.dataTable.hover tbody tr:hover, table.dataTable.display tbody tr:hover {
|
||||||
|
background-color: #f6f6f6;
|
||||||
|
}
|
||||||
|
table.dataTable.hover tbody tr:hover.selected, table.dataTable.display tbody tr:hover.selected {
|
||||||
|
background-color: #aab7d1;
|
||||||
|
}
|
||||||
|
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: #fafafa;
|
||||||
|
}
|
||||||
|
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: #acbad5;
|
||||||
|
}
|
||||||
|
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: #a6b4cd;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.odd.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_2 {
|
||||||
|
background-color: #a8b5cf;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.odd.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_3 {
|
||||||
|
background-color: #a9b7d1;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.even > .sorting_1, table.dataTable.order-column.stripe tbody tr.even > .sorting_1 {
|
||||||
|
background-color: #fafafa;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.even > .sorting_2, table.dataTable.order-column.stripe tbody tr.even > .sorting_2 {
|
||||||
|
background-color: #fcfcfc;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.even > .sorting_3, table.dataTable.order-column.stripe tbody tr.even > .sorting_3 {
|
||||||
|
background-color: #fefefe;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.even.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_1 {
|
||||||
|
background-color: #acbad5;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.even.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_2 {
|
||||||
|
background-color: #aebcd6;
|
||||||
|
}
|
||||||
|
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.order-column.hover tbody tr:hover > .sorting_1 {
|
||||||
|
background-color: #eaeaea;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr:hover > .sorting_2, table.dataTable.order-column.hover tbody tr:hover > .sorting_2 {
|
||||||
|
background-color: #ececec;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr:hover > .sorting_3, table.dataTable.order-column.hover tbody tr:hover > .sorting_3 {
|
||||||
|
background-color: #efefef;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr:hover.selected > .sorting_1, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_1 {
|
||||||
|
background-color: #a2aec7;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr:hover.selected > .sorting_2, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_2 {
|
||||||
|
background-color: #a3b0c9;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr:hover.selected > .sorting_3, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_3 {
|
||||||
|
background-color: #a5b2cb;
|
||||||
|
}
|
||||||
|
table.dataTable.no-footer {
|
||||||
|
border-bottom: 1px solid #111;
|
||||||
|
}
|
||||||
|
table.dataTable.nowrap th, table.dataTable.nowrap td {
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
table.dataTable.compact thead th,
|
||||||
|
table.dataTable.compact thead td {
|
||||||
|
padding: 4px 17px;
|
||||||
|
}
|
||||||
|
table.dataTable.compact tfoot th,
|
||||||
|
table.dataTable.compact tfoot td {
|
||||||
|
padding: 4px;
|
||||||
|
}
|
||||||
|
table.dataTable.compact tbody th,
|
||||||
|
table.dataTable.compact tbody td {
|
||||||
|
padding: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.dataTable th,
|
||||||
|
table.dataTable td {
|
||||||
|
box-sizing: content-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Control feature layout
|
||||||
|
*/
|
||||||
|
.dataTables_wrapper {
|
||||||
|
position: relative;
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_length {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_length select {
|
||||||
|
border: 1px solid #aaa;
|
||||||
|
border-radius: 3px;
|
||||||
|
padding: 5px;
|
||||||
|
background-color: transparent;
|
||||||
|
padding: 4px;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_filter {
|
||||||
|
float: right;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_filter input {
|
||||||
|
border: 1px solid #aaa;
|
||||||
|
border-radius: 3px;
|
||||||
|
padding: 5px;
|
||||||
|
background-color: transparent;
|
||||||
|
margin-left: 3px;
|
||||||
|
}
|
||||||
|
.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: #333 !important;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
border-radius: 2px;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_paginate .paginate_button.current, .dataTables_wrapper .dataTables_paginate .paginate_button.current:hover {
|
||||||
|
color: #333 !important;
|
||||||
|
border: 1px solid #979797;
|
||||||
|
background-color: white;
|
||||||
|
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, white), color-stop(100%, #dcdcdc));
|
||||||
|
/* Chrome,Safari4+ */
|
||||||
|
background: -webkit-linear-gradient(top, white 0%, #dcdcdc 100%);
|
||||||
|
/* Chrome10+,Safari5.1+ */
|
||||||
|
background: -moz-linear-gradient(top, white 0%, #dcdcdc 100%);
|
||||||
|
/* FF3.6+ */
|
||||||
|
background: -ms-linear-gradient(top, white 0%, #dcdcdc 100%);
|
||||||
|
/* IE10+ */
|
||||||
|
background: -o-linear-gradient(top, white 0%, #dcdcdc 100%);
|
||||||
|
/* Opera 11.10+ */
|
||||||
|
background: linear-gradient(to bottom, white 0%, #dcdcdc 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 #111;
|
||||||
|
background-color: #585858;
|
||||||
|
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111));
|
||||||
|
/* Chrome,Safari4+ */
|
||||||
|
background: -webkit-linear-gradient(top, #585858 0%, #111 100%);
|
||||||
|
/* Chrome10+,Safari5.1+ */
|
||||||
|
background: -moz-linear-gradient(top, #585858 0%, #111 100%);
|
||||||
|
/* FF3.6+ */
|
||||||
|
background: -ms-linear-gradient(top, #585858 0%, #111 100%);
|
||||||
|
/* IE10+ */
|
||||||
|
background: -o-linear-gradient(top, #585858 0%, #111 100%);
|
||||||
|
/* Opera 11.10+ */
|
||||||
|
background: linear-gradient(to bottom, #585858 0%, #111 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_paginate .ellipsis {
|
||||||
|
padding: 0 1em;
|
||||||
|
}
|
||||||
|
.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)));
|
||||||
|
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%);
|
||||||
|
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%);
|
||||||
|
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%);
|
||||||
|
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%);
|
||||||
|
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%);
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_length,
|
||||||
|
.dataTables_wrapper .dataTables_filter,
|
||||||
|
.dataTables_wrapper .dataTables_info,
|
||||||
|
.dataTables_wrapper .dataTables_processing,
|
||||||
|
.dataTables_wrapper .dataTables_paginate {
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
.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 > table > thead > tr > th, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > td, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > th, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > td {
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > th > div.dataTables_sizing,
|
||||||
|
.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > td > div.dataTables_sizing, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > th > div.dataTables_sizing,
|
||||||
|
.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > td > div.dataTables_sizing {
|
||||||
|
height: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
margin: 0 !important;
|
||||||
|
padding: 0 !important;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper.no-footer .dataTables_scrollBody {
|
||||||
|
border-bottom: 1px solid #111;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper.no-footer div.dataTables_scrollHead table.dataTable,
|
||||||
|
.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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
table.dataTable thead th div.DataTables_sort_wrapper {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
table.dataTable thead th div.DataTables_sort_wrapper span {
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
margin-top: -8px;
|
||||||
|
right: -18px;
|
||||||
|
}
|
||||||
|
table.dataTable thead th.ui-state-default,
|
||||||
|
table.dataTable tfoot th.ui-state-default {
|
||||||
|
border-left-width: 0;
|
||||||
|
}
|
||||||
|
table.dataTable thead th.ui-state-default:first-child,
|
||||||
|
table.dataTable tfoot th.ui-state-default:first-child {
|
||||||
|
border-left-width: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Control feature layout
|
||||||
|
*/
|
||||||
|
.dataTables_wrapper .dataTables_paginate .fg-button {
|
||||||
|
box-sizing: border-box;
|
||||||
|
display: inline-block;
|
||||||
|
min-width: 1.5em;
|
||||||
|
padding: 0.5em;
|
||||||
|
margin-left: 2px;
|
||||||
|
text-align: center;
|
||||||
|
text-decoration: none !important;
|
||||||
|
cursor: pointer;
|
||||||
|
*cursor: hand;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_paginate .fg-button:active {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_paginate .fg-button:first-child {
|
||||||
|
border-top-left-radius: 3px;
|
||||||
|
border-bottom-left-radius: 3px;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_paginate .fg-button:last-child {
|
||||||
|
border-top-right-radius: 3px;
|
||||||
|
border-bottom-right-radius: 3px;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .ui-widget-header {
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .ui-toolbar {
|
||||||
|
padding: 8px;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper.no-footer .dataTables_scrollBody {
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_length,
|
||||||
|
.dataTables_wrapper .dataTables_filter,
|
||||||
|
.dataTables_wrapper .dataTables_info,
|
||||||
|
.dataTables_wrapper .dataTables_processing,
|
||||||
|
.dataTables_wrapper .dataTables_paginate {
|
||||||
|
color: inherit;
|
||||||
|
}
|
1
app/static/DataTables2022/DataTables-1.11.4/css/dataTables.jqueryui.min.css
vendored
Normal file
1
app/static/DataTables2022/DataTables-1.11.4/css/dataTables.jqueryui.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
@ -0,0 +1,199 @@
|
|||||||
|
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 td.dt-control {
|
||||||
|
text-align: center;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
table.dataTable td.dt-control:before {
|
||||||
|
height: 1em;
|
||||||
|
width: 1em;
|
||||||
|
margin-top: -9px;
|
||||||
|
display: inline-block;
|
||||||
|
color: white;
|
||||||
|
border: 0.15em solid white;
|
||||||
|
border-radius: 1em;
|
||||||
|
box-shadow: 0 0 0.2em #444;
|
||||||
|
box-sizing: content-box;
|
||||||
|
text-align: center;
|
||||||
|
text-indent: 0 !important;
|
||||||
|
font-family: "Courier New", Courier, monospace;
|
||||||
|
line-height: 1em;
|
||||||
|
content: "+";
|
||||||
|
background-color: #31b131;
|
||||||
|
}
|
||||||
|
table.dataTable tr.dt-hasChild td.dt-control:before {
|
||||||
|
content: "-";
|
||||||
|
background-color: #d33333;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Styling for DataTables with Semantic UI
|
||||||
|
*/
|
||||||
|
table.dataTable.table {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
table.dataTable.table thead th,
|
||||||
|
table.dataTable.table thead td {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
table.dataTable.table thead th.sorting, table.dataTable.table thead th.sorting_asc, table.dataTable.table thead th.sorting_desc,
|
||||||
|
table.dataTable.table thead td.sorting,
|
||||||
|
table.dataTable.table thead td.sorting_asc,
|
||||||
|
table.dataTable.table thead td.sorting_desc {
|
||||||
|
padding-right: 20px;
|
||||||
|
}
|
||||||
|
table.dataTable.table thead th.sorting:after, table.dataTable.table thead th.sorting_asc:after, table.dataTable.table thead th.sorting_desc:after,
|
||||||
|
table.dataTable.table thead td.sorting:after,
|
||||||
|
table.dataTable.table thead td.sorting_asc:after,
|
||||||
|
table.dataTable.table thead td.sorting_desc:after {
|
||||||
|
position: absolute;
|
||||||
|
top: 12px;
|
||||||
|
right: 8px;
|
||||||
|
display: block;
|
||||||
|
font-family: Icons;
|
||||||
|
}
|
||||||
|
table.dataTable.table thead th.sorting:after,
|
||||||
|
table.dataTable.table thead td.sorting:after {
|
||||||
|
content: "\f0dc";
|
||||||
|
color: #ddd;
|
||||||
|
font-size: 0.8em;
|
||||||
|
}
|
||||||
|
table.dataTable.table thead th.sorting_asc:after,
|
||||||
|
table.dataTable.table thead td.sorting_asc:after {
|
||||||
|
content: "\f0de";
|
||||||
|
}
|
||||||
|
table.dataTable.table thead th.sorting_desc:after,
|
||||||
|
table.dataTable.table thead td.sorting_desc:after {
|
||||||
|
content: "\f0dd";
|
||||||
|
}
|
||||||
|
table.dataTable.table td,
|
||||||
|
table.dataTable.table th {
|
||||||
|
-webkit-box-sizing: content-box;
|
||||||
|
box-sizing: content-box;
|
||||||
|
}
|
||||||
|
table.dataTable.table td.dataTables_empty,
|
||||||
|
table.dataTable.table th.dataTables_empty {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
table.dataTable.table.nowrap th,
|
||||||
|
table.dataTable.table.nowrap td {
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_wrapper div.dataTables_length select {
|
||||||
|
vertical-align: middle;
|
||||||
|
min-height: 2.7142em;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_length .ui.selection.dropdown {
|
||||||
|
min-width: 0;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_filter span.input {
|
||||||
|
margin-left: 0.5em;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_info {
|
||||||
|
padding-top: 13px;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_processing {
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
width: 200px;
|
||||||
|
margin-left: -100px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.row.dt-table {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_scrollHead table.dataTable {
|
||||||
|
border-bottom-right-radius: 0;
|
||||||
|
border-bottom-left-radius: 0;
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_scrollBody thead .sorting:after,
|
||||||
|
div.dataTables_wrapper div.dataTables_scrollBody thead .sorting_asc:after,
|
||||||
|
div.dataTables_wrapper div.dataTables_scrollBody thead .sorting_desc:after {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_scrollBody table.dataTable {
|
||||||
|
border-radius: 0;
|
||||||
|
border-top: none;
|
||||||
|
border-bottom-width: 0;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_scrollBody table.dataTable.no-footer {
|
||||||
|
border-bottom-width: 1px;
|
||||||
|
}
|
||||||
|
div.dataTables_wrapper div.dataTables_scrollFoot table.dataTable {
|
||||||
|
border-top-right-radius: 0;
|
||||||
|
border-top-left-radius: 0;
|
||||||
|
border-top: none;
|
||||||
|
}
|
1
app/static/DataTables2022/DataTables-1.11.4/css/dataTables.semanticui.min.css
vendored
Normal file
1
app/static/DataTables2022/DataTables-1.11.4/css/dataTables.semanticui.min.css
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
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 td.dt-control{text-align:center;cursor:pointer}table.dataTable td.dt-control:before{height:1em;width:1em;margin-top:-9px;display:inline-block;color:white;border:.15em solid white;border-radius:1em;box-shadow:0 0 .2em #444;box-sizing:content-box;text-align:center;text-indent:0 !important;font-family:"Courier New",Courier,monospace;line-height:1em;content:"+";background-color:#31b131}table.dataTable tr.dt-hasChild td.dt-control:before{content:"-";background-color:#d33333}table.dataTable.table{margin:0}table.dataTable.table thead th,table.dataTable.table thead td{position:relative}table.dataTable.table thead th.sorting,table.dataTable.table thead th.sorting_asc,table.dataTable.table thead th.sorting_desc,table.dataTable.table thead td.sorting,table.dataTable.table thead td.sorting_asc,table.dataTable.table thead td.sorting_desc{padding-right:20px}table.dataTable.table thead th.sorting:after,table.dataTable.table thead th.sorting_asc:after,table.dataTable.table thead th.sorting_desc:after,table.dataTable.table thead td.sorting:after,table.dataTable.table thead td.sorting_asc:after,table.dataTable.table thead td.sorting_desc:after{position:absolute;top:12px;right:8px;display:block;font-family:Icons}table.dataTable.table thead th.sorting:after,table.dataTable.table thead td.sorting:after{content:"";color:#ddd;font-size:.8em}table.dataTable.table thead th.sorting_asc:after,table.dataTable.table thead td.sorting_asc:after{content:""}table.dataTable.table thead th.sorting_desc:after,table.dataTable.table thead td.sorting_desc:after{content:""}table.dataTable.table td,table.dataTable.table th{-webkit-box-sizing:content-box;box-sizing:content-box}table.dataTable.table td.dataTables_empty,table.dataTable.table th.dataTables_empty{text-align:center}table.dataTable.table.nowrap th,table.dataTable.table.nowrap td{white-space:nowrap}div.dataTables_wrapper div.dataTables_length select{vertical-align:middle;min-height:2.7142em}div.dataTables_wrapper div.dataTables_length .ui.selection.dropdown{min-width:0}div.dataTables_wrapper div.dataTables_filter span.input{margin-left:.5em}div.dataTables_wrapper div.dataTables_info{padding-top:13px;white-space:nowrap}div.dataTables_wrapper div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;text-align:center}div.dataTables_wrapper div.row.dt-table{padding:0}div.dataTables_wrapper div.dataTables_scrollHead table.dataTable{border-bottom-right-radius:0;border-bottom-left-radius:0;border-bottom:none}div.dataTables_wrapper div.dataTables_scrollBody thead .sorting:after,div.dataTables_wrapper div.dataTables_scrollBody thead .sorting_asc:after,div.dataTables_wrapper div.dataTables_scrollBody thead .sorting_desc:after{display:none}div.dataTables_wrapper div.dataTables_scrollBody table.dataTable{border-radius:0;border-top:none;border-bottom-width:0}div.dataTables_wrapper div.dataTables_scrollBody table.dataTable.no-footer{border-bottom-width:1px}div.dataTables_wrapper div.dataTables_scrollFoot table.dataTable{border-top-right-radius:0;border-top-left-radius:0;border-top:none}
|
@ -0,0 +1,482 @@
|
|||||||
|
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 td.dt-control {
|
||||||
|
text-align: center;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
table.dataTable td.dt-control:before {
|
||||||
|
height: 1em;
|
||||||
|
width: 1em;
|
||||||
|
margin-top: -9px;
|
||||||
|
display: inline-block;
|
||||||
|
color: white;
|
||||||
|
border: 0.15em solid white;
|
||||||
|
border-radius: 1em;
|
||||||
|
box-shadow: 0 0 0.2em #444;
|
||||||
|
box-sizing: content-box;
|
||||||
|
text-align: center;
|
||||||
|
text-indent: 0 !important;
|
||||||
|
font-family: "Courier New", Courier, monospace;
|
||||||
|
line-height: 1em;
|
||||||
|
content: "+";
|
||||||
|
background-color: #31b131;
|
||||||
|
}
|
||||||
|
table.dataTable tr.dt-hasChild td.dt-control:before {
|
||||||
|
content: "-";
|
||||||
|
background-color: #d33333;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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 #111;
|
||||||
|
}
|
||||||
|
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 #111;
|
||||||
|
}
|
||||||
|
table.dataTable thead .sorting,
|
||||||
|
table.dataTable thead .sorting_asc,
|
||||||
|
table.dataTable thead .sorting_desc,
|
||||||
|
table.dataTable thead .sorting_asc_disabled,
|
||||||
|
table.dataTable thead .sorting_desc_disabled {
|
||||||
|
cursor: pointer;
|
||||||
|
*cursor: hand;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: center right;
|
||||||
|
}
|
||||||
|
table.dataTable thead .sorting {
|
||||||
|
background-image: url("../images/sort_both.png");
|
||||||
|
}
|
||||||
|
table.dataTable thead .sorting_asc {
|
||||||
|
background-image: url("../images/sort_asc.png") !important;
|
||||||
|
}
|
||||||
|
table.dataTable thead .sorting_desc {
|
||||||
|
background-image: url("../images/sort_desc.png") !important;
|
||||||
|
}
|
||||||
|
table.dataTable thead .sorting_asc_disabled {
|
||||||
|
background-image: url("../images/sort_asc_disabled.png");
|
||||||
|
}
|
||||||
|
table.dataTable thead .sorting_desc_disabled {
|
||||||
|
background-image: url("../images/sort_desc_disabled.png");
|
||||||
|
}
|
||||||
|
table.dataTable tbody tr {
|
||||||
|
background-color: #ffffff;
|
||||||
|
}
|
||||||
|
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 #ddd;
|
||||||
|
}
|
||||||
|
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 #ddd;
|
||||||
|
border-right: 1px solid #ddd;
|
||||||
|
}
|
||||||
|
table.dataTable.cell-border tbody tr th:first-child,
|
||||||
|
table.dataTable.cell-border tbody tr td:first-child {
|
||||||
|
border-left: 1px solid #ddd;
|
||||||
|
}
|
||||||
|
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: #acbad4;
|
||||||
|
}
|
||||||
|
table.dataTable.hover tbody tr:hover, table.dataTable.display tbody tr:hover {
|
||||||
|
background-color: #f6f6f6;
|
||||||
|
}
|
||||||
|
table.dataTable.hover tbody tr:hover.selected, table.dataTable.display tbody tr:hover.selected {
|
||||||
|
background-color: #aab7d1;
|
||||||
|
}
|
||||||
|
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: #fafafa;
|
||||||
|
}
|
||||||
|
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: #acbad5;
|
||||||
|
}
|
||||||
|
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: #a6b4cd;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.odd.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_2 {
|
||||||
|
background-color: #a8b5cf;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.odd.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_3 {
|
||||||
|
background-color: #a9b7d1;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.even > .sorting_1, table.dataTable.order-column.stripe tbody tr.even > .sorting_1 {
|
||||||
|
background-color: #fafafa;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.even > .sorting_2, table.dataTable.order-column.stripe tbody tr.even > .sorting_2 {
|
||||||
|
background-color: #fcfcfc;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.even > .sorting_3, table.dataTable.order-column.stripe tbody tr.even > .sorting_3 {
|
||||||
|
background-color: #fefefe;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.even.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_1 {
|
||||||
|
background-color: #acbad5;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr.even.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_2 {
|
||||||
|
background-color: #aebcd6;
|
||||||
|
}
|
||||||
|
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.order-column.hover tbody tr:hover > .sorting_1 {
|
||||||
|
background-color: #eaeaea;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr:hover > .sorting_2, table.dataTable.order-column.hover tbody tr:hover > .sorting_2 {
|
||||||
|
background-color: #ececec;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr:hover > .sorting_3, table.dataTable.order-column.hover tbody tr:hover > .sorting_3 {
|
||||||
|
background-color: #efefef;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr:hover.selected > .sorting_1, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_1 {
|
||||||
|
background-color: #a2aec7;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr:hover.selected > .sorting_2, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_2 {
|
||||||
|
background-color: #a3b0c9;
|
||||||
|
}
|
||||||
|
table.dataTable.display tbody tr:hover.selected > .sorting_3, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_3 {
|
||||||
|
background-color: #a5b2cb;
|
||||||
|
}
|
||||||
|
table.dataTable.no-footer {
|
||||||
|
border-bottom: 1px solid #111;
|
||||||
|
}
|
||||||
|
table.dataTable.nowrap th, table.dataTable.nowrap td {
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
table.dataTable.compact thead th,
|
||||||
|
table.dataTable.compact thead td {
|
||||||
|
padding: 4px 17px;
|
||||||
|
}
|
||||||
|
table.dataTable.compact tfoot th,
|
||||||
|
table.dataTable.compact tfoot td {
|
||||||
|
padding: 4px;
|
||||||
|
}
|
||||||
|
table.dataTable.compact tbody th,
|
||||||
|
table.dataTable.compact tbody td {
|
||||||
|
padding: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.dataTable th,
|
||||||
|
table.dataTable td {
|
||||||
|
box-sizing: content-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Control feature layout
|
||||||
|
*/
|
||||||
|
.dataTables_wrapper {
|
||||||
|
position: relative;
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_length {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_length select {
|
||||||
|
border: 1px solid #aaa;
|
||||||
|
border-radius: 3px;
|
||||||
|
padding: 5px;
|
||||||
|
background-color: transparent;
|
||||||
|
padding: 4px;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_filter {
|
||||||
|
float: right;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_filter input {
|
||||||
|
border: 1px solid #aaa;
|
||||||
|
border-radius: 3px;
|
||||||
|
padding: 5px;
|
||||||
|
background-color: transparent;
|
||||||
|
margin-left: 3px;
|
||||||
|
}
|
||||||
|
.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: #333 !important;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
border-radius: 2px;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_paginate .paginate_button.current, .dataTables_wrapper .dataTables_paginate .paginate_button.current:hover {
|
||||||
|
color: #333 !important;
|
||||||
|
border: 1px solid #979797;
|
||||||
|
background-color: white;
|
||||||
|
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, white), color-stop(100%, #dcdcdc));
|
||||||
|
/* Chrome,Safari4+ */
|
||||||
|
background: -webkit-linear-gradient(top, white 0%, #dcdcdc 100%);
|
||||||
|
/* Chrome10+,Safari5.1+ */
|
||||||
|
background: -moz-linear-gradient(top, white 0%, #dcdcdc 100%);
|
||||||
|
/* FF3.6+ */
|
||||||
|
background: -ms-linear-gradient(top, white 0%, #dcdcdc 100%);
|
||||||
|
/* IE10+ */
|
||||||
|
background: -o-linear-gradient(top, white 0%, #dcdcdc 100%);
|
||||||
|
/* Opera 11.10+ */
|
||||||
|
background: linear-gradient(to bottom, white 0%, #dcdcdc 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 #111;
|
||||||
|
background-color: #585858;
|
||||||
|
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111));
|
||||||
|
/* Chrome,Safari4+ */
|
||||||
|
background: -webkit-linear-gradient(top, #585858 0%, #111 100%);
|
||||||
|
/* Chrome10+,Safari5.1+ */
|
||||||
|
background: -moz-linear-gradient(top, #585858 0%, #111 100%);
|
||||||
|
/* FF3.6+ */
|
||||||
|
background: -ms-linear-gradient(top, #585858 0%, #111 100%);
|
||||||
|
/* IE10+ */
|
||||||
|
background: -o-linear-gradient(top, #585858 0%, #111 100%);
|
||||||
|
/* Opera 11.10+ */
|
||||||
|
background: linear-gradient(to bottom, #585858 0%, #111 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_paginate .ellipsis {
|
||||||
|
padding: 0 1em;
|
||||||
|
}
|
||||||
|
.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)));
|
||||||
|
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%);
|
||||||
|
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%);
|
||||||
|
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%);
|
||||||
|
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%);
|
||||||
|
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%);
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_length,
|
||||||
|
.dataTables_wrapper .dataTables_filter,
|
||||||
|
.dataTables_wrapper .dataTables_info,
|
||||||
|
.dataTables_wrapper .dataTables_processing,
|
||||||
|
.dataTables_wrapper .dataTables_paginate {
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
.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 > table > thead > tr > th, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > td, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > th, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > td {
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > th > div.dataTables_sizing,
|
||||||
|
.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > td > div.dataTables_sizing, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > th > div.dataTables_sizing,
|
||||||
|
.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > td > div.dataTables_sizing {
|
||||||
|
height: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
margin: 0 !important;
|
||||||
|
padding: 0 !important;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper.no-footer .dataTables_scrollBody {
|
||||||
|
border-bottom: 1px solid #111;
|
||||||
|
}
|
||||||
|
.dataTables_wrapper.no-footer div.dataTables_scrollHead table.dataTable,
|
||||||
|
.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;
|
||||||
|
}
|
||||||
|
}
|
1
app/static/DataTables2022/DataTables-1.11.4/css/jquery.dataTables.min.css
vendored
Normal file
1
app/static/DataTables2022/DataTables-1.11.4/css/jquery.dataTables.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
BIN
app/static/DataTables2022/DataTables-1.11.4/images/sort_asc.png
Normal file
BIN
app/static/DataTables2022/DataTables-1.11.4/images/sort_asc.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 160 B |
Binary file not shown.
After Width: | Height: | Size: 146 B |
BIN
app/static/DataTables2022/DataTables-1.11.4/images/sort_both.png
Normal file
BIN
app/static/DataTables2022/DataTables-1.11.4/images/sort_both.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 201 B |
BIN
app/static/DataTables2022/DataTables-1.11.4/images/sort_desc.png
Normal file
BIN
app/static/DataTables2022/DataTables-1.11.4/images/sort_desc.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 158 B |
Binary file not shown.
After Width: | Height: | Size: 148 B |
@ -0,0 +1,182 @@
|
|||||||
|
/*! DataTables Bootstrap 3 integration
|
||||||
|
* ©2011-2015 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( factory ){
|
||||||
|
if ( typeof define === 'function' && define.amd ) {
|
||||||
|
// AMD
|
||||||
|
define( ['jquery', 'datatables.net'], function ( $ ) {
|
||||||
|
return factory( $, window, document );
|
||||||
|
} );
|
||||||
|
}
|
||||||
|
else if ( typeof exports === 'object' ) {
|
||||||
|
// CommonJS
|
||||||
|
module.exports = function (root, $) {
|
||||||
|
if ( ! root ) {
|
||||||
|
root = window;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( ! $ || ! $.fn.dataTable ) {
|
||||||
|
// Require DataTables, which attaches to jQuery, including
|
||||||
|
// jQuery if needed and have a $ property so we can access the
|
||||||
|
// jQuery object that is used
|
||||||
|
$ = require('datatables.net')(root, $).$;
|
||||||
|
}
|
||||||
|
|
||||||
|
return factory( $, root, root.document );
|
||||||
|
};
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// Browser
|
||||||
|
factory( jQuery, window, document );
|
||||||
|
}
|
||||||
|
}(function( $, window, document, undefined ) {
|
||||||
|
'use strict';
|
||||||
|
var DataTable = $.fn.dataTable;
|
||||||
|
|
||||||
|
|
||||||
|
/* 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-5'i><'col-sm-7'p>>",
|
||||||
|
renderer: 'bootstrap'
|
||||||
|
} );
|
||||||
|
|
||||||
|
|
||||||
|
/* Default class modification */
|
||||||
|
$.extend( DataTable.ext.classes, {
|
||||||
|
sWrapper: "dataTables_wrapper form-inline dt-bootstrap",
|
||||||
|
sFilterInput: "form-control input-sm",
|
||||||
|
sLengthSelect: "form-control input-sm",
|
||||||
|
sProcessing: "dataTables_processing panel panel-default"
|
||||||
|
} );
|
||||||
|
|
||||||
|
|
||||||
|
/* 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 aria = settings.oLanguage.oAria.paginate || {};
|
||||||
|
var btnDisplay, btnClass, counter=0;
|
||||||
|
|
||||||
|
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 ) {
|
||||||
|
api.page( e.data.action ).draw( 'page' );
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
for ( i=0, ien=buttons.length ; i<ien ; i++ ) {
|
||||||
|
button = buttons[i];
|
||||||
|
|
||||||
|
if ( Array.isArray( button ) ) {
|
||||||
|
attach( container, button );
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
btnDisplay = '';
|
||||||
|
btnClass = '';
|
||||||
|
|
||||||
|
switch ( button ) {
|
||||||
|
case 'ellipsis':
|
||||||
|
btnDisplay = '…';
|
||||||
|
btnClass = 'disabled';
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'first':
|
||||||
|
btnDisplay = lang.sFirst;
|
||||||
|
btnClass = button + (page > 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 = $('<li>', {
|
||||||
|
'class': classes.sPageButton+' '+btnClass,
|
||||||
|
'id': idx === 0 && typeof button === 'string' ?
|
||||||
|
settings.sTableId +'_'+ button :
|
||||||
|
null
|
||||||
|
} )
|
||||||
|
.append( $('<a>', {
|
||||||
|
'href': '#',
|
||||||
|
'aria-controls': settings.sTableId,
|
||||||
|
'aria-label': aria[ button ],
|
||||||
|
'data-dt-idx': counter,
|
||||||
|
'tabindex': settings.iTabIndex
|
||||||
|
} )
|
||||||
|
.html( btnDisplay )
|
||||||
|
)
|
||||||
|
.appendTo( container );
|
||||||
|
|
||||||
|
settings.oApi._fnBindAction(
|
||||||
|
node, {action: button}, clickHandler
|
||||||
|
);
|
||||||
|
|
||||||
|
counter++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// IE9 throws an 'unknown error' if document.activeElement is used
|
||||||
|
// inside an iframe or frame.
|
||||||
|
var activeEl;
|
||||||
|
|
||||||
|
try {
|
||||||
|
// Because this approach is destroying and recreating the paging
|
||||||
|
// elements, focus is lost on the select button which is bad for
|
||||||
|
// accessibility. So we want to restore focus once the draw has
|
||||||
|
// completed
|
||||||
|
activeEl = $(host).find(document.activeElement).data('dt-idx');
|
||||||
|
}
|
||||||
|
catch (e) {}
|
||||||
|
|
||||||
|
attach(
|
||||||
|
$(host).empty().html('<ul class="pagination"/>').children('ul'),
|
||||||
|
buttons
|
||||||
|
);
|
||||||
|
|
||||||
|
if ( activeEl !== undefined ) {
|
||||||
|
$(host).find( '[data-dt-idx='+activeEl+']' ).trigger('focus');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
return DataTable;
|
||||||
|
}));
|
14
app/static/DataTables2022/DataTables-1.11.4/js/dataTables.bootstrap.min.js
vendored
Normal file
14
app/static/DataTables2022/DataTables-1.11.4/js/dataTables.bootstrap.min.js
vendored
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
/*!
|
||||||
|
DataTables Bootstrap 3 integration
|
||||||
|
©2011-2015 SpryMedia Ltd - datatables.net/license
|
||||||
|
*/
|
||||||
|
var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.findInternal=function(a,b,c){a instanceof String&&(a=String(a));for(var e=a.length,d=0;d<e;d++){var f=a[d];if(b.call(c,f,d,a))return{i:d,v:f}}return{i:-1,v:void 0}};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.SIMPLE_FROUND_POLYFILL=!1;$jscomp.ISOLATE_POLYFILLS=!1;
|
||||||
|
$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){if(a==Array.prototype||a==Object.prototype)return a;a[b]=c.value;return a};$jscomp.getGlobal=function(a){a=["object"==typeof globalThis&&globalThis,a,"object"==typeof window&&window,"object"==typeof self&&self,"object"==typeof global&&global];for(var b=0;b<a.length;++b){var c=a[b];if(c&&c.Math==Math)return c}throw Error("Cannot find global object");};$jscomp.global=$jscomp.getGlobal(this);
|
||||||
|
$jscomp.IS_SYMBOL_NATIVE="function"===typeof Symbol&&"symbol"===typeof Symbol("x");$jscomp.TRUST_ES6_POLYFILLS=!$jscomp.ISOLATE_POLYFILLS||$jscomp.IS_SYMBOL_NATIVE;$jscomp.polyfills={};$jscomp.propertyToPolyfillSymbol={};$jscomp.POLYFILL_PREFIX="$jscp$";var $jscomp$lookupPolyfilledValue=function(a,b){var c=$jscomp.propertyToPolyfillSymbol[b];if(null==c)return a[b];c=a[c];return void 0!==c?c:a[b]};
|
||||||
|
$jscomp.polyfill=function(a,b,c,e){b&&($jscomp.ISOLATE_POLYFILLS?$jscomp.polyfillIsolated(a,b,c,e):$jscomp.polyfillUnisolated(a,b,c,e))};$jscomp.polyfillUnisolated=function(a,b,c,e){c=$jscomp.global;a=a.split(".");for(e=0;e<a.length-1;e++){var d=a[e];if(!(d in c))return;c=c[d]}a=a[a.length-1];e=c[a];b=b(e);b!=e&&null!=b&&$jscomp.defineProperty(c,a,{configurable:!0,writable:!0,value:b})};
|
||||||
|
$jscomp.polyfillIsolated=function(a,b,c,e){var d=a.split(".");a=1===d.length;e=d[0];e=!a&&e in $jscomp.polyfills?$jscomp.polyfills:$jscomp.global;for(var f=0;f<d.length-1;f++){var l=d[f];if(!(l in e))return;e=e[l]}d=d[d.length-1];c=$jscomp.IS_SYMBOL_NATIVE&&"es6"===c?e[d]:null;b=b(c);null!=b&&(a?$jscomp.defineProperty($jscomp.polyfills,d,{configurable:!0,writable:!0,value:b}):b!==c&&($jscomp.propertyToPolyfillSymbol[d]=$jscomp.IS_SYMBOL_NATIVE?$jscomp.global.Symbol(d):$jscomp.POLYFILL_PREFIX+d,d=
|
||||||
|
$jscomp.propertyToPolyfillSymbol[d],$jscomp.defineProperty(e,d,{configurable:!0,writable:!0,value:b})))};$jscomp.polyfill("Array.prototype.find",function(a){return a?a:function(b,c){return $jscomp.findInternal(this,b,c).v}},"es6","es3");
|
||||||
|
(function(a){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(b){return a(b,window,document)}):"object"===typeof exports?module.exports=function(b,c){b||(b=window);c&&c.fn.dataTable||(c=require("datatables.net")(b,c).$);return a(c,b,b.document)}:a(jQuery,window,document)})(function(a,b,c,e){var d=a.fn.dataTable;a.extend(!0,d.defaults,{dom:"<'row'<'col-sm-6'l><'col-sm-6'f>><'row'<'col-sm-12'tr>><'row'<'col-sm-5'i><'col-sm-7'p>>",renderer:"bootstrap"});a.extend(d.ext.classes,
|
||||||
|
{sWrapper:"dataTables_wrapper form-inline dt-bootstrap",sFilterInput:"form-control input-sm",sLengthSelect:"form-control input-sm",sProcessing:"dataTables_processing panel panel-default"});d.ext.renderer.pageButton.bootstrap=function(f,l,A,B,m,t){var u=new d.Api(f),C=f.oClasses,n=f.oLanguage.oPaginate,D=f.oLanguage.oAria.paginate||{},h,k,v=0,y=function(q,w){var x,E=function(p){p.preventDefault();a(p.currentTarget).hasClass("disabled")||u.page()==p.data.action||u.page(p.data.action).draw("page")};
|
||||||
|
var r=0;for(x=w.length;r<x;r++){var g=w[r];if(Array.isArray(g))y(q,g);else{k=h="";switch(g){case "ellipsis":h="…";k="disabled";break;case "first":h=n.sFirst;k=g+(0<m?"":" disabled");break;case "previous":h=n.sPrevious;k=g+(0<m?"":" disabled");break;case "next":h=n.sNext;k=g+(m<t-1?"":" disabled");break;case "last":h=n.sLast;k=g+(m<t-1?"":" disabled");break;default:h=g+1,k=m===g?"active":""}if(h){var F=a("<li>",{"class":C.sPageButton+" "+k,id:0===A&&"string"===typeof g?f.sTableId+"_"+g:null}).append(a("<a>",
|
||||||
|
{href:"#","aria-controls":f.sTableId,"aria-label":D[g],"data-dt-idx":v,tabindex:f.iTabIndex}).html(h)).appendTo(q);f.oApi._fnBindAction(F,{action:g},E);v++}}}};try{var z=a(l).find(c.activeElement).data("dt-idx")}catch(q){}y(a(l).empty().html('<ul class="pagination"/>').children("ul"),B);z!==e&&a(l).find("[data-dt-idx="+z+"]").trigger("focus")};return d});
|
@ -0,0 +1,184 @@
|
|||||||
|
/*! DataTables Bootstrap 4 integration
|
||||||
|
* ©2011-2017 SpryMedia Ltd - datatables.net/license
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DataTables integration for Bootstrap 4. This requires Bootstrap 4 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( factory ){
|
||||||
|
if ( typeof define === 'function' && define.amd ) {
|
||||||
|
// AMD
|
||||||
|
define( ['jquery', 'datatables.net'], function ( $ ) {
|
||||||
|
return factory( $, window, document );
|
||||||
|
} );
|
||||||
|
}
|
||||||
|
else if ( typeof exports === 'object' ) {
|
||||||
|
// CommonJS
|
||||||
|
module.exports = function (root, $) {
|
||||||
|
if ( ! root ) {
|
||||||
|
root = window;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( ! $ || ! $.fn.dataTable ) {
|
||||||
|
// Require DataTables, which attaches to jQuery, including
|
||||||
|
// jQuery if needed and have a $ property so we can access the
|
||||||
|
// jQuery object that is used
|
||||||
|
$ = require('datatables.net')(root, $).$;
|
||||||
|
}
|
||||||
|
|
||||||
|
return factory( $, root, root.document );
|
||||||
|
};
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// Browser
|
||||||
|
factory( jQuery, window, document );
|
||||||
|
}
|
||||||
|
}(function( $, window, document, undefined ) {
|
||||||
|
'use strict';
|
||||||
|
var DataTable = $.fn.dataTable;
|
||||||
|
|
||||||
|
|
||||||
|
/* Set the defaults for DataTables initialisation */
|
||||||
|
$.extend( true, DataTable.defaults, {
|
||||||
|
dom:
|
||||||
|
"<'row'<'col-sm-12 col-md-6'l><'col-sm-12 col-md-6'f>>" +
|
||||||
|
"<'row'<'col-sm-12'tr>>" +
|
||||||
|
"<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
|
||||||
|
renderer: 'bootstrap'
|
||||||
|
} );
|
||||||
|
|
||||||
|
|
||||||
|
/* Default class modification */
|
||||||
|
$.extend( DataTable.ext.classes, {
|
||||||
|
sWrapper: "dataTables_wrapper dt-bootstrap4",
|
||||||
|
sFilterInput: "form-control form-control-sm",
|
||||||
|
sLengthSelect: "custom-select custom-select-sm form-control form-control-sm",
|
||||||
|
sProcessing: "dataTables_processing card",
|
||||||
|
sPageButton: "paginate_button page-item"
|
||||||
|
} );
|
||||||
|
|
||||||
|
|
||||||
|
/* 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 aria = settings.oLanguage.oAria.paginate || {};
|
||||||
|
var btnDisplay, btnClass, counter=0;
|
||||||
|
|
||||||
|
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 ) {
|
||||||
|
api.page( e.data.action ).draw( 'page' );
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
for ( i=0, ien=buttons.length ; i<ien ; i++ ) {
|
||||||
|
button = buttons[i];
|
||||||
|
|
||||||
|
if ( Array.isArray( button ) ) {
|
||||||
|
attach( container, button );
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
btnDisplay = '';
|
||||||
|
btnClass = '';
|
||||||
|
|
||||||
|
switch ( button ) {
|
||||||
|
case 'ellipsis':
|
||||||
|
btnDisplay = '…';
|
||||||
|
btnClass = 'disabled';
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'first':
|
||||||
|
btnDisplay = lang.sFirst;
|
||||||
|
btnClass = button + (page > 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 = $('<li>', {
|
||||||
|
'class': classes.sPageButton+' '+btnClass,
|
||||||
|
'id': idx === 0 && typeof button === 'string' ?
|
||||||
|
settings.sTableId +'_'+ button :
|
||||||
|
null
|
||||||
|
} )
|
||||||
|
.append( $('<a>', {
|
||||||
|
'href': '#',
|
||||||
|
'aria-controls': settings.sTableId,
|
||||||
|
'aria-label': aria[ button ],
|
||||||
|
'data-dt-idx': counter,
|
||||||
|
'tabindex': settings.iTabIndex,
|
||||||
|
'class': 'page-link'
|
||||||
|
} )
|
||||||
|
.html( btnDisplay )
|
||||||
|
)
|
||||||
|
.appendTo( container );
|
||||||
|
|
||||||
|
settings.oApi._fnBindAction(
|
||||||
|
node, {action: button}, clickHandler
|
||||||
|
);
|
||||||
|
|
||||||
|
counter++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// IE9 throws an 'unknown error' if document.activeElement is used
|
||||||
|
// inside an iframe or frame.
|
||||||
|
var activeEl;
|
||||||
|
|
||||||
|
try {
|
||||||
|
// Because this approach is destroying and recreating the paging
|
||||||
|
// elements, focus is lost on the select button which is bad for
|
||||||
|
// accessibility. So we want to restore focus once the draw has
|
||||||
|
// completed
|
||||||
|
activeEl = $(host).find(document.activeElement).data('dt-idx');
|
||||||
|
}
|
||||||
|
catch (e) {}
|
||||||
|
|
||||||
|
attach(
|
||||||
|
$(host).empty().html('<ul class="pagination"/>').children('ul'),
|
||||||
|
buttons
|
||||||
|
);
|
||||||
|
|
||||||
|
if ( activeEl !== undefined ) {
|
||||||
|
$(host).find( '[data-dt-idx='+activeEl+']' ).trigger('focus');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
return DataTable;
|
||||||
|
}));
|
14
app/static/DataTables2022/DataTables-1.11.4/js/dataTables.bootstrap4.min.js
vendored
Normal file
14
app/static/DataTables2022/DataTables-1.11.4/js/dataTables.bootstrap4.min.js
vendored
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
/*!
|
||||||
|
DataTables Bootstrap 4 integration
|
||||||
|
©2011-2017 SpryMedia Ltd - datatables.net/license
|
||||||
|
*/
|
||||||
|
var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.findInternal=function(a,b,c){a instanceof String&&(a=String(a));for(var e=a.length,d=0;d<e;d++){var f=a[d];if(b.call(c,f,d,a))return{i:d,v:f}}return{i:-1,v:void 0}};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.SIMPLE_FROUND_POLYFILL=!1;$jscomp.ISOLATE_POLYFILLS=!1;
|
||||||
|
$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){if(a==Array.prototype||a==Object.prototype)return a;a[b]=c.value;return a};$jscomp.getGlobal=function(a){a=["object"==typeof globalThis&&globalThis,a,"object"==typeof window&&window,"object"==typeof self&&self,"object"==typeof global&&global];for(var b=0;b<a.length;++b){var c=a[b];if(c&&c.Math==Math)return c}throw Error("Cannot find global object");};$jscomp.global=$jscomp.getGlobal(this);
|
||||||
|
$jscomp.IS_SYMBOL_NATIVE="function"===typeof Symbol&&"symbol"===typeof Symbol("x");$jscomp.TRUST_ES6_POLYFILLS=!$jscomp.ISOLATE_POLYFILLS||$jscomp.IS_SYMBOL_NATIVE;$jscomp.polyfills={};$jscomp.propertyToPolyfillSymbol={};$jscomp.POLYFILL_PREFIX="$jscp$";var $jscomp$lookupPolyfilledValue=function(a,b){var c=$jscomp.propertyToPolyfillSymbol[b];if(null==c)return a[b];c=a[c];return void 0!==c?c:a[b]};
|
||||||
|
$jscomp.polyfill=function(a,b,c,e){b&&($jscomp.ISOLATE_POLYFILLS?$jscomp.polyfillIsolated(a,b,c,e):$jscomp.polyfillUnisolated(a,b,c,e))};$jscomp.polyfillUnisolated=function(a,b,c,e){c=$jscomp.global;a=a.split(".");for(e=0;e<a.length-1;e++){var d=a[e];if(!(d in c))return;c=c[d]}a=a[a.length-1];e=c[a];b=b(e);b!=e&&null!=b&&$jscomp.defineProperty(c,a,{configurable:!0,writable:!0,value:b})};
|
||||||
|
$jscomp.polyfillIsolated=function(a,b,c,e){var d=a.split(".");a=1===d.length;e=d[0];e=!a&&e in $jscomp.polyfills?$jscomp.polyfills:$jscomp.global;for(var f=0;f<d.length-1;f++){var l=d[f];if(!(l in e))return;e=e[l]}d=d[d.length-1];c=$jscomp.IS_SYMBOL_NATIVE&&"es6"===c?e[d]:null;b=b(c);null!=b&&(a?$jscomp.defineProperty($jscomp.polyfills,d,{configurable:!0,writable:!0,value:b}):b!==c&&($jscomp.propertyToPolyfillSymbol[d]=$jscomp.IS_SYMBOL_NATIVE?$jscomp.global.Symbol(d):$jscomp.POLYFILL_PREFIX+d,d=
|
||||||
|
$jscomp.propertyToPolyfillSymbol[d],$jscomp.defineProperty(e,d,{configurable:!0,writable:!0,value:b})))};$jscomp.polyfill("Array.prototype.find",function(a){return a?a:function(b,c){return $jscomp.findInternal(this,b,c).v}},"es6","es3");
|
||||||
|
(function(a){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(b){return a(b,window,document)}):"object"===typeof exports?module.exports=function(b,c){b||(b=window);c&&c.fn.dataTable||(c=require("datatables.net")(b,c).$);return a(c,b,b.document)}:a(jQuery,window,document)})(function(a,b,c,e){var d=a.fn.dataTable;a.extend(!0,d.defaults,{dom:"<'row'<'col-sm-12 col-md-6'l><'col-sm-12 col-md-6'f>><'row'<'col-sm-12'tr>><'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
|
||||||
|
renderer:"bootstrap"});a.extend(d.ext.classes,{sWrapper:"dataTables_wrapper dt-bootstrap4",sFilterInput:"form-control form-control-sm",sLengthSelect:"custom-select custom-select-sm form-control form-control-sm",sProcessing:"dataTables_processing card",sPageButton:"paginate_button page-item"});d.ext.renderer.pageButton.bootstrap=function(f,l,A,B,m,t){var u=new d.Api(f),C=f.oClasses,n=f.oLanguage.oPaginate,D=f.oLanguage.oAria.paginate||{},h,k,v=0,y=function(q,w){var x,E=function(p){p.preventDefault();
|
||||||
|
a(p.currentTarget).hasClass("disabled")||u.page()==p.data.action||u.page(p.data.action).draw("page")};var r=0;for(x=w.length;r<x;r++){var g=w[r];if(Array.isArray(g))y(q,g);else{k=h="";switch(g){case "ellipsis":h="…";k="disabled";break;case "first":h=n.sFirst;k=g+(0<m?"":" disabled");break;case "previous":h=n.sPrevious;k=g+(0<m?"":" disabled");break;case "next":h=n.sNext;k=g+(m<t-1?"":" disabled");break;case "last":h=n.sLast;k=g+(m<t-1?"":" disabled");break;default:h=g+1,k=m===g?"active":""}if(h){var F=
|
||||||
|
a("<li>",{"class":C.sPageButton+" "+k,id:0===A&&"string"===typeof g?f.sTableId+"_"+g:null}).append(a("<a>",{href:"#","aria-controls":f.sTableId,"aria-label":D[g],"data-dt-idx":v,tabindex:f.iTabIndex,"class":"page-link"}).html(h)).appendTo(q);f.oApi._fnBindAction(F,{action:g},E);v++}}}};try{var z=a(l).find(c.activeElement).data("dt-idx")}catch(q){}y(a(l).empty().html('<ul class="pagination"/>').children("ul"),B);z!==e&&a(l).find("[data-dt-idx="+z+"]").trigger("focus")};return d});
|
@ -0,0 +1,184 @@
|
|||||||
|
/*! DataTables Bootstrap 5 integration
|
||||||
|
* 2020 SpryMedia Ltd - datatables.net/license
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DataTables integration for Bootstrap 4. This requires Bootstrap 5 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( factory ){
|
||||||
|
if ( typeof define === 'function' && define.amd ) {
|
||||||
|
// AMD
|
||||||
|
define( ['jquery', 'datatables.net'], function ( $ ) {
|
||||||
|
return factory( $, window, document );
|
||||||
|
} );
|
||||||
|
}
|
||||||
|
else if ( typeof exports === 'object' ) {
|
||||||
|
// CommonJS
|
||||||
|
module.exports = function (root, $) {
|
||||||
|
if ( ! root ) {
|
||||||
|
root = window;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( ! $ || ! $.fn.dataTable ) {
|
||||||
|
// Require DataTables, which attaches to jQuery, including
|
||||||
|
// jQuery if needed and have a $ property so we can access the
|
||||||
|
// jQuery object that is used
|
||||||
|
$ = require('datatables.net')(root, $).$;
|
||||||
|
}
|
||||||
|
|
||||||
|
return factory( $, root, root.document );
|
||||||
|
};
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// Browser
|
||||||
|
factory( jQuery, window, document );
|
||||||
|
}
|
||||||
|
}(function( $, window, document, undefined ) {
|
||||||
|
'use strict';
|
||||||
|
var DataTable = $.fn.dataTable;
|
||||||
|
|
||||||
|
|
||||||
|
/* Set the defaults for DataTables initialisation */
|
||||||
|
$.extend( true, DataTable.defaults, {
|
||||||
|
dom:
|
||||||
|
"<'row'<'col-sm-12 col-md-6'l><'col-sm-12 col-md-6'f>>" +
|
||||||
|
"<'row'<'col-sm-12'tr>>" +
|
||||||
|
"<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
|
||||||
|
renderer: 'bootstrap'
|
||||||
|
} );
|
||||||
|
|
||||||
|
|
||||||
|
/* Default class modification */
|
||||||
|
$.extend( DataTable.ext.classes, {
|
||||||
|
sWrapper: "dataTables_wrapper dt-bootstrap5",
|
||||||
|
sFilterInput: "form-control form-control-sm",
|
||||||
|
sLengthSelect: "form-select form-select-sm",
|
||||||
|
sProcessing: "dataTables_processing card",
|
||||||
|
sPageButton: "paginate_button page-item"
|
||||||
|
} );
|
||||||
|
|
||||||
|
|
||||||
|
/* 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 aria = settings.oLanguage.oAria.paginate || {};
|
||||||
|
var btnDisplay, btnClass, counter=0;
|
||||||
|
|
||||||
|
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 ) {
|
||||||
|
api.page( e.data.action ).draw( 'page' );
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
for ( i=0, ien=buttons.length ; i<ien ; i++ ) {
|
||||||
|
button = buttons[i];
|
||||||
|
|
||||||
|
if ( Array.isArray( button ) ) {
|
||||||
|
attach( container, button );
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
btnDisplay = '';
|
||||||
|
btnClass = '';
|
||||||
|
|
||||||
|
switch ( button ) {
|
||||||
|
case 'ellipsis':
|
||||||
|
btnDisplay = '…';
|
||||||
|
btnClass = 'disabled';
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'first':
|
||||||
|
btnDisplay = lang.sFirst;
|
||||||
|
btnClass = button + (page > 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 = $('<li>', {
|
||||||
|
'class': classes.sPageButton+' '+btnClass,
|
||||||
|
'id': idx === 0 && typeof button === 'string' ?
|
||||||
|
settings.sTableId +'_'+ button :
|
||||||
|
null
|
||||||
|
} )
|
||||||
|
.append( $('<a>', {
|
||||||
|
'href': '#',
|
||||||
|
'aria-controls': settings.sTableId,
|
||||||
|
'aria-label': aria[ button ],
|
||||||
|
'data-dt-idx': counter,
|
||||||
|
'tabindex': settings.iTabIndex,
|
||||||
|
'class': 'page-link'
|
||||||
|
} )
|
||||||
|
.html( btnDisplay )
|
||||||
|
)
|
||||||
|
.appendTo( container );
|
||||||
|
|
||||||
|
settings.oApi._fnBindAction(
|
||||||
|
node, {action: button}, clickHandler
|
||||||
|
);
|
||||||
|
|
||||||
|
counter++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// IE9 throws an 'unknown error' if document.activeElement is used
|
||||||
|
// inside an iframe or frame.
|
||||||
|
var activeEl;
|
||||||
|
|
||||||
|
try {
|
||||||
|
// Because this approach is destroying and recreating the paging
|
||||||
|
// elements, focus is lost on the select button which is bad for
|
||||||
|
// accessibility. So we want to restore focus once the draw has
|
||||||
|
// completed
|
||||||
|
activeEl = $(host).find(document.activeElement).data('dt-idx');
|
||||||
|
}
|
||||||
|
catch (e) {}
|
||||||
|
|
||||||
|
attach(
|
||||||
|
$(host).empty().html('<ul class="pagination"/>').children('ul'),
|
||||||
|
buttons
|
||||||
|
);
|
||||||
|
|
||||||
|
if ( activeEl !== undefined ) {
|
||||||
|
$(host).find( '[data-dt-idx='+activeEl+']' ).trigger('focus');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
return DataTable;
|
||||||
|
}));
|
14
app/static/DataTables2022/DataTables-1.11.4/js/dataTables.bootstrap5.min.js
vendored
Normal file
14
app/static/DataTables2022/DataTables-1.11.4/js/dataTables.bootstrap5.min.js
vendored
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
/*!
|
||||||
|
DataTables Bootstrap 5 integration
|
||||||
|
2020 SpryMedia Ltd - datatables.net/license
|
||||||
|
*/
|
||||||
|
var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.findInternal=function(a,b,c){a instanceof String&&(a=String(a));for(var e=a.length,d=0;d<e;d++){var f=a[d];if(b.call(c,f,d,a))return{i:d,v:f}}return{i:-1,v:void 0}};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.SIMPLE_FROUND_POLYFILL=!1;$jscomp.ISOLATE_POLYFILLS=!1;
|
||||||
|
$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){if(a==Array.prototype||a==Object.prototype)return a;a[b]=c.value;return a};$jscomp.getGlobal=function(a){a=["object"==typeof globalThis&&globalThis,a,"object"==typeof window&&window,"object"==typeof self&&self,"object"==typeof global&&global];for(var b=0;b<a.length;++b){var c=a[b];if(c&&c.Math==Math)return c}throw Error("Cannot find global object");};$jscomp.global=$jscomp.getGlobal(this);
|
||||||
|
$jscomp.IS_SYMBOL_NATIVE="function"===typeof Symbol&&"symbol"===typeof Symbol("x");$jscomp.TRUST_ES6_POLYFILLS=!$jscomp.ISOLATE_POLYFILLS||$jscomp.IS_SYMBOL_NATIVE;$jscomp.polyfills={};$jscomp.propertyToPolyfillSymbol={};$jscomp.POLYFILL_PREFIX="$jscp$";var $jscomp$lookupPolyfilledValue=function(a,b){var c=$jscomp.propertyToPolyfillSymbol[b];if(null==c)return a[b];c=a[c];return void 0!==c?c:a[b]};
|
||||||
|
$jscomp.polyfill=function(a,b,c,e){b&&($jscomp.ISOLATE_POLYFILLS?$jscomp.polyfillIsolated(a,b,c,e):$jscomp.polyfillUnisolated(a,b,c,e))};$jscomp.polyfillUnisolated=function(a,b,c,e){c=$jscomp.global;a=a.split(".");for(e=0;e<a.length-1;e++){var d=a[e];if(!(d in c))return;c=c[d]}a=a[a.length-1];e=c[a];b=b(e);b!=e&&null!=b&&$jscomp.defineProperty(c,a,{configurable:!0,writable:!0,value:b})};
|
||||||
|
$jscomp.polyfillIsolated=function(a,b,c,e){var d=a.split(".");a=1===d.length;e=d[0];e=!a&&e in $jscomp.polyfills?$jscomp.polyfills:$jscomp.global;for(var f=0;f<d.length-1;f++){var l=d[f];if(!(l in e))return;e=e[l]}d=d[d.length-1];c=$jscomp.IS_SYMBOL_NATIVE&&"es6"===c?e[d]:null;b=b(c);null!=b&&(a?$jscomp.defineProperty($jscomp.polyfills,d,{configurable:!0,writable:!0,value:b}):b!==c&&($jscomp.propertyToPolyfillSymbol[d]=$jscomp.IS_SYMBOL_NATIVE?$jscomp.global.Symbol(d):$jscomp.POLYFILL_PREFIX+d,d=
|
||||||
|
$jscomp.propertyToPolyfillSymbol[d],$jscomp.defineProperty(e,d,{configurable:!0,writable:!0,value:b})))};$jscomp.polyfill("Array.prototype.find",function(a){return a?a:function(b,c){return $jscomp.findInternal(this,b,c).v}},"es6","es3");
|
||||||
|
(function(a){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(b){return a(b,window,document)}):"object"===typeof exports?module.exports=function(b,c){b||(b=window);c&&c.fn.dataTable||(c=require("datatables.net")(b,c).$);return a(c,b,b.document)}:a(jQuery,window,document)})(function(a,b,c,e){var d=a.fn.dataTable;a.extend(!0,d.defaults,{dom:"<'row'<'col-sm-12 col-md-6'l><'col-sm-12 col-md-6'f>><'row'<'col-sm-12'tr>><'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
|
||||||
|
renderer:"bootstrap"});a.extend(d.ext.classes,{sWrapper:"dataTables_wrapper dt-bootstrap5",sFilterInput:"form-control form-control-sm",sLengthSelect:"form-select form-select-sm",sProcessing:"dataTables_processing card",sPageButton:"paginate_button page-item"});d.ext.renderer.pageButton.bootstrap=function(f,l,A,B,m,t){var u=new d.Api(f),C=f.oClasses,n=f.oLanguage.oPaginate,D=f.oLanguage.oAria.paginate||{},h,k,v=0,y=function(q,w){var x,E=function(p){p.preventDefault();a(p.currentTarget).hasClass("disabled")||
|
||||||
|
u.page()==p.data.action||u.page(p.data.action).draw("page")};var r=0;for(x=w.length;r<x;r++){var g=w[r];if(Array.isArray(g))y(q,g);else{k=h="";switch(g){case "ellipsis":h="…";k="disabled";break;case "first":h=n.sFirst;k=g+(0<m?"":" disabled");break;case "previous":h=n.sPrevious;k=g+(0<m?"":" disabled");break;case "next":h=n.sNext;k=g+(m<t-1?"":" disabled");break;case "last":h=n.sLast;k=g+(m<t-1?"":" disabled");break;default:h=g+1,k=m===g?"active":""}if(h){var F=a("<li>",{"class":C.sPageButton+
|
||||||
|
" "+k,id:0===A&&"string"===typeof g?f.sTableId+"_"+g:null}).append(a("<a>",{href:"#","aria-controls":f.sTableId,"aria-label":D[g],"data-dt-idx":v,tabindex:f.iTabIndex,"class":"page-link"}).html(h)).appendTo(q);f.oApi._fnBindAction(F,{action:g},E);v++}}}};try{var z=a(l).find(c.activeElement).data("dt-idx")}catch(q){}y(a(l).empty().html('<ul class="pagination"/>').children("ul"),B);z!==e&&a(l).find("[data-dt-idx="+z+"]").trigger("focus")};return d});
|
@ -0,0 +1,200 @@
|
|||||||
|
/*! DataTables Bulma integration
|
||||||
|
* ©2020 SpryMedia Ltd - datatables.net/license
|
||||||
|
*/
|
||||||
|
|
||||||
|
(function( factory ){
|
||||||
|
if ( typeof define === 'function' && define.amd ) {
|
||||||
|
// AMD
|
||||||
|
define( ['jquery', 'datatables.net'], function ( $ ) {
|
||||||
|
return factory( $, window, document );
|
||||||
|
} );
|
||||||
|
}
|
||||||
|
else if ( typeof exports === 'object' ) {
|
||||||
|
// CommonJS
|
||||||
|
module.exports = function (root, $) {
|
||||||
|
if ( ! root ) {
|
||||||
|
root = window;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( ! $ || ! $.fn.dataTable ) {
|
||||||
|
// Require DataTables, which attaches to jQuery, including
|
||||||
|
// jQuery if needed and have a $ property so we can access the
|
||||||
|
// jQuery object that is used
|
||||||
|
$ = require('datatables.net')(root, $).$;
|
||||||
|
}
|
||||||
|
|
||||||
|
return factory( $, root, root.document );
|
||||||
|
};
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// Browser
|
||||||
|
factory( jQuery, window, document );
|
||||||
|
}
|
||||||
|
}(function( $, window, document, undefined ) {
|
||||||
|
'use strict';
|
||||||
|
var DataTable = $.fn.dataTable;
|
||||||
|
|
||||||
|
|
||||||
|
/* Set the defaults for DataTables initialisation */
|
||||||
|
$.extend( true, DataTable.defaults, {
|
||||||
|
dom:
|
||||||
|
"<'columns is-gapless is-multiline'" +
|
||||||
|
"<'column is-half'l>" +
|
||||||
|
"<'column is-half'f>" +
|
||||||
|
"<'column is-full'tr>" +
|
||||||
|
"<'column is-half'i>" +
|
||||||
|
"<'column is-half'p>" +
|
||||||
|
">",
|
||||||
|
renderer: 'bulma'
|
||||||
|
} );
|
||||||
|
|
||||||
|
|
||||||
|
/* Default class modification */
|
||||||
|
$.extend( DataTable.ext.classes, {
|
||||||
|
sWrapper: "dataTables_wrapper dt-bulma",
|
||||||
|
sFilterInput: "input",
|
||||||
|
sLengthSelect: "custom-select custom-select-sm form-control form-control-sm",
|
||||||
|
sProcessing: "dataTables_processing card"
|
||||||
|
} );
|
||||||
|
|
||||||
|
|
||||||
|
/* Bulma paging button renderer */
|
||||||
|
DataTable.ext.renderer.pageButton.bulma = function ( settings, host, idx, buttons, page, pages ) {
|
||||||
|
var api = new DataTable.Api( settings );
|
||||||
|
var classes = settings.oClasses;
|
||||||
|
var lang = settings.oLanguage.oPaginate;
|
||||||
|
var aria = settings.oLanguage.oAria.paginate || {};
|
||||||
|
var btnDisplay, btnClass, counter=0;
|
||||||
|
|
||||||
|
var attach = function( container, buttons ) {
|
||||||
|
var i, ien, node, button, tag, disabled;
|
||||||
|
var clickHandler = function ( e ) {
|
||||||
|
e.preventDefault();
|
||||||
|
if ( ! $('a', e.currentTarget).prop('disabled') && api.page() != e.data.action ) {
|
||||||
|
api.page( e.data.action ).draw( 'page' );
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
for ( i=0, ien=buttons.length ; i<ien ; i++ ) {
|
||||||
|
button = buttons[i];
|
||||||
|
|
||||||
|
if ( Array.isArray( button ) ) {
|
||||||
|
attach( container, button );
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
btnDisplay = '';
|
||||||
|
btnClass = '';
|
||||||
|
tag = 'a';
|
||||||
|
disabled = false;
|
||||||
|
|
||||||
|
switch ( button ) {
|
||||||
|
case 'ellipsis':
|
||||||
|
btnDisplay = '…';
|
||||||
|
btnClass = 'pagination-link';
|
||||||
|
disabled = true;
|
||||||
|
tag = 'span';
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'first':
|
||||||
|
btnDisplay = lang.sFirst;
|
||||||
|
btnClass = button;
|
||||||
|
disabled = page <= 0;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'previous':
|
||||||
|
btnDisplay = lang.sPrevious;
|
||||||
|
btnClass = button;
|
||||||
|
disabled = page <= 0;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'next':
|
||||||
|
btnDisplay = lang.sNext;
|
||||||
|
btnClass = button;
|
||||||
|
disabled = page >= pages - 1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'last':
|
||||||
|
btnDisplay = lang.sLast;
|
||||||
|
btnClass = button;
|
||||||
|
disabled = page >= pages - 1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
btnDisplay = button + 1;
|
||||||
|
btnClass = page === button ?
|
||||||
|
'is-current' : '';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( btnDisplay ) {
|
||||||
|
node = $('<li>', {
|
||||||
|
'id': idx === 0 && typeof button === 'string' ?
|
||||||
|
settings.sTableId +'_'+ button :
|
||||||
|
null
|
||||||
|
} )
|
||||||
|
.append( $('<' + tag + '>', {
|
||||||
|
'href': '#',
|
||||||
|
'aria-controls': settings.sTableId,
|
||||||
|
'aria-label': aria[ button ],
|
||||||
|
'data-dt-idx': counter,
|
||||||
|
'tabindex': settings.iTabIndex,
|
||||||
|
'class': 'pagination-link ' + btnClass,
|
||||||
|
'disabled': disabled
|
||||||
|
} )
|
||||||
|
.html( btnDisplay )
|
||||||
|
)
|
||||||
|
.appendTo( container );
|
||||||
|
|
||||||
|
settings.oApi._fnBindAction(
|
||||||
|
node, {action: button}, clickHandler
|
||||||
|
);
|
||||||
|
|
||||||
|
counter++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// IE9 throws an 'unknown error' if document.activeElement is used
|
||||||
|
// inside an iframe or frame.
|
||||||
|
var activeEl;
|
||||||
|
|
||||||
|
try {
|
||||||
|
// Because this approach is destroying and recreating the paging
|
||||||
|
// elements, focus is lost on the select button which is bad for
|
||||||
|
// accessibility. So we want to restore focus once the draw has
|
||||||
|
// completed
|
||||||
|
activeEl = $(host).find(document.activeElement).data('dt-idx');
|
||||||
|
}
|
||||||
|
catch (e) {}
|
||||||
|
|
||||||
|
var nav = $('<nav class="pagination" role="navigation" aria-label="pagination"><ul class="pagination-list"></ul></nav>');
|
||||||
|
$(host).empty().append(nav);
|
||||||
|
|
||||||
|
attach(nav.find('ul'), buttons);
|
||||||
|
|
||||||
|
if ( activeEl !== undefined ) {
|
||||||
|
$(host).find( '[data-dt-idx='+activeEl+']' ).trigger('focus');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// Javascript enhancements on table initialisation
|
||||||
|
$(document).on( 'init.dt', function (e, ctx) {
|
||||||
|
if ( e.namespace !== 'dt' ) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var api = new $.fn.dataTable.Api( ctx );
|
||||||
|
|
||||||
|
// Length menu drop down - needs to be wrapped with a div
|
||||||
|
$( 'div.dataTables_length select', api.table().container() ).wrap('<div class="select">');
|
||||||
|
|
||||||
|
// Filtering input
|
||||||
|
// $( 'div.dataTables_filter.ui.input', api.table().container() ).removeClass('input').addClass('form');
|
||||||
|
// $( 'div.dataTables_filter input', api.table().container() ).wrap( '<span class="ui input" />' );
|
||||||
|
} );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return DataTable;
|
||||||
|
}));
|
15
app/static/DataTables2022/DataTables-1.11.4/js/dataTables.bulma.min.js
vendored
Normal file
15
app/static/DataTables2022/DataTables-1.11.4/js/dataTables.bulma.min.js
vendored
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
/*!
|
||||||
|
DataTables Bulma integration
|
||||||
|
©2020 SpryMedia Ltd - datatables.net/license
|
||||||
|
*/
|
||||||
|
var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.findInternal=function(a,b,c){a instanceof String&&(a=String(a));for(var e=a.length,d=0;d<e;d++){var f=a[d];if(b.call(c,f,d,a))return{i:d,v:f}}return{i:-1,v:void 0}};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.SIMPLE_FROUND_POLYFILL=!1;$jscomp.ISOLATE_POLYFILLS=!1;
|
||||||
|
$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){if(a==Array.prototype||a==Object.prototype)return a;a[b]=c.value;return a};$jscomp.getGlobal=function(a){a=["object"==typeof globalThis&&globalThis,a,"object"==typeof window&&window,"object"==typeof self&&self,"object"==typeof global&&global];for(var b=0;b<a.length;++b){var c=a[b];if(c&&c.Math==Math)return c}throw Error("Cannot find global object");};$jscomp.global=$jscomp.getGlobal(this);
|
||||||
|
$jscomp.IS_SYMBOL_NATIVE="function"===typeof Symbol&&"symbol"===typeof Symbol("x");$jscomp.TRUST_ES6_POLYFILLS=!$jscomp.ISOLATE_POLYFILLS||$jscomp.IS_SYMBOL_NATIVE;$jscomp.polyfills={};$jscomp.propertyToPolyfillSymbol={};$jscomp.POLYFILL_PREFIX="$jscp$";var $jscomp$lookupPolyfilledValue=function(a,b){var c=$jscomp.propertyToPolyfillSymbol[b];if(null==c)return a[b];c=a[c];return void 0!==c?c:a[b]};
|
||||||
|
$jscomp.polyfill=function(a,b,c,e){b&&($jscomp.ISOLATE_POLYFILLS?$jscomp.polyfillIsolated(a,b,c,e):$jscomp.polyfillUnisolated(a,b,c,e))};$jscomp.polyfillUnisolated=function(a,b,c,e){c=$jscomp.global;a=a.split(".");for(e=0;e<a.length-1;e++){var d=a[e];if(!(d in c))return;c=c[d]}a=a[a.length-1];e=c[a];b=b(e);b!=e&&null!=b&&$jscomp.defineProperty(c,a,{configurable:!0,writable:!0,value:b})};
|
||||||
|
$jscomp.polyfillIsolated=function(a,b,c,e){var d=a.split(".");a=1===d.length;e=d[0];e=!a&&e in $jscomp.polyfills?$jscomp.polyfills:$jscomp.global;for(var f=0;f<d.length-1;f++){var k=d[f];if(!(k in e))return;e=e[k]}d=d[d.length-1];c=$jscomp.IS_SYMBOL_NATIVE&&"es6"===c?e[d]:null;b=b(c);null!=b&&(a?$jscomp.defineProperty($jscomp.polyfills,d,{configurable:!0,writable:!0,value:b}):b!==c&&($jscomp.propertyToPolyfillSymbol[d]=$jscomp.IS_SYMBOL_NATIVE?$jscomp.global.Symbol(d):$jscomp.POLYFILL_PREFIX+d,d=
|
||||||
|
$jscomp.propertyToPolyfillSymbol[d],$jscomp.defineProperty(e,d,{configurable:!0,writable:!0,value:b})))};$jscomp.polyfill("Array.prototype.find",function(a){return a?a:function(b,c){return $jscomp.findInternal(this,b,c).v}},"es6","es3");
|
||||||
|
(function(a){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(b){return a(b,window,document)}):"object"===typeof exports?module.exports=function(b,c){b||(b=window);c&&c.fn.dataTable||(c=require("datatables.net")(b,c).$);return a(c,b,b.document)}:a(jQuery,window,document)})(function(a,b,c,e){var d=a.fn.dataTable;a.extend(!0,d.defaults,{dom:"<'columns is-gapless is-multiline'<'column is-half'l><'column is-half'f><'column is-full'tr><'column is-half'i><'column is-half'p>>",
|
||||||
|
renderer:"bulma"});a.extend(d.ext.classes,{sWrapper:"dataTables_wrapper dt-bulma",sFilterInput:"input",sLengthSelect:"custom-select custom-select-sm form-control form-control-sm",sProcessing:"dataTables_processing card"});d.ext.renderer.pageButton.bulma=function(f,k,D,E,n,v){var w=new d.Api(f),p=f.oLanguage.oPaginate,F=f.oLanguage.oAria.paginate||{},h,l,x=0,A=function(t,y){var z,G=function(q){q.preventDefault();a("a",q.currentTarget).prop("disabled")||w.page()==q.data.action||w.page(q.data.action).draw("page")};
|
||||||
|
var u=0;for(z=y.length;u<z;u++){var g=y[u];if(Array.isArray(g))A(t,g);else{l=h="";var r="a";var m=!1;switch(g){case "ellipsis":h="…";l="pagination-link";m=!0;r="span";break;case "first":h=p.sFirst;l=g;m=0>=n;break;case "previous":h=p.sPrevious;l=g;m=0>=n;break;case "next":h=p.sNext;l=g;m=n>=v-1;break;case "last":h=p.sLast;l=g;m=n>=v-1;break;default:h=g+1,l=n===g?"is-current":""}h&&(r=a("<li>",{id:0===D&&"string"===typeof g?f.sTableId+"_"+g:null}).append(a("<"+r+">",{href:"#","aria-controls":f.sTableId,
|
||||||
|
"aria-label":F[g],"data-dt-idx":x,tabindex:f.iTabIndex,"class":"pagination-link "+l,disabled:m}).html(h)).appendTo(t),f.oApi._fnBindAction(r,{action:g},G),x++)}}};try{var B=a(k).find(c.activeElement).data("dt-idx")}catch(t){}var C=a('<nav class="pagination" role="navigation" aria-label="pagination"><ul class="pagination-list"></ul></nav>');a(k).empty().append(C);A(C.find("ul"),E);B!==e&&a(k).find("[data-dt-idx="+B+"]").trigger("focus")};a(c).on("init.dt",function(f,k){"dt"===f.namespace&&(f=new a.fn.dataTable.Api(k),
|
||||||
|
a("div.dataTables_length select",f.table().container()).wrap('<div class="select">'))});return d});
|
@ -0,0 +1,37 @@
|
|||||||
|
/*! DataTables styling integration
|
||||||
|
* ©2018 SpryMedia Ltd - datatables.net/license
|
||||||
|
*/
|
||||||
|
|
||||||
|
(function( factory ){
|
||||||
|
if ( typeof define === 'function' && define.amd ) {
|
||||||
|
// AMD
|
||||||
|
define( ['jquery', 'datatables.net'], function ( $ ) {
|
||||||
|
return factory( $, window, document );
|
||||||
|
} );
|
||||||
|
}
|
||||||
|
else if ( typeof exports === 'object' ) {
|
||||||
|
// CommonJS
|
||||||
|
module.exports = function (root, $) {
|
||||||
|
if ( ! root ) {
|
||||||
|
root = window;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( ! $ || ! $.fn.dataTable ) {
|
||||||
|
// Require DataTables, which attaches to jQuery, including
|
||||||
|
// jQuery if needed and have a $ property so we can access the
|
||||||
|
// jQuery object that is used
|
||||||
|
$ = require('datatables.net')(root, $).$;
|
||||||
|
}
|
||||||
|
|
||||||
|
return factory( $, root, root.document );
|
||||||
|
};
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// Browser
|
||||||
|
factory( jQuery, window, document );
|
||||||
|
}
|
||||||
|
}(function( $, window, document, undefined ) {
|
||||||
|
|
||||||
|
return $.fn.dataTable;
|
||||||
|
|
||||||
|
}));
|
5
app/static/DataTables2022/DataTables-1.11.4/js/dataTables.dataTables.min.js
vendored
Normal file
5
app/static/DataTables2022/DataTables-1.11.4/js/dataTables.dataTables.min.js
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
/*!
|
||||||
|
DataTables styling integration
|
||||||
|
©2018 SpryMedia Ltd - datatables.net/license
|
||||||
|
*/
|
||||||
|
(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);b&&b.fn.dataTable||(b=require("datatables.net")(a,b).$);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c,a,b,d){return c.fn.dataTable});
|
@ -0,0 +1,174 @@
|
|||||||
|
/*! DataTables Foundation integration
|
||||||
|
* ©2011-2015 SpryMedia Ltd - datatables.net/license
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DataTables integration for Foundation. This requires Foundation 5 and
|
||||||
|
* DataTables 1.10 or newer.
|
||||||
|
*
|
||||||
|
* This file sets the defaults and adds options to DataTables to style its
|
||||||
|
* controls using Foundation. See http://datatables.net/manual/styling/foundation
|
||||||
|
* for further information.
|
||||||
|
*/
|
||||||
|
(function( factory ){
|
||||||
|
if ( typeof define === 'function' && define.amd ) {
|
||||||
|
// AMD
|
||||||
|
define( ['jquery', 'datatables.net'], function ( $ ) {
|
||||||
|
return factory( $, window, document );
|
||||||
|
} );
|
||||||
|
}
|
||||||
|
else if ( typeof exports === 'object' ) {
|
||||||
|
// CommonJS
|
||||||
|
module.exports = function (root, $) {
|
||||||
|
if ( ! root ) {
|
||||||
|
root = window;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( ! $ || ! $.fn.dataTable ) {
|
||||||
|
$ = require('datatables.net')(root, $).$;
|
||||||
|
}
|
||||||
|
|
||||||
|
return factory( $, root, root.document );
|
||||||
|
};
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// Browser
|
||||||
|
factory( jQuery, window, document );
|
||||||
|
}
|
||||||
|
}(function( $, window, document, undefined ) {
|
||||||
|
'use strict';
|
||||||
|
var DataTable = $.fn.dataTable;
|
||||||
|
|
||||||
|
// Detect Foundation 5 / 6 as they have different element and class requirements
|
||||||
|
var meta = $('<meta class="foundation-mq"/>').appendTo('head');
|
||||||
|
DataTable.ext.foundationVersion = meta.css('font-family').match(/small|medium|large/) ? 6 : 5;
|
||||||
|
meta.remove();
|
||||||
|
|
||||||
|
|
||||||
|
$.extend( DataTable.ext.classes, {
|
||||||
|
sWrapper: "dataTables_wrapper dt-foundation",
|
||||||
|
sProcessing: "dataTables_processing panel callout"
|
||||||
|
} );
|
||||||
|
|
||||||
|
|
||||||
|
/* Set the defaults for DataTables initialisation */
|
||||||
|
$.extend( true, DataTable.defaults, {
|
||||||
|
dom:
|
||||||
|
"<'row grid-x'<'small-6 columns cell'l><'small-6 columns cell'f>r>"+
|
||||||
|
"t"+
|
||||||
|
"<'row grid-x'<'small-6 columns cell'i><'small-6 columns cell'p>>",
|
||||||
|
renderer: 'foundation'
|
||||||
|
} );
|
||||||
|
|
||||||
|
|
||||||
|
/* Page button renderer */
|
||||||
|
DataTable.ext.renderer.pageButton.foundation = function ( settings, host, idx, buttons, page, pages ) {
|
||||||
|
var api = new DataTable.Api( settings );
|
||||||
|
var classes = settings.oClasses;
|
||||||
|
var lang = settings.oLanguage.oPaginate;
|
||||||
|
var aria = settings.oLanguage.oAria.paginate || {};
|
||||||
|
var btnDisplay, btnClass;
|
||||||
|
var tag;
|
||||||
|
var v5 = DataTable.ext.foundationVersion === 5;
|
||||||
|
|
||||||
|
var attach = function( container, buttons ) {
|
||||||
|
var i, ien, node, button;
|
||||||
|
var clickHandler = function ( e ) {
|
||||||
|
e.preventDefault();
|
||||||
|
if ( !$(e.currentTarget).hasClass('unavailable') && api.page() != e.data.action ) {
|
||||||
|
api.page( e.data.action ).draw( 'page' );
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
for ( i=0, ien=buttons.length ; i<ien ; i++ ) {
|
||||||
|
button = buttons[i];
|
||||||
|
|
||||||
|
if ( Array.isArray( button ) ) {
|
||||||
|
attach( container, button );
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
btnDisplay = '';
|
||||||
|
btnClass = '';
|
||||||
|
tag = null;
|
||||||
|
|
||||||
|
switch ( button ) {
|
||||||
|
case 'ellipsis':
|
||||||
|
btnDisplay = '…';
|
||||||
|
btnClass = 'unavailable disabled';
|
||||||
|
tag = null;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'first':
|
||||||
|
btnDisplay = lang.sFirst;
|
||||||
|
btnClass = button + (page > 0 ?
|
||||||
|
'' : ' unavailable disabled');
|
||||||
|
tag = page > 0 ? 'a' : null;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'previous':
|
||||||
|
btnDisplay = lang.sPrevious;
|
||||||
|
btnClass = button + (page > 0 ?
|
||||||
|
'' : ' unavailable disabled');
|
||||||
|
tag = page > 0 ? 'a' : null;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'next':
|
||||||
|
btnDisplay = lang.sNext;
|
||||||
|
btnClass = button + (page < pages-1 ?
|
||||||
|
'' : ' unavailable disabled');
|
||||||
|
tag = page < pages-1 ? 'a' : null;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'last':
|
||||||
|
btnDisplay = lang.sLast;
|
||||||
|
btnClass = button + (page < pages-1 ?
|
||||||
|
'' : ' unavailable disabled');
|
||||||
|
tag = page < pages-1 ? 'a' : null;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
btnDisplay = button + 1;
|
||||||
|
btnClass = page === button ?
|
||||||
|
'current' : '';
|
||||||
|
tag = page === button ?
|
||||||
|
null : 'a';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( v5 ) {
|
||||||
|
tag = 'a';
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( btnDisplay ) {
|
||||||
|
node = $('<li>', {
|
||||||
|
'class': classes.sPageButton+' '+btnClass,
|
||||||
|
'aria-controls': settings.sTableId,
|
||||||
|
'aria-label': aria[ button ],
|
||||||
|
'tabindex': settings.iTabIndex,
|
||||||
|
'id': idx === 0 && typeof button === 'string' ?
|
||||||
|
settings.sTableId +'_'+ button :
|
||||||
|
null
|
||||||
|
} )
|
||||||
|
.append( tag ?
|
||||||
|
$('<'+tag+'/>', {'href': '#'} ).html( btnDisplay ) :
|
||||||
|
btnDisplay
|
||||||
|
)
|
||||||
|
.appendTo( container );
|
||||||
|
|
||||||
|
settings.oApi._fnBindAction(
|
||||||
|
node, {action: button}, clickHandler
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
attach(
|
||||||
|
$(host).empty().html('<ul class="pagination"/>').children('ul'),
|
||||||
|
buttons
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
return DataTable;
|
||||||
|
}));
|
9
app/static/DataTables2022/DataTables-1.11.4/js/dataTables.foundation.min.js
vendored
Normal file
9
app/static/DataTables2022/DataTables-1.11.4/js/dataTables.foundation.min.js
vendored
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
/*!
|
||||||
|
DataTables Foundation integration
|
||||||
|
©2011-2015 SpryMedia Ltd - datatables.net/license
|
||||||
|
*/
|
||||||
|
(function(b){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(c){return b(c,window,document)}):"object"===typeof exports?module.exports=function(c,l){c||(c=window);l&&l.fn.dataTable||(l=require("datatables.net")(c,l).$);return b(l,c,c.document)}:b(jQuery,window,document)})(function(b,c,l,F){var k=b.fn.dataTable;c=b('<meta class="foundation-mq"/>').appendTo("head");k.ext.foundationVersion=c.css("font-family").match(/small|medium|large/)?6:5;c.remove();b.extend(k.ext.classes,
|
||||||
|
{sWrapper:"dataTables_wrapper dt-foundation",sProcessing:"dataTables_processing panel callout"});b.extend(!0,k.defaults,{dom:"<'row grid-x'<'small-6 columns cell'l><'small-6 columns cell'f>r>t<'row grid-x'<'small-6 columns cell'i><'small-6 columns cell'p>>",renderer:"foundation"});k.ext.renderer.pageButton.foundation=function(g,x,y,z,d,m){var r=new k.Api(g),A=g.oClasses,n=g.oLanguage.oPaginate,B=g.oLanguage.oAria.paginate||{},e,h,f,C=5===k.ext.foundationVersion,w=function(t,u){var v,D=function(p){p.preventDefault();
|
||||||
|
b(p.currentTarget).hasClass("unavailable")||r.page()==p.data.action||r.page(p.data.action).draw("page")};var q=0;for(v=u.length;q<v;q++){var a=u[q];if(Array.isArray(a))w(t,a);else{h=e="";f=null;switch(a){case "ellipsis":e="…";h="unavailable disabled";f=null;break;case "first":e=n.sFirst;h=a+(0<d?"":" unavailable disabled");f=0<d?"a":null;break;case "previous":e=n.sPrevious;h=a+(0<d?"":" unavailable disabled");f=0<d?"a":null;break;case "next":e=n.sNext;h=a+(d<m-1?"":" unavailable disabled");
|
||||||
|
f=d<m-1?"a":null;break;case "last":e=n.sLast;h=a+(d<m-1?"":" unavailable disabled");f=d<m-1?"a":null;break;default:e=a+1,h=d===a?"current":"",f=d===a?null:"a"}C&&(f="a");if(e){var E=b("<li>",{"class":A.sPageButton+" "+h,"aria-controls":g.sTableId,"aria-label":B[a],tabindex:g.iTabIndex,id:0===y&&"string"===typeof a?g.sTableId+"_"+a:null}).append(f?b("<"+f+"/>",{href:"#"}).html(e):e).appendTo(t);g.oApi._fnBindAction(E,{action:a},D)}}}};w(b(x).empty().html('<ul class="pagination"/>').children("ul"),
|
||||||
|
z)};return k});
|
@ -0,0 +1,166 @@
|
|||||||
|
/*! DataTables jQuery UI integration
|
||||||
|
* ©2011-2014 SpryMedia Ltd - datatables.net/license
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DataTables integration for jQuery UI. This requires jQuery UI and
|
||||||
|
* DataTables 1.10 or newer.
|
||||||
|
*
|
||||||
|
* This file sets the defaults and adds options to DataTables to style its
|
||||||
|
* controls using jQuery UI. See http://datatables.net/manual/styling/jqueryui
|
||||||
|
* for further information.
|
||||||
|
*/
|
||||||
|
(function( factory ){
|
||||||
|
if ( typeof define === 'function' && define.amd ) {
|
||||||
|
// AMD
|
||||||
|
define( ['jquery', 'datatables.net'], function ( $ ) {
|
||||||
|
return factory( $, window, document );
|
||||||
|
} );
|
||||||
|
}
|
||||||
|
else if ( typeof exports === 'object' ) {
|
||||||
|
// CommonJS
|
||||||
|
module.exports = function (root, $) {
|
||||||
|
if ( ! root ) {
|
||||||
|
root = window;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( ! $ || ! $.fn.dataTable ) {
|
||||||
|
$ = require('datatables.net')(root, $).$;
|
||||||
|
}
|
||||||
|
|
||||||
|
return factory( $, root, root.document );
|
||||||
|
};
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// Browser
|
||||||
|
factory( jQuery, window, document );
|
||||||
|
}
|
||||||
|
}(function( $, window, document, undefined ) {
|
||||||
|
'use strict';
|
||||||
|
var DataTable = $.fn.dataTable;
|
||||||
|
|
||||||
|
|
||||||
|
var sort_prefix = 'css_right ui-icon ui-icon-';
|
||||||
|
var toolbar_prefix = 'fg-toolbar ui-toolbar ui-widget-header ui-helper-clearfix ui-corner-';
|
||||||
|
|
||||||
|
/* Set the defaults for DataTables initialisation */
|
||||||
|
$.extend( true, DataTable.defaults, {
|
||||||
|
dom:
|
||||||
|
'<"'+toolbar_prefix+'tl ui-corner-tr"lfr>'+
|
||||||
|
't'+
|
||||||
|
'<"'+toolbar_prefix+'bl ui-corner-br"ip>',
|
||||||
|
renderer: 'jqueryui'
|
||||||
|
} );
|
||||||
|
|
||||||
|
|
||||||
|
$.extend( DataTable.ext.classes, {
|
||||||
|
"sWrapper": "dataTables_wrapper dt-jqueryui",
|
||||||
|
|
||||||
|
/* Full numbers paging buttons */
|
||||||
|
"sPageButton": "fg-button ui-button ui-state-default",
|
||||||
|
"sPageButtonActive": "ui-state-disabled",
|
||||||
|
"sPageButtonDisabled": "ui-state-disabled",
|
||||||
|
|
||||||
|
/* Features */
|
||||||
|
"sPaging": "dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi "+
|
||||||
|
"ui-buttonset-multi paging_", /* Note that the type is postfixed */
|
||||||
|
|
||||||
|
/* Sorting */
|
||||||
|
"sSortAsc": "ui-state-default sorting_asc",
|
||||||
|
"sSortDesc": "ui-state-default sorting_desc",
|
||||||
|
"sSortable": "ui-state-default sorting",
|
||||||
|
"sSortableAsc": "ui-state-default sorting_asc_disabled",
|
||||||
|
"sSortableDesc": "ui-state-default sorting_desc_disabled",
|
||||||
|
"sSortableNone": "ui-state-default sorting_disabled",
|
||||||
|
"sSortIcon": "DataTables_sort_icon",
|
||||||
|
|
||||||
|
/* Scrolling */
|
||||||
|
"sScrollHead": "dataTables_scrollHead "+"ui-state-default",
|
||||||
|
"sScrollFoot": "dataTables_scrollFoot "+"ui-state-default",
|
||||||
|
|
||||||
|
/* Misc */
|
||||||
|
"sHeaderTH": "ui-state-default",
|
||||||
|
"sFooterTH": "ui-state-default"
|
||||||
|
} );
|
||||||
|
|
||||||
|
|
||||||
|
DataTable.ext.renderer.header.jqueryui = function ( settings, cell, column, classes ) {
|
||||||
|
// Calculate what the unsorted class should be
|
||||||
|
var noSortAppliedClass = sort_prefix+'caret-2-n-s';
|
||||||
|
var asc = $.inArray('asc', column.asSorting) !== -1;
|
||||||
|
var desc = $.inArray('desc', column.asSorting) !== -1;
|
||||||
|
|
||||||
|
if ( !column.bSortable || (!asc && !desc) ) {
|
||||||
|
noSortAppliedClass = '';
|
||||||
|
}
|
||||||
|
else if ( asc && !desc ) {
|
||||||
|
noSortAppliedClass = sort_prefix+'caret-1-n';
|
||||||
|
}
|
||||||
|
else if ( !asc && desc ) {
|
||||||
|
noSortAppliedClass = sort_prefix+'caret-1-s';
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!cell.contents().hasClass('DataTables_sort_wrapper')){
|
||||||
|
// Setup the DOM structure
|
||||||
|
$('<div/>')
|
||||||
|
.addClass( 'DataTables_sort_wrapper' )
|
||||||
|
.append( cell.contents() )
|
||||||
|
.append( $('<span/>')
|
||||||
|
.addClass( classes.sSortIcon+' '+noSortAppliedClass )
|
||||||
|
)
|
||||||
|
.appendTo( cell );
|
||||||
|
}
|
||||||
|
|
||||||
|
// Attach a sort listener to update on sort
|
||||||
|
$(settings.nTable).on( 'order.dt', function ( e, ctx, sorting, columns ) {
|
||||||
|
if ( settings !== ctx ) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var colIdx = column.idx;
|
||||||
|
|
||||||
|
cell
|
||||||
|
.removeClass( classes.sSortAsc +" "+classes.sSortDesc )
|
||||||
|
.addClass( columns[ colIdx ] == 'asc' ?
|
||||||
|
classes.sSortAsc : columns[ colIdx ] == 'desc' ?
|
||||||
|
classes.sSortDesc :
|
||||||
|
column.sSortingClass
|
||||||
|
);
|
||||||
|
|
||||||
|
cell
|
||||||
|
.find( 'span.'+classes.sSortIcon )
|
||||||
|
.removeClass(
|
||||||
|
sort_prefix+'triangle-1-n' +" "+
|
||||||
|
sort_prefix+'triangle-1-s' +" "+
|
||||||
|
sort_prefix+'caret-2-n-s' +" "+
|
||||||
|
sort_prefix+'caret-1-n' +" "+
|
||||||
|
sort_prefix+'caret-1-s'
|
||||||
|
)
|
||||||
|
.addClass( columns[ colIdx ] == 'asc' ?
|
||||||
|
sort_prefix+'triangle-1-n' : columns[ colIdx ] == 'desc' ?
|
||||||
|
sort_prefix+'triangle-1-s' :
|
||||||
|
noSortAppliedClass
|
||||||
|
);
|
||||||
|
} );
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* TableTools jQuery UI compatibility
|
||||||
|
* Required TableTools 2.1+
|
||||||
|
*/
|
||||||
|
if ( DataTable.TableTools ) {
|
||||||
|
$.extend( true, DataTable.TableTools.classes, {
|
||||||
|
"container": "DTTT_container ui-buttonset ui-buttonset-multi",
|
||||||
|
"buttons": {
|
||||||
|
"normal": "DTTT_button ui-button ui-state-default"
|
||||||
|
},
|
||||||
|
"collection": {
|
||||||
|
"container": "DTTT_collection ui-buttonset ui-buttonset-multi"
|
||||||
|
}
|
||||||
|
} );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return DataTable;
|
||||||
|
}));
|
15
app/static/DataTables2022/DataTables-1.11.4/js/dataTables.jqueryui.min.js
vendored
Normal file
15
app/static/DataTables2022/DataTables-1.11.4/js/dataTables.jqueryui.min.js
vendored
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
/*!
|
||||||
|
DataTables jQuery UI integration
|
||||||
|
©2011-2014 SpryMedia Ltd - datatables.net/license
|
||||||
|
*/
|
||||||
|
var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.findInternal=function(a,b,c){a instanceof String&&(a=String(a));for(var e=a.length,d=0;d<e;d++){var f=a[d];if(b.call(c,f,d,a))return{i:d,v:f}}return{i:-1,v:void 0}};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.SIMPLE_FROUND_POLYFILL=!1;$jscomp.ISOLATE_POLYFILLS=!1;
|
||||||
|
$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){if(a==Array.prototype||a==Object.prototype)return a;a[b]=c.value;return a};$jscomp.getGlobal=function(a){a=["object"==typeof globalThis&&globalThis,a,"object"==typeof window&&window,"object"==typeof self&&self,"object"==typeof global&&global];for(var b=0;b<a.length;++b){var c=a[b];if(c&&c.Math==Math)return c}throw Error("Cannot find global object");};$jscomp.global=$jscomp.getGlobal(this);
|
||||||
|
$jscomp.IS_SYMBOL_NATIVE="function"===typeof Symbol&&"symbol"===typeof Symbol("x");$jscomp.TRUST_ES6_POLYFILLS=!$jscomp.ISOLATE_POLYFILLS||$jscomp.IS_SYMBOL_NATIVE;$jscomp.polyfills={};$jscomp.propertyToPolyfillSymbol={};$jscomp.POLYFILL_PREFIX="$jscp$";var $jscomp$lookupPolyfilledValue=function(a,b){var c=$jscomp.propertyToPolyfillSymbol[b];if(null==c)return a[b];c=a[c];return void 0!==c?c:a[b]};
|
||||||
|
$jscomp.polyfill=function(a,b,c,e){b&&($jscomp.ISOLATE_POLYFILLS?$jscomp.polyfillIsolated(a,b,c,e):$jscomp.polyfillUnisolated(a,b,c,e))};$jscomp.polyfillUnisolated=function(a,b,c,e){c=$jscomp.global;a=a.split(".");for(e=0;e<a.length-1;e++){var d=a[e];if(!(d in c))return;c=c[d]}a=a[a.length-1];e=c[a];b=b(e);b!=e&&null!=b&&$jscomp.defineProperty(c,a,{configurable:!0,writable:!0,value:b})};
|
||||||
|
$jscomp.polyfillIsolated=function(a,b,c,e){var d=a.split(".");a=1===d.length;e=d[0];e=!a&&e in $jscomp.polyfills?$jscomp.polyfills:$jscomp.global;for(var f=0;f<d.length-1;f++){var g=d[f];if(!(g in e))return;e=e[g]}d=d[d.length-1];c=$jscomp.IS_SYMBOL_NATIVE&&"es6"===c?e[d]:null;b=b(c);null!=b&&(a?$jscomp.defineProperty($jscomp.polyfills,d,{configurable:!0,writable:!0,value:b}):b!==c&&($jscomp.propertyToPolyfillSymbol[d]=$jscomp.IS_SYMBOL_NATIVE?$jscomp.global.Symbol(d):$jscomp.POLYFILL_PREFIX+d,d=
|
||||||
|
$jscomp.propertyToPolyfillSymbol[d],$jscomp.defineProperty(e,d,{configurable:!0,writable:!0,value:b})))};$jscomp.polyfill("Array.prototype.find",function(a){return a?a:function(b,c){return $jscomp.findInternal(this,b,c).v}},"es6","es3");
|
||||||
|
(function(a){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(b){return a(b,window,document)}):"object"===typeof exports?module.exports=function(b,c){b||(b=window);c&&c.fn.dataTable||(c=require("datatables.net")(b,c).$);return a(c,b,b.document)}:a(jQuery,window,document)})(function(a,b,c,e){b=a.fn.dataTable;a.extend(!0,b.defaults,{dom:'<"fg-toolbar ui-toolbar ui-widget-header ui-helper-clearfix ui-corner-tl ui-corner-tr"lfr>t<"fg-toolbar ui-toolbar ui-widget-header ui-helper-clearfix ui-corner-bl ui-corner-br"ip>',
|
||||||
|
renderer:"jqueryui"});a.extend(b.ext.classes,{sWrapper:"dataTables_wrapper dt-jqueryui",sPageButton:"fg-button ui-button ui-state-default",sPageButtonActive:"ui-state-disabled",sPageButtonDisabled:"ui-state-disabled",sPaging:"dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi ui-buttonset-multi paging_",sSortAsc:"ui-state-default sorting_asc",sSortDesc:"ui-state-default sorting_desc",sSortable:"ui-state-default sorting",sSortableAsc:"ui-state-default sorting_asc_disabled",sSortableDesc:"ui-state-default sorting_desc_disabled",
|
||||||
|
sSortableNone:"ui-state-default sorting_disabled",sSortIcon:"DataTables_sort_icon",sScrollHead:"dataTables_scrollHead ui-state-default",sScrollFoot:"dataTables_scrollFoot ui-state-default",sHeaderTH:"ui-state-default",sFooterTH:"ui-state-default"});b.ext.renderer.header.jqueryui=function(d,f,g,h){var k="css_right ui-icon ui-icon-caret-2-n-s",n=-1!==a.inArray("asc",g.asSorting),p=-1!==a.inArray("desc",g.asSorting);g.bSortable&&(n||p)?n&&!p?k="css_right ui-icon ui-icon-caret-1-n":!n&&p&&(k="css_right ui-icon ui-icon-caret-1-s"):
|
||||||
|
k="";f.contents().hasClass("DataTables_sort_wrapper")||a("<div/>").addClass("DataTables_sort_wrapper").append(f.contents()).append(a("<span/>").addClass(h.sSortIcon+" "+k)).appendTo(f);a(d.nTable).on("order.dt",function(l,q,r,m){d===q&&(l=g.idx,f.removeClass(h.sSortAsc+" "+h.sSortDesc).addClass("asc"==m[l]?h.sSortAsc:"desc"==m[l]?h.sSortDesc:g.sSortingClass),f.find("span."+h.sSortIcon).removeClass("css_right ui-icon ui-icon-triangle-1-n css_right ui-icon ui-icon-triangle-1-s css_right ui-icon ui-icon-caret-2-n-s css_right ui-icon ui-icon-caret-1-n css_right ui-icon ui-icon-caret-1-s").addClass("asc"==
|
||||||
|
m[l]?"css_right ui-icon ui-icon-triangle-1-n":"desc"==m[l]?"css_right ui-icon ui-icon-triangle-1-s":k))})};b.TableTools&&a.extend(!0,b.TableTools.classes,{container:"DTTT_container ui-buttonset ui-buttonset-multi",buttons:{normal:"DTTT_button ui-button ui-state-default"},collection:{container:"DTTT_collection ui-buttonset ui-buttonset-multi"}});return b});
|
@ -0,0 +1,212 @@
|
|||||||
|
/*! DataTables Bootstrap 3 integration
|
||||||
|
* ©2011-2015 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( factory ){
|
||||||
|
if ( typeof define === 'function' && define.amd ) {
|
||||||
|
// AMD
|
||||||
|
define( ['jquery', 'datatables.net'], function ( $ ) {
|
||||||
|
return factory( $, window, document );
|
||||||
|
} );
|
||||||
|
}
|
||||||
|
else if ( typeof exports === 'object' ) {
|
||||||
|
// CommonJS
|
||||||
|
module.exports = function (root, $) {
|
||||||
|
if ( ! root ) {
|
||||||
|
root = window;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( ! $ || ! $.fn.dataTable ) {
|
||||||
|
// Require DataTables, which attaches to jQuery, including
|
||||||
|
// jQuery if needed and have a $ property so we can access the
|
||||||
|
// jQuery object that is used
|
||||||
|
$ = require('datatables.net')(root, $).$;
|
||||||
|
}
|
||||||
|
|
||||||
|
return factory( $, root, root.document );
|
||||||
|
};
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// Browser
|
||||||
|
factory( jQuery, window, document );
|
||||||
|
}
|
||||||
|
}(function( $, window, document, undefined ) {
|
||||||
|
'use strict';
|
||||||
|
var DataTable = $.fn.dataTable;
|
||||||
|
|
||||||
|
|
||||||
|
/* Set the defaults for DataTables initialisation */
|
||||||
|
$.extend( true, DataTable.defaults, {
|
||||||
|
dom:
|
||||||
|
"<'ui stackable grid'"+
|
||||||
|
"<'row'"+
|
||||||
|
"<'eight wide column'l>"+
|
||||||
|
"<'right aligned eight wide column'f>"+
|
||||||
|
">"+
|
||||||
|
"<'row dt-table'"+
|
||||||
|
"<'sixteen wide column'tr>"+
|
||||||
|
">"+
|
||||||
|
"<'row'"+
|
||||||
|
"<'seven wide column'i>"+
|
||||||
|
"<'right aligned nine wide column'p>"+
|
||||||
|
">"+
|
||||||
|
">",
|
||||||
|
renderer: 'semanticUI'
|
||||||
|
} );
|
||||||
|
|
||||||
|
|
||||||
|
/* Default class modification */
|
||||||
|
$.extend( DataTable.ext.classes, {
|
||||||
|
sWrapper: "dataTables_wrapper dt-semanticUI",
|
||||||
|
sFilter: "dataTables_filter ui input",
|
||||||
|
sProcessing: "dataTables_processing ui segment",
|
||||||
|
sPageButton: "paginate_button item"
|
||||||
|
} );
|
||||||
|
|
||||||
|
|
||||||
|
/* Bootstrap paging button renderer */
|
||||||
|
DataTable.ext.renderer.pageButton.semanticUI = function ( settings, host, idx, buttons, page, pages ) {
|
||||||
|
var api = new DataTable.Api( settings );
|
||||||
|
var classes = settings.oClasses;
|
||||||
|
var lang = settings.oLanguage.oPaginate;
|
||||||
|
var aria = settings.oLanguage.oAria.paginate || {};
|
||||||
|
var btnDisplay, btnClass, counter=0;
|
||||||
|
|
||||||
|
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 ) {
|
||||||
|
api.page( e.data.action ).draw( 'page' );
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
for ( i=0, ien=buttons.length ; i<ien ; i++ ) {
|
||||||
|
button = buttons[i];
|
||||||
|
|
||||||
|
if ( Array.isArray( button ) ) {
|
||||||
|
attach( container, button );
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
btnDisplay = '';
|
||||||
|
btnClass = '';
|
||||||
|
|
||||||
|
switch ( button ) {
|
||||||
|
case 'ellipsis':
|
||||||
|
btnDisplay = '…';
|
||||||
|
btnClass = 'disabled';
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'first':
|
||||||
|
btnDisplay = lang.sFirst;
|
||||||
|
btnClass = button + (page > 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;
|
||||||
|
}
|
||||||
|
|
||||||
|
var tag = btnClass.indexOf( 'disabled' ) === -1 ?
|
||||||
|
'a' :
|
||||||
|
'div';
|
||||||
|
|
||||||
|
if ( btnDisplay ) {
|
||||||
|
node = $('<'+tag+'>', {
|
||||||
|
'class': classes.sPageButton+' '+btnClass,
|
||||||
|
'id': idx === 0 && typeof button === 'string' ?
|
||||||
|
settings.sTableId +'_'+ button :
|
||||||
|
null,
|
||||||
|
'href': '#',
|
||||||
|
'aria-controls': settings.sTableId,
|
||||||
|
'aria-label': aria[ button ],
|
||||||
|
'data-dt-idx': counter,
|
||||||
|
'tabindex': settings.iTabIndex
|
||||||
|
} )
|
||||||
|
.html( btnDisplay )
|
||||||
|
.appendTo( container );
|
||||||
|
|
||||||
|
settings.oApi._fnBindAction(
|
||||||
|
node, {action: button}, clickHandler
|
||||||
|
);
|
||||||
|
|
||||||
|
counter++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// IE9 throws an 'unknown error' if document.activeElement is used
|
||||||
|
// inside an iframe or frame.
|
||||||
|
var activeEl;
|
||||||
|
|
||||||
|
try {
|
||||||
|
// Because this approach is destroying and recreating the paging
|
||||||
|
// elements, focus is lost on the select button which is bad for
|
||||||
|
// accessibility. So we want to restore focus once the draw has
|
||||||
|
// completed
|
||||||
|
activeEl = $(host).find(document.activeElement).data('dt-idx');
|
||||||
|
}
|
||||||
|
catch (e) {}
|
||||||
|
|
||||||
|
attach(
|
||||||
|
$(host).empty().html('<div class="ui stackable pagination menu"/>').children(),
|
||||||
|
buttons
|
||||||
|
);
|
||||||
|
|
||||||
|
if ( activeEl !== undefined ) {
|
||||||
|
$(host).find( '[data-dt-idx='+activeEl+']' ).trigger('focus');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// Javascript enhancements on table initialisation
|
||||||
|
$(document).on( 'init.dt', function (e, ctx) {
|
||||||
|
if ( e.namespace !== 'dt' ) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var api = new $.fn.dataTable.Api( ctx );
|
||||||
|
|
||||||
|
// Length menu drop down
|
||||||
|
if ( $.fn.dropdown ) {
|
||||||
|
$( 'div.dataTables_length select', api.table().container() ).dropdown();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Filtering input
|
||||||
|
$( 'div.dataTables_filter.ui.input', api.table().container() ).removeClass('input').addClass('form');
|
||||||
|
$( 'div.dataTables_filter input', api.table().container() ).wrap( '<span class="ui input" />' );
|
||||||
|
} );
|
||||||
|
|
||||||
|
|
||||||
|
return DataTable;
|
||||||
|
}));
|
15
app/static/DataTables2022/DataTables-1.11.4/js/dataTables.semanticui.min.js
vendored
Normal file
15
app/static/DataTables2022/DataTables-1.11.4/js/dataTables.semanticui.min.js
vendored
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
/*!
|
||||||
|
DataTables Bootstrap 3 integration
|
||||||
|
©2011-2015 SpryMedia Ltd - datatables.net/license
|
||||||
|
*/
|
||||||
|
var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.findInternal=function(a,b,c){a instanceof String&&(a=String(a));for(var e=a.length,d=0;d<e;d++){var f=a[d];if(b.call(c,f,d,a))return{i:d,v:f}}return{i:-1,v:void 0}};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.SIMPLE_FROUND_POLYFILL=!1;$jscomp.ISOLATE_POLYFILLS=!1;
|
||||||
|
$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){if(a==Array.prototype||a==Object.prototype)return a;a[b]=c.value;return a};$jscomp.getGlobal=function(a){a=["object"==typeof globalThis&&globalThis,a,"object"==typeof window&&window,"object"==typeof self&&self,"object"==typeof global&&global];for(var b=0;b<a.length;++b){var c=a[b];if(c&&c.Math==Math)return c}throw Error("Cannot find global object");};$jscomp.global=$jscomp.getGlobal(this);
|
||||||
|
$jscomp.IS_SYMBOL_NATIVE="function"===typeof Symbol&&"symbol"===typeof Symbol("x");$jscomp.TRUST_ES6_POLYFILLS=!$jscomp.ISOLATE_POLYFILLS||$jscomp.IS_SYMBOL_NATIVE;$jscomp.polyfills={};$jscomp.propertyToPolyfillSymbol={};$jscomp.POLYFILL_PREFIX="$jscp$";var $jscomp$lookupPolyfilledValue=function(a,b){var c=$jscomp.propertyToPolyfillSymbol[b];if(null==c)return a[b];c=a[c];return void 0!==c?c:a[b]};
|
||||||
|
$jscomp.polyfill=function(a,b,c,e){b&&($jscomp.ISOLATE_POLYFILLS?$jscomp.polyfillIsolated(a,b,c,e):$jscomp.polyfillUnisolated(a,b,c,e))};$jscomp.polyfillUnisolated=function(a,b,c,e){c=$jscomp.global;a=a.split(".");for(e=0;e<a.length-1;e++){var d=a[e];if(!(d in c))return;c=c[d]}a=a[a.length-1];e=c[a];b=b(e);b!=e&&null!=b&&$jscomp.defineProperty(c,a,{configurable:!0,writable:!0,value:b})};
|
||||||
|
$jscomp.polyfillIsolated=function(a,b,c,e){var d=a.split(".");a=1===d.length;e=d[0];e=!a&&e in $jscomp.polyfills?$jscomp.polyfills:$jscomp.global;for(var f=0;f<d.length-1;f++){var l=d[f];if(!(l in e))return;e=e[l]}d=d[d.length-1];c=$jscomp.IS_SYMBOL_NATIVE&&"es6"===c?e[d]:null;b=b(c);null!=b&&(a?$jscomp.defineProperty($jscomp.polyfills,d,{configurable:!0,writable:!0,value:b}):b!==c&&($jscomp.propertyToPolyfillSymbol[d]=$jscomp.IS_SYMBOL_NATIVE?$jscomp.global.Symbol(d):$jscomp.POLYFILL_PREFIX+d,d=
|
||||||
|
$jscomp.propertyToPolyfillSymbol[d],$jscomp.defineProperty(e,d,{configurable:!0,writable:!0,value:b})))};$jscomp.polyfill("Array.prototype.find",function(a){return a?a:function(b,c){return $jscomp.findInternal(this,b,c).v}},"es6","es3");
|
||||||
|
(function(a){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(b){return a(b,window,document)}):"object"===typeof exports?module.exports=function(b,c){b||(b=window);c&&c.fn.dataTable||(c=require("datatables.net")(b,c).$);return a(c,b,b.document)}:a(jQuery,window,document)})(function(a,b,c,e){var d=a.fn.dataTable;a.extend(!0,d.defaults,{dom:"<'ui stackable grid'<'row'<'eight wide column'l><'right aligned eight wide column'f>><'row dt-table'<'sixteen wide column'tr>><'row'<'seven wide column'i><'right aligned nine wide column'p>>>",
|
||||||
|
renderer:"semanticUI"});a.extend(d.ext.classes,{sWrapper:"dataTables_wrapper dt-semanticUI",sFilter:"dataTables_filter ui input",sProcessing:"dataTables_processing ui segment",sPageButton:"paginate_button item"});d.ext.renderer.pageButton.semanticUI=function(f,l,B,C,m,u){var v=new d.Api(f),D=f.oClasses,n=f.oLanguage.oPaginate,E=f.oLanguage.oAria.paginate||{},h,k,w=0,z=function(q,x){var y,F=function(p){p.preventDefault();a(p.currentTarget).hasClass("disabled")||v.page()==p.data.action||v.page(p.data.action).draw("page")};
|
||||||
|
var r=0;for(y=x.length;r<y;r++){var g=x[r];if(Array.isArray(g))z(q,g);else{k=h="";switch(g){case "ellipsis":h="…";k="disabled";break;case "first":h=n.sFirst;k=g+(0<m?"":" disabled");break;case "previous":h=n.sPrevious;k=g+(0<m?"":" disabled");break;case "next":h=n.sNext;k=g+(m<u-1?"":" disabled");break;case "last":h=n.sLast;k=g+(m<u-1?"":" disabled");break;default:h=g+1,k=m===g?"active":""}var t=-1===k.indexOf("disabled")?"a":"div";h&&(t=a("<"+t+">",{"class":D.sPageButton+" "+k,id:0===B&&"string"===
|
||||||
|
typeof g?f.sTableId+"_"+g:null,href:"#","aria-controls":f.sTableId,"aria-label":E[g],"data-dt-idx":w,tabindex:f.iTabIndex}).html(h).appendTo(q),f.oApi._fnBindAction(t,{action:g},F),w++)}}};try{var A=a(l).find(c.activeElement).data("dt-idx")}catch(q){}z(a(l).empty().html('<div class="ui stackable pagination menu"/>').children(),C);A!==e&&a(l).find("[data-dt-idx="+A+"]").trigger("focus")};a(c).on("init.dt",function(f,l){"dt"===f.namespace&&(f=new a.fn.dataTable.Api(l),a.fn.dropdown&&a("div.dataTables_length select",
|
||||||
|
f.table().container()).dropdown(),a("div.dataTables_filter.ui.input",f.table().container()).removeClass("input").addClass("form"),a("div.dataTables_filter input",f.table().container()).wrap('<span class="ui input" />'))});return d});
|
15345
app/static/DataTables2022/DataTables-1.11.4/js/jquery.dataTables.js
vendored
Normal file
15345
app/static/DataTables2022/DataTables-1.11.4/js/jquery.dataTables.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
187
app/static/DataTables2022/DataTables-1.11.4/js/jquery.dataTables.min.js
vendored
Normal file
187
app/static/DataTables2022/DataTables-1.11.4/js/jquery.dataTables.min.js
vendored
Normal file
@ -0,0 +1,187 @@
|
|||||||
|
/*!
|
||||||
|
Copyright 2008-2021 SpryMedia Ltd.
|
||||||
|
|
||||||
|
This source file is free software, available under the following license:
|
||||||
|
MIT license - http://datatables.net/license
|
||||||
|
|
||||||
|
This source file is distributed in the hope that it will be useful, but
|
||||||
|
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
|
||||||
|
|
||||||
|
For details please refer to: http://www.datatables.net
|
||||||
|
DataTables 1.11.4
|
||||||
|
©2008-2021 SpryMedia Ltd - datatables.net/license
|
||||||
|
*/
|
||||||
|
var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.findInternal=function(l,z,A){l instanceof String&&(l=String(l));for(var q=l.length,E=0;E<q;E++){var P=l[E];if(z.call(A,P,E,l))return{i:E,v:P}}return{i:-1,v:void 0}};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.SIMPLE_FROUND_POLYFILL=!1;$jscomp.ISOLATE_POLYFILLS=!1;
|
||||||
|
$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(l,z,A){if(l==Array.prototype||l==Object.prototype)return l;l[z]=A.value;return l};$jscomp.getGlobal=function(l){l=["object"==typeof globalThis&&globalThis,l,"object"==typeof window&&window,"object"==typeof self&&self,"object"==typeof global&&global];for(var z=0;z<l.length;++z){var A=l[z];if(A&&A.Math==Math)return A}throw Error("Cannot find global object");};$jscomp.global=$jscomp.getGlobal(this);
|
||||||
|
$jscomp.IS_SYMBOL_NATIVE="function"===typeof Symbol&&"symbol"===typeof Symbol("x");$jscomp.TRUST_ES6_POLYFILLS=!$jscomp.ISOLATE_POLYFILLS||$jscomp.IS_SYMBOL_NATIVE;$jscomp.polyfills={};$jscomp.propertyToPolyfillSymbol={};$jscomp.POLYFILL_PREFIX="$jscp$";var $jscomp$lookupPolyfilledValue=function(l,z){var A=$jscomp.propertyToPolyfillSymbol[z];if(null==A)return l[z];A=l[A];return void 0!==A?A:l[z]};
|
||||||
|
$jscomp.polyfill=function(l,z,A,q){z&&($jscomp.ISOLATE_POLYFILLS?$jscomp.polyfillIsolated(l,z,A,q):$jscomp.polyfillUnisolated(l,z,A,q))};$jscomp.polyfillUnisolated=function(l,z,A,q){A=$jscomp.global;l=l.split(".");for(q=0;q<l.length-1;q++){var E=l[q];if(!(E in A))return;A=A[E]}l=l[l.length-1];q=A[l];z=z(q);z!=q&&null!=z&&$jscomp.defineProperty(A,l,{configurable:!0,writable:!0,value:z})};
|
||||||
|
$jscomp.polyfillIsolated=function(l,z,A,q){var E=l.split(".");l=1===E.length;q=E[0];q=!l&&q in $jscomp.polyfills?$jscomp.polyfills:$jscomp.global;for(var P=0;P<E.length-1;P++){var ma=E[P];if(!(ma in q))return;q=q[ma]}E=E[E.length-1];A=$jscomp.IS_SYMBOL_NATIVE&&"es6"===A?q[E]:null;z=z(A);null!=z&&(l?$jscomp.defineProperty($jscomp.polyfills,E,{configurable:!0,writable:!0,value:z}):z!==A&&($jscomp.propertyToPolyfillSymbol[E]=$jscomp.IS_SYMBOL_NATIVE?$jscomp.global.Symbol(E):$jscomp.POLYFILL_PREFIX+E,
|
||||||
|
E=$jscomp.propertyToPolyfillSymbol[E],$jscomp.defineProperty(q,E,{configurable:!0,writable:!0,value:z})))};$jscomp.polyfill("Array.prototype.find",function(l){return l?l:function(z,A){return $jscomp.findInternal(this,z,A).v}},"es6","es3");
|
||||||
|
(function(l){"function"===typeof define&&define.amd?define(["jquery"],function(z){return l(z,window,document)}):"object"===typeof exports?module.exports=function(z,A){z||(z=window);A||(A="undefined"!==typeof window?require("jquery"):require("jquery")(z));return l(A,z,z.document)}:window.DataTable=l(jQuery,window,document)})(function(l,z,A,q){function E(a){var b,c,d={};l.each(a,function(e,h){(b=e.match(/^([^A-Z]+?)([A-Z])/))&&-1!=="a aa ai ao as b fn i m o s ".indexOf(b[1]+" ")&&(c=e.replace(b[0],
|
||||||
|
b[2].toLowerCase()),d[c]=e,"o"===b[1]&&E(a[e]))});a._hungarianMap=d}function P(a,b,c){a._hungarianMap||E(a);var d;l.each(b,function(e,h){d=a._hungarianMap[e];d===q||!c&&b[d]!==q||("o"===d.charAt(0)?(b[d]||(b[d]={}),l.extend(!0,b[d],b[e]),P(a[d],b[d],c)):b[d]=b[e])})}function ma(a){var b=u.defaults.oLanguage,c=b.sDecimal;c&&Xa(c);if(a){var d=a.sZeroRecords;!a.sEmptyTable&&d&&"No data available in table"===b.sEmptyTable&&X(a,a,"sZeroRecords","sEmptyTable");!a.sLoadingRecords&&d&&"Loading..."===b.sLoadingRecords&&
|
||||||
|
X(a,a,"sZeroRecords","sLoadingRecords");a.sInfoThousands&&(a.sThousands=a.sInfoThousands);(a=a.sDecimal)&&c!==a&&Xa(a)}}function zb(a){S(a,"ordering","bSort");S(a,"orderMulti","bSortMulti");S(a,"orderClasses","bSortClasses");S(a,"orderCellsTop","bSortCellsTop");S(a,"order","aaSorting");S(a,"orderFixed","aaSortingFixed");S(a,"paging","bPaginate");S(a,"pagingType","sPaginationType");S(a,"pageLength","iDisplayLength");S(a,"searching","bFilter");"boolean"===typeof a.sScrollX&&(a.sScrollX=a.sScrollX?"100%":
|
||||||
|
"");"boolean"===typeof a.scrollX&&(a.scrollX=a.scrollX?"100%":"");if(a=a.aoSearchCols)for(var b=0,c=a.length;b<c;b++)a[b]&&P(u.models.oSearch,a[b])}function Ab(a){S(a,"orderable","bSortable");S(a,"orderData","aDataSort");S(a,"orderSequence","asSorting");S(a,"orderDataType","sortDataType");var b=a.aDataSort;"number"!==typeof b||Array.isArray(b)||(a.aDataSort=[b])}function Bb(a){if(!u.__browser){var b={};u.__browser=b;var c=l("<div/>").css({position:"fixed",top:0,left:-1*l(z).scrollLeft(),height:1,
|
||||||
|
width:1,overflow:"hidden"}).append(l("<div/>").css({position:"absolute",top:1,left:1,width:100,overflow:"scroll"}).append(l("<div/>").css({width:"100%",height:10}))).appendTo("body"),d=c.children(),e=d.children();b.barWidth=d[0].offsetWidth-d[0].clientWidth;b.bScrollOversize=100===e[0].offsetWidth&&100!==d[0].clientWidth;b.bScrollbarLeft=1!==Math.round(e.offset().left);b.bBounding=c[0].getBoundingClientRect().width?!0:!1;c.remove()}l.extend(a.oBrowser,u.__browser);a.oScroll.iBarWidth=u.__browser.barWidth}
|
||||||
|
function Cb(a,b,c,d,e,h){var f=!1;if(c!==q){var g=c;f=!0}for(;d!==e;)a.hasOwnProperty(d)&&(g=f?b(g,a[d],d,a):a[d],f=!0,d+=h);return g}function Ya(a,b){var c=u.defaults.column,d=a.aoColumns.length;c=l.extend({},u.models.oColumn,c,{nTh:b?b:A.createElement("th"),sTitle:c.sTitle?c.sTitle:b?b.innerHTML:"",aDataSort:c.aDataSort?c.aDataSort:[d],mData:c.mData?c.mData:d,idx:d});a.aoColumns.push(c);c=a.aoPreSearchCols;c[d]=l.extend({},u.models.oSearch,c[d]);Ga(a,d,l(b).data())}function Ga(a,b,c){b=a.aoColumns[b];
|
||||||
|
var d=a.oClasses,e=l(b.nTh);if(!b.sWidthOrig){b.sWidthOrig=e.attr("width")||null;var h=(e.attr("style")||"").match(/width:\s*(\d+[pxem%]+)/);h&&(b.sWidthOrig=h[1])}c!==q&&null!==c&&(Ab(c),P(u.defaults.column,c,!0),c.mDataProp===q||c.mData||(c.mData=c.mDataProp),c.sType&&(b._sManualType=c.sType),c.className&&!c.sClass&&(c.sClass=c.className),c.sClass&&e.addClass(c.sClass),l.extend(b,c),X(b,c,"sWidth","sWidthOrig"),c.iDataSort!==q&&(b.aDataSort=[c.iDataSort]),X(b,c,"aDataSort"));var f=b.mData,g=na(f),
|
||||||
|
k=b.mRender?na(b.mRender):null;c=function(m){return"string"===typeof m&&-1!==m.indexOf("@")};b._bAttrSrc=l.isPlainObject(f)&&(c(f.sort)||c(f.type)||c(f.filter));b._setter=null;b.fnGetData=function(m,n,p){var t=g(m,n,q,p);return k&&n?k(t,n,m,p):t};b.fnSetData=function(m,n,p){return ha(f)(m,n,p)};"number"!==typeof f&&(a._rowReadObject=!0);a.oFeatures.bSort||(b.bSortable=!1,e.addClass(d.sSortableNone));a=-1!==l.inArray("asc",b.asSorting);c=-1!==l.inArray("desc",b.asSorting);b.bSortable&&(a||c)?a&&!c?
|
||||||
|
(b.sSortingClass=d.sSortableAsc,b.sSortingClassJUI=d.sSortJUIAscAllowed):!a&&c?(b.sSortingClass=d.sSortableDesc,b.sSortingClassJUI=d.sSortJUIDescAllowed):(b.sSortingClass=d.sSortable,b.sSortingClassJUI=d.sSortJUI):(b.sSortingClass=d.sSortableNone,b.sSortingClassJUI="")}function ta(a){if(!1!==a.oFeatures.bAutoWidth){var b=a.aoColumns;Za(a);for(var c=0,d=b.length;c<d;c++)b[c].nTh.style.width=b[c].sWidth}b=a.oScroll;""===b.sY&&""===b.sX||Ha(a);F(a,null,"column-sizing",[a])}function ua(a,b){a=Ia(a,"bVisible");
|
||||||
|
return"number"===typeof a[b]?a[b]:null}function va(a,b){a=Ia(a,"bVisible");b=l.inArray(b,a);return-1!==b?b:null}function oa(a){var b=0;l.each(a.aoColumns,function(c,d){d.bVisible&&"none"!==l(d.nTh).css("display")&&b++});return b}function Ia(a,b){var c=[];l.map(a.aoColumns,function(d,e){d[b]&&c.push(e)});return c}function $a(a){var b=a.aoColumns,c=a.aoData,d=u.ext.type.detect,e,h,f;var g=0;for(e=b.length;g<e;g++){var k=b[g];var m=[];if(!k.sType&&k._sManualType)k.sType=k._sManualType;else if(!k.sType){var n=
|
||||||
|
0;for(h=d.length;n<h;n++){var p=0;for(f=c.length;p<f;p++){m[p]===q&&(m[p]=T(a,p,g,"type"));var t=d[n](m[p],a);if(!t&&n!==d.length-1)break;if("html"===t&&!Z(m[p]))break}if(t){k.sType=t;break}}k.sType||(k.sType="string")}}}function Db(a,b,c,d){var e,h,f,g=a.aoColumns;if(b)for(e=b.length-1;0<=e;e--){var k=b[e];var m=k.targets!==q?k.targets:k.aTargets;Array.isArray(m)||(m=[m]);var n=0;for(h=m.length;n<h;n++)if("number"===typeof m[n]&&0<=m[n]){for(;g.length<=m[n];)Ya(a);d(m[n],k)}else if("number"===typeof m[n]&&
|
||||||
|
0>m[n])d(g.length+m[n],k);else if("string"===typeof m[n]){var p=0;for(f=g.length;p<f;p++)("_all"==m[n]||l(g[p].nTh).hasClass(m[n]))&&d(p,k)}}if(c)for(e=0,a=c.length;e<a;e++)d(e,c[e])}function ia(a,b,c,d){var e=a.aoData.length,h=l.extend(!0,{},u.models.oRow,{src:c?"dom":"data",idx:e});h._aData=b;a.aoData.push(h);for(var f=a.aoColumns,g=0,k=f.length;g<k;g++)f[g].sType=null;a.aiDisplayMaster.push(e);b=a.rowIdFn(b);b!==q&&(a.aIds[b]=h);!c&&a.oFeatures.bDeferRender||ab(a,e,c,d);return e}function Ja(a,
|
||||||
|
b){var c;b instanceof l||(b=l(b));return b.map(function(d,e){c=bb(a,e);return ia(a,c.data,e,c.cells)})}function T(a,b,c,d){"search"===d?d="filter":"order"===d&&(d="sort");var e=a.iDraw,h=a.aoColumns[c],f=a.aoData[b]._aData,g=h.sDefaultContent,k=h.fnGetData(f,d,{settings:a,row:b,col:c});if(k===q)return a.iDrawError!=e&&null===g&&(da(a,0,"Requested unknown parameter "+("function"==typeof h.mData?"{function}":"'"+h.mData+"'")+" for row "+b+", column "+c,4),a.iDrawError=e),g;if((k===f||null===k)&&null!==
|
||||||
|
g&&d!==q)k=g;else if("function"===typeof k)return k.call(f);if(null===k&&"display"===d)return"";"filter"===d&&(a=u.ext.type.search,a[h.sType]&&(k=a[h.sType](k)));return k}function Eb(a,b,c,d){a.aoColumns[c].fnSetData(a.aoData[b]._aData,d,{settings:a,row:b,col:c})}function cb(a){return l.map(a.match(/(\\.|[^\.])+/g)||[""],function(b){return b.replace(/\\\./g,".")})}function db(a){return U(a.aoData,"_aData")}function Ka(a){a.aoData.length=0;a.aiDisplayMaster.length=0;a.aiDisplay.length=0;a.aIds={}}
|
||||||
|
function La(a,b,c){for(var d=-1,e=0,h=a.length;e<h;e++)a[e]==b?d=e:a[e]>b&&a[e]--; -1!=d&&c===q&&a.splice(d,1)}function wa(a,b,c,d){var e=a.aoData[b],h,f=function(k,m){for(;k.childNodes.length;)k.removeChild(k.firstChild);k.innerHTML=T(a,b,m,"display")};if("dom"!==c&&(c&&"auto"!==c||"dom"!==e.src)){var g=e.anCells;if(g)if(d!==q)f(g[d],d);else for(c=0,h=g.length;c<h;c++)f(g[c],c)}else e._aData=bb(a,e,d,d===q?q:e._aData).data;e._aSortData=null;e._aFilterData=null;f=a.aoColumns;if(d!==q)f[d].sType=null;
|
||||||
|
else{c=0;for(h=f.length;c<h;c++)f[c].sType=null;eb(a,e)}}function bb(a,b,c,d){var e=[],h=b.firstChild,f,g=0,k,m=a.aoColumns,n=a._rowReadObject;d=d!==q?d:n?{}:[];var p=function(x,w){if("string"===typeof x){var r=x.indexOf("@");-1!==r&&(r=x.substring(r+1),ha(x)(d,w.getAttribute(r)))}},t=function(x){if(c===q||c===g)f=m[g],k=x.innerHTML.trim(),f&&f._bAttrSrc?(ha(f.mData._)(d,k),p(f.mData.sort,x),p(f.mData.type,x),p(f.mData.filter,x)):n?(f._setter||(f._setter=ha(f.mData)),f._setter(d,k)):d[g]=k;g++};if(h)for(;h;){var v=
|
||||||
|
h.nodeName.toUpperCase();if("TD"==v||"TH"==v)t(h),e.push(h);h=h.nextSibling}else for(e=b.anCells,h=0,v=e.length;h<v;h++)t(e[h]);(b=b.firstChild?b:b.nTr)&&(b=b.getAttribute("id"))&&ha(a.rowId)(d,b);return{data:d,cells:e}}function ab(a,b,c,d){var e=a.aoData[b],h=e._aData,f=[],g,k;if(null===e.nTr){var m=c||A.createElement("tr");e.nTr=m;e.anCells=f;m._DT_RowIndex=b;eb(a,e);var n=0;for(g=a.aoColumns.length;n<g;n++){var p=a.aoColumns[n];e=(k=c?!1:!0)?A.createElement(p.sCellType):d[n];e._DT_CellIndex={row:b,
|
||||||
|
column:n};f.push(e);if(k||!(!p.mRender&&p.mData===n||l.isPlainObject(p.mData)&&p.mData._===n+".display"))e.innerHTML=T(a,b,n,"display");p.sClass&&(e.className+=" "+p.sClass);p.bVisible&&!c?m.appendChild(e):!p.bVisible&&c&&e.parentNode.removeChild(e);p.fnCreatedCell&&p.fnCreatedCell.call(a.oInstance,e,T(a,b,n),h,b,n)}F(a,"aoRowCreatedCallback",null,[m,h,b,f])}}function eb(a,b){var c=b.nTr,d=b._aData;if(c){if(a=a.rowIdFn(d))c.id=a;d.DT_RowClass&&(a=d.DT_RowClass.split(" "),b.__rowc=b.__rowc?Ma(b.__rowc.concat(a)):
|
||||||
|
a,l(c).removeClass(b.__rowc.join(" ")).addClass(d.DT_RowClass));d.DT_RowAttr&&l(c).attr(d.DT_RowAttr);d.DT_RowData&&l(c).data(d.DT_RowData)}}function Fb(a){var b,c,d=a.nTHead,e=a.nTFoot,h=0===l("th, td",d).length,f=a.oClasses,g=a.aoColumns;h&&(c=l("<tr/>").appendTo(d));var k=0;for(b=g.length;k<b;k++){var m=g[k];var n=l(m.nTh).addClass(m.sClass);h&&n.appendTo(c);a.oFeatures.bSort&&(n.addClass(m.sSortingClass),!1!==m.bSortable&&(n.attr("tabindex",a.iTabIndex).attr("aria-controls",a.sTableId),fb(a,m.nTh,
|
||||||
|
k)));m.sTitle!=n[0].innerHTML&&n.html(m.sTitle);gb(a,"header")(a,n,m,f)}h&&xa(a.aoHeader,d);l(d).children("tr").children("th, td").addClass(f.sHeaderTH);l(e).children("tr").children("th, td").addClass(f.sFooterTH);if(null!==e)for(a=a.aoFooter[0],k=0,b=a.length;k<b;k++)m=g[k],m.nTf=a[k].cell,m.sClass&&l(m.nTf).addClass(m.sClass)}function ya(a,b,c){var d,e,h=[],f=[],g=a.aoColumns.length;if(b){c===q&&(c=!1);var k=0;for(d=b.length;k<d;k++){h[k]=b[k].slice();h[k].nTr=b[k].nTr;for(e=g-1;0<=e;e--)a.aoColumns[e].bVisible||
|
||||||
|
c||h[k].splice(e,1);f.push([])}k=0;for(d=h.length;k<d;k++){if(a=h[k].nTr)for(;e=a.firstChild;)a.removeChild(e);e=0;for(b=h[k].length;e<b;e++){var m=g=1;if(f[k][e]===q){a.appendChild(h[k][e].cell);for(f[k][e]=1;h[k+g]!==q&&h[k][e].cell==h[k+g][e].cell;)f[k+g][e]=1,g++;for(;h[k][e+m]!==q&&h[k][e].cell==h[k][e+m].cell;){for(c=0;c<g;c++)f[k+c][e+m]=1;m++}l(h[k][e].cell).attr("rowspan",g).attr("colspan",m)}}}}}function ja(a,b){var c="ssp"==Q(a),d=a.iInitDisplayStart;d!==q&&-1!==d&&(a._iDisplayStart=c?
|
||||||
|
d:d>=a.fnRecordsDisplay()?0:d,a.iInitDisplayStart=-1);c=F(a,"aoPreDrawCallback","preDraw",[a]);if(-1!==l.inArray(!1,c))V(a,!1);else{c=[];var e=0;d=a.asStripeClasses;var h=d.length,f=a.oLanguage,g="ssp"==Q(a),k=a.aiDisplay,m=a._iDisplayStart,n=a.fnDisplayEnd();a.bDrawing=!0;if(a.bDeferLoading)a.bDeferLoading=!1,a.iDraw++,V(a,!1);else if(!g)a.iDraw++;else if(!a.bDestroying&&!b){Gb(a);return}if(0!==k.length)for(b=g?a.aoData.length:n,f=g?0:m;f<b;f++){g=k[f];var p=a.aoData[g];null===p.nTr&&ab(a,g);var t=
|
||||||
|
p.nTr;if(0!==h){var v=d[e%h];p._sRowStripe!=v&&(l(t).removeClass(p._sRowStripe).addClass(v),p._sRowStripe=v)}F(a,"aoRowCallback",null,[t,p._aData,e,f,g]);c.push(t);e++}else e=f.sZeroRecords,1==a.iDraw&&"ajax"==Q(a)?e=f.sLoadingRecords:f.sEmptyTable&&0===a.fnRecordsTotal()&&(e=f.sEmptyTable),c[0]=l("<tr/>",{"class":h?d[0]:""}).append(l("<td />",{valign:"top",colSpan:oa(a),"class":a.oClasses.sRowEmpty}).html(e))[0];F(a,"aoHeaderCallback","header",[l(a.nTHead).children("tr")[0],db(a),m,n,k]);F(a,"aoFooterCallback",
|
||||||
|
"footer",[l(a.nTFoot).children("tr")[0],db(a),m,n,k]);d=l(a.nTBody);d.children().detach();d.append(l(c));F(a,"aoDrawCallback","draw",[a]);a.bSorted=!1;a.bFiltered=!1;a.bDrawing=!1}}function ka(a,b){var c=a.oFeatures,d=c.bFilter;c.bSort&&Hb(a);d?za(a,a.oPreviousSearch):a.aiDisplay=a.aiDisplayMaster.slice();!0!==b&&(a._iDisplayStart=0);a._drawHold=b;ja(a);a._drawHold=!1}function Ib(a){var b=a.oClasses,c=l(a.nTable);c=l("<div/>").insertBefore(c);var d=a.oFeatures,e=l("<div/>",{id:a.sTableId+"_wrapper",
|
||||||
|
"class":b.sWrapper+(a.nTFoot?"":" "+b.sNoFooter)});a.nHolding=c[0];a.nTableWrapper=e[0];a.nTableReinsertBefore=a.nTable.nextSibling;for(var h=a.sDom.split(""),f,g,k,m,n,p,t=0;t<h.length;t++){f=null;g=h[t];if("<"==g){k=l("<div/>")[0];m=h[t+1];if("'"==m||'"'==m){n="";for(p=2;h[t+p]!=m;)n+=h[t+p],p++;"H"==n?n=b.sJUIHeader:"F"==n&&(n=b.sJUIFooter);-1!=n.indexOf(".")?(m=n.split("."),k.id=m[0].substr(1,m[0].length-1),k.className=m[1]):"#"==n.charAt(0)?k.id=n.substr(1,n.length-1):k.className=n;t+=p}e.append(k);
|
||||||
|
e=l(k)}else if(">"==g)e=e.parent();else if("l"==g&&d.bPaginate&&d.bLengthChange)f=Jb(a);else if("f"==g&&d.bFilter)f=Kb(a);else if("r"==g&&d.bProcessing)f=Lb(a);else if("t"==g)f=Mb(a);else if("i"==g&&d.bInfo)f=Nb(a);else if("p"==g&&d.bPaginate)f=Ob(a);else if(0!==u.ext.feature.length)for(k=u.ext.feature,p=0,m=k.length;p<m;p++)if(g==k[p].cFeature){f=k[p].fnInit(a);break}f&&(k=a.aanFeatures,k[g]||(k[g]=[]),k[g].push(f),e.append(f))}c.replaceWith(e);a.nHolding=null}function xa(a,b){b=l(b).children("tr");
|
||||||
|
var c,d,e;a.splice(0,a.length);var h=0;for(e=b.length;h<e;h++)a.push([]);h=0;for(e=b.length;h<e;h++){var f=b[h];for(c=f.firstChild;c;){if("TD"==c.nodeName.toUpperCase()||"TH"==c.nodeName.toUpperCase()){var g=1*c.getAttribute("colspan");var k=1*c.getAttribute("rowspan");g=g&&0!==g&&1!==g?g:1;k=k&&0!==k&&1!==k?k:1;var m=0;for(d=a[h];d[m];)m++;var n=m;var p=1===g?!0:!1;for(d=0;d<g;d++)for(m=0;m<k;m++)a[h+m][n+d]={cell:c,unique:p},a[h+m].nTr=f}c=c.nextSibling}}}function Na(a,b,c){var d=[];c||(c=a.aoHeader,
|
||||||
|
b&&(c=[],xa(c,b)));b=0;for(var e=c.length;b<e;b++)for(var h=0,f=c[b].length;h<f;h++)!c[b][h].unique||d[h]&&a.bSortCellsTop||(d[h]=c[b][h].cell);return d}function Oa(a,b,c){F(a,"aoServerParams","serverParams",[b]);if(b&&Array.isArray(b)){var d={},e=/(.*?)\[\]$/;l.each(b,function(n,p){(n=p.name.match(e))?(n=n[0],d[n]||(d[n]=[]),d[n].push(p.value)):d[p.name]=p.value});b=d}var h=a.ajax,f=a.oInstance,g=function(n){var p=a.jqXHR?a.jqXHR.status:null;if(null===n||"number"===typeof p&&204==p)n={},Aa(a,n,[]);
|
||||||
|
(p=n.error||n.sError)&&da(a,0,p);a.json=n;F(a,null,"xhr",[a,n,a.jqXHR]);c(n)};if(l.isPlainObject(h)&&h.data){var k=h.data;var m="function"===typeof k?k(b,a):k;b="function"===typeof k&&m?m:l.extend(!0,b,m);delete h.data}m={data:b,success:g,dataType:"json",cache:!1,type:a.sServerMethod,error:function(n,p,t){t=F(a,null,"xhr",[a,null,a.jqXHR]);-1===l.inArray(!0,t)&&("parsererror"==p?da(a,0,"Invalid JSON response",1):4===n.readyState&&da(a,0,"Ajax error",7));V(a,!1)}};a.oAjaxData=b;F(a,null,"preXhr",[a,
|
||||||
|
b]);a.fnServerData?a.fnServerData.call(f,a.sAjaxSource,l.map(b,function(n,p){return{name:p,value:n}}),g,a):a.sAjaxSource||"string"===typeof h?a.jqXHR=l.ajax(l.extend(m,{url:h||a.sAjaxSource})):"function"===typeof h?a.jqXHR=h.call(f,b,g,a):(a.jqXHR=l.ajax(l.extend(m,h)),h.data=k)}function Gb(a){a.iDraw++;V(a,!0);Oa(a,Pb(a),function(b){Qb(a,b)})}function Pb(a){var b=a.aoColumns,c=b.length,d=a.oFeatures,e=a.oPreviousSearch,h=a.aoPreSearchCols,f=[],g=pa(a);var k=a._iDisplayStart;var m=!1!==d.bPaginate?
|
||||||
|
a._iDisplayLength:-1;var n=function(x,w){f.push({name:x,value:w})};n("sEcho",a.iDraw);n("iColumns",c);n("sColumns",U(b,"sName").join(","));n("iDisplayStart",k);n("iDisplayLength",m);var p={draw:a.iDraw,columns:[],order:[],start:k,length:m,search:{value:e.sSearch,regex:e.bRegex}};for(k=0;k<c;k++){var t=b[k];var v=h[k];m="function"==typeof t.mData?"function":t.mData;p.columns.push({data:m,name:t.sName,searchable:t.bSearchable,orderable:t.bSortable,search:{value:v.sSearch,regex:v.bRegex}});n("mDataProp_"+
|
||||||
|
k,m);d.bFilter&&(n("sSearch_"+k,v.sSearch),n("bRegex_"+k,v.bRegex),n("bSearchable_"+k,t.bSearchable));d.bSort&&n("bSortable_"+k,t.bSortable)}d.bFilter&&(n("sSearch",e.sSearch),n("bRegex",e.bRegex));d.bSort&&(l.each(g,function(x,w){p.order.push({column:w.col,dir:w.dir});n("iSortCol_"+x,w.col);n("sSortDir_"+x,w.dir)}),n("iSortingCols",g.length));b=u.ext.legacy.ajax;return null===b?a.sAjaxSource?f:p:b?f:p}function Qb(a,b){var c=function(f,g){return b[f]!==q?b[f]:b[g]},d=Aa(a,b),e=c("sEcho","draw"),h=
|
||||||
|
c("iTotalRecords","recordsTotal");c=c("iTotalDisplayRecords","recordsFiltered");if(e!==q){if(1*e<a.iDraw)return;a.iDraw=1*e}d||(d=[]);Ka(a);a._iRecordsTotal=parseInt(h,10);a._iRecordsDisplay=parseInt(c,10);e=0;for(h=d.length;e<h;e++)ia(a,d[e]);a.aiDisplay=a.aiDisplayMaster.slice();ja(a,!0);a._bInitComplete||Pa(a,b);V(a,!1)}function Aa(a,b,c){a=l.isPlainObject(a.ajax)&&a.ajax.dataSrc!==q?a.ajax.dataSrc:a.sAjaxDataProp;if(!c)return"data"===a?b.aaData||b[a]:""!==a?na(a)(b):b;ha(a)(b,c)}function Kb(a){var b=
|
||||||
|
a.oClasses,c=a.sTableId,d=a.oLanguage,e=a.oPreviousSearch,h=a.aanFeatures,f='<input type="search" class="'+b.sFilterInput+'"/>',g=d.sSearch;g=g.match(/_INPUT_/)?g.replace("_INPUT_",f):g+f;b=l("<div/>",{id:h.f?null:c+"_filter","class":b.sFilter}).append(l("<label/>").append(g));var k=function(n){var p=this.value?this.value:"";e.return&&"Enter"!==n.key||p==e.sSearch||(za(a,{sSearch:p,bRegex:e.bRegex,bSmart:e.bSmart,bCaseInsensitive:e.bCaseInsensitive,"return":e.return}),a._iDisplayStart=0,ja(a))};h=
|
||||||
|
null!==a.searchDelay?a.searchDelay:"ssp"===Q(a)?400:0;var m=l("input",b).val(e.sSearch).attr("placeholder",d.sSearchPlaceholder).on("keyup.DT search.DT input.DT paste.DT cut.DT",h?hb(k,h):k).on("mouseup",function(n){setTimeout(function(){k.call(m[0],n)},10)}).on("keypress.DT",function(n){if(13==n.keyCode)return!1}).attr("aria-controls",c);l(a.nTable).on("search.dt.DT",function(n,p){if(a===p)try{m[0]!==A.activeElement&&m.val(e.sSearch)}catch(t){}});return b[0]}function za(a,b,c){var d=a.oPreviousSearch,
|
||||||
|
e=a.aoPreSearchCols,h=function(g){d.sSearch=g.sSearch;d.bRegex=g.bRegex;d.bSmart=g.bSmart;d.bCaseInsensitive=g.bCaseInsensitive;d.return=g.return},f=function(g){return g.bEscapeRegex!==q?!g.bEscapeRegex:g.bRegex};$a(a);if("ssp"!=Q(a)){Rb(a,b.sSearch,c,f(b),b.bSmart,b.bCaseInsensitive,b.return);h(b);for(b=0;b<e.length;b++)Sb(a,e[b].sSearch,b,f(e[b]),e[b].bSmart,e[b].bCaseInsensitive);Tb(a)}else h(b);a.bFiltered=!0;F(a,null,"search",[a])}function Tb(a){for(var b=u.ext.search,c=a.aiDisplay,d,e,h=0,f=
|
||||||
|
b.length;h<f;h++){for(var g=[],k=0,m=c.length;k<m;k++)e=c[k],d=a.aoData[e],b[h](a,d._aFilterData,e,d._aData,k)&&g.push(e);c.length=0;l.merge(c,g)}}function Sb(a,b,c,d,e,h){if(""!==b){var f=[],g=a.aiDisplay;d=ib(b,d,e,h);for(e=0;e<g.length;e++)b=a.aoData[g[e]]._aFilterData[c],d.test(b)&&f.push(g[e]);a.aiDisplay=f}}function Rb(a,b,c,d,e,h){e=ib(b,d,e,h);var f=a.oPreviousSearch.sSearch,g=a.aiDisplayMaster;h=[];0!==u.ext.search.length&&(c=!0);var k=Ub(a);if(0>=b.length)a.aiDisplay=g.slice();else{if(k||
|
||||||
|
c||d||f.length>b.length||0!==b.indexOf(f)||a.bSorted)a.aiDisplay=g.slice();b=a.aiDisplay;for(c=0;c<b.length;c++)e.test(a.aoData[b[c]]._sFilterRow)&&h.push(b[c]);a.aiDisplay=h}}function ib(a,b,c,d){a=b?a:jb(a);c&&(a="^(?=.*?"+l.map(a.match(/"[^"]+"|[^ ]+/g)||[""],function(e){if('"'===e.charAt(0)){var h=e.match(/^"(.*)"$/);e=h?h[1]:e}return e.replace('"',"")}).join(")(?=.*?")+").*$");return new RegExp(a,d?"i":"")}function Ub(a){var b=a.aoColumns,c,d;var e=!1;var h=0;for(c=a.aoData.length;h<c;h++){var f=
|
||||||
|
a.aoData[h];if(!f._aFilterData){var g=[];e=0;for(d=b.length;e<d;e++){var k=b[e];k.bSearchable?(k=T(a,h,e,"filter"),null===k&&(k=""),"string"!==typeof k&&k.toString&&(k=k.toString())):k="";k.indexOf&&-1!==k.indexOf("&")&&(Qa.innerHTML=k,k=sc?Qa.textContent:Qa.innerText);k.replace&&(k=k.replace(/[\r\n\u2028]/g,""));g.push(k)}f._aFilterData=g;f._sFilterRow=g.join(" ");e=!0}}return e}function Vb(a){return{search:a.sSearch,smart:a.bSmart,regex:a.bRegex,caseInsensitive:a.bCaseInsensitive}}function Wb(a){return{sSearch:a.search,
|
||||||
|
bSmart:a.smart,bRegex:a.regex,bCaseInsensitive:a.caseInsensitive}}function Nb(a){var b=a.sTableId,c=a.aanFeatures.i,d=l("<div/>",{"class":a.oClasses.sInfo,id:c?null:b+"_info"});c||(a.aoDrawCallback.push({fn:Xb,sName:"information"}),d.attr("role","status").attr("aria-live","polite"),l(a.nTable).attr("aria-describedby",b+"_info"));return d[0]}function Xb(a){var b=a.aanFeatures.i;if(0!==b.length){var c=a.oLanguage,d=a._iDisplayStart+1,e=a.fnDisplayEnd(),h=a.fnRecordsTotal(),f=a.fnRecordsDisplay(),g=
|
||||||
|
f?c.sInfo:c.sInfoEmpty;f!==h&&(g+=" "+c.sInfoFiltered);g+=c.sInfoPostFix;g=Yb(a,g);c=c.fnInfoCallback;null!==c&&(g=c.call(a.oInstance,a,d,e,h,f,g));l(b).html(g)}}function Yb(a,b){var c=a.fnFormatNumber,d=a._iDisplayStart+1,e=a._iDisplayLength,h=a.fnRecordsDisplay(),f=-1===e;return b.replace(/_START_/g,c.call(a,d)).replace(/_END_/g,c.call(a,a.fnDisplayEnd())).replace(/_MAX_/g,c.call(a,a.fnRecordsTotal())).replace(/_TOTAL_/g,c.call(a,h)).replace(/_PAGE_/g,c.call(a,f?1:Math.ceil(d/e))).replace(/_PAGES_/g,
|
||||||
|
c.call(a,f?1:Math.ceil(h/e)))}function Ba(a){var b=a.iInitDisplayStart,c=a.aoColumns;var d=a.oFeatures;var e=a.bDeferLoading;if(a.bInitialised){Ib(a);Fb(a);ya(a,a.aoHeader);ya(a,a.aoFooter);V(a,!0);d.bAutoWidth&&Za(a);var h=0;for(d=c.length;h<d;h++){var f=c[h];f.sWidth&&(f.nTh.style.width=K(f.sWidth))}F(a,null,"preInit",[a]);ka(a);c=Q(a);if("ssp"!=c||e)"ajax"==c?Oa(a,[],function(g){var k=Aa(a,g);for(h=0;h<k.length;h++)ia(a,k[h]);a.iInitDisplayStart=b;ka(a);V(a,!1);Pa(a,g)},a):(V(a,!1),Pa(a))}else setTimeout(function(){Ba(a)},
|
||||||
|
200)}function Pa(a,b){a._bInitComplete=!0;(b||a.oInit.aaData)&&ta(a);F(a,null,"plugin-init",[a,b]);F(a,"aoInitComplete","init",[a,b])}function kb(a,b){b=parseInt(b,10);a._iDisplayLength=b;lb(a);F(a,null,"length",[a,b])}function Jb(a){var b=a.oClasses,c=a.sTableId,d=a.aLengthMenu,e=Array.isArray(d[0]),h=e?d[0]:d;d=e?d[1]:d;e=l("<select/>",{name:c+"_length","aria-controls":c,"class":b.sLengthSelect});for(var f=0,g=h.length;f<g;f++)e[0][f]=new Option("number"===typeof d[f]?a.fnFormatNumber(d[f]):d[f],
|
||||||
|
h[f]);var k=l("<div><label/></div>").addClass(b.sLength);a.aanFeatures.l||(k[0].id=c+"_length");k.children().append(a.oLanguage.sLengthMenu.replace("_MENU_",e[0].outerHTML));l("select",k).val(a._iDisplayLength).on("change.DT",function(m){kb(a,l(this).val());ja(a)});l(a.nTable).on("length.dt.DT",function(m,n,p){a===n&&l("select",k).val(p)});return k[0]}function Ob(a){var b=a.sPaginationType,c=u.ext.pager[b],d="function"===typeof c,e=function(f){ja(f)};b=l("<div/>").addClass(a.oClasses.sPaging+b)[0];
|
||||||
|
var h=a.aanFeatures;d||c.fnInit(a,b,e);h.p||(b.id=a.sTableId+"_paginate",a.aoDrawCallback.push({fn:function(f){if(d){var g=f._iDisplayStart,k=f._iDisplayLength,m=f.fnRecordsDisplay(),n=-1===k;g=n?0:Math.ceil(g/k);k=n?1:Math.ceil(m/k);m=c(g,k);var p;n=0;for(p=h.p.length;n<p;n++)gb(f,"pageButton")(f,h.p[n],n,m,g,k)}else c.fnUpdate(f,e)},sName:"pagination"}));return b}function Ra(a,b,c){var d=a._iDisplayStart,e=a._iDisplayLength,h=a.fnRecordsDisplay();0===h||-1===e?d=0:"number"===typeof b?(d=b*e,d>h&&
|
||||||
|
(d=0)):"first"==b?d=0:"previous"==b?(d=0<=e?d-e:0,0>d&&(d=0)):"next"==b?d+e<h&&(d+=e):"last"==b?d=Math.floor((h-1)/e)*e:da(a,0,"Unknown paging action: "+b,5);b=a._iDisplayStart!==d;a._iDisplayStart=d;b&&(F(a,null,"page",[a]),c&&ja(a));return b}function Lb(a){return l("<div/>",{id:a.aanFeatures.r?null:a.sTableId+"_processing","class":a.oClasses.sProcessing}).html(a.oLanguage.sProcessing).insertBefore(a.nTable)[0]}function V(a,b){a.oFeatures.bProcessing&&l(a.aanFeatures.r).css("display",b?"block":"none");
|
||||||
|
F(a,null,"processing",[a,b])}function Mb(a){var b=l(a.nTable),c=a.oScroll;if(""===c.sX&&""===c.sY)return a.nTable;var d=c.sX,e=c.sY,h=a.oClasses,f=b.children("caption"),g=f.length?f[0]._captionSide:null,k=l(b[0].cloneNode(!1)),m=l(b[0].cloneNode(!1)),n=b.children("tfoot");n.length||(n=null);k=l("<div/>",{"class":h.sScrollWrapper}).append(l("<div/>",{"class":h.sScrollHead}).css({overflow:"hidden",position:"relative",border:0,width:d?d?K(d):null:"100%"}).append(l("<div/>",{"class":h.sScrollHeadInner}).css({"box-sizing":"content-box",
|
||||||
|
width:c.sXInner||"100%"}).append(k.removeAttr("id").css("margin-left",0).append("top"===g?f:null).append(b.children("thead"))))).append(l("<div/>",{"class":h.sScrollBody}).css({position:"relative",overflow:"auto",width:d?K(d):null}).append(b));n&&k.append(l("<div/>",{"class":h.sScrollFoot}).css({overflow:"hidden",border:0,width:d?d?K(d):null:"100%"}).append(l("<div/>",{"class":h.sScrollFootInner}).append(m.removeAttr("id").css("margin-left",0).append("bottom"===g?f:null).append(b.children("tfoot")))));
|
||||||
|
b=k.children();var p=b[0];h=b[1];var t=n?b[2]:null;if(d)l(h).on("scroll.DT",function(v){v=this.scrollLeft;p.scrollLeft=v;n&&(t.scrollLeft=v)});l(h).css("max-height",e);c.bCollapse||l(h).css("height",e);a.nScrollHead=p;a.nScrollBody=h;a.nScrollFoot=t;a.aoDrawCallback.push({fn:Ha,sName:"scrolling"});return k[0]}function Ha(a){var b=a.oScroll,c=b.sX,d=b.sXInner,e=b.sY;b=b.iBarWidth;var h=l(a.nScrollHead),f=h[0].style,g=h.children("div"),k=g[0].style,m=g.children("table");g=a.nScrollBody;var n=l(g),p=
|
||||||
|
g.style,t=l(a.nScrollFoot).children("div"),v=t.children("table"),x=l(a.nTHead),w=l(a.nTable),r=w[0],C=r.style,G=a.nTFoot?l(a.nTFoot):null,aa=a.oBrowser,L=aa.bScrollOversize;U(a.aoColumns,"nTh");var O=[],I=[],H=[],ea=[],Y,Ca=function(D){D=D.style;D.paddingTop="0";D.paddingBottom="0";D.borderTopWidth="0";D.borderBottomWidth="0";D.height=0};var fa=g.scrollHeight>g.clientHeight;if(a.scrollBarVis!==fa&&a.scrollBarVis!==q)a.scrollBarVis=fa,ta(a);else{a.scrollBarVis=fa;w.children("thead, tfoot").remove();
|
||||||
|
if(G){var ba=G.clone().prependTo(w);var la=G.find("tr");ba=ba.find("tr")}var mb=x.clone().prependTo(w);x=x.find("tr");fa=mb.find("tr");mb.find("th, td").removeAttr("tabindex");c||(p.width="100%",h[0].style.width="100%");l.each(Na(a,mb),function(D,W){Y=ua(a,D);W.style.width=a.aoColumns[Y].sWidth});G&&ca(function(D){D.style.width=""},ba);h=w.outerWidth();""===c?(C.width="100%",L&&(w.find("tbody").height()>g.offsetHeight||"scroll"==n.css("overflow-y"))&&(C.width=K(w.outerWidth()-b)),h=w.outerWidth()):
|
||||||
|
""!==d&&(C.width=K(d),h=w.outerWidth());ca(Ca,fa);ca(function(D){var W=z.getComputedStyle?z.getComputedStyle(D).width:K(l(D).width());H.push(D.innerHTML);O.push(W)},fa);ca(function(D,W){D.style.width=O[W]},x);l(fa).height(0);G&&(ca(Ca,ba),ca(function(D){ea.push(D.innerHTML);I.push(K(l(D).css("width")))},ba),ca(function(D,W){D.style.width=I[W]},la),l(ba).height(0));ca(function(D,W){D.innerHTML='<div class="dataTables_sizing">'+H[W]+"</div>";D.childNodes[0].style.height="0";D.childNodes[0].style.overflow=
|
||||||
|
"hidden";D.style.width=O[W]},fa);G&&ca(function(D,W){D.innerHTML='<div class="dataTables_sizing">'+ea[W]+"</div>";D.childNodes[0].style.height="0";D.childNodes[0].style.overflow="hidden";D.style.width=I[W]},ba);Math.round(w.outerWidth())<Math.round(h)?(la=g.scrollHeight>g.offsetHeight||"scroll"==n.css("overflow-y")?h+b:h,L&&(g.scrollHeight>g.offsetHeight||"scroll"==n.css("overflow-y"))&&(C.width=K(la-b)),""!==c&&""===d||da(a,1,"Possible column misalignment",6)):la="100%";p.width=K(la);f.width=K(la);
|
||||||
|
G&&(a.nScrollFoot.style.width=K(la));!e&&L&&(p.height=K(r.offsetHeight+b));c=w.outerWidth();m[0].style.width=K(c);k.width=K(c);d=w.height()>g.clientHeight||"scroll"==n.css("overflow-y");e="padding"+(aa.bScrollbarLeft?"Left":"Right");k[e]=d?b+"px":"0px";G&&(v[0].style.width=K(c),t[0].style.width=K(c),t[0].style[e]=d?b+"px":"0px");w.children("colgroup").insertBefore(w.children("thead"));n.trigger("scroll");!a.bSorted&&!a.bFiltered||a._drawHold||(g.scrollTop=0)}}function ca(a,b,c){for(var d=0,e=0,h=
|
||||||
|
b.length,f,g;e<h;){f=b[e].firstChild;for(g=c?c[e].firstChild:null;f;)1===f.nodeType&&(c?a(f,g,d):a(f,d),d++),f=f.nextSibling,g=c?g.nextSibling:null;e++}}function Za(a){var b=a.nTable,c=a.aoColumns,d=a.oScroll,e=d.sY,h=d.sX,f=d.sXInner,g=c.length,k=Ia(a,"bVisible"),m=l("th",a.nTHead),n=b.getAttribute("width"),p=b.parentNode,t=!1,v,x=a.oBrowser;d=x.bScrollOversize;(v=b.style.width)&&-1!==v.indexOf("%")&&(n=v);for(v=0;v<k.length;v++){var w=c[k[v]];null!==w.sWidth&&(w.sWidth=Zb(w.sWidthOrig,p),t=!0)}if(d||
|
||||||
|
!t&&!h&&!e&&g==oa(a)&&g==m.length)for(v=0;v<g;v++)k=ua(a,v),null!==k&&(c[k].sWidth=K(m.eq(v).width()));else{g=l(b).clone().css("visibility","hidden").removeAttr("id");g.find("tbody tr").remove();var r=l("<tr/>").appendTo(g.find("tbody"));g.find("thead, tfoot").remove();g.append(l(a.nTHead).clone()).append(l(a.nTFoot).clone());g.find("tfoot th, tfoot td").css("width","");m=Na(a,g.find("thead")[0]);for(v=0;v<k.length;v++)w=c[k[v]],m[v].style.width=null!==w.sWidthOrig&&""!==w.sWidthOrig?K(w.sWidthOrig):
|
||||||
|
"",w.sWidthOrig&&h&&l(m[v]).append(l("<div/>").css({width:w.sWidthOrig,margin:0,padding:0,border:0,height:1}));if(a.aoData.length)for(v=0;v<k.length;v++)t=k[v],w=c[t],l($b(a,t)).clone(!1).append(w.sContentPadding).appendTo(r);l("[name]",g).removeAttr("name");w=l("<div/>").css(h||e?{position:"absolute",top:0,left:0,height:1,right:0,overflow:"hidden"}:{}).append(g).appendTo(p);h&&f?g.width(f):h?(g.css("width","auto"),g.removeAttr("width"),g.width()<p.clientWidth&&n&&g.width(p.clientWidth)):e?g.width(p.clientWidth):
|
||||||
|
n&&g.width(n);for(v=e=0;v<k.length;v++)p=l(m[v]),f=p.outerWidth()-p.width(),p=x.bBounding?Math.ceil(m[v].getBoundingClientRect().width):p.outerWidth(),e+=p,c[k[v]].sWidth=K(p-f);b.style.width=K(e);w.remove()}n&&(b.style.width=K(n));!n&&!h||a._reszEvt||(b=function(){l(z).on("resize.DT-"+a.sInstance,hb(function(){ta(a)}))},d?setTimeout(b,1E3):b(),a._reszEvt=!0)}function Zb(a,b){if(!a)return 0;a=l("<div/>").css("width",K(a)).appendTo(b||A.body);b=a[0].offsetWidth;a.remove();return b}function $b(a,b){var c=
|
||||||
|
ac(a,b);if(0>c)return null;var d=a.aoData[c];return d.nTr?d.anCells[b]:l("<td/>").html(T(a,c,b,"display"))[0]}function ac(a,b){for(var c,d=-1,e=-1,h=0,f=a.aoData.length;h<f;h++)c=T(a,h,b,"display")+"",c=c.replace(tc,""),c=c.replace(/ /g," "),c.length>d&&(d=c.length,e=h);return e}function K(a){return null===a?"0px":"number"==typeof a?0>a?"0px":a+"px":a.match(/\d$/)?a+"px":a}function pa(a){var b=[],c=a.aoColumns;var d=a.aaSortingFixed;var e=l.isPlainObject(d);var h=[];var f=function(n){n.length&&
|
||||||
|
!Array.isArray(n[0])?h.push(n):l.merge(h,n)};Array.isArray(d)&&f(d);e&&d.pre&&f(d.pre);f(a.aaSorting);e&&d.post&&f(d.post);for(a=0;a<h.length;a++){var g=h[a][0];f=c[g].aDataSort;d=0;for(e=f.length;d<e;d++){var k=f[d];var m=c[k].sType||"string";h[a]._idx===q&&(h[a]._idx=l.inArray(h[a][1],c[k].asSorting));b.push({src:g,col:k,dir:h[a][1],index:h[a]._idx,type:m,formatter:u.ext.type.order[m+"-pre"]})}}return b}function Hb(a){var b,c=[],d=u.ext.type.order,e=a.aoData,h=0,f=a.aiDisplayMaster;$a(a);var g=
|
||||||
|
pa(a);var k=0;for(b=g.length;k<b;k++){var m=g[k];m.formatter&&h++;bc(a,m.col)}if("ssp"!=Q(a)&&0!==g.length){k=0;for(b=f.length;k<b;k++)c[f[k]]=k;h===g.length?f.sort(function(n,p){var t,v=g.length,x=e[n]._aSortData,w=e[p]._aSortData;for(t=0;t<v;t++){var r=g[t];var C=x[r.col];var G=w[r.col];C=C<G?-1:C>G?1:0;if(0!==C)return"asc"===r.dir?C:-C}C=c[n];G=c[p];return C<G?-1:C>G?1:0}):f.sort(function(n,p){var t,v=g.length,x=e[n]._aSortData,w=e[p]._aSortData;for(t=0;t<v;t++){var r=g[t];var C=x[r.col];var G=
|
||||||
|
w[r.col];r=d[r.type+"-"+r.dir]||d["string-"+r.dir];C=r(C,G);if(0!==C)return C}C=c[n];G=c[p];return C<G?-1:C>G?1:0})}a.bSorted=!0}function cc(a){var b=a.aoColumns,c=pa(a);a=a.oLanguage.oAria;for(var d=0,e=b.length;d<e;d++){var h=b[d];var f=h.asSorting;var g=h.ariaTitle||h.sTitle.replace(/<.*?>/g,"");var k=h.nTh;k.removeAttribute("aria-sort");h.bSortable&&(0<c.length&&c[0].col==d?(k.setAttribute("aria-sort","asc"==c[0].dir?"ascending":"descending"),h=f[c[0].index+1]||f[0]):h=f[0],g+="asc"===h?a.sSortAscending:
|
||||||
|
a.sSortDescending);k.setAttribute("aria-label",g)}}function nb(a,b,c,d){var e=a.aaSorting,h=a.aoColumns[b].asSorting,f=function(g,k){var m=g._idx;m===q&&(m=l.inArray(g[1],h));return m+1<h.length?m+1:k?null:0};"number"===typeof e[0]&&(e=a.aaSorting=[e]);c&&a.oFeatures.bSortMulti?(c=l.inArray(b,U(e,"0")),-1!==c?(b=f(e[c],!0),null===b&&1===e.length&&(b=0),null===b?e.splice(c,1):(e[c][1]=h[b],e[c]._idx=b)):(e.push([b,h[0],0]),e[e.length-1]._idx=0)):e.length&&e[0][0]==b?(b=f(e[0]),e.length=1,e[0][1]=h[b],
|
||||||
|
e[0]._idx=b):(e.length=0,e.push([b,h[0]]),e[0]._idx=0);ka(a);"function"==typeof d&&d(a)}function fb(a,b,c,d){var e=a.aoColumns[c];ob(b,{},function(h){!1!==e.bSortable&&(a.oFeatures.bProcessing?(V(a,!0),setTimeout(function(){nb(a,c,h.shiftKey,d);"ssp"!==Q(a)&&V(a,!1)},0)):nb(a,c,h.shiftKey,d))})}function Sa(a){var b=a.aLastSort,c=a.oClasses.sSortColumn,d=pa(a),e=a.oFeatures,h;if(e.bSort&&e.bSortClasses){e=0;for(h=b.length;e<h;e++){var f=b[e].src;l(U(a.aoData,"anCells",f)).removeClass(c+(2>e?e+1:3))}e=
|
||||||
|
0;for(h=d.length;e<h;e++)f=d[e].src,l(U(a.aoData,"anCells",f)).addClass(c+(2>e?e+1:3))}a.aLastSort=d}function bc(a,b){var c=a.aoColumns[b],d=u.ext.order[c.sSortDataType],e;d&&(e=d.call(a.oInstance,a,b,va(a,b)));for(var h,f=u.ext.type.order[c.sType+"-pre"],g=0,k=a.aoData.length;g<k;g++)if(c=a.aoData[g],c._aSortData||(c._aSortData=[]),!c._aSortData[b]||d)h=d?e[g]:T(a,g,b,"sort"),c._aSortData[b]=f?f(h):h}function qa(a){if(!a._bLoadingState){var b={time:+new Date,start:a._iDisplayStart,length:a._iDisplayLength,
|
||||||
|
order:l.extend(!0,[],a.aaSorting),search:Vb(a.oPreviousSearch),columns:l.map(a.aoColumns,function(c,d){return{visible:c.bVisible,search:Vb(a.aoPreSearchCols[d])}})};a.oSavedState=b;F(a,"aoStateSaveParams","stateSaveParams",[a,b]);a.oFeatures.bStateSave&&!a.bDestroying&&a.fnStateSaveCallback.call(a.oInstance,a,b)}}function dc(a,b,c){if(a.oFeatures.bStateSave)return b=a.fnStateLoadCallback.call(a.oInstance,a,function(d){pb(a,d,c)}),b!==q&&pb(a,b,c),!0;c()}function pb(a,b,c){var d,e=a.aoColumns;a._bLoadingState=
|
||||||
|
!0;var h=a._bInitComplete?new u.Api(a):null;if(b&&b.time){var f=F(a,"aoStateLoadParams","stateLoadParams",[a,b]);if(-1!==l.inArray(!1,f))a._bLoadingState=!1;else if(f=a.iStateDuration,0<f&&b.time<+new Date-1E3*f)a._bLoadingState=!1;else if(b.columns&&e.length!==b.columns.length)a._bLoadingState=!1;else{a.oLoadedState=l.extend(!0,{},b);b.start!==q&&(null===h?(a._iDisplayStart=b.start,a.iInitDisplayStart=b.start):Ra(a,b.start/b.length));b.length!==q&&(a._iDisplayLength=b.length);b.order!==q&&(a.aaSorting=
|
||||||
|
[],l.each(b.order,function(k,m){a.aaSorting.push(m[0]>=e.length?[0,m[1]]:m)}));b.search!==q&&l.extend(a.oPreviousSearch,Wb(b.search));if(b.columns){f=0;for(d=b.columns.length;f<d;f++){var g=b.columns[f];g.visible!==q&&(h?h.column(f).visible(g.visible,!1):e[f].bVisible=g.visible);g.search!==q&&l.extend(a.aoPreSearchCols[f],Wb(g.search))}h&&h.columns.adjust()}a._bLoadingState=!1;F(a,"aoStateLoaded","stateLoaded",[a,b])}}else a._bLoadingState=!1;c()}function Ta(a){var b=u.settings;a=l.inArray(a,U(b,
|
||||||
|
"nTable"));return-1!==a?b[a]:null}function da(a,b,c,d){c="DataTables warning: "+(a?"table id="+a.sTableId+" - ":"")+c;d&&(c+=". For more information about this error, please see http://datatables.net/tn/"+d);if(b)z.console&&console.log&&console.log(c);else if(b=u.ext,b=b.sErrMode||b.errMode,a&&F(a,null,"error",[a,d,c]),"alert"==b)alert(c);else{if("throw"==b)throw Error(c);"function"==typeof b&&b(a,d,c)}}function X(a,b,c,d){Array.isArray(c)?l.each(c,function(e,h){Array.isArray(h)?X(a,b,h[0],h[1]):
|
||||||
|
X(a,b,h)}):(d===q&&(d=c),b[c]!==q&&(a[d]=b[c]))}function qb(a,b,c){var d;for(d in b)if(b.hasOwnProperty(d)){var e=b[d];l.isPlainObject(e)?(l.isPlainObject(a[d])||(a[d]={}),l.extend(!0,a[d],e)):c&&"data"!==d&&"aaData"!==d&&Array.isArray(e)?a[d]=e.slice():a[d]=e}return a}function ob(a,b,c){l(a).on("click.DT",b,function(d){l(a).trigger("blur");c(d)}).on("keypress.DT",b,function(d){13===d.which&&(d.preventDefault(),c(d))}).on("selectstart.DT",function(){return!1})}function R(a,b,c,d){c&&a[b].push({fn:c,
|
||||||
|
sName:d})}function F(a,b,c,d){var e=[];b&&(e=l.map(a[b].slice().reverse(),function(h,f){return h.fn.apply(a.oInstance,d)}));null!==c&&(b=l.Event(c+".dt"),l(a.nTable).trigger(b,d),e.push(b.result));return e}function lb(a){var b=a._iDisplayStart,c=a.fnDisplayEnd(),d=a._iDisplayLength;b>=c&&(b=c-d);b-=b%d;if(-1===d||0>b)b=0;a._iDisplayStart=b}function gb(a,b){a=a.renderer;var c=u.ext.renderer[b];return l.isPlainObject(a)&&a[b]?c[a[b]]||c._:"string"===typeof a?c[a]||c._:c._}function Q(a){return a.oFeatures.bServerSide?
|
||||||
|
"ssp":a.ajax||a.sAjaxSource?"ajax":"dom"}function Da(a,b){var c=ec.numbers_length,d=Math.floor(c/2);b<=c?a=ra(0,b):a<=d?(a=ra(0,c-2),a.push("ellipsis"),a.push(b-1)):(a>=b-1-d?a=ra(b-(c-2),b):(a=ra(a-d+2,a+d-1),a.push("ellipsis"),a.push(b-1)),a.splice(0,0,"ellipsis"),a.splice(0,0,0));a.DT_el="span";return a}function Xa(a){l.each({num:function(b){return Ua(b,a)},"num-fmt":function(b){return Ua(b,a,rb)},"html-num":function(b){return Ua(b,a,Va)},"html-num-fmt":function(b){return Ua(b,a,Va,rb)}},function(b,
|
||||||
|
c){M.type.order[b+a+"-pre"]=c;b.match(/^html\-/)&&(M.type.search[b+a]=M.type.search.html)})}function fc(a){return function(){var b=[Ta(this[u.ext.iApiIndex])].concat(Array.prototype.slice.call(arguments));return u.ext.internal[a].apply(this,b)}}var u=function(a,b){if(this instanceof u)return l(a).DataTable(b);b=a;this.$=function(f,g){return this.api(!0).$(f,g)};this._=function(f,g){return this.api(!0).rows(f,g).data()};this.api=function(f){return f?new B(Ta(this[M.iApiIndex])):new B(this)};this.fnAddData=
|
||||||
|
function(f,g){var k=this.api(!0);f=Array.isArray(f)&&(Array.isArray(f[0])||l.isPlainObject(f[0]))?k.rows.add(f):k.row.add(f);(g===q||g)&&k.draw();return f.flatten().toArray()};this.fnAdjustColumnSizing=function(f){var g=this.api(!0).columns.adjust(),k=g.settings()[0],m=k.oScroll;f===q||f?g.draw(!1):(""!==m.sX||""!==m.sY)&&Ha(k)};this.fnClearTable=function(f){var g=this.api(!0).clear();(f===q||f)&&g.draw()};this.fnClose=function(f){this.api(!0).row(f).child.hide()};this.fnDeleteRow=function(f,g,k){var m=
|
||||||
|
this.api(!0);f=m.rows(f);var n=f.settings()[0],p=n.aoData[f[0][0]];f.remove();g&&g.call(this,n,p);(k===q||k)&&m.draw();return p};this.fnDestroy=function(f){this.api(!0).destroy(f)};this.fnDraw=function(f){this.api(!0).draw(f)};this.fnFilter=function(f,g,k,m,n,p){n=this.api(!0);null===g||g===q?n.search(f,k,m,p):n.column(g).search(f,k,m,p);n.draw()};this.fnGetData=function(f,g){var k=this.api(!0);if(f!==q){var m=f.nodeName?f.nodeName.toLowerCase():"";return g!==q||"td"==m||"th"==m?k.cell(f,g).data():
|
||||||
|
k.row(f).data()||null}return k.data().toArray()};this.fnGetNodes=function(f){var g=this.api(!0);return f!==q?g.row(f).node():g.rows().nodes().flatten().toArray()};this.fnGetPosition=function(f){var g=this.api(!0),k=f.nodeName.toUpperCase();return"TR"==k?g.row(f).index():"TD"==k||"TH"==k?(f=g.cell(f).index(),[f.row,f.columnVisible,f.column]):null};this.fnIsOpen=function(f){return this.api(!0).row(f).child.isShown()};this.fnOpen=function(f,g,k){return this.api(!0).row(f).child(g,k).show().child()[0]};
|
||||||
|
this.fnPageChange=function(f,g){f=this.api(!0).page(f);(g===q||g)&&f.draw(!1)};this.fnSetColumnVis=function(f,g,k){f=this.api(!0).column(f).visible(g);(k===q||k)&&f.columns.adjust().draw()};this.fnSettings=function(){return Ta(this[M.iApiIndex])};this.fnSort=function(f){this.api(!0).order(f).draw()};this.fnSortListener=function(f,g,k){this.api(!0).order.listener(f,g,k)};this.fnUpdate=function(f,g,k,m,n){var p=this.api(!0);k===q||null===k?p.row(g).data(f):p.cell(g,k).data(f);(n===q||n)&&p.columns.adjust();
|
||||||
|
(m===q||m)&&p.draw();return 0};this.fnVersionCheck=M.fnVersionCheck;var c=this,d=b===q,e=this.length;d&&(b={});this.oApi=this.internal=M.internal;for(var h in u.ext.internal)h&&(this[h]=fc(h));this.each(function(){var f={},g=1<e?qb(f,b,!0):b,k=0,m;f=this.getAttribute("id");var n=!1,p=u.defaults,t=l(this);if("table"!=this.nodeName.toLowerCase())da(null,0,"Non-table node initialisation ("+this.nodeName+")",2);else{zb(p);Ab(p.column);P(p,p,!0);P(p.column,p.column,!0);P(p,l.extend(g,t.data()),!0);var v=
|
||||||
|
u.settings;k=0;for(m=v.length;k<m;k++){var x=v[k];if(x.nTable==this||x.nTHead&&x.nTHead.parentNode==this||x.nTFoot&&x.nTFoot.parentNode==this){var w=g.bRetrieve!==q?g.bRetrieve:p.bRetrieve;if(d||w)return x.oInstance;if(g.bDestroy!==q?g.bDestroy:p.bDestroy){x.oInstance.fnDestroy();break}else{da(x,0,"Cannot reinitialise DataTable",3);return}}if(x.sTableId==this.id){v.splice(k,1);break}}if(null===f||""===f)this.id=f="DataTables_Table_"+u.ext._unique++;var r=l.extend(!0,{},u.models.oSettings,{sDestroyWidth:t[0].style.width,
|
||||||
|
sInstance:f,sTableId:f});r.nTable=this;r.oApi=c.internal;r.oInit=g;v.push(r);r.oInstance=1===c.length?c:t.dataTable();zb(g);ma(g.oLanguage);g.aLengthMenu&&!g.iDisplayLength&&(g.iDisplayLength=Array.isArray(g.aLengthMenu[0])?g.aLengthMenu[0][0]:g.aLengthMenu[0]);g=qb(l.extend(!0,{},p),g);X(r.oFeatures,g,"bPaginate bLengthChange bFilter bSort bSortMulti bInfo bProcessing bAutoWidth bSortClasses bServerSide bDeferRender".split(" "));X(r,g,["asStripeClasses","ajax","fnServerData","fnFormatNumber","sServerMethod",
|
||||||
|
"aaSorting","aaSortingFixed","aLengthMenu","sPaginationType","sAjaxSource","sAjaxDataProp","iStateDuration","sDom","bSortCellsTop","iTabIndex","fnStateLoadCallback","fnStateSaveCallback","renderer","searchDelay","rowId",["iCookieDuration","iStateDuration"],["oSearch","oPreviousSearch"],["aoSearchCols","aoPreSearchCols"],["iDisplayLength","_iDisplayLength"]]);X(r.oScroll,g,[["sScrollX","sX"],["sScrollXInner","sXInner"],["sScrollY","sY"],["bScrollCollapse","bCollapse"]]);X(r.oLanguage,g,"fnInfoCallback");
|
||||||
|
R(r,"aoDrawCallback",g.fnDrawCallback,"user");R(r,"aoServerParams",g.fnServerParams,"user");R(r,"aoStateSaveParams",g.fnStateSaveParams,"user");R(r,"aoStateLoadParams",g.fnStateLoadParams,"user");R(r,"aoStateLoaded",g.fnStateLoaded,"user");R(r,"aoRowCallback",g.fnRowCallback,"user");R(r,"aoRowCreatedCallback",g.fnCreatedRow,"user");R(r,"aoHeaderCallback",g.fnHeaderCallback,"user");R(r,"aoFooterCallback",g.fnFooterCallback,"user");R(r,"aoInitComplete",g.fnInitComplete,"user");R(r,"aoPreDrawCallback",
|
||||||
|
g.fnPreDrawCallback,"user");r.rowIdFn=na(g.rowId);Bb(r);var C=r.oClasses;l.extend(C,u.ext.classes,g.oClasses);t.addClass(C.sTable);r.iInitDisplayStart===q&&(r.iInitDisplayStart=g.iDisplayStart,r._iDisplayStart=g.iDisplayStart);null!==g.iDeferLoading&&(r.bDeferLoading=!0,f=Array.isArray(g.iDeferLoading),r._iRecordsDisplay=f?g.iDeferLoading[0]:g.iDeferLoading,r._iRecordsTotal=f?g.iDeferLoading[1]:g.iDeferLoading);var G=r.oLanguage;l.extend(!0,G,g.oLanguage);G.sUrl?(l.ajax({dataType:"json",url:G.sUrl,
|
||||||
|
success:function(I){P(p.oLanguage,I);ma(I);l.extend(!0,G,I);F(r,null,"i18n",[r]);Ba(r)},error:function(){Ba(r)}}),n=!0):F(r,null,"i18n",[r]);null===g.asStripeClasses&&(r.asStripeClasses=[C.sStripeOdd,C.sStripeEven]);f=r.asStripeClasses;var aa=t.children("tbody").find("tr").eq(0);-1!==l.inArray(!0,l.map(f,function(I,H){return aa.hasClass(I)}))&&(l("tbody tr",this).removeClass(f.join(" ")),r.asDestroyStripes=f.slice());f=[];v=this.getElementsByTagName("thead");0!==v.length&&(xa(r.aoHeader,v[0]),f=Na(r));
|
||||||
|
if(null===g.aoColumns)for(v=[],k=0,m=f.length;k<m;k++)v.push(null);else v=g.aoColumns;k=0;for(m=v.length;k<m;k++)Ya(r,f?f[k]:null);Db(r,g.aoColumnDefs,v,function(I,H){Ga(r,I,H)});if(aa.length){var L=function(I,H){return null!==I.getAttribute("data-"+H)?H:null};l(aa[0]).children("th, td").each(function(I,H){var ea=r.aoColumns[I];if(ea.mData===I){var Y=L(H,"sort")||L(H,"order");H=L(H,"filter")||L(H,"search");if(null!==Y||null!==H)ea.mData={_:I+".display",sort:null!==Y?I+".@data-"+Y:q,type:null!==Y?
|
||||||
|
I+".@data-"+Y:q,filter:null!==H?I+".@data-"+H:q},Ga(r,I)}})}var O=r.oFeatures;f=function(){if(g.aaSorting===q){var I=r.aaSorting;k=0;for(m=I.length;k<m;k++)I[k][1]=r.aoColumns[k].asSorting[0]}Sa(r);O.bSort&&R(r,"aoDrawCallback",function(){if(r.bSorted){var Y=pa(r),Ca={};l.each(Y,function(fa,ba){Ca[ba.src]=ba.dir});F(r,null,"order",[r,Y,Ca]);cc(r)}});R(r,"aoDrawCallback",function(){(r.bSorted||"ssp"===Q(r)||O.bDeferRender)&&Sa(r)},"sc");I=t.children("caption").each(function(){this._captionSide=l(this).css("caption-side")});
|
||||||
|
var H=t.children("thead");0===H.length&&(H=l("<thead/>").appendTo(t));r.nTHead=H[0];var ea=t.children("tbody");0===ea.length&&(ea=l("<tbody/>").insertAfter(H));r.nTBody=ea[0];H=t.children("tfoot");0===H.length&&0<I.length&&(""!==r.oScroll.sX||""!==r.oScroll.sY)&&(H=l("<tfoot/>").appendTo(t));0===H.length||0===H.children().length?t.addClass(C.sNoFooter):0<H.length&&(r.nTFoot=H[0],xa(r.aoFooter,r.nTFoot));if(g.aaData)for(k=0;k<g.aaData.length;k++)ia(r,g.aaData[k]);else(r.bDeferLoading||"dom"==Q(r))&&
|
||||||
|
Ja(r,l(r.nTBody).children("tr"));r.aiDisplay=r.aiDisplayMaster.slice();r.bInitialised=!0;!1===n&&Ba(r)};R(r,"aoDrawCallback",qa,"state_save");g.bStateSave?(O.bStateSave=!0,dc(r,g,f)):f()}});c=null;return this},M,y,J,sb={},gc=/[\r\n\u2028]/g,Va=/<.*?>/g,uc=/^\d{2,4}[\.\/\-]\d{1,2}[\.\/\-]\d{1,2}([T ]{1}\d{1,2}[:\.]\d{2}([\.:]\d{2})?)?$/,vc=/(\/|\.|\*|\+|\?|\||\(|\)|\[|\]|\{|\}|\\|\$|\^|\-)/g,rb=/['\u00A0,$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfkɃΞ]/gi,Z=function(a){return a&&!0!==a&&"-"!==a?!1:!0},hc=
|
||||||
|
function(a){var b=parseInt(a,10);return!isNaN(b)&&isFinite(a)?b:null},ic=function(a,b){sb[b]||(sb[b]=new RegExp(jb(b),"g"));return"string"===typeof a&&"."!==b?a.replace(/\./g,"").replace(sb[b],"."):a},tb=function(a,b,c){var d="string"===typeof a;if(Z(a))return!0;b&&d&&(a=ic(a,b));c&&d&&(a=a.replace(rb,""));return!isNaN(parseFloat(a))&&isFinite(a)},jc=function(a,b,c){return Z(a)?!0:Z(a)||"string"===typeof a?tb(a.replace(Va,""),b,c)?!0:null:null},U=function(a,b,c){var d=[],e=0,h=a.length;if(c!==q)for(;e<
|
||||||
|
h;e++)a[e]&&a[e][b]&&d.push(a[e][b][c]);else for(;e<h;e++)a[e]&&d.push(a[e][b]);return d},Ea=function(a,b,c,d){var e=[],h=0,f=b.length;if(d!==q)for(;h<f;h++)a[b[h]][c]&&e.push(a[b[h]][c][d]);else for(;h<f;h++)e.push(a[b[h]][c]);return e},ra=function(a,b){var c=[];if(b===q){b=0;var d=a}else d=b,b=a;for(a=b;a<d;a++)c.push(a);return c},kc=function(a){for(var b=[],c=0,d=a.length;c<d;c++)a[c]&&b.push(a[c]);return b},Ma=function(a){a:{if(!(2>a.length)){var b=a.slice().sort();for(var c=b[0],d=1,e=b.length;d<
|
||||||
|
e;d++){if(b[d]===c){b=!1;break a}c=b[d]}}b=!0}if(b)return a.slice();b=[];e=a.length;var h,f=0;d=0;a:for(;d<e;d++){c=a[d];for(h=0;h<f;h++)if(b[h]===c)continue a;b.push(c);f++}return b},lc=function(a,b){if(Array.isArray(b))for(var c=0;c<b.length;c++)lc(a,b[c]);else a.push(b);return a},mc=function(a,b){b===q&&(b=0);return-1!==this.indexOf(a,b)};Array.isArray||(Array.isArray=function(a){return"[object Array]"===Object.prototype.toString.call(a)});Array.prototype.includes||(Array.prototype.includes=mc);
|
||||||
|
String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")});String.prototype.includes||(String.prototype.includes=mc);u.util={throttle:function(a,b){var c=b!==q?b:200,d,e;return function(){var h=this,f=+new Date,g=arguments;d&&f<d+c?(clearTimeout(e),e=setTimeout(function(){d=q;a.apply(h,g)},c)):(d=f,a.apply(h,g))}},escapeRegex:function(a){return a.replace(vc,"\\$1")},set:function(a){if(l.isPlainObject(a))return u.util.set(a._);if(null===
|
||||||
|
a)return function(){};if("function"===typeof a)return function(c,d,e){a(c,"set",d,e)};if("string"!==typeof a||-1===a.indexOf(".")&&-1===a.indexOf("[")&&-1===a.indexOf("("))return function(c,d){c[a]=d};var b=function(c,d,e){e=cb(e);var h=e[e.length-1];for(var f,g,k=0,m=e.length-1;k<m;k++){if("__proto__"===e[k]||"constructor"===e[k])throw Error("Cannot set prototype values");f=e[k].match(Fa);g=e[k].match(sa);if(f){e[k]=e[k].replace(Fa,"");c[e[k]]=[];h=e.slice();h.splice(0,k+1);f=h.join(".");if(Array.isArray(d))for(g=
|
||||||
|
0,m=d.length;g<m;g++)h={},b(h,d[g],f),c[e[k]].push(h);else c[e[k]]=d;return}g&&(e[k]=e[k].replace(sa,""),c=c[e[k]](d));if(null===c[e[k]]||c[e[k]]===q)c[e[k]]={};c=c[e[k]]}if(h.match(sa))c[h.replace(sa,"")](d);else c[h.replace(Fa,"")]=d};return function(c,d){return b(c,d,a)}},get:function(a){if(l.isPlainObject(a)){var b={};l.each(a,function(d,e){e&&(b[d]=u.util.get(e))});return function(d,e,h,f){var g=b[e]||b._;return g!==q?g(d,e,h,f):d}}if(null===a)return function(d){return d};if("function"===typeof a)return function(d,
|
||||||
|
e,h,f){return a(d,e,h,f)};if("string"!==typeof a||-1===a.indexOf(".")&&-1===a.indexOf("[")&&-1===a.indexOf("("))return function(d,e){return d[a]};var c=function(d,e,h){if(""!==h){var f=cb(h);for(var g=0,k=f.length;g<k;g++){h=f[g].match(Fa);var m=f[g].match(sa);if(h){f[g]=f[g].replace(Fa,"");""!==f[g]&&(d=d[f[g]]);m=[];f.splice(0,g+1);f=f.join(".");if(Array.isArray(d))for(g=0,k=d.length;g<k;g++)m.push(c(d[g],e,f));d=h[0].substring(1,h[0].length-1);d=""===d?m:m.join(d);break}else if(m){f[g]=f[g].replace(sa,
|
||||||
|
"");d=d[f[g]]();continue}if(null===d||d[f[g]]===q)return q;d=d[f[g]]}}return d};return function(d,e){return c(d,e,a)}}};var S=function(a,b,c){a[b]!==q&&(a[c]=a[b])},Fa=/\[.*?\]$/,sa=/\(\)$/,na=u.util.get,ha=u.util.set,jb=u.util.escapeRegex,Qa=l("<div>")[0],sc=Qa.textContent!==q,tc=/<.*?>/g,hb=u.util.throttle,nc=[],N=Array.prototype,wc=function(a){var b,c=u.settings,d=l.map(c,function(h,f){return h.nTable});if(a){if(a.nTable&&a.oApi)return[a];if(a.nodeName&&"table"===a.nodeName.toLowerCase()){var e=
|
||||||
|
l.inArray(a,d);return-1!==e?[c[e]]:null}if(a&&"function"===typeof a.settings)return a.settings().toArray();"string"===typeof a?b=l(a):a instanceof l&&(b=a)}else return[];if(b)return b.map(function(h){e=l.inArray(this,d);return-1!==e?c[e]:null}).toArray()};var B=function(a,b){if(!(this instanceof B))return new B(a,b);var c=[],d=function(f){(f=wc(f))&&c.push.apply(c,f)};if(Array.isArray(a))for(var e=0,h=a.length;e<h;e++)d(a[e]);else d(a);this.context=Ma(c);b&&l.merge(this,b);this.selector={rows:null,
|
||||||
|
cols:null,opts:null};B.extend(this,this,nc)};u.Api=B;l.extend(B.prototype,{any:function(){return 0!==this.count()},concat:N.concat,context:[],count:function(){return this.flatten().length},each:function(a){for(var b=0,c=this.length;b<c;b++)a.call(this,this[b],b,this);return this},eq:function(a){var b=this.context;return b.length>a?new B(b[a],this[a]):null},filter:function(a){var b=[];if(N.filter)b=N.filter.call(this,a,this);else for(var c=0,d=this.length;c<d;c++)a.call(this,this[c],c,this)&&b.push(this[c]);
|
||||||
|
return new B(this.context,b)},flatten:function(){var a=[];return new B(this.context,a.concat.apply(a,this.toArray()))},join:N.join,indexOf:N.indexOf||function(a,b){b=b||0;for(var c=this.length;b<c;b++)if(this[b]===a)return b;return-1},iterator:function(a,b,c,d){var e=[],h,f,g=this.context,k,m=this.selector;"string"===typeof a&&(d=c,c=b,b=a,a=!1);var n=0;for(h=g.length;n<h;n++){var p=new B(g[n]);if("table"===b){var t=c.call(p,g[n],n);t!==q&&e.push(t)}else if("columns"===b||"rows"===b)t=c.call(p,g[n],
|
||||||
|
this[n],n),t!==q&&e.push(t);else if("column"===b||"column-rows"===b||"row"===b||"cell"===b){var v=this[n];"column-rows"===b&&(k=Wa(g[n],m.opts));var x=0;for(f=v.length;x<f;x++)t=v[x],t="cell"===b?c.call(p,g[n],t.row,t.column,n,x):c.call(p,g[n],t,n,x,k),t!==q&&e.push(t)}}return e.length||d?(a=new B(g,a?e.concat.apply([],e):e),b=a.selector,b.rows=m.rows,b.cols=m.cols,b.opts=m.opts,a):this},lastIndexOf:N.lastIndexOf||function(a,b){return this.indexOf.apply(this.toArray.reverse(),arguments)},length:0,
|
||||||
|
map:function(a){var b=[];if(N.map)b=N.map.call(this,a,this);else for(var c=0,d=this.length;c<d;c++)b.push(a.call(this,this[c],c));return new B(this.context,b)},pluck:function(a){return this.map(function(b){return b[a]})},pop:N.pop,push:N.push,reduce:N.reduce||function(a,b){return Cb(this,a,b,0,this.length,1)},reduceRight:N.reduceRight||function(a,b){return Cb(this,a,b,this.length-1,-1,-1)},reverse:N.reverse,selector:null,shift:N.shift,slice:function(){return new B(this.context,this)},sort:N.sort,
|
||||||
|
splice:N.splice,toArray:function(){return N.slice.call(this)},to$:function(){return l(this)},toJQuery:function(){return l(this)},unique:function(){return new B(this.context,Ma(this))},unshift:N.unshift});B.extend=function(a,b,c){if(c.length&&b&&(b instanceof B||b.__dt_wrapper)){var d,e=function(g,k,m){return function(){var n=k.apply(g,arguments);B.extend(n,n,m.methodExt);return n}};var h=0;for(d=c.length;h<d;h++){var f=c[h];b[f.name]="function"===f.type?e(a,f.val,f):"object"===f.type?{}:f.val;b[f.name].__dt_wrapper=
|
||||||
|
!0;B.extend(a,b[f.name],f.propExt)}}};B.register=y=function(a,b){if(Array.isArray(a))for(var c=0,d=a.length;c<d;c++)B.register(a[c],b);else{d=a.split(".");var e=nc,h;a=0;for(c=d.length;a<c;a++){var f=(h=-1!==d[a].indexOf("()"))?d[a].replace("()",""):d[a];a:{var g=0;for(var k=e.length;g<k;g++)if(e[g].name===f){g=e[g];break a}g=null}g||(g={name:f,val:{},methodExt:[],propExt:[],type:"object"},e.push(g));a===c-1?(g.val=b,g.type="function"===typeof b?"function":l.isPlainObject(b)?"object":"other"):e=h?
|
||||||
|
g.methodExt:g.propExt}}};B.registerPlural=J=function(a,b,c){B.register(a,c);B.register(b,function(){var d=c.apply(this,arguments);return d===this?this:d instanceof B?d.length?Array.isArray(d[0])?new B(d.context,d[0]):d[0]:q:d})};var oc=function(a,b){if(Array.isArray(a))return l.map(a,function(d){return oc(d,b)});if("number"===typeof a)return[b[a]];var c=l.map(b,function(d,e){return d.nTable});return l(c).filter(a).map(function(d){d=l.inArray(this,c);return b[d]}).toArray()};y("tables()",function(a){return a!==
|
||||||
|
q&&null!==a?new B(oc(a,this.context)):this});y("table()",function(a){a=this.tables(a);var b=a.context;return b.length?new B(b[0]):a});J("tables().nodes()","table().node()",function(){return this.iterator("table",function(a){return a.nTable},1)});J("tables().body()","table().body()",function(){return this.iterator("table",function(a){return a.nTBody},1)});J("tables().header()","table().header()",function(){return this.iterator("table",function(a){return a.nTHead},1)});J("tables().footer()","table().footer()",
|
||||||
|
function(){return this.iterator("table",function(a){return a.nTFoot},1)});J("tables().containers()","table().container()",function(){return this.iterator("table",function(a){return a.nTableWrapper},1)});y("draw()",function(a){return this.iterator("table",function(b){"page"===a?ja(b):("string"===typeof a&&(a="full-hold"===a?!1:!0),ka(b,!1===a))})});y("page()",function(a){return a===q?this.page.info().page:this.iterator("table",function(b){Ra(b,a)})});y("page.info()",function(a){if(0===this.context.length)return q;
|
||||||
|
a=this.context[0];var b=a._iDisplayStart,c=a.oFeatures.bPaginate?a._iDisplayLength:-1,d=a.fnRecordsDisplay(),e=-1===c;return{page:e?0:Math.floor(b/c),pages:e?1:Math.ceil(d/c),start:b,end:a.fnDisplayEnd(),length:c,recordsTotal:a.fnRecordsTotal(),recordsDisplay:d,serverSide:"ssp"===Q(a)}});y("page.len()",function(a){return a===q?0!==this.context.length?this.context[0]._iDisplayLength:q:this.iterator("table",function(b){kb(b,a)})});var pc=function(a,b,c){if(c){var d=new B(a);d.one("draw",function(){c(d.ajax.json())})}if("ssp"==
|
||||||
|
Q(a))ka(a,b);else{V(a,!0);var e=a.jqXHR;e&&4!==e.readyState&&e.abort();Oa(a,[],function(h){Ka(a);h=Aa(a,h);for(var f=0,g=h.length;f<g;f++)ia(a,h[f]);ka(a,b);V(a,!1)})}};y("ajax.json()",function(){var a=this.context;if(0<a.length)return a[0].json});y("ajax.params()",function(){var a=this.context;if(0<a.length)return a[0].oAjaxData});y("ajax.reload()",function(a,b){return this.iterator("table",function(c){pc(c,!1===b,a)})});y("ajax.url()",function(a){var b=this.context;if(a===q){if(0===b.length)return q;
|
||||||
|
b=b[0];return b.ajax?l.isPlainObject(b.ajax)?b.ajax.url:b.ajax:b.sAjaxSource}return this.iterator("table",function(c){l.isPlainObject(c.ajax)?c.ajax.url=a:c.ajax=a})});y("ajax.url().load()",function(a,b){return this.iterator("table",function(c){pc(c,!1===b,a)})});var ub=function(a,b,c,d,e){var h=[],f,g,k;var m=typeof b;b&&"string"!==m&&"function"!==m&&b.length!==q||(b=[b]);m=0;for(g=b.length;m<g;m++){var n=b[m]&&b[m].split&&!b[m].match(/[\[\(:]/)?b[m].split(","):[b[m]];var p=0;for(k=n.length;p<k;p++)(f=
|
||||||
|
c("string"===typeof n[p]?n[p].trim():n[p]))&&f.length&&(h=h.concat(f))}a=M.selector[a];if(a.length)for(m=0,g=a.length;m<g;m++)h=a[m](d,e,h);return Ma(h)},vb=function(a){a||(a={});a.filter&&a.search===q&&(a.search=a.filter);return l.extend({search:"none",order:"current",page:"all"},a)},wb=function(a){for(var b=0,c=a.length;b<c;b++)if(0<a[b].length)return a[0]=a[b],a[0].length=1,a.length=1,a.context=[a.context[b]],a;a.length=0;return a},Wa=function(a,b){var c=[],d=a.aiDisplay;var e=a.aiDisplayMaster;
|
||||||
|
var h=b.search;var f=b.order;b=b.page;if("ssp"==Q(a))return"removed"===h?[]:ra(0,e.length);if("current"==b)for(f=a._iDisplayStart,a=a.fnDisplayEnd();f<a;f++)c.push(d[f]);else if("current"==f||"applied"==f)if("none"==h)c=e.slice();else if("applied"==h)c=d.slice();else{if("removed"==h){var g={};f=0;for(a=d.length;f<a;f++)g[d[f]]=null;c=l.map(e,function(k){return g.hasOwnProperty(k)?null:k})}}else if("index"==f||"original"==f)for(f=0,a=a.aoData.length;f<a;f++)"none"==h?c.push(f):(e=l.inArray(f,d),(-1===
|
||||||
|
e&&"removed"==h||0<=e&&"applied"==h)&&c.push(f));return c},xc=function(a,b,c){var d;return ub("row",b,function(e){var h=hc(e),f=a.aoData;if(null!==h&&!c)return[h];d||(d=Wa(a,c));if(null!==h&&-1!==l.inArray(h,d))return[h];if(null===e||e===q||""===e)return d;if("function"===typeof e)return l.map(d,function(k){var m=f[k];return e(k,m._aData,m.nTr)?k:null});if(e.nodeName){h=e._DT_RowIndex;var g=e._DT_CellIndex;if(h!==q)return f[h]&&f[h].nTr===e?[h]:[];if(g)return f[g.row]&&f[g.row].nTr===e.parentNode?
|
||||||
|
[g.row]:[];h=l(e).closest("*[data-dt-row]");return h.length?[h.data("dt-row")]:[]}if("string"===typeof e&&"#"===e.charAt(0)&&(h=a.aIds[e.replace(/^#/,"")],h!==q))return[h.idx];h=kc(Ea(a.aoData,d,"nTr"));return l(h).filter(e).map(function(){return this._DT_RowIndex}).toArray()},a,c)};y("rows()",function(a,b){a===q?a="":l.isPlainObject(a)&&(b=a,a="");b=vb(b);var c=this.iterator("table",function(d){return xc(d,a,b)},1);c.selector.rows=a;c.selector.opts=b;return c});y("rows().nodes()",function(){return this.iterator("row",
|
||||||
|
function(a,b){return a.aoData[b].nTr||q},1)});y("rows().data()",function(){return this.iterator(!0,"rows",function(a,b){return Ea(a.aoData,b,"_aData")},1)});J("rows().cache()","row().cache()",function(a){return this.iterator("row",function(b,c){b=b.aoData[c];return"search"===a?b._aFilterData:b._aSortData},1)});J("rows().invalidate()","row().invalidate()",function(a){return this.iterator("row",function(b,c){wa(b,c,a)})});J("rows().indexes()","row().index()",function(){return this.iterator("row",function(a,
|
||||||
|
b){return b},1)});J("rows().ids()","row().id()",function(a){for(var b=[],c=this.context,d=0,e=c.length;d<e;d++)for(var h=0,f=this[d].length;h<f;h++){var g=c[d].rowIdFn(c[d].aoData[this[d][h]]._aData);b.push((!0===a?"#":"")+g)}return new B(c,b)});J("rows().remove()","row().remove()",function(){var a=this;this.iterator("row",function(b,c,d){var e=b.aoData,h=e[c],f,g;e.splice(c,1);var k=0;for(f=e.length;k<f;k++){var m=e[k];var n=m.anCells;null!==m.nTr&&(m.nTr._DT_RowIndex=k);if(null!==n)for(m=0,g=n.length;m<
|
||||||
|
g;m++)n[m]._DT_CellIndex.row=k}La(b.aiDisplayMaster,c);La(b.aiDisplay,c);La(a[d],c,!1);0<b._iRecordsDisplay&&b._iRecordsDisplay--;lb(b);c=b.rowIdFn(h._aData);c!==q&&delete b.aIds[c]});this.iterator("table",function(b){for(var c=0,d=b.aoData.length;c<d;c++)b.aoData[c].idx=c});return this});y("rows.add()",function(a){var b=this.iterator("table",function(d){var e,h=[];var f=0;for(e=a.length;f<e;f++){var g=a[f];g.nodeName&&"TR"===g.nodeName.toUpperCase()?h.push(Ja(d,g)[0]):h.push(ia(d,g))}return h},1),
|
||||||
|
c=this.rows(-1);c.pop();l.merge(c,b);return c});y("row()",function(a,b){return wb(this.rows(a,b))});y("row().data()",function(a){var b=this.context;if(a===q)return b.length&&this.length?b[0].aoData[this[0]]._aData:q;var c=b[0].aoData[this[0]];c._aData=a;Array.isArray(a)&&c.nTr&&c.nTr.id&&ha(b[0].rowId)(a,c.nTr.id);wa(b[0],this[0],"data");return this});y("row().node()",function(){var a=this.context;return a.length&&this.length?a[0].aoData[this[0]].nTr||null:null});y("row.add()",function(a){a instanceof
|
||||||
|
l&&a.length&&(a=a[0]);var b=this.iterator("table",function(c){return a.nodeName&&"TR"===a.nodeName.toUpperCase()?Ja(c,a)[0]:ia(c,a)});return this.row(b[0])});l(A).on("plugin-init.dt",function(a,b){var c=new B(b);c.on("stateSaveParams",function(d,e,h){d=c.rows().iterator("row",function(f,g){return f.aoData[g]._detailsShow?g:q});h.childRows=c.rows(d).ids(!0).toArray()});(a=c.state.loaded())&&a.childRows&&c.rows(a.childRows).every(function(){F(b,null,"requestChild",[this])})});var yc=function(a,b,c,
|
||||||
|
d){var e=[],h=function(f,g){if(Array.isArray(f)||f instanceof l)for(var k=0,m=f.length;k<m;k++)h(f[k],g);else f.nodeName&&"tr"===f.nodeName.toLowerCase()?e.push(f):(k=l("<tr><td></td></tr>").addClass(g),l("td",k).addClass(g).html(f)[0].colSpan=oa(a),e.push(k[0]))};h(c,d);b._details&&b._details.detach();b._details=l(e);b._detailsShow&&b._details.insertAfter(b.nTr)},xb=function(a,b){var c=a.context;c.length&&(a=c[0].aoData[b!==q?b:a[0]])&&a._details&&(a._details.remove(),a._detailsShow=q,a._details=
|
||||||
|
q,l(a.nTr).removeClass("dt-hasChild"),qa(c[0]))},qc=function(a,b){var c=a.context;if(c.length&&a.length){var d=c[0].aoData[a[0]];d._details&&((d._detailsShow=b)?(d._details.insertAfter(d.nTr),l(d.nTr).addClass("dt-hasChild")):(d._details.detach(),l(d.nTr).removeClass("dt-hasChild")),F(c[0],null,"childRow",[b,a.row(a[0])]),zc(c[0]),qa(c[0]))}},zc=function(a){var b=new B(a),c=a.aoData;b.off("draw.dt.DT_details column-visibility.dt.DT_details destroy.dt.DT_details");0<U(c,"_details").length&&(b.on("draw.dt.DT_details",
|
||||||
|
function(d,e){a===e&&b.rows({page:"current"}).eq(0).each(function(h){h=c[h];h._detailsShow&&h._details.insertAfter(h.nTr)})}),b.on("column-visibility.dt.DT_details",function(d,e,h,f){if(a===e)for(e=oa(e),h=0,f=c.length;h<f;h++)d=c[h],d._details&&d._details.children("td[colspan]").attr("colspan",e)}),b.on("destroy.dt.DT_details",function(d,e){if(a===e)for(d=0,e=c.length;d<e;d++)c[d]._details&&xb(b,d)}))};y("row().child()",function(a,b){var c=this.context;if(a===q)return c.length&&this.length?c[0].aoData[this[0]]._details:
|
||||||
|
q;!0===a?this.child.show():!1===a?xb(this):c.length&&this.length&&yc(c[0],c[0].aoData[this[0]],a,b);return this});y(["row().child.show()","row().child().show()"],function(a){qc(this,!0);return this});y(["row().child.hide()","row().child().hide()"],function(){qc(this,!1);return this});y(["row().child.remove()","row().child().remove()"],function(){xb(this);return this});y("row().child.isShown()",function(){var a=this.context;return a.length&&this.length?a[0].aoData[this[0]]._detailsShow||!1:!1});var Ac=
|
||||||
|
/^([^:]+):(name|visIdx|visible)$/,rc=function(a,b,c,d,e){c=[];d=0;for(var h=e.length;d<h;d++)c.push(T(a,e[d],b));return c},Bc=function(a,b,c){var d=a.aoColumns,e=U(d,"sName"),h=U(d,"nTh");return ub("column",b,function(f){var g=hc(f);if(""===f)return ra(d.length);if(null!==g)return[0<=g?g:d.length+g];if("function"===typeof f){var k=Wa(a,c);return l.map(d,function(p,t){return f(t,rc(a,t,0,0,k),h[t])?t:null})}var m="string"===typeof f?f.match(Ac):"";if(m)switch(m[2]){case "visIdx":case "visible":g=parseInt(m[1],
|
||||||
|
10);if(0>g){var n=l.map(d,function(p,t){return p.bVisible?t:null});return[n[n.length+g]]}return[ua(a,g)];case "name":return l.map(e,function(p,t){return p===m[1]?t:null});default:return[]}if(f.nodeName&&f._DT_CellIndex)return[f._DT_CellIndex.column];g=l(h).filter(f).map(function(){return l.inArray(this,h)}).toArray();if(g.length||!f.nodeName)return g;g=l(f).closest("*[data-dt-column]");return g.length?[g.data("dt-column")]:[]},a,c)};y("columns()",function(a,b){a===q?a="":l.isPlainObject(a)&&(b=a,
|
||||||
|
a="");b=vb(b);var c=this.iterator("table",function(d){return Bc(d,a,b)},1);c.selector.cols=a;c.selector.opts=b;return c});J("columns().header()","column().header()",function(a,b){return this.iterator("column",function(c,d){return c.aoColumns[d].nTh},1)});J("columns().footer()","column().footer()",function(a,b){return this.iterator("column",function(c,d){return c.aoColumns[d].nTf},1)});J("columns().data()","column().data()",function(){return this.iterator("column-rows",rc,1)});J("columns().dataSrc()",
|
||||||
|
"column().dataSrc()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].mData},1)});J("columns().cache()","column().cache()",function(a){return this.iterator("column-rows",function(b,c,d,e,h){return Ea(b.aoData,h,"search"===a?"_aFilterData":"_aSortData",c)},1)});J("columns().nodes()","column().nodes()",function(){return this.iterator("column-rows",function(a,b,c,d,e){return Ea(a.aoData,e,"anCells",b)},1)});J("columns().visible()","column().visible()",function(a,b){var c=
|
||||||
|
this,d=this.iterator("column",function(e,h){if(a===q)return e.aoColumns[h].bVisible;var f=e.aoColumns,g=f[h],k=e.aoData,m;if(a!==q&&g.bVisible!==a){if(a){var n=l.inArray(!0,U(f,"bVisible"),h+1);f=0;for(m=k.length;f<m;f++){var p=k[f].nTr;e=k[f].anCells;p&&p.insertBefore(e[h],e[n]||null)}}else l(U(e.aoData,"anCells",h)).detach();g.bVisible=a}});a!==q&&this.iterator("table",function(e){ya(e,e.aoHeader);ya(e,e.aoFooter);e.aiDisplay.length||l(e.nTBody).find("td[colspan]").attr("colspan",oa(e));qa(e);c.iterator("column",
|
||||||
|
function(h,f){F(h,null,"column-visibility",[h,f,a,b])});(b===q||b)&&c.columns.adjust()});return d});J("columns().indexes()","column().index()",function(a){return this.iterator("column",function(b,c){return"visible"===a?va(b,c):c},1)});y("columns.adjust()",function(){return this.iterator("table",function(a){ta(a)},1)});y("column.index()",function(a,b){if(0!==this.context.length){var c=this.context[0];if("fromVisible"===a||"toData"===a)return ua(c,b);if("fromData"===a||"toVisible"===a)return va(c,b)}});
|
||||||
|
y("column()",function(a,b){return wb(this.columns(a,b))});var Cc=function(a,b,c){var d=a.aoData,e=Wa(a,c),h=kc(Ea(d,e,"anCells")),f=l(lc([],h)),g,k=a.aoColumns.length,m,n,p,t,v,x;return ub("cell",b,function(w){var r="function"===typeof w;if(null===w||w===q||r){m=[];n=0;for(p=e.length;n<p;n++)for(g=e[n],t=0;t<k;t++)v={row:g,column:t},r?(x=d[g],w(v,T(a,g,t),x.anCells?x.anCells[t]:null)&&m.push(v)):m.push(v);return m}if(l.isPlainObject(w))return w.column!==q&&w.row!==q&&-1!==l.inArray(w.row,e)?[w]:[];
|
||||||
|
r=f.filter(w).map(function(C,G){return{row:G._DT_CellIndex.row,column:G._DT_CellIndex.column}}).toArray();if(r.length||!w.nodeName)return r;x=l(w).closest("*[data-dt-row]");return x.length?[{row:x.data("dt-row"),column:x.data("dt-column")}]:[]},a,c)};y("cells()",function(a,b,c){l.isPlainObject(a)&&(a.row===q?(c=a,a=null):(c=b,b=null));l.isPlainObject(b)&&(c=b,b=null);if(null===b||b===q)return this.iterator("table",function(n){return Cc(n,a,vb(c))});var d=c?{page:c.page,order:c.order,search:c.search}:
|
||||||
|
{},e=this.columns(b,d),h=this.rows(a,d),f,g,k,m;d=this.iterator("table",function(n,p){n=[];f=0;for(g=h[p].length;f<g;f++)for(k=0,m=e[p].length;k<m;k++)n.push({row:h[p][f],column:e[p][k]});return n},1);d=c&&c.selected?this.cells(d,c):d;l.extend(d.selector,{cols:b,rows:a,opts:c});return d});J("cells().nodes()","cell().node()",function(){return this.iterator("cell",function(a,b,c){return(a=a.aoData[b])&&a.anCells?a.anCells[c]:q},1)});y("cells().data()",function(){return this.iterator("cell",function(a,
|
||||||
|
b,c){return T(a,b,c)},1)});J("cells().cache()","cell().cache()",function(a){a="search"===a?"_aFilterData":"_aSortData";return this.iterator("cell",function(b,c,d){return b.aoData[c][a][d]},1)});J("cells().render()","cell().render()",function(a){return this.iterator("cell",function(b,c,d){return T(b,c,d,a)},1)});J("cells().indexes()","cell().index()",function(){return this.iterator("cell",function(a,b,c){return{row:b,column:c,columnVisible:va(a,c)}},1)});J("cells().invalidate()","cell().invalidate()",
|
||||||
|
function(a){return this.iterator("cell",function(b,c,d){wa(b,c,a,d)})});y("cell()",function(a,b,c){return wb(this.cells(a,b,c))});y("cell().data()",function(a){var b=this.context,c=this[0];if(a===q)return b.length&&c.length?T(b[0],c[0].row,c[0].column):q;Eb(b[0],c[0].row,c[0].column,a);wa(b[0],c[0].row,"data",c[0].column);return this});y("order()",function(a,b){var c=this.context;if(a===q)return 0!==c.length?c[0].aaSorting:q;"number"===typeof a?a=[[a,b]]:a.length&&!Array.isArray(a[0])&&(a=Array.prototype.slice.call(arguments));
|
||||||
|
return this.iterator("table",function(d){d.aaSorting=a.slice()})});y("order.listener()",function(a,b,c){return this.iterator("table",function(d){fb(d,a,b,c)})});y("order.fixed()",function(a){if(!a){var b=this.context;b=b.length?b[0].aaSortingFixed:q;return Array.isArray(b)?{pre:b}:b}return this.iterator("table",function(c){c.aaSortingFixed=l.extend(!0,{},a)})});y(["columns().order()","column().order()"],function(a){var b=this;return this.iterator("table",function(c,d){var e=[];l.each(b[d],function(h,
|
||||||
|
f){e.push([f,a])});c.aaSorting=e})});y("search()",function(a,b,c,d){var e=this.context;return a===q?0!==e.length?e[0].oPreviousSearch.sSearch:q:this.iterator("table",function(h){h.oFeatures.bFilter&&za(h,l.extend({},h.oPreviousSearch,{sSearch:a+"",bRegex:null===b?!1:b,bSmart:null===c?!0:c,bCaseInsensitive:null===d?!0:d}),1)})});J("columns().search()","column().search()",function(a,b,c,d){return this.iterator("column",function(e,h){var f=e.aoPreSearchCols;if(a===q)return f[h].sSearch;e.oFeatures.bFilter&&
|
||||||
|
(l.extend(f[h],{sSearch:a+"",bRegex:null===b?!1:b,bSmart:null===c?!0:c,bCaseInsensitive:null===d?!0:d}),za(e,e.oPreviousSearch,1))})});y("state()",function(){return this.context.length?this.context[0].oSavedState:null});y("state.clear()",function(){return this.iterator("table",function(a){a.fnStateSaveCallback.call(a.oInstance,a,{})})});y("state.loaded()",function(){return this.context.length?this.context[0].oLoadedState:null});y("state.save()",function(){return this.iterator("table",function(a){qa(a)})});
|
||||||
|
u.versionCheck=u.fnVersionCheck=function(a){var b=u.version.split(".");a=a.split(".");for(var c,d,e=0,h=a.length;e<h;e++)if(c=parseInt(b[e],10)||0,d=parseInt(a[e],10)||0,c!==d)return c>d;return!0};u.isDataTable=u.fnIsDataTable=function(a){var b=l(a).get(0),c=!1;if(a instanceof u.Api)return!0;l.each(u.settings,function(d,e){d=e.nScrollHead?l("table",e.nScrollHead)[0]:null;var h=e.nScrollFoot?l("table",e.nScrollFoot)[0]:null;if(e.nTable===b||d===b||h===b)c=!0});return c};u.tables=u.fnTables=function(a){var b=
|
||||||
|
!1;l.isPlainObject(a)&&(b=a.api,a=a.visible);var c=l.map(u.settings,function(d){if(!a||a&&l(d.nTable).is(":visible"))return d.nTable});return b?new B(c):c};u.camelToHungarian=P;y("$()",function(a,b){b=this.rows(b).nodes();b=l(b);return l([].concat(b.filter(a).toArray(),b.find(a).toArray()))});l.each(["on","one","off"],function(a,b){y(b+"()",function(){var c=Array.prototype.slice.call(arguments);c[0]=l.map(c[0].split(/\s/),function(e){return e.match(/\.dt\b/)?e:e+".dt"}).join(" ");var d=l(this.tables().nodes());
|
||||||
|
d[b].apply(d,c);return this})});y("clear()",function(){return this.iterator("table",function(a){Ka(a)})});y("settings()",function(){return new B(this.context,this.context)});y("init()",function(){var a=this.context;return a.length?a[0].oInit:null});y("data()",function(){return this.iterator("table",function(a){return U(a.aoData,"_aData")}).flatten()});y("destroy()",function(a){a=a||!1;return this.iterator("table",function(b){var c=b.nTableWrapper.parentNode,d=b.oClasses,e=b.nTable,h=b.nTBody,f=b.nTHead,
|
||||||
|
g=b.nTFoot,k=l(e);h=l(h);var m=l(b.nTableWrapper),n=l.map(b.aoData,function(t){return t.nTr}),p;b.bDestroying=!0;F(b,"aoDestroyCallback","destroy",[b]);a||(new B(b)).columns().visible(!0);m.off(".DT").find(":not(tbody *)").off(".DT");l(z).off(".DT-"+b.sInstance);e!=f.parentNode&&(k.children("thead").detach(),k.append(f));g&&e!=g.parentNode&&(k.children("tfoot").detach(),k.append(g));b.aaSorting=[];b.aaSortingFixed=[];Sa(b);l(n).removeClass(b.asStripeClasses.join(" "));l("th, td",f).removeClass(d.sSortable+
|
||||||
|
" "+d.sSortableAsc+" "+d.sSortableDesc+" "+d.sSortableNone);h.children().detach();h.append(n);f=a?"remove":"detach";k[f]();m[f]();!a&&c&&(c.insertBefore(e,b.nTableReinsertBefore),k.css("width",b.sDestroyWidth).removeClass(d.sTable),(p=b.asDestroyStripes.length)&&h.children().each(function(t){l(this).addClass(b.asDestroyStripes[t%p])}));c=l.inArray(b,u.settings);-1!==c&&u.settings.splice(c,1)})});l.each(["column","row","cell"],function(a,b){y(b+"s().every()",function(c){var d=this.selector.opts,e=
|
||||||
|
this;return this.iterator(b,function(h,f,g,k,m){c.call(e[b](f,"cell"===b?g:d,"cell"===b?d:q),f,g,k,m)})})});y("i18n()",function(a,b,c){var d=this.context[0];a=na(a)(d.oLanguage);a===q&&(a=b);c!==q&&l.isPlainObject(a)&&(a=a[c]!==q?a[c]:a._);return a.replace("%d",c)});u.version="1.11.4";u.settings=[];u.models={};u.models.oSearch={bCaseInsensitive:!0,sSearch:"",bRegex:!1,bSmart:!0,"return":!1};u.models.oRow={nTr:null,anCells:null,_aData:[],_aSortData:null,_aFilterData:null,_sFilterRow:null,_sRowStripe:"",
|
||||||
|
src:null,idx:-1};u.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};u.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,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){return{}}},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:l.extend({},u.models.oSearch),sAjaxDataProp:"data",sAjaxSource:null,sDom:"lfrtip",searchDelay:null,sPaginationType:"simple_numbers",sScrollX:"",sScrollXInner:"",sScrollY:"",sServerMethod:"GET",renderer:null,rowId:"DT_RowId"};E(u.defaults);u.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};E(u.defaults.column);u.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,bBounding:!1,barWidth:0},ajax:null,aanFeatures:[],aoData:[],aiDisplay:[],aiDisplayMaster:[],aIds:{},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,jqXHR:null,json:q,oAjaxData:q,fnServerData:null,aoServerParams:[],sServerMethod:null,fnFormatNumber:null,aLengthMenu:null,iDraw:0,
|
||||||
|
bDrawing:!1,iDrawError:-1,_iDisplayLength:10,_iDisplayStart:0,_iRecordsTotal:0,_iRecordsDisplay:0,oClasses:{},bFiltered:!1,bSorted:!1,bSortCellsTop:null,oInit:null,aoDestroyCallback:[],fnRecordsTotal:function(){return"ssp"==Q(this)?1*this._iRecordsTotal:this.aiDisplayMaster.length},fnRecordsDisplay:function(){return"ssp"==Q(this)?1*this._iRecordsDisplay:this.aiDisplay.length},fnDisplayEnd:function(){var a=this._iDisplayLength,b=this._iDisplayStart,c=b+a,d=this.aiDisplay.length,e=this.oFeatures,h=
|
||||||
|
e.bPaginate;return e.bServerSide?!1===h||-1===a?b+d:Math.min(b+a,this._iRecordsDisplay):!h||c>d||-1===a?d:c},oInstance:null,sInstance:null,iTabIndex:0,nScrollHead:null,nScrollFoot:null,aLastSort:[],oPlugins:{},rowIdFn:null,rowId:null};u.ext=M={buttons:{},classes:{},builder:"-source-",errMode:"alert",feature:[],search:[],selector:{cell:[],column:[],row:[]},internal:{},legacy:{ajax:null},pager:{},renderer:{pageButton:{},header:{}},order:{},type:{detect:[],search:{},order:{}},_unique:0,fnVersionCheck:u.fnVersionCheck,
|
||||||
|
iApiIndex:0,oJUIClasses:{},sVersion:u.version};l.extend(M,{afnFiltering:M.search,aTypes:M.type.detect,ofnSearch:M.type.search,oSort:M.type.order,afnSortData:M.order,aoFeatures:M.feature,oApi:M.internal,oStdClasses:M.classes,oPagination:M.pager});l.extend(u.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_desc_disabled",sSortableDesc:"sorting_asc_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 ec=u.ext.pager;l.extend(ec,{simple:function(a,b){return["previous","next"]},full:function(a,b){return["first","previous","next","last"]},numbers:function(a,b){return[Da(a,b)]},simple_numbers:function(a,b){return["previous",Da(a,b),"next"]},
|
||||||
|
full_numbers:function(a,b){return["first","previous",Da(a,b),"next","last"]},first_last_numbers:function(a,b){return["first",Da(a,b),"last"]},_numbers:Da,numbers_length:7});l.extend(!0,u.ext.renderer,{pageButton:{_:function(a,b,c,d,e,h){var f=a.oClasses,g=a.oLanguage.oPaginate,k=a.oLanguage.oAria.paginate||{},m,n,p=0,t=function(x,w){var r,C=f.sPageButtonDisabled,G=function(I){Ra(a,I.data.action,!0)};var aa=0;for(r=w.length;aa<r;aa++){var L=w[aa];if(Array.isArray(L)){var O=l("<"+(L.DT_el||"div")+"/>").appendTo(x);
|
||||||
|
t(O,L)}else{m=null;n=L;O=a.iTabIndex;switch(L){case "ellipsis":x.append('<span class="ellipsis">…</span>');break;case "first":m=g.sFirst;0===e&&(O=-1,n+=" "+C);break;case "previous":m=g.sPrevious;0===e&&(O=-1,n+=" "+C);break;case "next":m=g.sNext;if(0===h||e===h-1)O=-1,n+=" "+C;break;case "last":m=g.sLast;if(0===h||e===h-1)O=-1,n+=" "+C;break;default:m=a.fnFormatNumber(L+1),n=e===L?f.sPageButtonActive:""}null!==m&&(O=l("<a>",{"class":f.sPageButton+" "+n,"aria-controls":a.sTableId,"aria-label":k[L],
|
||||||
|
"data-dt-idx":p,tabindex:O,id:0===c&&"string"===typeof L?a.sTableId+"_"+L:null}).html(m).appendTo(x),ob(O,{action:L},G),p++)}}};try{var v=l(b).find(A.activeElement).data("dt-idx")}catch(x){}t(l(b).empty(),d);v!==q&&l(b).find("[data-dt-idx="+v+"]").trigger("focus")}}});l.extend(u.ext.type.detect,[function(a,b){b=b.oLanguage.sDecimal;return tb(a,b)?"num"+b:null},function(a,b){if(a&&!(a instanceof Date)&&!uc.test(a))return null;b=Date.parse(a);return null!==b&&!isNaN(b)||Z(a)?"date":null},function(a,
|
||||||
|
b){b=b.oLanguage.sDecimal;return tb(a,b,!0)?"num-fmt"+b:null},function(a,b){b=b.oLanguage.sDecimal;return jc(a,b)?"html-num"+b:null},function(a,b){b=b.oLanguage.sDecimal;return jc(a,b,!0)?"html-num-fmt"+b:null},function(a,b){return Z(a)||"string"===typeof a&&-1!==a.indexOf("<")?"html":null}]);l.extend(u.ext.type.search,{html:function(a){return Z(a)?a:"string"===typeof a?a.replace(gc," ").replace(Va,""):""},string:function(a){return Z(a)?a:"string"===typeof a?a.replace(gc," "):a}});var Ua=function(a,
|
||||||
|
b,c,d){if(0!==a&&(!a||"-"===a))return-Infinity;b&&(a=ic(a,b));a.replace&&(c&&(a=a.replace(c,"")),d&&(a=a.replace(d,"")));return 1*a};l.extend(M.type.order,{"date-pre":function(a){a=Date.parse(a);return isNaN(a)?-Infinity:a},"html-pre":function(a){return Z(a)?"":a.replace?a.replace(/<.*?>/g,"").toLowerCase():a+""},"string-pre":function(a){return Z(a)?"":"string"===typeof a?a.toLowerCase():a.toString?a.toString():""},"string-asc":function(a,b){return a<b?-1:a>b?1:0},"string-desc":function(a,b){return a<
|
||||||
|
b?1:a>b?-1:0}});Xa("");l.extend(!0,u.ext.renderer,{header:{_:function(a,b,c,d){l(a.nTable).on("order.dt.DT",function(e,h,f,g){a===h&&(e=c.idx,b.removeClass(d.sSortAsc+" "+d.sSortDesc).addClass("asc"==g[e]?d.sSortAsc:"desc"==g[e]?d.sSortDesc:c.sSortingClass))})},jqueryui:function(a,b,c,d){l("<div/>").addClass(d.sSortJUIWrapper).append(b.contents()).append(l("<span/>").addClass(d.sSortIcon+" "+c.sSortingClassJUI)).appendTo(b);l(a.nTable).on("order.dt.DT",function(e,h,f,g){a===h&&(e=c.idx,b.removeClass(d.sSortAsc+
|
||||||
|
" "+d.sSortDesc).addClass("asc"==g[e]?d.sSortAsc:"desc"==g[e]?d.sSortDesc:c.sSortingClass),b.find("span."+d.sSortIcon).removeClass(d.sSortJUIAsc+" "+d.sSortJUIDesc+" "+d.sSortJUI+" "+d.sSortJUIAscAllowed+" "+d.sSortJUIDescAllowed).addClass("asc"==g[e]?d.sSortJUIAsc:"desc"==g[e]?d.sSortJUIDesc:c.sSortingClassJUI))})}}});var yb=function(a){Array.isArray(a)&&(a=a.join(","));return"string"===typeof a?a.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,"""):a};u.render=
|
||||||
|
{number:function(a,b,c,d,e){return{display:function(h){if("number"!==typeof h&&"string"!==typeof h)return h;var f=0>h?"-":"",g=parseFloat(h);if(isNaN(g))return yb(h);g=g.toFixed(c);h=Math.abs(g);g=parseInt(h,10);h=c?b+(h-g).toFixed(c).substring(2):"";0===g&&0===parseFloat(h)&&(f="");return f+(d||"")+g.toString().replace(/\B(?=(\d{3})+(?!\d))/g,a)+h+(e||"")}}},text:function(){return{display:yb,filter:yb}}};l.extend(u.ext.internal,{_fnExternApiFunc:fc,_fnBuildAjax:Oa,_fnAjaxUpdate:Gb,_fnAjaxParameters:Pb,
|
||||||
|
_fnAjaxUpdateDraw:Qb,_fnAjaxDataSrc:Aa,_fnAddColumn:Ya,_fnColumnOptions:Ga,_fnAdjustColumnSizing:ta,_fnVisibleToColumnIndex:ua,_fnColumnIndexToVisible:va,_fnVisbleColumns:oa,_fnGetColumns:Ia,_fnColumnTypes:$a,_fnApplyColumnDefs:Db,_fnHungarianMap:E,_fnCamelToHungarian:P,_fnLanguageCompat:ma,_fnBrowserDetect:Bb,_fnAddData:ia,_fnAddTr:Ja,_fnNodeToDataIndex:function(a,b){return b._DT_RowIndex!==q?b._DT_RowIndex:null},_fnNodeToColumnIndex:function(a,b,c){return l.inArray(c,a.aoData[b].anCells)},_fnGetCellData:T,
|
||||||
|
_fnSetCellData:Eb,_fnSplitObjNotation:cb,_fnGetObjectDataFn:na,_fnSetObjectDataFn:ha,_fnGetDataMaster:db,_fnClearTable:Ka,_fnDeleteIndex:La,_fnInvalidate:wa,_fnGetRowElements:bb,_fnCreateTr:ab,_fnBuildHead:Fb,_fnDrawHead:ya,_fnDraw:ja,_fnReDraw:ka,_fnAddOptionsHtml:Ib,_fnDetectHeader:xa,_fnGetUniqueThs:Na,_fnFeatureHtmlFilter:Kb,_fnFilterComplete:za,_fnFilterCustom:Tb,_fnFilterColumn:Sb,_fnFilter:Rb,_fnFilterCreateSearch:ib,_fnEscapeRegex:jb,_fnFilterData:Ub,_fnFeatureHtmlInfo:Nb,_fnUpdateInfo:Xb,
|
||||||
|
_fnInfoMacros:Yb,_fnInitialise:Ba,_fnInitComplete:Pa,_fnLengthChange:kb,_fnFeatureHtmlLength:Jb,_fnFeatureHtmlPaginate:Ob,_fnPageChange:Ra,_fnFeatureHtmlProcessing:Lb,_fnProcessingDisplay:V,_fnFeatureHtmlTable:Mb,_fnScrollDraw:Ha,_fnApplyToChildren:ca,_fnCalculateColumnWidths:Za,_fnThrottle:hb,_fnConvertToWidth:Zb,_fnGetWidestNode:$b,_fnGetMaxLenString:ac,_fnStringToCss:K,_fnSortFlatten:pa,_fnSort:Hb,_fnSortAria:cc,_fnSortListener:nb,_fnSortAttachListener:fb,_fnSortingClasses:Sa,_fnSortData:bc,_fnSaveState:qa,
|
||||||
|
_fnLoadState:dc,_fnImplementState:pb,_fnSettingsFromNode:Ta,_fnLog:da,_fnMap:X,_fnBindAction:ob,_fnCallbackReg:R,_fnCallbackFire:F,_fnLengthOverflow:lb,_fnRenderer:gb,_fnDataSource:Q,_fnRowAttributes:eb,_fnExtend:qb,_fnCalculateEnd:function(){}});l.fn.dataTable=u;u.$=l;l.fn.dataTableSettings=u.settings;l.fn.dataTableExt=u.ext;l.fn.DataTable=function(a){return l(this).dataTable(a).api()};l.each(u,function(a,b){l.fn.DataTable[a]=b});return u});
|
@ -0,0 +1,61 @@
|
|||||||
|
tr.even td {
|
||||||
|
background-color: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
tr.odd td {
|
||||||
|
background-color: #f9f9f9;
|
||||||
|
}
|
||||||
|
|
||||||
|
tr.selected td {
|
||||||
|
background-color: #0088cc;
|
||||||
|
}
|
||||||
|
|
||||||
|
thead th {
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
tfoot th {
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
th.dtfc-fixed-left,
|
||||||
|
th.dtfc-fixed-right,
|
||||||
|
td.dtfc-fixed-left,
|
||||||
|
td.dtfc-fixed-right {
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dtfc-right-top-blocker,
|
||||||
|
div.dtfc-left-top-blocker {
|
||||||
|
margin-top: 6px;
|
||||||
|
border-bottom: 0px solid #ddd !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.dataTable.table-bordered.dtfc-has-left {
|
||||||
|
border-left: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_scroll.dtfc-has-left table.table-bordered {
|
||||||
|
border-left: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_scrollBody {
|
||||||
|
border-left: 1px solid #ddd !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_scrollFootInner table.table-bordered tr th:first-child,
|
||||||
|
div.dataTables_scrollHeadInner table.table-bordered tr th:first-child {
|
||||||
|
border-left: 1px solid #ddd !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
tr.dt-rowReorder-moving td.dtfc-fixed-left,
|
||||||
|
tr.dt-rowReorder-moving td.dtfc-fixed-right {
|
||||||
|
border-top: 2px solid #888 !important;
|
||||||
|
border-bottom: 2px solid #888 !important;
|
||||||
|
}
|
||||||
|
tr.dt-rowReorder-moving td.dtfc-fixed-left:first-child {
|
||||||
|
border-left: 2px solid #888 !important;
|
||||||
|
}
|
||||||
|
tr.dt-rowReorder-moving td.dtfc-fixed-right:last-child {
|
||||||
|
border-right: 2px solid #888 !important;
|
||||||
|
}
|
1
app/static/DataTables2022/FixedColumns-4.0.1/css/fixedColumns.bootstrap.min.css
vendored
Normal file
1
app/static/DataTables2022/FixedColumns-4.0.1/css/fixedColumns.bootstrap.min.css
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
tr.even td{background-color:#fff}tr.odd td{background-color:#f9f9f9}tr.selected td{background-color:#08c}thead th{background-color:white}tfoot th{background-color:white}th.dtfc-fixed-left,th.dtfc-fixed-right,td.dtfc-fixed-left,td.dtfc-fixed-right{z-index:1}div.dtfc-right-top-blocker,div.dtfc-left-top-blocker{margin-top:6px;border-bottom:0px solid #ddd !important}table.dataTable.table-bordered.dtfc-has-left{border-left:none}div.dataTables_scroll.dtfc-has-left table.table-bordered{border-left:none}div.dataTables_scrollBody{border-left:1px solid #ddd !important}div.dataTables_scrollFootInner table.table-bordered tr th:first-child,div.dataTables_scrollHeadInner table.table-bordered tr th:first-child{border-left:1px solid #ddd !important}tr.dt-rowReorder-moving td.dtfc-fixed-left,tr.dt-rowReorder-moving td.dtfc-fixed-right{border-top:2px solid #888 !important;border-bottom:2px solid #888 !important}tr.dt-rowReorder-moving td.dtfc-fixed-left:first-child{border-left:2px solid #888 !important}tr.dt-rowReorder-moving td.dtfc-fixed-right:last-child{border-right:2px solid #888 !important}
|
@ -0,0 +1,61 @@
|
|||||||
|
tr.even td {
|
||||||
|
background-color: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
tr.odd td {
|
||||||
|
background-color: #f9f9f9;
|
||||||
|
}
|
||||||
|
|
||||||
|
tr.selected td {
|
||||||
|
background-color: #0088cc;
|
||||||
|
}
|
||||||
|
|
||||||
|
thead th {
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
tfoot th {
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
th.dtfc-fixed-left,
|
||||||
|
th.dtfc-fixed-right,
|
||||||
|
td.dtfc-fixed-left,
|
||||||
|
td.dtfc-fixed-right {
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dtfc-right-top-blocker,
|
||||||
|
div.dtfc-left-top-blocker {
|
||||||
|
margin-top: 6px;
|
||||||
|
border-bottom: 0px solid #ddd !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.dataTable.table-bordered.dtfc-has-left {
|
||||||
|
border-left: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_scroll.dtfc-has-left table.table-bordered {
|
||||||
|
border-left: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_scrollBody {
|
||||||
|
border-left: 1px solid #ddd !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_scrollFootInner table.table-bordered tr th:first-child,
|
||||||
|
div.dataTables_scrollHeadInner table.table-bordered tr th:first-child {
|
||||||
|
border-left: 1px solid #ddd !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
tr.dt-rowReorder-moving td.dtfc-fixed-left,
|
||||||
|
tr.dt-rowReorder-moving td.dtfc-fixed-right {
|
||||||
|
border-top: 2px solid #888 !important;
|
||||||
|
border-bottom: 2px solid #888 !important;
|
||||||
|
}
|
||||||
|
tr.dt-rowReorder-moving td.dtfc-fixed-left:first-child {
|
||||||
|
border-left: 2px solid #888 !important;
|
||||||
|
}
|
||||||
|
tr.dt-rowReorder-moving td.dtfc-fixed-right:last-child {
|
||||||
|
border-right: 2px solid #888 !important;
|
||||||
|
}
|
1
app/static/DataTables2022/FixedColumns-4.0.1/css/fixedColumns.bootstrap4.min.css
vendored
Normal file
1
app/static/DataTables2022/FixedColumns-4.0.1/css/fixedColumns.bootstrap4.min.css
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
tr.even td{background-color:#fff}tr.odd td{background-color:#f9f9f9}tr.selected td{background-color:#08c}thead th{background-color:white}tfoot th{background-color:white}th.dtfc-fixed-left,th.dtfc-fixed-right,td.dtfc-fixed-left,td.dtfc-fixed-right{z-index:1}div.dtfc-right-top-blocker,div.dtfc-left-top-blocker{margin-top:6px;border-bottom:0px solid #ddd !important}table.dataTable.table-bordered.dtfc-has-left{border-left:none}div.dataTables_scroll.dtfc-has-left table.table-bordered{border-left:none}div.dataTables_scrollBody{border-left:1px solid #ddd !important}div.dataTables_scrollFootInner table.table-bordered tr th:first-child,div.dataTables_scrollHeadInner table.table-bordered tr th:first-child{border-left:1px solid #ddd !important}tr.dt-rowReorder-moving td.dtfc-fixed-left,tr.dt-rowReorder-moving td.dtfc-fixed-right{border-top:2px solid #888 !important;border-bottom:2px solid #888 !important}tr.dt-rowReorder-moving td.dtfc-fixed-left:first-child{border-left:2px solid #888 !important}tr.dt-rowReorder-moving td.dtfc-fixed-right:last-child{border-right:2px solid #888 !important}
|
@ -0,0 +1,80 @@
|
|||||||
|
tr.even td {
|
||||||
|
background-color: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
tr.odd td {
|
||||||
|
background-color: #f9f9f9;
|
||||||
|
}
|
||||||
|
|
||||||
|
tr.selected td {
|
||||||
|
background-color: #0088cc;
|
||||||
|
}
|
||||||
|
|
||||||
|
thead th {
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
tfoot th {
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
th.dtfc-fixed-left,
|
||||||
|
th.dtfc-fixed-right,
|
||||||
|
td.dtfc-fixed-left,
|
||||||
|
td.dtfc-fixed-right {
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dtfc-right-top-blocker,
|
||||||
|
div.dtfc-left-top-blocker {
|
||||||
|
margin-top: 6px;
|
||||||
|
border-bottom: 0px solid #ddd !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.dataTable.table-bordered.dtfc-has-left {
|
||||||
|
border-left: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_scroll.dtfc-has-left table.table-bordered {
|
||||||
|
border-left: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_scrollBody {
|
||||||
|
border-left: 1px solid #ddd !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_scrollFootInner table.table-bordered tr th:first-child,
|
||||||
|
div.dataTables_scrollHeadInner table.table-bordered tr th:first-child {
|
||||||
|
border-left: 1px solid #ddd !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
tr.dt-rowReorder-moving td.dtfc-fixed-left,
|
||||||
|
tr.dt-rowReorder-moving td.dtfc-fixed-right {
|
||||||
|
border-top: 2px solid #888 !important;
|
||||||
|
border-bottom: 2px solid #888 !important;
|
||||||
|
}
|
||||||
|
tr.dt-rowReorder-moving td.dtfc-fixed-left:first-child {
|
||||||
|
border-left: 2px solid #888 !important;
|
||||||
|
}
|
||||||
|
tr.dt-rowReorder-moving td.dtfc-fixed-right:last-child {
|
||||||
|
border-right: 2px solid #888 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.dataTable.table-striped.DTFC_Cloned tbody {
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.dataTable th {
|
||||||
|
border-bottom-color: #DEE2E6;
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.dataTable.table-bordered.dtfc-has-left tr td {
|
||||||
|
border-left: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_scrollBody thead tr,
|
||||||
|
div.DTFC_LeftBodyLiner thead tr,
|
||||||
|
div.DTFC_RightBodyLiner thead tr {
|
||||||
|
height: 0px !important;
|
||||||
|
}
|
1
app/static/DataTables2022/FixedColumns-4.0.1/css/fixedColumns.bootstrap5.min.css
vendored
Normal file
1
app/static/DataTables2022/FixedColumns-4.0.1/css/fixedColumns.bootstrap5.min.css
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
tr.even td{background-color:#fff}tr.odd td{background-color:#f9f9f9}tr.selected td{background-color:#08c}thead th{background-color:white}tfoot th{background-color:white}th.dtfc-fixed-left,th.dtfc-fixed-right,td.dtfc-fixed-left,td.dtfc-fixed-right{z-index:1}div.dtfc-right-top-blocker,div.dtfc-left-top-blocker{margin-top:6px;border-bottom:0px solid #ddd !important}table.dataTable.table-bordered.dtfc-has-left{border-left:none}div.dataTables_scroll.dtfc-has-left table.table-bordered{border-left:none}div.dataTables_scrollBody{border-left:1px solid #ddd !important}div.dataTables_scrollFootInner table.table-bordered tr th:first-child,div.dataTables_scrollHeadInner table.table-bordered tr th:first-child{border-left:1px solid #ddd !important}tr.dt-rowReorder-moving td.dtfc-fixed-left,tr.dt-rowReorder-moving td.dtfc-fixed-right{border-top:2px solid #888 !important;border-bottom:2px solid #888 !important}tr.dt-rowReorder-moving td.dtfc-fixed-left:first-child{border-left:2px solid #888 !important}tr.dt-rowReorder-moving td.dtfc-fixed-right:last-child{border-right:2px solid #888 !important}table.dataTable.table-striped.DTFC_Cloned tbody{background-color:white}table.dataTable th{border-bottom-color:#dee2e6;background-color:white}table.dataTable.table-bordered.dtfc-has-left tr td{border-left:none}div.dataTables_scrollBody thead tr,div.DTFC_LeftBodyLiner thead tr,div.DTFC_RightBodyLiner thead tr{height:0px !important}
|
@ -0,0 +1,23 @@
|
|||||||
|
table.dataTable td, table.dataTable th {
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
table.dataTable .dtfc-fixed-left,
|
||||||
|
table.dataTable .dtfc-fixed-right {
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dtfc-right-top-blocker {
|
||||||
|
border-bottom: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
tr.dt-rowReorder-moving td.dtfc-fixed-left,
|
||||||
|
tr.dt-rowReorder-moving td.dtfc-fixed-right {
|
||||||
|
border-top: 2px solid #888 !important;
|
||||||
|
border-bottom: 2px solid #888 !important;
|
||||||
|
}
|
||||||
|
tr.dt-rowReorder-moving td.dtfc-fixed-left:first-child {
|
||||||
|
border-left: 2px solid #888 !important;
|
||||||
|
}
|
||||||
|
tr.dt-rowReorder-moving td.dtfc-fixed-right:last-child {
|
||||||
|
border-right: 2px solid #888 !important;
|
||||||
|
}
|
1
app/static/DataTables2022/FixedColumns-4.0.1/css/fixedColumns.bulma.min.css
vendored
Normal file
1
app/static/DataTables2022/FixedColumns-4.0.1/css/fixedColumns.bulma.min.css
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
table.dataTable td,table.dataTable th{background-color:white}table.dataTable .dtfc-fixed-left,table.dataTable .dtfc-fixed-right{z-index:1}div.dtfc-right-top-blocker{border-bottom:none !important}tr.dt-rowReorder-moving td.dtfc-fixed-left,tr.dt-rowReorder-moving td.dtfc-fixed-right{border-top:2px solid #888 !important;border-bottom:2px solid #888 !important}tr.dt-rowReorder-moving td.dtfc-fixed-left:first-child{border-left:2px solid #888 !important}tr.dt-rowReorder-moving td.dtfc-fixed-right:last-child{border-right:2px solid #888 !important}
|
@ -0,0 +1,35 @@
|
|||||||
|
table.dataTable.display tbody tr.DTFC_NoData {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
tr.even td {
|
||||||
|
background-color: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
tr.odd td {
|
||||||
|
background-color: #f9f9f9;
|
||||||
|
}
|
||||||
|
|
||||||
|
tr.selected td {
|
||||||
|
background-color: #a6b4cd;
|
||||||
|
}
|
||||||
|
|
||||||
|
thead th {
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
tfoot th {
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
tr.dt-rowReorder-moving td.dtfc-fixed-left,
|
||||||
|
tr.dt-rowReorder-moving td.dtfc-fixed-right {
|
||||||
|
border-top: 2px solid #555 !important;
|
||||||
|
border-bottom: 2px solid #555 !important;
|
||||||
|
}
|
||||||
|
tr.dt-rowReorder-moving td.dtfc-fixed-left:first-child {
|
||||||
|
border-left: 2px solid #555 !important;
|
||||||
|
}
|
||||||
|
tr.dt-rowReorder-moving td.dtfc-fixed-right:last-child {
|
||||||
|
border-right: 2px solid #555 !important;
|
||||||
|
}
|
1
app/static/DataTables2022/FixedColumns-4.0.1/css/fixedColumns.dataTables.min.css
vendored
Normal file
1
app/static/DataTables2022/FixedColumns-4.0.1/css/fixedColumns.dataTables.min.css
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
table.dataTable.display tbody tr.DTFC_NoData{background-color:transparent}tr.even td{background-color:#fff}tr.odd td{background-color:#f9f9f9}tr.selected td{background-color:#a6b4cd}thead th{background-color:white}tfoot th{background-color:white}tr.dt-rowReorder-moving td.dtfc-fixed-left,tr.dt-rowReorder-moving td.dtfc-fixed-right{border-top:2px solid #555 !important;border-bottom:2px solid #555 !important}tr.dt-rowReorder-moving td.dtfc-fixed-left:first-child{border-left:2px solid #555 !important}tr.dt-rowReorder-moving td.dtfc-fixed-right:last-child{border-right:2px solid #555 !important}
|
@ -0,0 +1,35 @@
|
|||||||
|
table.dataTable.dtfc-has-left tbody {
|
||||||
|
border-left: none;
|
||||||
|
}
|
||||||
|
table.dataTable.dtfc-has-left th {
|
||||||
|
background-color: #f8f8f8;
|
||||||
|
}
|
||||||
|
table.dataTable.dtfc-has-left tr.odd td {
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
table.dataTable.dtfc-has-left thead,
|
||||||
|
table.dataTable.dtfc-has-left th:first-child,
|
||||||
|
table.dataTable.dtfc-has-left td:first-child {
|
||||||
|
border-left: 0px solid #f1f1f1;
|
||||||
|
}
|
||||||
|
table.dataTable.dtfc-has-left tr.even td {
|
||||||
|
background-color: #f1f1f1;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dtfc-right-top-blocker {
|
||||||
|
background-color: #f8f8f8 !important;
|
||||||
|
margin-top: 7px;
|
||||||
|
border-bottom: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
tr.dt-rowReorder-moving td.dtfc-fixed-left,
|
||||||
|
tr.dt-rowReorder-moving td.dtfc-fixed-right {
|
||||||
|
border-top: 2px solid #888 !important;
|
||||||
|
border-bottom: 2px solid #888 !important;
|
||||||
|
}
|
||||||
|
tr.dt-rowReorder-moving td.dtfc-fixed-left:first-child {
|
||||||
|
border-left: 2px solid #888 !important;
|
||||||
|
}
|
||||||
|
tr.dt-rowReorder-moving td.dtfc-fixed-right:last-child {
|
||||||
|
border-right: 2px solid #888 !important;
|
||||||
|
}
|
1
app/static/DataTables2022/FixedColumns-4.0.1/css/fixedColumns.foundation.min.css
vendored
Normal file
1
app/static/DataTables2022/FixedColumns-4.0.1/css/fixedColumns.foundation.min.css
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
table.dataTable.dtfc-has-left tbody{border-left:none}table.dataTable.dtfc-has-left th{background-color:#f8f8f8}table.dataTable.dtfc-has-left tr.odd td{background-color:white}table.dataTable.dtfc-has-left thead,table.dataTable.dtfc-has-left th:first-child,table.dataTable.dtfc-has-left td:first-child{border-left:0px solid #f1f1f1}table.dataTable.dtfc-has-left tr.even td{background-color:#f1f1f1}div.dtfc-right-top-blocker{background-color:#f8f8f8 !important;margin-top:7px;border-bottom:none !important}tr.dt-rowReorder-moving td.dtfc-fixed-left,tr.dt-rowReorder-moving td.dtfc-fixed-right{border-top:2px solid #888 !important;border-bottom:2px solid #888 !important}tr.dt-rowReorder-moving td.dtfc-fixed-left:first-child{border-left:2px solid #888 !important}tr.dt-rowReorder-moving td.dtfc-fixed-right:last-child{border-right:2px solid #888 !important}
|
@ -0,0 +1,22 @@
|
|||||||
|
table.dataTable th {
|
||||||
|
background-color: #f6f6f6 !important;
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dtfc-right-top-blocker {
|
||||||
|
border-bottom: none !important;
|
||||||
|
background-color: #f6f6f6 !important;
|
||||||
|
border-top: 1px solid #c5c5c5 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
tr.dt-rowReorder-moving td.dtfc-fixed-left,
|
||||||
|
tr.dt-rowReorder-moving td.dtfc-fixed-right {
|
||||||
|
border-top: 2px solid #555 !important;
|
||||||
|
border-bottom: 2px solid #555 !important;
|
||||||
|
}
|
||||||
|
tr.dt-rowReorder-moving td.dtfc-fixed-left:first-child {
|
||||||
|
border-left: 2px solid #555 !important;
|
||||||
|
}
|
||||||
|
tr.dt-rowReorder-moving td.dtfc-fixed-right:last-child {
|
||||||
|
border-right: 2px solid #555 !important;
|
||||||
|
}
|
1
app/static/DataTables2022/FixedColumns-4.0.1/css/fixedColumns.jqueryui.min.css
vendored
Normal file
1
app/static/DataTables2022/FixedColumns-4.0.1/css/fixedColumns.jqueryui.min.css
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
table.dataTable th{background-color:#f6f6f6 !important;z-index:1}div.dtfc-right-top-blocker{border-bottom:none !important;background-color:#f6f6f6 !important;border-top:1px solid #c5c5c5 !important}tr.dt-rowReorder-moving td.dtfc-fixed-left,tr.dt-rowReorder-moving td.dtfc-fixed-right{border-top:2px solid #555 !important;border-bottom:2px solid #555 !important}tr.dt-rowReorder-moving td.dtfc-fixed-left:first-child{border-left:2px solid #555 !important}tr.dt-rowReorder-moving td.dtfc-fixed-right:last-child{border-right:2px solid #555 !important}
|
@ -0,0 +1,36 @@
|
|||||||
|
table.dataTable {
|
||||||
|
border-left-width: 0px !important;
|
||||||
|
}
|
||||||
|
table.dataTable tr {
|
||||||
|
border-left-width: 0px;
|
||||||
|
}
|
||||||
|
table.dataTable tr th:first-child,
|
||||||
|
table.dataTable tr td:first-child {
|
||||||
|
border-left: 1px solid rgba(34, 36, 38, 0.15) !important;
|
||||||
|
}
|
||||||
|
table.dataTable tr th {
|
||||||
|
background-color: #f9fafb;
|
||||||
|
}
|
||||||
|
table.dataTable tr td {
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
table.dataTable tr th.dtfc-fixed-left,
|
||||||
|
table.dataTable tr th.dtfc-fixed-right {
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dtfc-right-top-blocker {
|
||||||
|
border-bottom: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
tr.dt-rowReorder-moving td.dtfc-fixed-left,
|
||||||
|
tr.dt-rowReorder-moving td.dtfc-fixed-right {
|
||||||
|
border-top: 2px solid #888 !important;
|
||||||
|
border-bottom: 2px solid #888 !important;
|
||||||
|
}
|
||||||
|
tr.dt-rowReorder-moving td.dtfc-fixed-left:first-child {
|
||||||
|
border-left: 2px solid #888 !important;
|
||||||
|
}
|
||||||
|
tr.dt-rowReorder-moving td.dtfc-fixed-right:last-child {
|
||||||
|
border-right: 2px solid #888 !important;
|
||||||
|
}
|
1
app/static/DataTables2022/FixedColumns-4.0.1/css/fixedColumns.semanticui.min.css
vendored
Normal file
1
app/static/DataTables2022/FixedColumns-4.0.1/css/fixedColumns.semanticui.min.css
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
table.dataTable{border-left-width:0px !important}table.dataTable tr{border-left-width:0px}table.dataTable tr th:first-child,table.dataTable tr td:first-child{border-left:1px solid rgba(34, 36, 38, 0.15) !important}table.dataTable tr th{background-color:#f9fafb}table.dataTable tr td{background-color:white}table.dataTable tr th.dtfc-fixed-left,table.dataTable tr th.dtfc-fixed-right{z-index:1}div.dtfc-right-top-blocker{border-bottom:none !important}tr.dt-rowReorder-moving td.dtfc-fixed-left,tr.dt-rowReorder-moving td.dtfc-fixed-right{border-top:2px solid #888 !important;border-bottom:2px solid #888 !important}tr.dt-rowReorder-moving td.dtfc-fixed-left:first-child{border-left:2px solid #888 !important}tr.dt-rowReorder-moving td.dtfc-fixed-right:last-child{border-right:2px solid #888 !important}
|
@ -0,0 +1,612 @@
|
|||||||
|
/*! FixedColumns 4.0.1
|
||||||
|
* 2019-2021 SpryMedia Ltd - datatables.net/license
|
||||||
|
*/
|
||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
var $;
|
||||||
|
var dataTable;
|
||||||
|
function setJQuery(jq) {
|
||||||
|
$ = jq;
|
||||||
|
dataTable = $.fn.dataTable;
|
||||||
|
}
|
||||||
|
var FixedColumns = /** @class */ (function () {
|
||||||
|
function FixedColumns(settings, opts) {
|
||||||
|
var _this = this;
|
||||||
|
// Check that the required version of DataTables is included
|
||||||
|
if (!dataTable || !dataTable.versionCheck || !dataTable.versionCheck('1.10.0')) {
|
||||||
|
throw new Error('StateRestore requires DataTables 1.10 or newer');
|
||||||
|
}
|
||||||
|
var table = new dataTable.Api(settings);
|
||||||
|
this.classes = $.extend(true, {}, FixedColumns.classes);
|
||||||
|
// Get options from user
|
||||||
|
this.c = $.extend(true, {}, FixedColumns.defaults, opts);
|
||||||
|
// Backwards compatibility for deprecated leftColumns
|
||||||
|
if (opts.left === undefined && this.c.leftColumns !== undefined) {
|
||||||
|
this.c.left = this.c.leftColumns;
|
||||||
|
}
|
||||||
|
// Backwards compatibility for deprecated rightColumns
|
||||||
|
if (opts.right === undefined && this.c.rightColumns !== undefined) {
|
||||||
|
this.c.right = this.c.rightColumns;
|
||||||
|
}
|
||||||
|
this.s = {
|
||||||
|
barWidth: 0,
|
||||||
|
dt: table,
|
||||||
|
rtl: $(table.table().node()).css('direction') === 'rtl'
|
||||||
|
};
|
||||||
|
// Common CSS for all blockers
|
||||||
|
var blockerCSS = {
|
||||||
|
'background-color': 'white',
|
||||||
|
'bottom': '0px',
|
||||||
|
'display': 'block',
|
||||||
|
'position': 'absolute',
|
||||||
|
'width': this.s.barWidth + 1 + 'px'
|
||||||
|
};
|
||||||
|
this.dom = {
|
||||||
|
leftBottomBlocker: $('<div>')
|
||||||
|
.css(blockerCSS)
|
||||||
|
.css('left', 0)
|
||||||
|
.addClass(this.classes.leftBottomBlocker),
|
||||||
|
leftTopBlocker: $('<div>')
|
||||||
|
.css(blockerCSS)
|
||||||
|
.css({
|
||||||
|
left: 0,
|
||||||
|
top: 0
|
||||||
|
})
|
||||||
|
.addClass(this.classes.leftTopBlocker),
|
||||||
|
rightBottomBlocker: $('<div>')
|
||||||
|
.css(blockerCSS)
|
||||||
|
.css('right', 0)
|
||||||
|
.addClass(this.classes.rightBottomBlocker),
|
||||||
|
rightTopBlocker: $('<div>')
|
||||||
|
.css(blockerCSS)
|
||||||
|
.css({
|
||||||
|
right: 0,
|
||||||
|
top: 0
|
||||||
|
})
|
||||||
|
.addClass(this.classes.rightTopBlocker)
|
||||||
|
};
|
||||||
|
if (this.s.dt.settings()[0]._bInitComplete) {
|
||||||
|
// Fixed Columns Initialisation
|
||||||
|
this._addStyles();
|
||||||
|
this._setKeyTableListener();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
table.one('preInit.dt', function () {
|
||||||
|
// Fixed Columns Initialisation
|
||||||
|
_this._addStyles();
|
||||||
|
_this._setKeyTableListener();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
// Make class available through dt object
|
||||||
|
table.settings()[0]._fixedColumns = this;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Getter/Setter for the `fixedColumns.left` property
|
||||||
|
*
|
||||||
|
* @param newVal Optional. If present this will be the new value for the number of left fixed columns
|
||||||
|
* @returns The number of left fixed columns
|
||||||
|
*/
|
||||||
|
FixedColumns.prototype.left = function (newVal) {
|
||||||
|
// If the value is to change
|
||||||
|
if (newVal !== undefined) {
|
||||||
|
// Set the new values and redraw the columns
|
||||||
|
this.c.left = newVal;
|
||||||
|
this._addStyles();
|
||||||
|
}
|
||||||
|
return this.c.left;
|
||||||
|
};
|
||||||
|
/**
|
||||||
|
* Getter/Setter for the `fixedColumns.left` property
|
||||||
|
*
|
||||||
|
* @param newVal Optional. If present this will be the new value for the number of right fixed columns
|
||||||
|
* @returns The number of right fixed columns
|
||||||
|
*/
|
||||||
|
FixedColumns.prototype.right = function (newVal) {
|
||||||
|
// If the value is to change
|
||||||
|
if (newVal !== undefined) {
|
||||||
|
// Set the new values and redraw the columns
|
||||||
|
this.c.right = newVal;
|
||||||
|
this._addStyles();
|
||||||
|
}
|
||||||
|
return this.c.right;
|
||||||
|
};
|
||||||
|
/**
|
||||||
|
* Iterates over the columns, fixing the appropriate ones to the left and right
|
||||||
|
*/
|
||||||
|
FixedColumns.prototype._addStyles = function () {
|
||||||
|
// Set the bar width if vertical scrolling is enabled
|
||||||
|
if (this.s.dt.settings()[0].oScroll.sY) {
|
||||||
|
var scroll_1 = $(this.s.dt.table().node()).closest('div.dataTables_scrollBody')[0];
|
||||||
|
var barWidth = this.s.dt.settings()[0].oBrowser.barWidth;
|
||||||
|
if (scroll_1.offsetWidth - scroll_1.clientWidth >= barWidth) {
|
||||||
|
this.s.barWidth = barWidth;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.s.barWidth = 0;
|
||||||
|
}
|
||||||
|
this.dom.rightTopBlocker.css('width', this.s.barWidth + 1);
|
||||||
|
this.dom.leftTopBlocker.css('width', this.s.barWidth + 1);
|
||||||
|
this.dom.rightBottomBlocker.css('width', this.s.barWidth + 1);
|
||||||
|
this.dom.leftBottomBlocker.css('width', this.s.barWidth + 1);
|
||||||
|
}
|
||||||
|
var parentDiv = null;
|
||||||
|
// Get the header and it's height
|
||||||
|
var header = this.s.dt.column(0).header();
|
||||||
|
var headerHeight = null;
|
||||||
|
if (header !== null) {
|
||||||
|
header = $(header);
|
||||||
|
headerHeight = header.outerHeight() + 1;
|
||||||
|
parentDiv = $(header.closest('div.dataTables_scroll')).css('position', 'relative');
|
||||||
|
}
|
||||||
|
// Get the footer and it's height
|
||||||
|
var footer = this.s.dt.column(0).footer();
|
||||||
|
var footerHeight = null;
|
||||||
|
if (footer !== null) {
|
||||||
|
footer = $(footer);
|
||||||
|
footerHeight = footer.outerHeight();
|
||||||
|
// Only attempt to retrieve the parentDiv if it has not been retrieved already
|
||||||
|
if (parentDiv === null) {
|
||||||
|
parentDiv = $(footer.closest('div.dataTables_scroll')).css('position', 'relative');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Get the number of columns in the table - this is used often so better to only make 1 api call
|
||||||
|
var numCols = this.s.dt.columns().data().toArray().length;
|
||||||
|
// Tracker for the number of pixels should be left to the left of the table
|
||||||
|
var distLeft = 0;
|
||||||
|
// Sometimes the headers have slightly different widths so need to track them individually
|
||||||
|
var headLeft = 0;
|
||||||
|
// Get all of the row elements in the table
|
||||||
|
var rows = $(this.s.dt.table().node()).children('tbody').children('tr');
|
||||||
|
var invisibles = 0;
|
||||||
|
// When working from right to left we need to know how many are invisible before a point,
|
||||||
|
// without including those that are invisible after
|
||||||
|
var prevInvisible = new Map();
|
||||||
|
// Iterate over all of the columns
|
||||||
|
for (var i = 0; i < numCols; i++) {
|
||||||
|
var column = this.s.dt.column(i);
|
||||||
|
// Set the map for the previous column
|
||||||
|
if (i > 0) {
|
||||||
|
prevInvisible.set(i - 1, invisibles);
|
||||||
|
}
|
||||||
|
if (!column.visible()) {
|
||||||
|
invisibles++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
// Get the columns header and footer element
|
||||||
|
var colHeader = $(column.header());
|
||||||
|
var colFooter = $(column.footer());
|
||||||
|
// If i is less than the value of left then this column should be fixed left
|
||||||
|
if (i - invisibles < this.c.left) {
|
||||||
|
$(this.s.dt.table().node()).addClass(this.classes.tableFixedLeft);
|
||||||
|
parentDiv.addClass(this.classes.tableFixedLeft);
|
||||||
|
// Add the width of the previous node - only if we are on atleast the second column
|
||||||
|
if (i - invisibles > 0) {
|
||||||
|
var prevIdx = i;
|
||||||
|
// Simply using the number of hidden columns doesn't work here,
|
||||||
|
// if the first is hidden then this would be thrown off
|
||||||
|
while (prevIdx + 1 < numCols) {
|
||||||
|
var prevCol = this.s.dt.column(prevIdx - 1, { page: 'current' });
|
||||||
|
if (prevCol.visible()) {
|
||||||
|
distLeft += $(prevCol.nodes()[0]).outerWidth();
|
||||||
|
headLeft += prevCol.header() ?
|
||||||
|
$(prevCol.header()).outerWidth() :
|
||||||
|
prevCol.footer() ?
|
||||||
|
$(prevCol.header()).outerWidth() :
|
||||||
|
0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
prevIdx--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Iterate over all of the rows, fixing the cell to the left
|
||||||
|
for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {
|
||||||
|
var row = rows_1[_i];
|
||||||
|
$($(row).children()[i - invisibles])
|
||||||
|
.css(this._getCellCSS(false, distLeft, 'left'))
|
||||||
|
.addClass(this.classes.fixedLeft);
|
||||||
|
}
|
||||||
|
// Add the css for the header and the footer
|
||||||
|
colHeader
|
||||||
|
.css(this._getCellCSS(true, headLeft, 'left'))
|
||||||
|
.addClass(this.classes.fixedLeft);
|
||||||
|
colFooter
|
||||||
|
.css(this._getCellCSS(true, headLeft, 'left'))
|
||||||
|
.addClass(this.classes.fixedLeft);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// Iteriate through all of the rows, making sure they aren't currently trying to fix left
|
||||||
|
for (var _a = 0, rows_2 = rows; _a < rows_2.length; _a++) {
|
||||||
|
var row = rows_2[_a];
|
||||||
|
var cell = $($(row).children()[i - invisibles]);
|
||||||
|
// If the cell is trying to fix to the left, remove the class and the css
|
||||||
|
if (cell.hasClass(this.classes.fixedLeft)) {
|
||||||
|
cell
|
||||||
|
.css(this._clearCellCSS('left'))
|
||||||
|
.removeClass(this.classes.fixedLeft);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Make sure the header for this column isn't fixed left
|
||||||
|
if (colHeader.hasClass(this.classes.fixedLeft)) {
|
||||||
|
colHeader
|
||||||
|
.css(this._clearCellCSS('left'))
|
||||||
|
.removeClass(this.classes.fixedLeft);
|
||||||
|
}
|
||||||
|
// Make sure the footer for this column isn't fixed left
|
||||||
|
if (colFooter.hasClass(this.classes.fixedLeft)) {
|
||||||
|
colFooter
|
||||||
|
.css(this._clearCellCSS('left'))
|
||||||
|
.removeClass(this.classes.fixedLeft);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// If there is a header with the index class and reading rtl then add left top blocker
|
||||||
|
if (header !== null && !header.hasClass('index')) {
|
||||||
|
if (this.s.rtl) {
|
||||||
|
this.dom.leftTopBlocker.outerHeight(headerHeight);
|
||||||
|
parentDiv.append(this.dom.leftTopBlocker);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.dom.rightTopBlocker.outerHeight(headerHeight);
|
||||||
|
parentDiv.append(this.dom.rightTopBlocker);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// If there is a footer with the index class and reading rtl then add left bottom blocker
|
||||||
|
if (footer !== null && !footer.hasClass('index')) {
|
||||||
|
if (this.s.rtl) {
|
||||||
|
this.dom.leftBottomBlocker.outerHeight(footerHeight);
|
||||||
|
parentDiv.append(this.dom.leftBottomBlocker);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.dom.rightBottomBlocker.outerHeight(footerHeight);
|
||||||
|
parentDiv.append(this.dom.rightBottomBlocker);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var distRight = 0;
|
||||||
|
var headRight = 0;
|
||||||
|
// Counter for the number of invisible columns so far
|
||||||
|
var rightInvisibles = 0;
|
||||||
|
for (var i = numCols - 1; i >= 0; i--) {
|
||||||
|
var column = this.s.dt.column(i);
|
||||||
|
// If a column is invisible just skip it
|
||||||
|
if (!column.visible()) {
|
||||||
|
rightInvisibles++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
// Get the columns header and footer element
|
||||||
|
var colHeader = $(column.header());
|
||||||
|
var colFooter = $(column.footer());
|
||||||
|
// Get the number of visible columns that came before this one
|
||||||
|
var prev = prevInvisible.get(i);
|
||||||
|
if (prev === undefined) {
|
||||||
|
// If it wasn't set then it was the last column so just use the final value
|
||||||
|
prev = invisibles;
|
||||||
|
}
|
||||||
|
if (i + rightInvisibles >= numCols - this.c.right) {
|
||||||
|
$(this.s.dt.table().node()).addClass(this.classes.tableFixedRight);
|
||||||
|
parentDiv.addClass(this.classes.tableFixedRight);
|
||||||
|
// Add the widht of the previous node, only if we are on atleast the second column
|
||||||
|
if (i + 1 + rightInvisibles < numCols) {
|
||||||
|
var prevIdx = i;
|
||||||
|
// Simply using the number of hidden columns doesn't work here,
|
||||||
|
// if the first is hidden then this would be thrown off
|
||||||
|
while (prevIdx + 1 < numCols) {
|
||||||
|
var prevCol = this.s.dt.column(prevIdx + 1, { page: 'current' });
|
||||||
|
if (prevCol.visible()) {
|
||||||
|
distRight += $(prevCol.nodes()[0]).outerWidth();
|
||||||
|
headRight += prevCol.header() ?
|
||||||
|
$(prevCol.header()).outerWidth() :
|
||||||
|
prevCol.footer() ?
|
||||||
|
$(prevCol.header()).outerWidth() :
|
||||||
|
0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
prevIdx++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Iterate over all of the rows, fixing the cell to the right
|
||||||
|
for (var _b = 0, rows_3 = rows; _b < rows_3.length; _b++) {
|
||||||
|
var row = rows_3[_b];
|
||||||
|
$($(row).children()[i - prev])
|
||||||
|
.css(this._getCellCSS(false, distRight, 'right'))
|
||||||
|
.addClass(this.classes.fixedRight);
|
||||||
|
}
|
||||||
|
// Add the css for the header and the footer
|
||||||
|
colHeader
|
||||||
|
.css(this._getCellCSS(true, headRight, 'right'))
|
||||||
|
.addClass(this.classes.fixedRight);
|
||||||
|
colFooter
|
||||||
|
.css(this._getCellCSS(true, headRight, 'right'))
|
||||||
|
.addClass(this.classes.fixedRight);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// Iteriate through all of the rows, making sure they aren't currently trying to fix right
|
||||||
|
for (var _c = 0, rows_4 = rows; _c < rows_4.length; _c++) {
|
||||||
|
var row = rows_4[_c];
|
||||||
|
var cell = $($(row).children()[i - prev]);
|
||||||
|
// If the cell is trying to fix to the right, remove the class and the css
|
||||||
|
if (cell.hasClass(this.classes.fixedRight)) {
|
||||||
|
cell
|
||||||
|
.css(this._clearCellCSS('right'))
|
||||||
|
.removeClass(this.classes.fixedRight);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Make sure the header for this column isn't fixed right
|
||||||
|
if (colHeader.hasClass(this.classes.fixedRight)) {
|
||||||
|
colHeader
|
||||||
|
.css(this._clearCellCSS('right'))
|
||||||
|
.removeClass(this.classes.fixedRight);
|
||||||
|
}
|
||||||
|
// Make sure the footer for this column isn't fixed right
|
||||||
|
if (colFooter.hasClass(this.classes.fixedRight)) {
|
||||||
|
colFooter
|
||||||
|
.css(this._clearCellCSS('right'))
|
||||||
|
.removeClass(this.classes.fixedRight);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// If there is a header with the index class and reading rtl then add right top blocker
|
||||||
|
if (header) {
|
||||||
|
if (!this.s.rtl) {
|
||||||
|
this.dom.rightTopBlocker.outerHeight(headerHeight);
|
||||||
|
parentDiv.append(this.dom.rightTopBlocker);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.dom.leftTopBlocker.outerHeight(headerHeight);
|
||||||
|
parentDiv.append(this.dom.leftTopBlocker);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// If there is a footer with the index class and reading rtl then add right bottom blocker
|
||||||
|
if (footer) {
|
||||||
|
if (!this.s.rtl) {
|
||||||
|
this.dom.rightBottomBlocker.outerHeight(footerHeight);
|
||||||
|
parentDiv.append(this.dom.rightBottomBlocker);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.dom.leftBottomBlocker.outerHeight(footerHeight);
|
||||||
|
parentDiv.append(this.dom.leftBottomBlocker);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
/**
|
||||||
|
* Gets the correct CSS for the cell, header or footer based on options provided
|
||||||
|
*
|
||||||
|
* @param header Whether this cell is a header or a footer
|
||||||
|
* @param dist The distance that the cell should be moved away from the edge
|
||||||
|
* @param lr Indicator of fixing to the left or the right
|
||||||
|
* @returns An object containing the correct css
|
||||||
|
*/
|
||||||
|
FixedColumns.prototype._getCellCSS = function (header, dist, lr) {
|
||||||
|
if (lr === 'left') {
|
||||||
|
return !this.s.rtl ?
|
||||||
|
{
|
||||||
|
left: dist + 'px',
|
||||||
|
position: 'sticky'
|
||||||
|
} :
|
||||||
|
{
|
||||||
|
position: 'sticky',
|
||||||
|
right: dist + (header ? this.s.barWidth : 0) + 'px'
|
||||||
|
};
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return !this.s.rtl ?
|
||||||
|
{
|
||||||
|
position: 'sticky',
|
||||||
|
right: dist + (header ? this.s.barWidth : 0) + 'px'
|
||||||
|
} :
|
||||||
|
{
|
||||||
|
left: dist + 'px',
|
||||||
|
position: 'sticky'
|
||||||
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
/**
|
||||||
|
* Gets the css that is required to clear the fixing to a side
|
||||||
|
*
|
||||||
|
* @param lr Indicator of fixing to the left or the right
|
||||||
|
* @returns An object containing the correct css
|
||||||
|
*/
|
||||||
|
FixedColumns.prototype._clearCellCSS = function (lr) {
|
||||||
|
if (lr === 'left') {
|
||||||
|
return !this.s.rtl ?
|
||||||
|
{
|
||||||
|
left: '',
|
||||||
|
position: ''
|
||||||
|
} :
|
||||||
|
{
|
||||||
|
position: '',
|
||||||
|
right: ''
|
||||||
|
};
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return !this.s.rtl ?
|
||||||
|
{
|
||||||
|
position: '',
|
||||||
|
right: ''
|
||||||
|
} :
|
||||||
|
{
|
||||||
|
left: '',
|
||||||
|
position: ''
|
||||||
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
FixedColumns.prototype._setKeyTableListener = function () {
|
||||||
|
var _this = this;
|
||||||
|
this.s.dt.on('key-focus', function (e, dt, cell) {
|
||||||
|
var cellPos = $(cell.node()).offset();
|
||||||
|
var scroll = $($(_this.s.dt.table().node()).closest('div.dataTables_scrollBody'));
|
||||||
|
// If there are fixed columns to the left
|
||||||
|
if (_this.c.left > 0) {
|
||||||
|
// Get the rightmost left fixed column header, it's position and it's width
|
||||||
|
var rightMost = $(_this.s.dt.column(_this.c.left - 1).header());
|
||||||
|
var rightMostPos = rightMost.offset();
|
||||||
|
var rightMostWidth = rightMost.outerWidth();
|
||||||
|
// If the current highlighted cell is left of the rightmost cell on the screen
|
||||||
|
if (cellPos.left < rightMostPos.left + rightMostWidth) {
|
||||||
|
// Scroll it into view
|
||||||
|
var currScroll = scroll.scrollLeft();
|
||||||
|
scroll.scrollLeft(currScroll - (rightMostPos.left + rightMostWidth - cellPos.left));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// If there are fixed columns to the right
|
||||||
|
if (_this.c.right > 0) {
|
||||||
|
// Get the number of columns and the width of the cell as doing right side calc
|
||||||
|
var numCols = _this.s.dt.columns().data().toArray().length;
|
||||||
|
var cellWidth = $(cell.node()).outerWidth();
|
||||||
|
// Get the leftmost right fixed column header and it's position
|
||||||
|
var leftMost = $(_this.s.dt.column(numCols - _this.c.right).header());
|
||||||
|
var leftMostPos = leftMost.offset();
|
||||||
|
// If the current highlighted cell is right of the leftmost cell on the screen
|
||||||
|
if (cellPos.left + cellWidth > leftMostPos.left) {
|
||||||
|
// Scroll it into view
|
||||||
|
var currScroll = scroll.scrollLeft();
|
||||||
|
scroll.scrollLeft(currScroll - (leftMostPos.left - (cellPos.left + cellWidth)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
// Whenever a draw occurs there is potential for the data to have changed and therefore also the column widths
|
||||||
|
// Therefore it is necessary to recalculate the values for the fixed columns
|
||||||
|
this.s.dt.on('draw', function () {
|
||||||
|
_this._addStyles();
|
||||||
|
});
|
||||||
|
this.s.dt.on('column-reorder', function () {
|
||||||
|
_this._addStyles();
|
||||||
|
});
|
||||||
|
this.s.dt.on('column-visibility', function () {
|
||||||
|
setTimeout(function () {
|
||||||
|
_this._addStyles();
|
||||||
|
}, 50);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
FixedColumns.version = '4.0.1';
|
||||||
|
FixedColumns.classes = {
|
||||||
|
fixedLeft: 'dtfc-fixed-left',
|
||||||
|
fixedRight: 'dtfc-fixed-right',
|
||||||
|
leftBottomBlocker: 'dtfc-left-bottom-blocker',
|
||||||
|
leftTopBlocker: 'dtfc-left-top-blocker',
|
||||||
|
rightBottomBlocker: 'dtfc-right-bottom-blocker',
|
||||||
|
rightTopBlocker: 'dtfc-right-top-blocker',
|
||||||
|
tableFixedLeft: 'dtfc-has-left',
|
||||||
|
tableFixedRight: 'dtfc-has-right'
|
||||||
|
};
|
||||||
|
FixedColumns.defaults = {
|
||||||
|
i18n: {
|
||||||
|
button: 'FixedColumns'
|
||||||
|
},
|
||||||
|
left: 1,
|
||||||
|
right: 0
|
||||||
|
};
|
||||||
|
return FixedColumns;
|
||||||
|
}());
|
||||||
|
|
||||||
|
/*! FixedColumns 4.0.1
|
||||||
|
* 2019-2021 SpryMedia Ltd - datatables.net/license
|
||||||
|
*/
|
||||||
|
// DataTables extensions common UMD. Note that this allows for AMD, CommonJS
|
||||||
|
// (with window and jQuery being allowed as parameters to the returned
|
||||||
|
// function) or just default browser loading.
|
||||||
|
(function (factory) {
|
||||||
|
if (typeof define === 'function' && define.amd) {
|
||||||
|
// AMD
|
||||||
|
define(['jquery', 'datatables.net'], function ($) {
|
||||||
|
return factory($, window, document);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else if (typeof exports === 'object') {
|
||||||
|
// CommonJS
|
||||||
|
module.exports = function (root, $) {
|
||||||
|
if (!root) {
|
||||||
|
root = window;
|
||||||
|
}
|
||||||
|
if (!$ || !$.fn.dataTable) {
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||||
|
$ = require('datatables.net')(root, $).$;
|
||||||
|
}
|
||||||
|
return factory($, root, root.document);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// Browser - assume jQuery has already been loaded
|
||||||
|
factory(window.jQuery, window, document);
|
||||||
|
}
|
||||||
|
}(function ($, window, document) {
|
||||||
|
setJQuery($);
|
||||||
|
var dataTable = $.fn.dataTable;
|
||||||
|
$.fn.dataTable.FixedColumns = FixedColumns;
|
||||||
|
$.fn.DataTable.FixedColumns = FixedColumns;
|
||||||
|
var apiRegister = $.fn.dataTable.Api.register;
|
||||||
|
apiRegister('fixedColumns()', function () {
|
||||||
|
return this;
|
||||||
|
});
|
||||||
|
apiRegister('fixedColumns().left()', function (newVal) {
|
||||||
|
var ctx = this.context[0];
|
||||||
|
if (newVal !== undefined) {
|
||||||
|
ctx._fixedColumns.left(newVal);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return ctx._fixedColumns.left();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
apiRegister('fixedColumns().right()', function (newVal) {
|
||||||
|
var ctx = this.context[0];
|
||||||
|
if (newVal !== undefined) {
|
||||||
|
ctx._fixedColumns.right(newVal);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return ctx._fixedColumns.right();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$.fn.dataTable.ext.buttons.fixedColumns = {
|
||||||
|
action: function (e, dt, node, config) {
|
||||||
|
if ($(node).attr('active')) {
|
||||||
|
$(node).removeAttr('active').removeClass('active');
|
||||||
|
dt.fixedColumns().left(0);
|
||||||
|
dt.fixedColumns().right(0);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$(node).attr('active', true).addClass('active');
|
||||||
|
dt.fixedColumns().left(config.config.left);
|
||||||
|
dt.fixedColumns().right(config.config.right);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
config: {
|
||||||
|
left: 1,
|
||||||
|
right: 0
|
||||||
|
},
|
||||||
|
init: function (dt, node, config) {
|
||||||
|
if (dt.settings()[0]._fixedColumns === undefined) {
|
||||||
|
_init(dt.settings(), config);
|
||||||
|
}
|
||||||
|
$(node).attr('active', true).addClass('active');
|
||||||
|
dt.button(node).text(config.text || dt.i18n('buttons.fixedColumns', dt.settings()[0]._fixedColumns.c.i18n.button));
|
||||||
|
},
|
||||||
|
text: null
|
||||||
|
};
|
||||||
|
function _init(settings, options) {
|
||||||
|
if (options === void 0) { options = null; }
|
||||||
|
var api = new dataTable.Api(settings);
|
||||||
|
var opts = options
|
||||||
|
? options
|
||||||
|
: api.init().fixedColumns || dataTable.defaults.fixedColumns;
|
||||||
|
var fixedColumns = new FixedColumns(api, opts);
|
||||||
|
return fixedColumns;
|
||||||
|
}
|
||||||
|
// Attach a listener to the document which listens for DataTables initialisation
|
||||||
|
// events so we can automatically initialise
|
||||||
|
$(document).on('init.dt.dtfc', function (e, settings) {
|
||||||
|
if (e.namespace !== 'dt') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (settings.oInit.fixedColumns ||
|
||||||
|
dataTable.defaults.fixedColumns) {
|
||||||
|
if (!settings._fixedColumns) {
|
||||||
|
_init(settings, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}));
|
||||||
|
|
||||||
|
}());
|
40
app/static/DataTables2022/FixedColumns-4.0.1/js/dataTables.fixedColumns.min.js
vendored
Normal file
40
app/static/DataTables2022/FixedColumns-4.0.1/js/dataTables.fixedColumns.min.js
vendored
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
/*!
|
||||||
|
FixedColumns 4.0.1
|
||||||
|
2019-2021 SpryMedia Ltd - datatables.net/license
|
||||||
|
*/
|
||||||
|
var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.getGlobal=function(a){a=["object"==typeof globalThis&&globalThis,a,"object"==typeof window&&window,"object"==typeof self&&self,"object"==typeof global&&global];for(var g=0;g<a.length;++g){var k=a[g];if(k&&k.Math==Math)return k}throw Error("Cannot find global object");};$jscomp.global=$jscomp.getGlobal(this);
|
||||||
|
$jscomp.checkEs6ConformanceViaProxy=function(){try{var a={},g=Object.create(new $jscomp.global.Proxy(a,{get:function(k,e,d){return k==a&&"q"==e&&d==g}}));return!0===g.q}catch(k){return!1}};$jscomp.USE_PROXY_FOR_ES6_CONFORMANCE_CHECKS=!1;$jscomp.ES6_CONFORMANCE=$jscomp.USE_PROXY_FOR_ES6_CONFORMANCE_CHECKS&&$jscomp.checkEs6ConformanceViaProxy();$jscomp.arrayIteratorImpl=function(a){var g=0;return function(){return g<a.length?{done:!1,value:a[g++]}:{done:!0}}};$jscomp.arrayIterator=function(a){return{next:$jscomp.arrayIteratorImpl(a)}};
|
||||||
|
$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.SIMPLE_FROUND_POLYFILL=!1;$jscomp.ISOLATE_POLYFILLS=!1;$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(a,g,k){if(a==Array.prototype||a==Object.prototype)return a;a[g]=k.value;return a};$jscomp.IS_SYMBOL_NATIVE="function"===typeof Symbol&&"symbol"===typeof Symbol("x");$jscomp.TRUST_ES6_POLYFILLS=!$jscomp.ISOLATE_POLYFILLS||$jscomp.IS_SYMBOL_NATIVE;
|
||||||
|
$jscomp.polyfills={};$jscomp.propertyToPolyfillSymbol={};$jscomp.POLYFILL_PREFIX="$jscp$";var $jscomp$lookupPolyfilledValue=function(a,g){var k=$jscomp.propertyToPolyfillSymbol[g];if(null==k)return a[g];k=a[k];return void 0!==k?k:a[g]};$jscomp.polyfill=function(a,g,k,e){g&&($jscomp.ISOLATE_POLYFILLS?$jscomp.polyfillIsolated(a,g,k,e):$jscomp.polyfillUnisolated(a,g,k,e))};
|
||||||
|
$jscomp.polyfillUnisolated=function(a,g,k,e){k=$jscomp.global;a=a.split(".");for(e=0;e<a.length-1;e++){var d=a[e];if(!(d in k))return;k=k[d]}a=a[a.length-1];e=k[a];g=g(e);g!=e&&null!=g&&$jscomp.defineProperty(k,a,{configurable:!0,writable:!0,value:g})};
|
||||||
|
$jscomp.polyfillIsolated=function(a,g,k,e){var d=a.split(".");a=1===d.length;e=d[0];e=!a&&e in $jscomp.polyfills?$jscomp.polyfills:$jscomp.global;for(var h=0;h<d.length-1;h++){var m=d[h];if(!(m in e))return;e=e[m]}d=d[d.length-1];k=$jscomp.IS_SYMBOL_NATIVE&&"es6"===k?e[d]:null;g=g(k);null!=g&&(a?$jscomp.defineProperty($jscomp.polyfills,d,{configurable:!0,writable:!0,value:g}):g!==k&&($jscomp.propertyToPolyfillSymbol[d]=$jscomp.IS_SYMBOL_NATIVE?$jscomp.global.Symbol(d):$jscomp.POLYFILL_PREFIX+d,d=
|
||||||
|
$jscomp.propertyToPolyfillSymbol[d],$jscomp.defineProperty(e,d,{configurable:!0,writable:!0,value:g})))};$jscomp.initSymbol=function(){};
|
||||||
|
$jscomp.polyfill("Symbol",function(a){if(a)return a;var g=function(d,h){this.$jscomp$symbol$id_=d;$jscomp.defineProperty(this,"description",{configurable:!0,writable:!0,value:h})};g.prototype.toString=function(){return this.$jscomp$symbol$id_};var k=0,e=function(d){if(this instanceof e)throw new TypeError("Symbol is not a constructor");return new g("jscomp_symbol_"+(d||"")+"_"+k++,d)};return e},"es6","es3");$jscomp.initSymbolIterator=function(){};
|
||||||
|
$jscomp.polyfill("Symbol.iterator",function(a){if(a)return a;a=Symbol("Symbol.iterator");for(var g="Array Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array".split(" "),k=0;k<g.length;k++){var e=$jscomp.global[g[k]];"function"===typeof e&&"function"!=typeof e.prototype[a]&&$jscomp.defineProperty(e.prototype,a,{configurable:!0,writable:!0,value:function(){return $jscomp.iteratorPrototype($jscomp.arrayIteratorImpl(this))}})}return a},"es6",
|
||||||
|
"es3");$jscomp.initSymbolAsyncIterator=function(){};$jscomp.iteratorPrototype=function(a){a={next:a};a[Symbol.iterator]=function(){return this};return a};$jscomp.makeIterator=function(a){var g="undefined"!=typeof Symbol&&Symbol.iterator&&a[Symbol.iterator];return g?g.call(a):$jscomp.arrayIterator(a)};$jscomp.owns=function(a,g){return Object.prototype.hasOwnProperty.call(a,g)};
|
||||||
|
$jscomp.polyfill("WeakMap",function(a){function g(){if(!a||!Object.seal)return!1;try{var b=Object.seal({}),f=Object.seal({}),l=new a([[b,2],[f,3]]);if(2!=l.get(b)||3!=l.get(f))return!1;l.delete(b);l.set(f,4);return!l.has(b)&&4==l.get(f)}catch(u){return!1}}function k(){}function e(b){var f=typeof b;return"object"===f&&null!==b||"function"===f}function d(b){if(!$jscomp.owns(b,m)){var f=new k;$jscomp.defineProperty(b,m,{value:f})}}function h(b){if(!$jscomp.ISOLATE_POLYFILLS){var f=Object[b];f&&(Object[b]=
|
||||||
|
function(l){if(l instanceof k)return l;Object.isExtensible(l)&&d(l);return f(l)})}}if($jscomp.USE_PROXY_FOR_ES6_CONFORMANCE_CHECKS){if(a&&$jscomp.ES6_CONFORMANCE)return a}else if(g())return a;var m="$jscomp_hidden_"+Math.random();h("freeze");h("preventExtensions");h("seal");var n=0,c=function(b){this.id_=(n+=Math.random()+1).toString();if(b){b=$jscomp.makeIterator(b);for(var f;!(f=b.next()).done;)f=f.value,this.set(f[0],f[1])}};c.prototype.set=function(b,f){if(!e(b))throw Error("Invalid WeakMap key");
|
||||||
|
d(b);if(!$jscomp.owns(b,m))throw Error("WeakMap key fail: "+b);b[m][this.id_]=f;return this};c.prototype.get=function(b){return e(b)&&$jscomp.owns(b,m)?b[m][this.id_]:void 0};c.prototype.has=function(b){return e(b)&&$jscomp.owns(b,m)&&$jscomp.owns(b[m],this.id_)};c.prototype.delete=function(b){return e(b)&&$jscomp.owns(b,m)&&$jscomp.owns(b[m],this.id_)?delete b[m][this.id_]:!1};return c},"es6","es3");$jscomp.MapEntry=function(){};
|
||||||
|
$jscomp.polyfill("Map",function(a){function g(){if($jscomp.ASSUME_NO_NATIVE_MAP||!a||"function"!=typeof a||!a.prototype.entries||"function"!=typeof Object.seal)return!1;try{var c=Object.seal({x:4}),b=new a($jscomp.makeIterator([[c,"s"]]));if("s"!=b.get(c)||1!=b.size||b.get({x:4})||b.set({x:4},"t")!=b||2!=b.size)return!1;var f=b.entries(),l=f.next();if(l.done||l.value[0]!=c||"s"!=l.value[1])return!1;l=f.next();return l.done||4!=l.value[0].x||"t"!=l.value[1]||!f.next().done?!1:!0}catch(u){return!1}}
|
||||||
|
if($jscomp.USE_PROXY_FOR_ES6_CONFORMANCE_CHECKS){if(a&&$jscomp.ES6_CONFORMANCE)return a}else if(g())return a;var k=new WeakMap,e=function(c){this.data_={};this.head_=m();this.size=0;if(c){c=$jscomp.makeIterator(c);for(var b;!(b=c.next()).done;)b=b.value,this.set(b[0],b[1])}};e.prototype.set=function(c,b){c=0===c?0:c;var f=d(this,c);f.list||(f.list=this.data_[f.id]=[]);f.entry?f.entry.value=b:(f.entry={next:this.head_,previous:this.head_.previous,head:this.head_,key:c,value:b},f.list.push(f.entry),
|
||||||
|
this.head_.previous.next=f.entry,this.head_.previous=f.entry,this.size++);return this};e.prototype.delete=function(c){c=d(this,c);return c.entry&&c.list?(c.list.splice(c.index,1),c.list.length||delete this.data_[c.id],c.entry.previous.next=c.entry.next,c.entry.next.previous=c.entry.previous,c.entry.head=null,this.size--,!0):!1};e.prototype.clear=function(){this.data_={};this.head_=this.head_.previous=m();this.size=0};e.prototype.has=function(c){return!!d(this,c).entry};e.prototype.get=function(c){return(c=
|
||||||
|
d(this,c).entry)&&c.value};e.prototype.entries=function(){return h(this,function(c){return[c.key,c.value]})};e.prototype.keys=function(){return h(this,function(c){return c.key})};e.prototype.values=function(){return h(this,function(c){return c.value})};e.prototype.forEach=function(c,b){for(var f=this.entries(),l;!(l=f.next()).done;)l=l.value,c.call(b,l[1],l[0],this)};e.prototype[Symbol.iterator]=e.prototype.entries;var d=function(c,b){var f=b&&typeof b;"object"==f||"function"==f?k.has(b)?f=k.get(b):
|
||||||
|
(f=""+ ++n,k.set(b,f)):f="p_"+b;var l=c.data_[f];if(l&&$jscomp.owns(c.data_,f))for(c=0;c<l.length;c++){var u=l[c];if(b!==b&&u.key!==u.key||b===u.key)return{id:f,list:l,index:c,entry:u}}return{id:f,list:l,index:-1,entry:void 0}},h=function(c,b){var f=c.head_;return $jscomp.iteratorPrototype(function(){if(f){for(;f.head!=c.head_;)f=f.previous;for(;f.next!=f.head;)return f=f.next,{done:!1,value:b(f)};f=null}return{done:!0,value:void 0}})},m=function(){var c={};return c.previous=c.next=c.head=c},n=0;
|
||||||
|
return e},"es6","es3");
|
||||||
|
(function(){var a,g,k=function(){function e(d,h){var m=this;if(!g||!g.versionCheck||!g.versionCheck("1.10.0"))throw Error("StateRestore requires DataTables 1.10 or newer");d=new g.Api(d);this.classes=a.extend(!0,{},e.classes);this.c=a.extend(!0,{},e.defaults,h);void 0===h.left&&void 0!==this.c.leftColumns&&(this.c.left=this.c.leftColumns);void 0===h.right&&void 0!==this.c.rightColumns&&(this.c.right=this.c.rightColumns);this.s={barWidth:0,dt:d,rtl:"rtl"===a(d.table().node()).css("direction")};h={"background-color":"white",
|
||||||
|
bottom:"0px",display:"block",position:"absolute",width:this.s.barWidth+1+"px"};this.dom={leftBottomBlocker:a("<div>").css(h).css("left",0).addClass(this.classes.leftBottomBlocker),leftTopBlocker:a("<div>").css(h).css({left:0,top:0}).addClass(this.classes.leftTopBlocker),rightBottomBlocker:a("<div>").css(h).css("right",0).addClass(this.classes.rightBottomBlocker),rightTopBlocker:a("<div>").css(h).css({right:0,top:0}).addClass(this.classes.rightTopBlocker)};if(this.s.dt.settings()[0]._bInitComplete)this._addStyles(),
|
||||||
|
this._setKeyTableListener();else d.one("preInit.dt",function(){m._addStyles();m._setKeyTableListener()});d.settings()[0]._fixedColumns=this;return this}e.prototype.left=function(d){void 0!==d&&(this.c.left=d,this._addStyles());return this.c.left};e.prototype.right=function(d){void 0!==d&&(this.c.right=d,this._addStyles());return this.c.right};e.prototype._addStyles=function(){if(this.s.dt.settings()[0].oScroll.sY){var d=a(this.s.dt.table().node()).closest("div.dataTables_scrollBody")[0],h=this.s.dt.settings()[0].oBrowser.barWidth;
|
||||||
|
this.s.barWidth=d.offsetWidth-d.clientWidth>=h?h:0;this.dom.rightTopBlocker.css("width",this.s.barWidth+1);this.dom.leftTopBlocker.css("width",this.s.barWidth+1);this.dom.rightBottomBlocker.css("width",this.s.barWidth+1);this.dom.leftBottomBlocker.css("width",this.s.barWidth+1)}d=null;h=this.s.dt.column(0).header();var m=null;null!==h&&(h=a(h),m=h.outerHeight()+1,d=a(h.closest("div.dataTables_scroll")).css("position","relative"));var n=this.s.dt.column(0).footer(),c=null;null!==n&&(n=a(n),c=n.outerHeight(),
|
||||||
|
null===d&&(d=a(n.closest("div.dataTables_scroll")).css("position","relative")));for(var b=this.s.dt.columns().data().toArray().length,f=0,l=0,u=a(this.s.dt.table().node()).children("tbody").children("tr"),x=0,A=new Map,r=0;r<b;r++){var t=this.s.dt.column(r);0<r&&A.set(r-1,x);if(t.visible()){var y=a(t.header());t=a(t.footer());if(r-x<this.c.left){a(this.s.dt.table().node()).addClass(this.classes.tableFixedLeft);d.addClass(this.classes.tableFixedLeft);if(0<r-x)for(var p=r;p+1<b;){var q=this.s.dt.column(p-
|
||||||
|
1,{page:"current"});if(q.visible()){f+=a(q.nodes()[0]).outerWidth();l+=q.header()?a(q.header()).outerWidth():q.footer()?a(q.header()).outerWidth():0;break}p--}for(var v=0,w=u;v<w.length;v++)p=w[v],a(a(p).children()[r-x]).css(this._getCellCSS(!1,f,"left")).addClass(this.classes.fixedLeft);y.css(this._getCellCSS(!0,l,"left")).addClass(this.classes.fixedLeft);t.css(this._getCellCSS(!0,l,"left")).addClass(this.classes.fixedLeft)}else{v=0;for(w=u;v<w.length;v++)p=w[v],p=a(a(p).children()[r-x]),p.hasClass(this.classes.fixedLeft)&&
|
||||||
|
p.css(this._clearCellCSS("left")).removeClass(this.classes.fixedLeft);y.hasClass(this.classes.fixedLeft)&&y.css(this._clearCellCSS("left")).removeClass(this.classes.fixedLeft);t.hasClass(this.classes.fixedLeft)&&t.css(this._clearCellCSS("left")).removeClass(this.classes.fixedLeft)}}else x++}null===h||h.hasClass("index")||(this.s.rtl?(this.dom.leftTopBlocker.outerHeight(m),d.append(this.dom.leftTopBlocker)):(this.dom.rightTopBlocker.outerHeight(m),d.append(this.dom.rightTopBlocker)));null===n||n.hasClass("index")||
|
||||||
|
(this.s.rtl?(this.dom.leftBottomBlocker.outerHeight(c),d.append(this.dom.leftBottomBlocker)):(this.dom.rightBottomBlocker.outerHeight(c),d.append(this.dom.rightBottomBlocker)));v=l=f=0;for(r=b-1;0<=r;r--)if(t=this.s.dt.column(r),t.visible())if(y=a(t.header()),t=a(t.footer()),w=A.get(r),void 0===w&&(w=x),r+v>=b-this.c.right){a(this.s.dt.table().node()).addClass(this.classes.tableFixedRight);d.addClass(this.classes.tableFixedRight);if(r+1+v<b)for(p=r;p+1<b;){q=this.s.dt.column(p+1,{page:"current"});
|
||||||
|
if(q.visible()){f+=a(q.nodes()[0]).outerWidth();l+=q.header()?a(q.header()).outerWidth():q.footer()?a(q.header()).outerWidth():0;break}p++}q=0;for(var z=u;q<z.length;q++)p=z[q],a(a(p).children()[r-w]).css(this._getCellCSS(!1,f,"right")).addClass(this.classes.fixedRight);y.css(this._getCellCSS(!0,l,"right")).addClass(this.classes.fixedRight);t.css(this._getCellCSS(!0,l,"right")).addClass(this.classes.fixedRight)}else{q=0;for(z=u;q<z.length;q++)p=z[q],p=a(a(p).children()[r-w]),p.hasClass(this.classes.fixedRight)&&
|
||||||
|
p.css(this._clearCellCSS("right")).removeClass(this.classes.fixedRight);y.hasClass(this.classes.fixedRight)&&y.css(this._clearCellCSS("right")).removeClass(this.classes.fixedRight);t.hasClass(this.classes.fixedRight)&&t.css(this._clearCellCSS("right")).removeClass(this.classes.fixedRight)}else v++;h&&(this.s.rtl?(this.dom.leftTopBlocker.outerHeight(m),d.append(this.dom.leftTopBlocker)):(this.dom.rightTopBlocker.outerHeight(m),d.append(this.dom.rightTopBlocker)));n&&(this.s.rtl?(this.dom.leftBottomBlocker.outerHeight(c),
|
||||||
|
d.append(this.dom.leftBottomBlocker)):(this.dom.rightBottomBlocker.outerHeight(c),d.append(this.dom.rightBottomBlocker)))};e.prototype._getCellCSS=function(d,h,m){return"left"===m?this.s.rtl?{position:"sticky",right:h+(d?this.s.barWidth:0)+"px"}:{left:h+"px",position:"sticky"}:this.s.rtl?{left:h+"px",position:"sticky"}:{position:"sticky",right:h+(d?this.s.barWidth:0)+"px"}};e.prototype._clearCellCSS=function(d){return"left"===d?this.s.rtl?{position:"",right:""}:{left:"",position:""}:this.s.rtl?{left:"",
|
||||||
|
position:""}:{position:"",right:""}};e.prototype._setKeyTableListener=function(){var d=this;this.s.dt.on("key-focus",function(h,m,n){h=a(n.node()).offset();m=a(a(d.s.dt.table().node()).closest("div.dataTables_scrollBody"));if(0<d.c.left){var c=a(d.s.dt.column(d.c.left-1).header()),b=c.offset(),f=c.outerWidth();h.left<b.left+f&&(c=m.scrollLeft(),m.scrollLeft(c-(b.left+f-h.left)))}0<d.c.right&&(c=d.s.dt.columns().data().toArray().length,n=a(n.node()).outerWidth(),b=a(d.s.dt.column(c-d.c.right).header()).offset(),
|
||||||
|
h.left+n>b.left&&(c=m.scrollLeft(),m.scrollLeft(c-(b.left-(h.left+n)))))});this.s.dt.on("draw",function(){d._addStyles()});this.s.dt.on("column-reorder",function(){d._addStyles()});this.s.dt.on("column-visibility",function(){setTimeout(function(){d._addStyles()},50)})};e.version="4.0.1";e.classes={fixedLeft:"dtfc-fixed-left",fixedRight:"dtfc-fixed-right",leftBottomBlocker:"dtfc-left-bottom-blocker",leftTopBlocker:"dtfc-left-top-blocker",rightBottomBlocker:"dtfc-right-bottom-blocker",rightTopBlocker:"dtfc-right-top-blocker",
|
||||||
|
tableFixedLeft:"dtfc-has-left",tableFixedRight:"dtfc-has-right"};e.defaults={i18n:{button:"FixedColumns"},left:1,right:0};return e}();(function(e){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(d){return e(d,window,document)}):"object"===typeof exports?module.exports=function(d,h){d||(d=window);h&&h.fn.dataTable||(h=require("datatables.net")(d,h).$);return e(h,d,d.document)}:e(window.jQuery,window,document)})(function(e,d,h){function m(c,b){void 0===b&&(b=null);
|
||||||
|
c=new n.Api(c);b=b?b:c.init().fixedColumns||n.defaults.fixedColumns;return new k(c,b)}a=e;g=a.fn.dataTable;var n=e.fn.dataTable;e.fn.dataTable.FixedColumns=k;e.fn.DataTable.FixedColumns=k;d=e.fn.dataTable.Api.register;d("fixedColumns()",function(){return this});d("fixedColumns().left()",function(c){var b=this.context[0];return void 0!==c?(b._fixedColumns.left(c),this):b._fixedColumns.left()});d("fixedColumns().right()",function(c){var b=this.context[0];return void 0!==c?(b._fixedColumns.right(c),
|
||||||
|
this):b._fixedColumns.right()});e.fn.dataTable.ext.buttons.fixedColumns={action:function(c,b,f,l){e(f).attr("active")?(e(f).removeAttr("active").removeClass("active"),b.fixedColumns().left(0),b.fixedColumns().right(0)):(e(f).attr("active",!0).addClass("active"),b.fixedColumns().left(l.config.left),b.fixedColumns().right(l.config.right))},config:{left:1,right:0},init:function(c,b,f){void 0===c.settings()[0]._fixedColumns&&m(c.settings(),f);e(b).attr("active",!0).addClass("active");c.button(b).text(f.text||
|
||||||
|
c.i18n("buttons.fixedColumns",c.settings()[0]._fixedColumns.c.i18n.button))},text:null};e(h).on("init.dt.dtfc",function(c,b){"dt"===c.namespace&&(b.oInit.fixedColumns||n.defaults.fixedColumns)&&(b._fixedColumns||m(b,null))})})})();
|
@ -0,0 +1,40 @@
|
|||||||
|
/*! FixedColumns 4.0.1
|
||||||
|
* 2019-2021 SpryMedia Ltd - datatables.net/license
|
||||||
|
*/
|
||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
(function (factory) {
|
||||||
|
if (typeof define === 'function' && define.amd) {
|
||||||
|
// AMD
|
||||||
|
define(['jquery', 'datatables.net-bs', 'datatables.net-fixedcolumns'], function ($) {
|
||||||
|
return factory($);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else if (typeof exports === 'object') {
|
||||||
|
// CommonJS
|
||||||
|
module.exports = function (root, $) {
|
||||||
|
if (!root) {
|
||||||
|
root = window;
|
||||||
|
}
|
||||||
|
if (!$ || !$.fn.dataTable) {
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||||
|
$ = require('datatables.net-bs')(root, $).$;
|
||||||
|
}
|
||||||
|
if (!$.fn.dataTable.SearchPanes) {
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||||
|
require('datatables.net-fixedcolumns')(root, $);
|
||||||
|
}
|
||||||
|
return factory($);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// Browser
|
||||||
|
factory(jQuery);
|
||||||
|
}
|
||||||
|
}(function ($) {
|
||||||
|
var dataTable = $.fn.dataTable;
|
||||||
|
return dataTable.fixedColumns;
|
||||||
|
}));
|
||||||
|
|
||||||
|
}());
|
1
app/static/DataTables2022/FixedColumns-4.0.1/js/fixedColumns.bootstrap.min.js
vendored
Normal file
1
app/static/DataTables2022/FixedColumns-4.0.1/js/fixedColumns.bootstrap.min.js
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-bs","datatables.net-fixedcolumns"],function(b){return c(b)}):"object"===typeof exports?module.exports=function(b,a){b||(b=window);a&&a.fn.dataTable||(a=require("datatables.net-bs")(b,a).$);a.fn.dataTable.SearchPanes||require("datatables.net-fixedcolumns")(b,a);return c(a)}:c(jQuery)})(function(c){return c.fn.dataTable.fixedColumns});
|
@ -0,0 +1,43 @@
|
|||||||
|
/*! FixedColumns 4.0.1
|
||||||
|
* 2019-2021 SpryMedia Ltd - datatables.net/license
|
||||||
|
*/
|
||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
/*! Bootstrap 4 integration for DataTables' FixedColumns
|
||||||
|
* ©2016 SpryMedia Ltd - datatables.net/license
|
||||||
|
*/
|
||||||
|
(function (factory) {
|
||||||
|
if (typeof define === 'function' && define.amd) {
|
||||||
|
// AMD
|
||||||
|
define(['jquery', 'datatables.net-bs4', 'datatables.net-fixedcolumns'], function ($) {
|
||||||
|
return factory($);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else if (typeof exports === 'object') {
|
||||||
|
// CommonJS
|
||||||
|
module.exports = function (root, $) {
|
||||||
|
if (!root) {
|
||||||
|
root = window;
|
||||||
|
}
|
||||||
|
if (!$ || !$.fn.dataTable) {
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||||
|
$ = require('datatables.net-bs4')(root, $).$;
|
||||||
|
}
|
||||||
|
if (!$.fn.dataTable.SearchPanes) {
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||||
|
require('datatables.net-fixedcolumns')(root, $);
|
||||||
|
}
|
||||||
|
return factory($);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// Browser
|
||||||
|
factory(jQuery);
|
||||||
|
}
|
||||||
|
}(function ($) {
|
||||||
|
var dataTable = $.fn.dataTable;
|
||||||
|
return dataTable.fixedColumns;
|
||||||
|
}));
|
||||||
|
|
||||||
|
}());
|
5
app/static/DataTables2022/FixedColumns-4.0.1/js/fixedColumns.bootstrap4.min.js
vendored
Normal file
5
app/static/DataTables2022/FixedColumns-4.0.1/js/fixedColumns.bootstrap4.min.js
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
/*!
|
||||||
|
Bootstrap 4 integration for DataTables' FixedColumns
|
||||||
|
©2016 SpryMedia Ltd - datatables.net/license
|
||||||
|
*/
|
||||||
|
(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-bs4","datatables.net-fixedcolumns"],function(b){return c(b)}):"object"===typeof exports?module.exports=function(b,a){b||(b=window);a&&a.fn.dataTable||(a=require("datatables.net-bs4")(b,a).$);a.fn.dataTable.SearchPanes||require("datatables.net-fixedcolumns")(b,a);return c(a)}:c(jQuery)})(function(c){return c.fn.dataTable.fixedColumns});
|
@ -0,0 +1,36 @@
|
|||||||
|
/*! Bootstrap 5 integration for DataTables' FixedColumns
|
||||||
|
* ©2016 SpryMedia Ltd - datatables.net/license
|
||||||
|
*/
|
||||||
|
(function (factory) {
|
||||||
|
if (typeof define === 'function' && define.amd) {
|
||||||
|
// AMD
|
||||||
|
define(['jquery', 'datatables.net-bs5', 'datatables.net-fixedcolumns'], function ($) {
|
||||||
|
return factory($);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else if (typeof exports === 'object') {
|
||||||
|
// CommonJS
|
||||||
|
module.exports = function (root, $) {
|
||||||
|
if (!root) {
|
||||||
|
root = window;
|
||||||
|
}
|
||||||
|
if (!$ || !$.fn.dataTable) {
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||||
|
$ = require('datatables.net-bs5')(root, $).$;
|
||||||
|
}
|
||||||
|
if (!$.fn.dataTable.SearchPanes) {
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||||
|
require('datatables.net-fixedcolumns')(root, $);
|
||||||
|
}
|
||||||
|
return factory($);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// Browser
|
||||||
|
factory(jQuery);
|
||||||
|
}
|
||||||
|
}(function ($) {
|
||||||
|
'use strict';
|
||||||
|
var dataTable = $.fn.dataTable;
|
||||||
|
return dataTable.fixedColumns;
|
||||||
|
}));
|
5
app/static/DataTables2022/FixedColumns-4.0.1/js/fixedColumns.bootstrap5.min.js
vendored
Normal file
5
app/static/DataTables2022/FixedColumns-4.0.1/js/fixedColumns.bootstrap5.min.js
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
/*!
|
||||||
|
Bootstrap 5 integration for DataTables' FixedColumns
|
||||||
|
©2016 SpryMedia Ltd - datatables.net/license
|
||||||
|
*/
|
||||||
|
(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-bs5","datatables.net-fixedcolumns"],function(b){return c(b)}):"object"===typeof exports?module.exports=function(b,a){b||(b=window);a&&a.fn.dataTable||(a=require("datatables.net-bs5")(b,a).$);a.fn.dataTable.SearchPanes||require("datatables.net-fixedcolumns")(b,a);return c(a)}:c(jQuery)})(function(c){return c.fn.dataTable.fixedColumns});
|
@ -0,0 +1,36 @@
|
|||||||
|
/*! Bulma integration for DataTables' FixedColumns
|
||||||
|
* ©2016 SpryMedia Ltd - datatables.net/license
|
||||||
|
*/
|
||||||
|
(function (factory) {
|
||||||
|
if (typeof define === 'function' && define.amd) {
|
||||||
|
// AMD
|
||||||
|
define(['jquery', 'datatables.net-bm', 'datatables.net-fixedcolumns'], function ($) {
|
||||||
|
return factory($);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else if (typeof exports === 'object') {
|
||||||
|
// CommonJS
|
||||||
|
module.exports = function (root, $) {
|
||||||
|
if (!root) {
|
||||||
|
root = window;
|
||||||
|
}
|
||||||
|
if (!$ || !$.fn.dataTable) {
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||||
|
$ = require('datatables.net-bm')(root, $).$;
|
||||||
|
}
|
||||||
|
if (!$.fn.dataTable.SearchPanes) {
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||||
|
require('datatables.net-fixedcolumns')(root, $);
|
||||||
|
}
|
||||||
|
return factory($);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// Browser
|
||||||
|
factory(jQuery);
|
||||||
|
}
|
||||||
|
}(function ($) {
|
||||||
|
'use strict';
|
||||||
|
var dataTable = $.fn.dataTable;
|
||||||
|
return dataTable.fixedColumns;
|
||||||
|
}));
|
5
app/static/DataTables2022/FixedColumns-4.0.1/js/fixedColumns.bulma.min.js
vendored
Normal file
5
app/static/DataTables2022/FixedColumns-4.0.1/js/fixedColumns.bulma.min.js
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
/*!
|
||||||
|
Bulma integration for DataTables' FixedColumns
|
||||||
|
©2016 SpryMedia Ltd - datatables.net/license
|
||||||
|
*/
|
||||||
|
(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-bm","datatables.net-fixedcolumns"],function(b){return c(b)}):"object"===typeof exports?module.exports=function(b,a){b||(b=window);a&&a.fn.dataTable||(a=require("datatables.net-bm")(b,a).$);a.fn.dataTable.SearchPanes||require("datatables.net-fixedcolumns")(b,a);return c(a)}:c(jQuery)})(function(c){return c.fn.dataTable.fixedColumns});
|
@ -0,0 +1,43 @@
|
|||||||
|
/*! FixedColumns 4.0.1
|
||||||
|
* 2019-2021 SpryMedia Ltd - datatables.net/license
|
||||||
|
*/
|
||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
/*! DataTables integration for DataTables' FixedColumns
|
||||||
|
* ©2016 SpryMedia Ltd - datatables.net/license
|
||||||
|
*/
|
||||||
|
(function (factory) {
|
||||||
|
if (typeof define === 'function' && define.amd) {
|
||||||
|
// AMD
|
||||||
|
define(['jquery', 'datatables.net-dt', 'datatables.net-fixedcolumns'], function ($) {
|
||||||
|
return factory($);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else if (typeof exports === 'object') {
|
||||||
|
// CommonJS
|
||||||
|
module.exports = function (root, $) {
|
||||||
|
if (!root) {
|
||||||
|
root = window;
|
||||||
|
}
|
||||||
|
if (!$ || !$.fn.dataTable) {
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||||
|
$ = require('datatables.net-dt')(root, $).$;
|
||||||
|
}
|
||||||
|
if (!$.fn.dataTable.FixedColumns) {
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||||
|
require('datatables.net-fixedcolumns')(root, $);
|
||||||
|
}
|
||||||
|
return factory($);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// Browser
|
||||||
|
factory(jQuery);
|
||||||
|
}
|
||||||
|
}(function ($) {
|
||||||
|
var dataTable = $.fn.dataTable;
|
||||||
|
return dataTable.fixedColumns;
|
||||||
|
}));
|
||||||
|
|
||||||
|
}());
|
5
app/static/DataTables2022/FixedColumns-4.0.1/js/fixedColumns.dataTables.min.js
vendored
Normal file
5
app/static/DataTables2022/FixedColumns-4.0.1/js/fixedColumns.dataTables.min.js
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
/*!
|
||||||
|
DataTables integration for DataTables' FixedColumns
|
||||||
|
©2016 SpryMedia Ltd - datatables.net/license
|
||||||
|
*/
|
||||||
|
(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-dt","datatables.net-fixedcolumns"],function(b){return c(b)}):"object"===typeof exports?module.exports=function(b,a){b||(b=window);a&&a.fn.dataTable||(a=require("datatables.net-dt")(b,a).$);a.fn.dataTable.FixedColumns||require("datatables.net-fixedcolumns")(b,a);return c(a)}:c(jQuery)})(function(c){return c.fn.dataTable.fixedColumns});
|
@ -0,0 +1,43 @@
|
|||||||
|
/*! FixedColumns 4.0.1
|
||||||
|
* 2019-2021 SpryMedia Ltd - datatables.net/license
|
||||||
|
*/
|
||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
/*! Foundation integration for DataTables' FixedColumns
|
||||||
|
* ©2016 SpryMedia Ltd - datatables.net/license
|
||||||
|
*/
|
||||||
|
(function (factory) {
|
||||||
|
if (typeof define === 'function' && define.amd) {
|
||||||
|
// AMD
|
||||||
|
define(['jquery', 'datatables.net-zf', 'datatables.net-fixedcolumns'], function ($) {
|
||||||
|
return factory($);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else if (typeof exports === 'object') {
|
||||||
|
// CommonJS
|
||||||
|
module.exports = function (root, $) {
|
||||||
|
if (!root) {
|
||||||
|
root = window;
|
||||||
|
}
|
||||||
|
if (!$ || !$.fn.dataTable) {
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||||
|
$ = require('datatables.net-zf')(root, $).$;
|
||||||
|
}
|
||||||
|
if (!$.fn.dataTable.SearchPanes) {
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||||
|
require('datatables.net-fixedcolumns')(root, $);
|
||||||
|
}
|
||||||
|
return factory($);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// Browser
|
||||||
|
factory(jQuery);
|
||||||
|
}
|
||||||
|
}(function ($) {
|
||||||
|
var dataTable = $.fn.dataTable;
|
||||||
|
return dataTable.fixedColumns;
|
||||||
|
}));
|
||||||
|
|
||||||
|
}());
|
5
app/static/DataTables2022/FixedColumns-4.0.1/js/fixedColumns.foundation.min.js
vendored
Normal file
5
app/static/DataTables2022/FixedColumns-4.0.1/js/fixedColumns.foundation.min.js
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
/*!
|
||||||
|
Foundation integration for DataTables' FixedColumns
|
||||||
|
©2016 SpryMedia Ltd - datatables.net/license
|
||||||
|
*/
|
||||||
|
(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-zf","datatables.net-fixedcolumns"],function(b){return c(b)}):"object"===typeof exports?module.exports=function(b,a){b||(b=window);a&&a.fn.dataTable||(a=require("datatables.net-zf")(b,a).$);a.fn.dataTable.SearchPanes||require("datatables.net-fixedcolumns")(b,a);return c(a)}:c(jQuery)})(function(c){return c.fn.dataTable.fixedColumns});
|
@ -0,0 +1,36 @@
|
|||||||
|
/*! jquery ui integration for DataTables' FixedColumns
|
||||||
|
* ©2016 SpryMedia Ltd - datatables.net/license
|
||||||
|
*/
|
||||||
|
(function (factory) {
|
||||||
|
if (typeof define === 'function' && define.amd) {
|
||||||
|
// AMD
|
||||||
|
define(['jquery', 'datatables.net-ju', 'datatables.net-fixedcolumns'], function ($) {
|
||||||
|
return factory($);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else if (typeof exports === 'object') {
|
||||||
|
// CommonJS
|
||||||
|
module.exports = function (root, $) {
|
||||||
|
if (!root) {
|
||||||
|
root = window;
|
||||||
|
}
|
||||||
|
if (!$ || !$.fn.dataTable) {
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||||
|
$ = require('datatables.net-ju')(root, $).$;
|
||||||
|
}
|
||||||
|
if (!$.fn.dataTable.SearchPanes) {
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||||
|
require('datatables.net-fixedcolumns')(root, $);
|
||||||
|
}
|
||||||
|
return factory($);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// Browser
|
||||||
|
factory(jQuery);
|
||||||
|
}
|
||||||
|
}(function ($) {
|
||||||
|
'use strict';
|
||||||
|
var dataTable = $.fn.dataTable;
|
||||||
|
return dataTable.fixedColumns;
|
||||||
|
}));
|
5
app/static/DataTables2022/FixedColumns-4.0.1/js/fixedColumns.jqueryui.min.js
vendored
Normal file
5
app/static/DataTables2022/FixedColumns-4.0.1/js/fixedColumns.jqueryui.min.js
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
/*!
|
||||||
|
jquery ui integration for DataTables' FixedColumns
|
||||||
|
©2016 SpryMedia Ltd - datatables.net/license
|
||||||
|
*/
|
||||||
|
(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-ju","datatables.net-fixedcolumns"],function(b){return c(b)}):"object"===typeof exports?module.exports=function(b,a){b||(b=window);a&&a.fn.dataTable||(a=require("datatables.net-ju")(b,a).$);a.fn.dataTable.SearchPanes||require("datatables.net-fixedcolumns")(b,a);return c(a)}:c(jQuery)})(function(c){return c.fn.dataTable.fixedColumns});
|
@ -0,0 +1,43 @@
|
|||||||
|
/*! FixedColumns 4.0.1
|
||||||
|
* 2019-2021 SpryMedia Ltd - datatables.net/license
|
||||||
|
*/
|
||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
/*! Semantic ui integration for DataTables' FixedColumns
|
||||||
|
* ©2016 SpryMedia Ltd - datatables.net/license
|
||||||
|
*/
|
||||||
|
(function (factory) {
|
||||||
|
if (typeof define === 'function' && define.amd) {
|
||||||
|
// AMD
|
||||||
|
define(['jquery', 'datatables.net-se', 'datatables.net-fixedcolumns'], function ($) {
|
||||||
|
return factory($);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else if (typeof exports === 'object') {
|
||||||
|
// CommonJS
|
||||||
|
module.exports = function (root, $) {
|
||||||
|
if (!root) {
|
||||||
|
root = window;
|
||||||
|
}
|
||||||
|
if (!$ || !$.fn.dataTable) {
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||||
|
$ = require('datatables.net-se')(root, $).$;
|
||||||
|
}
|
||||||
|
if (!$.fn.dataTable.SearchPanes) {
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||||
|
require('datatables.net-fixedcolumns')(root, $);
|
||||||
|
}
|
||||||
|
return factory($);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// Browser
|
||||||
|
factory(jQuery);
|
||||||
|
}
|
||||||
|
}(function ($) {
|
||||||
|
var dataTable = $.fn.dataTable;
|
||||||
|
return dataTable.fixedColumns;
|
||||||
|
}));
|
||||||
|
|
||||||
|
}());
|
5
app/static/DataTables2022/FixedColumns-4.0.1/js/fixedColumns.semanticui.min.js
vendored
Normal file
5
app/static/DataTables2022/FixedColumns-4.0.1/js/fixedColumns.semanticui.min.js
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
/*!
|
||||||
|
Semantic ui integration for DataTables' FixedColumns
|
||||||
|
©2016 SpryMedia Ltd - datatables.net/license
|
||||||
|
*/
|
||||||
|
(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-se","datatables.net-fixedcolumns"],function(b){return c(b)}):"object"===typeof exports?module.exports=function(b,a){b||(b=window);a&&a.fn.dataTable||(a=require("datatables.net-se")(b,a).$);a.fn.dataTable.SearchPanes||require("datatables.net-fixedcolumns")(b,a);return c(a)}:c(jQuery)})(function(c){return c.fn.dataTable.fixedColumns});
|
@ -0,0 +1,16 @@
|
|||||||
|
table.dataTable.fixedHeader-floating,
|
||||||
|
table.dataTable.fixedHeader-locked {
|
||||||
|
background-color: white;
|
||||||
|
margin-top: 0 !important;
|
||||||
|
margin-bottom: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.dataTable.fixedHeader-locked {
|
||||||
|
position: absolute !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media print {
|
||||||
|
table.fixedHeader-floating {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
1
app/static/DataTables2022/FixedHeader-3.2.1/css/fixedHeader.bootstrap.min.css
vendored
Normal file
1
app/static/DataTables2022/FixedHeader-3.2.1/css/fixedHeader.bootstrap.min.css
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
table.dataTable.fixedHeader-floating,table.dataTable.fixedHeader-locked{background-color:white;margin-top:0 !important;margin-bottom:0 !important}table.dataTable.fixedHeader-locked{position:absolute !important}@media print{table.fixedHeader-floating{display:none}}
|
@ -0,0 +1,16 @@
|
|||||||
|
table.dataTable.fixedHeader-floating,
|
||||||
|
table.dataTable.fixedHeader-locked {
|
||||||
|
background-color: white;
|
||||||
|
margin-top: 0 !important;
|
||||||
|
margin-bottom: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.dataTable.fixedHeader-locked {
|
||||||
|
position: absolute !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media print {
|
||||||
|
table.fixedHeader-floating {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
1
app/static/DataTables2022/FixedHeader-3.2.1/css/fixedHeader.bootstrap4.min.css
vendored
Normal file
1
app/static/DataTables2022/FixedHeader-3.2.1/css/fixedHeader.bootstrap4.min.css
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
table.dataTable.fixedHeader-floating,table.dataTable.fixedHeader-locked{background-color:white;margin-top:0 !important;margin-bottom:0 !important}table.dataTable.fixedHeader-locked{position:absolute !important}@media print{table.fixedHeader-floating{display:none}}
|
@ -0,0 +1,16 @@
|
|||||||
|
table.dataTable.fixedHeader-floating,
|
||||||
|
table.dataTable.fixedHeader-locked {
|
||||||
|
background-color: white;
|
||||||
|
margin-top: 0 !important;
|
||||||
|
margin-bottom: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.dataTable.fixedHeader-locked {
|
||||||
|
position: absolute !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media print {
|
||||||
|
table.fixedHeader-floating {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
1
app/static/DataTables2022/FixedHeader-3.2.1/css/fixedHeader.bootstrap5.min.css
vendored
Normal file
1
app/static/DataTables2022/FixedHeader-3.2.1/css/fixedHeader.bootstrap5.min.css
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
table.dataTable.fixedHeader-floating,table.dataTable.fixedHeader-locked{background-color:white;margin-top:0 !important;margin-bottom:0 !important}table.dataTable.fixedHeader-locked{position:absolute !important}@media print{table.fixedHeader-floating{display:none}}
|
@ -0,0 +1,20 @@
|
|||||||
|
table.dataTable.fixedHeader-floating,
|
||||||
|
table.dataTable.fixedHeader-locked {
|
||||||
|
background-color: white;
|
||||||
|
margin-top: 0 !important;
|
||||||
|
margin-bottom: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.dataTable.fixedHeader-locked {
|
||||||
|
position: absolute !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media print {
|
||||||
|
table.fixedHeader-floating {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.table td,
|
||||||
|
.table th {
|
||||||
|
padding: 7px 11px !important;
|
||||||
|
}
|
1
app/static/DataTables2022/FixedHeader-3.2.1/css/fixedHeader.bulma.min.css
vendored
Normal file
1
app/static/DataTables2022/FixedHeader-3.2.1/css/fixedHeader.bulma.min.css
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
table.dataTable.fixedHeader-floating,table.dataTable.fixedHeader-locked{background-color:white;margin-top:0 !important;margin-bottom:0 !important}table.dataTable.fixedHeader-locked{position:absolute !important}@media print{table.fixedHeader-floating{display:none}}.table td,.table th{padding:7px 11px !important}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user