2023-07-06 16:56:15 +02:00
/* global Scrutari */
/ * *
* Surcharge et complément du client ScrutariJs pour le site librevous . org
* /
Scrutari . Lav = { } ;
/ * *
* Adresse du serveur Scrutari
* /
Scrutari . Lav . SCRUTARI _URL = "https://sct2.scrutari.net/sct/april_libreavous/" ;
/ * *
* Nombre de fiches dans une pagination
* /
Scrutari . Lav . PAGINATION _LENGTH = 20 ;
/ * *
* Tableau des différentes paginations , la première est la pagination sur la totalité des sites , les autres sont les paginations par site
* /
Scrutari . Lav . PAGINATION _ARRAY = [ "" , "libreavous" , "librealire" ] ;
/ * *
* Indication s 'il s' agit de la version de développement
* /
Scrutari . Lav . DEV = false ;
/ * *
* Fonction utilitaire de formatage de la séquence de recherche pour l ' affichage
* /
2024-05-05 03:55:03 +02:00
Scrutari . Lav . formatSearchSequence = function ( client , searchUnit ) {
var q = searchUnit . getQ ( ) ;
2023-07-06 16:56:15 +02:00
q = q . replace ( /\&\&/g , '@%et%@' ) ;
q = q . replace ( /\|\|/g , '@%ou%@' ) ;
q = q . replace ( /\*/g , '@%*%@' ) ;
q = Scrutari . escape ( q ) ;
2023-07-08 16:22:12 +02:00
q = q . replace ( /@%/g , '<span class="lav-Operateur">' ) ;
2023-07-06 16:56:15 +02:00
q = q . replace ( /%@/g , '</span>' ) ;
return q ;
} ;
/ * *
* Fonction principale d ' initialisation du client . Remplace Scrutari . DefaultUi . init
* /
Scrutari . Lav . init = function ( client ) {
var scrutariMeta = client . scrutariMeta ;
client . lav = { } ; //propriété lav pour conserver des données propres à ce client
_initLav ( ) ;
if ( Scrutari . Lav . DEV ) { //Code propre à la version de développement, en production la structure est en dur dans le squelette Spip
$ ( "#" + client . clientId ) . html ( client . compileStructure ( "main" ) ) ;
$ ( "#zone" ) . html ( client . compileStructure ( "main" , {
2023-07-07 21:13:11 +02:00
noLoc : false ,
2024-05-02 11:31:17 +02:00
withComment : true
2023-07-06 16:56:15 +02:00
} ) ) ;
}
client . initForms ( ) ;
2024-05-05 03:55:03 +02:00
client . initActions ( ) ;
2023-07-24 20:00:43 +02:00
client . initChangeListeners ( ) ;
2023-07-06 16:56:15 +02:00
client . checkInitialQuery ( ) ;
function _initLav ( ) {
let paginationArray = new Array ( ) ;
for ( let name of Scrutari . Lav . PAGINATION _ARRAY ) {
let active = false ;
let suffix = "-" + name ;
let radio = name ;
if ( ! name ) { // valeurs particulières pour « tous »
active = true ;
suffix = "" ;
radio = "tous" ;
}
paginationArray . push ( {
name : name ,
active : active ,
suffix : suffix ,
radio : radio
} ) ;
}
client . lav . paginationArray = paginationArray ;
}
}
/ * *
* Fonction d 'enrichissement du processus d' affichage des résultats .
2024-05-05 03:55:03 +02:00
* la méthode addPaginisations de la classe Scrutari . SearchUnit est remplacée pour que trois paginations
2023-07-06 16:56:15 +02:00
* soient créés : celle , normale , de toutes les fiches et une par site
2024-05-05 03:55:03 +02:00
* Remplace Scrutari . DefaultUi . newSearchDisplay
2023-07-06 16:56:15 +02:00
* /
2024-05-05 03:55:03 +02:00
Scrutari . Lav . newSearchDisplay = function ( client , searchUnit ) {
var searchDisplay = new Scrutari . SearchDisplay ( client , searchUnit ) ;
searchDisplay . addPaginations = function ( $paginationBlock ) {
2023-07-06 16:56:15 +02:00
_addPaginations ( $paginationBlock ) ;
} ;
var libreavousArray = new Array ( ) ;
var librealireArray = new Array ( ) ;
2024-05-05 03:55:03 +02:00
var length = searchUnit . ficheGroupArray . length ;
2023-07-06 16:56:15 +02:00
if ( length > 0 ) {
2024-05-05 03:55:03 +02:00
for ( let fiche of searchUnit . ficheGroupArray [ 0 ] . ficheArray ) {
2023-07-06 16:56:15 +02:00
if ( fiche . codecorpus === 1222 ) {
libreavousArray . push ( fiche ) ;
} else {
librealireArray . push ( fiche ) ;
}
}
}
var arrays = {
libreavous : libreavousArray ,
librealire : librealireArray
} ;
2024-05-05 03:55:03 +02:00
return searchDisplay ;
2023-07-06 16:56:15 +02:00
function _addPaginations ( $paginationBlock ) {
$paginationBlock . html ( client . render ( "pagination_lav" , { array : client . lav . paginationArray } ) ) ;
2024-05-05 03:55:03 +02:00
client . $count ( "total-tous" , 'update' , searchUnit . getFicheCount ( ) ) ;
2023-07-06 16:56:15 +02:00
for ( let config of client . lav . paginationArray ) {
2024-05-05 03:55:03 +02:00
let pagination ;
2023-07-06 16:56:15 +02:00
if ( config . name ) {
client . $count ( "total-" + config . name , 'update' , arrays [ config . name ] . length ) ;
2024-05-05 03:55:03 +02:00
pagination = new Scrutari . Pagination ( client , arrays [ config . name ] , config . name ) ;
} else {
pagination = new Scrutari . Pagination ( client , searchUnit ) ;
2023-07-06 16:56:15 +02:00
}
client . putPagination ( config . name , pagination ) ;
pagination . change ( 1 ) ;
}
}
} ;
/ * *
2023-07-24 20:00:43 +02:00
* Actions propres au client
2023-07-06 16:56:15 +02:00
* /
Scrutari . Lav . actionHandler = function ( client , button , action , target ) {
switch ( action ) {
case 'copyPermalink' :
navigator . clipboard . writeText ( $ ( button ) . attr ( "href" ) ) ;
break ;
default :
return false ;
}
return true ;
} ;
/ * *
2023-07-24 20:00:43 +02:00
* Personnalisation des écouteurs actions sur les boutons
2023-07-06 16:56:15 +02:00
* /
Scrutari . Lav . changeHandler = function ( client , element , name ) {
switch ( name ) {
case 'lav-site' :
if ( element . checked ) {
_setSiteFilter ( element . value ) ;
}
return true ;
default :
return false ;
}
function _setSiteFilter ( value ) {
let suffix = "" ;
for ( let pagination of client . lav . paginationArray ) {
if ( value === pagination . radio ) {
pagination . active = true ;
suffix = pagination . suffix ;
} else {
pagination . active = false ;
}
}
let activeBlockName = "ficheGroup" + suffix ;
client . $block ( "ficheGroup" , "*" ) . each ( function ( index , element ) {
if ( element . dataset . scrutariBlock === activeBlockName ) {
client . show ( element ) ;
} else {
client . hide ( element ) ;
}
} ) ;
}
} ;
2024-05-15 23:03:57 +02:00
Scrutari . Lav . mainsearchCallback = function ( client , searchUnit ) {
$ ( "#scrutari_lav_sequence" ) . html ( Scrutari . Lav . formatSearchSequence ( client , searchUnit ) ) ;
} ;
2024-05-02 11:31:17 +02:00
Scrutari . Lav . getApiSettings = function ( ) {
2023-07-07 21:13:11 +02:00
return {
2024-05-02 11:31:17 +02:00
name : "libreavous" ,
engineUrl : Scrutari . Lav . SCRUTARI _URL ,
lang : "fr" ,
origin : "site" ,
2023-07-07 21:13:11 +02:00
paginationLength : Scrutari . Lav . PAGINATION _LENGTH ,
limit : - 1
} ;
} ;
Scrutari . Lav . getInitOptions = function ( ) {
return {
2023-07-06 16:56:15 +02:00
withCorpus : false ,
ficheTarget : "_blank" ,
2023-07-08 16:22:12 +02:00
ficheBodyList : "fiche_mtitre,fiche_msoustitre,libreavous_start_ul,fiche_primaryattributearray,fiche_mcomplementarray,fiche_secondaryattributearray,fiche_motclearray,fiche_bythesaurusarray,libreavous_end_ul" , //Ajout de libreavous_start_ul et libreavous_end_ul, retrait de fiche_year,
historyAtLast : true ,
2023-07-06 16:56:15 +02:00
ignoreList : "area-title,area-stats,modal-*" , //Utilisé en mode développement
2023-07-24 20:00:43 +02:00
hooks : {
2024-05-05 03:55:03 +02:00
completeFiche : function ( searchUnit , fiche , categoryName ) { //Extrait le numéro du titre
2023-07-24 20:00:43 +02:00
let start = fiche . mtitre [ 0 ] ;
let numero = "" ;
if ( start . startsWith ( "#" ) ) {
let idx = start . indexOf ( "-" ) ;
if ( idx > 0 ) {
numero = start . substring ( 0 , idx ) . trim ( ) ;
fiche . mtitre [ 0 ] = start . substring ( idx + 1 ) ;
}
}
fiche . _numero = numero ;
}
} ,
functions : {
uiInit : Scrutari . Lav . init ,
ignoreElement : null ,
isFilterEnable : null ,
initFilterByQuery : null ,
2024-05-05 03:55:03 +02:00
newSearchDisplay : Scrutari . Lav . newSearchDisplay ,
2023-07-24 20:00:43 +02:00
startLoading : null ,
endLoading : null ,
actionHandler : Scrutari . Lav . actionHandler ,
changeHandler : Scrutari . Lav . changeHandler
2024-05-15 23:03:57 +02:00
} ,
searchCallbacks : {
mainsearch : Scrutari . Lav . mainsearchCallback ,
qidsearch : Scrutari . Lav . mainsearchCallback
2023-07-24 20:00:43 +02:00
}
2023-07-07 21:13:11 +02:00
} ;
} ;