production page can now filter the cospus map

This commit is contained in:
2018-04-23 20:38:32 +02:00
parent cd374d7de8
commit afac7f57b0
7 changed files with 297 additions and 165 deletions
@@ -176,7 +176,9 @@ class EdlpAjaxController extends ControllerBase {
'rendered'=> $rendered,
];
// if content type page (productions) get the menu items and linked dates
// if content type page (productions) :
// -- get the menu items and linked dates
// -- get the linked documents for corpus map
if($this->bundle == "page"){
$menuLinkManager = \Drupal::service('plugin.manager.menu.link');
$links = $menuLinkManager->loadLinksByRoute('entity.node.canonical', array('node' => $this->id), 'productions');
@@ -195,6 +197,15 @@ class EdlpAjaxController extends ControllerBase {
}
}
$data['menu_parents'] = $menu_parents;
// Documents liés
$documents_lies = $this->entity->get('field_documents_lies')->getValue();
if(count($documents_lies)){
foreach ($documents_lies as $key => $field) {
$data['documents_lies'][] = $field['target_id'];
}
}
}
// translations links
@@ -47,6 +47,8 @@
var _nodes_centered = [];
var _nodes_centered_attractions = [];
var _loaded = false;
var _playlist = [];
var _p_velocity_factor = 0.5;
@@ -63,15 +65,6 @@
var _ecolors = _settings.colors;
// Physics
var _attracter;
// _repulser_top,
// _repulser_center,
// _repulser_bottom,
// _scrambler_TL,
// _scrambler_TR,
// _scrambler_BR,
// _scrambler_BL,
// _scrambler_CL,
// _scrambler_CR;
var check_parts_colid_frq = 2;
var check_parts_colid_tick = 1;
@@ -109,14 +102,14 @@
_canvas.height = _scene_props.height*_dpi;
_ctx.scale(_dpi, _dpi);
if(_nodes.length){
if(_loaded){
for (var i = 0; i < _nodes.length; i++) {
_nodes[i].onResizeCanvas();
}
// move _attracter and _repulser to the center again
// move _attracter and _repulser to their right places again
resizePhysics();
}
};
// ___
@@ -152,6 +145,7 @@
initEvents();
checkPreOpenedEntry();
startAnime();
_loaded = true;
};
// ___ _ _
@@ -329,8 +323,8 @@
Node.prototype.onResizeCanvas = function(){
this.calcWallLimits();
// TODO: scramble only if not aside or centered
this.shuffleOriP();
// TODO: when canvas is smaller what about nodes hors champs, they are coming back alone but it's too long
};
Node.prototype.shuffleOriP = function(){
@@ -503,7 +497,7 @@
this.wall_bouncing_elasticity = 0.15;
}
Node.prototype.unsetAside = function(){
console.log('unsetAside');
// console.log('unsetAside');
this.aside = false;
this.ori_p_attract.on = false;
this.ori_p.position.x = this.ori_pos.x;
@@ -511,6 +505,18 @@
// this.unFade();
}
Node.prototype.resolveNormalPos = function(){
// console.log("resolveNormalPos");
switch(true){
case this.center:
this.unsetCentered();
break;
case this.aside:
this.unsetAside();
break;
}
};
Node.prototype.scramble = function(){
this.scrambling = true;
this.unsetCentered();
@@ -811,7 +817,8 @@
// / __| ___ __ _ _ _ __| |_
// \__ \/ -_) _` | '_/ _| ' \
// |___/\___\__,_|_| \__|_||_|
function filterSearchResults(nids){
// and ajax modal content filtering
function filterByNids(nids){
shutDownArticles();
_nodes_centered = [];
@@ -833,6 +840,13 @@
// \__ \/ _| '_/ _` | ' \| '_ \ | | ' \/ _` |
// |___/\__|_| \__,_|_|_|_|_.__/_|_|_||_\__, |
// |___/
// function resolveNormalPosAllNodes(){
// console.log('resolveNormalPosAllNodes');
// for (var i = 0; i < _nodes.length; i++) {
// _nodes[i].resolveNormalPos();
// }
// };
function scrambleCollection(){
// console.log('scrambleCollection');
for (var i = 0; i < _nodes.length; i++) {
@@ -980,6 +994,11 @@
})
.on('close-all-entree', function(e){
closeAllEntries();
})
.on('scramble-collection', function(e){
console.log('scramble-collection', e);
// resolveNormalPosAllNodes();
scrambleCollection();
});
_$entrees_block_termlinks.on('click', function(event) {
@@ -1008,10 +1027,15 @@
.on('chutier-action-done', function(e) {
_nodes_by_nid[e.target_id].chutier_action = e.new_action;
})
.on('ajax-node-loaded-linked-documents', function(e){
console.log("Edlp Corpus, ajax-node-loaded-linked-documents",e.nids);
// filter map's nodes
filterByNids(e.nids);
})
.on('search-results-loaded', function(e){
//console.log("Edlp Corpus, search-results-loaded",e.results);
// TODO: filter map's nodes
filterSearchResults(e.results);
// filter map's nodes
filterByNids(e.results);
})
.on('search-closed', function(e){
scrambleCollection();
@@ -47,6 +47,8 @@
var _nodes_centered = [];
var _nodes_centered_attractions = [];
var _loaded = false;
var _playlist = [];
var _p_velocity_factor = 0.5;
@@ -63,15 +65,6 @@
var _ecolors = _settings.colors;
// Physics
var _attracter;
// _repulser_top,
// _repulser_center,
// _repulser_bottom,
// _scrambler_TL,
// _scrambler_TR,
// _scrambler_BR,
// _scrambler_BL,
// _scrambler_CL,
// _scrambler_CR;
var check_parts_colid_frq = 2;
var check_parts_colid_tick = 1;
@@ -109,14 +102,14 @@
_canvas.height = _scene_props.height*_dpi;
_ctx.scale(_dpi, _dpi);
if(_nodes.length){
if(_loaded){
for (var i = 0; i < _nodes.length; i++) {
_nodes[i].onResizeCanvas();
}
// move _attracter and _repulser to the center again
// move _attracter and _repulser to their right places again
resizePhysics();
}
};
// ___
@@ -152,6 +145,7 @@
initEvents();
checkPreOpenedEntry();
startAnime();
_loaded = true;
};
// ___ _ _
@@ -329,8 +323,8 @@
Node.prototype.onResizeCanvas = function(){
this.calcWallLimits();
// TODO: scramble only if not aside or centered
this.shuffleOriP();
// TODO: when canvas is smaller what about nodes hors champs, they are coming back alone but it's too long
};
Node.prototype.shuffleOriP = function(){
@@ -503,7 +497,7 @@
this.wall_bouncing_elasticity = 0.15;
}
Node.prototype.unsetAside = function(){
console.log('unsetAside');
// console.log('unsetAside');
this.aside = false;
this.ori_p_attract.on = false;
this.ori_p.position.x = this.ori_pos.x;
@@ -511,6 +505,18 @@
// this.unFade();
}
Node.prototype.resolveNormalPos = function(){
// console.log("resolveNormalPos");
switch(true){
case this.center:
this.unsetCentered();
break;
case this.aside:
this.unsetAside();
break;
}
};
Node.prototype.scramble = function(){
this.scrambling = true;
this.unsetCentered();
@@ -811,7 +817,8 @@
// / __| ___ __ _ _ _ __| |_
// \__ \/ -_) _` | '_/ _| ' \
// |___/\___\__,_|_| \__|_||_|
function filterSearchResults(nids){
// and ajax modal content filtering
function filterByNids(nids){
shutDownArticles();
_nodes_centered = [];
@@ -833,6 +840,13 @@
// \__ \/ _| '_/ _` | ' \| '_ \ | | ' \/ _` |
// |___/\__|_| \__,_|_|_|_|_.__/_|_|_||_\__, |
// |___/
// function resolveNormalPosAllNodes(){
// console.log('resolveNormalPosAllNodes');
// for (var i = 0; i < _nodes.length; i++) {
// _nodes[i].resolveNormalPos();
// }
// };
function scrambleCollection(){
// console.log('scrambleCollection');
for (var i = 0; i < _nodes.length; i++) {
@@ -980,6 +994,11 @@
})
.on('close-all-entree', function(e){
closeAllEntries();
})
.on('scramble-collection', function(e){
console.log('scramble-collection', e);
// resolveNormalPosAllNodes();
scrambleCollection();
});
_$entrees_block_termlinks.on('click', function(event) {
@@ -1008,10 +1027,15 @@
.on('chutier-action-done', function(e) {
_nodes_by_nid[e.target_id].chutier_action = e.new_action;
})
.on('ajax-node-loaded-linked-documents', function(e){
console.log("Edlp Corpus, ajax-node-loaded-linked-documents",e.nids);
// filter map's nodes
filterByNids(e.nids);
})
.on('search-results-loaded', function(e){
//console.log("Edlp Corpus, search-results-loaded",e.results);
// TODO: filter map's nodes
filterSearchResults(e.results);
// filter map's nodes
filterByNids(e.results);
})
.on('search-closed', function(e){
scrambleCollection();
@@ -15,6 +15,7 @@
start:0,
end:0
};
var _corpus_promise;
// ___ _ _
// |_ _|_ _ (_) |_
@@ -23,6 +24,11 @@
function init(){
console.log("EdlpTheme init()");
if(!drupalSettings.path.isFront)
return;
_deferred = initEvents();
_audioPlayer = new AudioPlayer();
_compoPlayer = new CompoPlayer();
@@ -30,11 +36,10 @@
initHistory();
if(!drupalSettings.path.isFront)
return;
initEvents();
// if(!drupalSettings.path.isFront)
// return;
//
// initEvents();
};
// ___ _
@@ -42,8 +47,15 @@
// | _|\ V / -_) ' \ _(_-<
// |___|\_/\___|_||_\__/__/
function initEvents(){
// https://www.html5rocks.com/en/tutorials/async/deferred/
var $corpus_df = $.Deferred();
_corpus_promise = $corpus_df.promise();
_$body
.on('corpus-map-ready', onCorpusMapReady)
.on('corpus-map-ready', function(e){
onCorpusMapReady(e);
$corpus_df.resolve();
})
.on('on-studio-chutier-updated', initAjaxLinks)
.on('studio-initialized', function(e){
_compoPlayer.newCompo();
@@ -247,6 +259,22 @@
$('a[data-drupal-link-system-path="'+menu_sys_path+'"]').addClass('is-active-trail');
}
}
// if entity has corpus-map's linked document call a filter to corpus map
if(typeof data.documents_lies != 'undefined'){
if(_corpus_ready){
_$body.trigger({
type:'ajax-node-loaded-linked-documents',
nids:data.documents_lies
});
}else{
_corpus_promise.done(function(){
_$body.trigger({
type:'ajax-node-loaded-linked-documents',
nids:data.documents_lies
});
});
}
}
// if block attached (eg : from edlp_productions module)
// not used anymore as production block is always present (but not visible)
@@ -378,12 +406,7 @@
}
// remove the col
$col.remove();
// if row is empty and we are not in productions or entree notice|index call closeAllModals()
if(!$('.col', _$row).length
&& !_$body.is('.entity-type-node.bundle-page')
&& !_$body.is('.entity-type-taxonomy_term.bundle-entrees')){
backToFrontPage();
}
checkRowEmpty();
};
// _ _ ___ _ _
@@ -625,6 +648,7 @@
// | (__/ _ \ '_| '_ \ || (_-<
// \___\___/_| | .__/\_,_/__/
// |_|
function onCorpusMapReady(e){
//console.log('theme : onCorpusReady', e);
_corpus_ready = true;
@@ -1335,53 +1359,6 @@
// }
};
// ___ _ ___
// | __| _ ___ _ _| |_| _ \__ _ __ _ ___
// | _| '_/ _ \ ' \ _| _/ _` / _` / -_)
// |_||_| \___/_||_\__|_| \__,_\__, \___|
// |___/
function backToFrontPage(pop_state){
console.log('backToFrontPage', pop_state);
closeAllModals();
// assume we are going back to front page
$('body').removeClass().addClass('path-frontpage');
$('a[data-drupal-link-system-path="<front>"]').addClass('is-active');
// close entrees
_$corpus_canvas.trigger({'type':'close-all-entree'});
if(typeof pop_state == "undefined" || !pop_state){
console.log('backToFrontPage push state');
history.pushState({home:true}, null, drupalSettings.path.baseUrl+drupalSettings.path.currentLanguage);
}
}
function initHome(){
addCloseModalBtnToCols();
// console.log('theme : initHome');
// console.log('theme : initProductions');
var $grid = $('.grid',_$row).masonry({
itemSelector:'.col',
columnWidth:'.col-2',
horizontalOrder: true,
containerStyle: null,
// disable initial layout
// initLayout: false,
});
// bind event
// $grid.masonry( 'on', 'layoutComplete', function() {
// console.log('layout is complete');
// });
// layout Masonry after each image loads
$grid.imagesLoaded().progress( function() {
$grid.masonry('layout');
});
$grid.imagesLoaded(function(){
$grid.masonry('layout');
});
}
// ___ _ _ _
// | _ \_ _ ___ __| |_ _ __| |_(_)___ _ _ ___
// | _/ '_/ _ \/ _` | || / _| _| / _ \ ' \(_-<
@@ -1434,6 +1411,54 @@
});
};
// ___ _ ___
// | __| _ ___ _ _| |_| _ \__ _ __ _ ___
// | _| '_/ _ \ ' \ _| _/ _` / _` / -_)
// |_||_| \___/_||_\__|_| \__,_\__, \___|
// |___/
function backToFrontPage(pop_state){
console.log('backToFrontPage', pop_state);
closeAllModals();
// assume we are going back to front page
$('body').removeClass().addClass('path-frontpage');
$('a[data-drupal-link-system-path="<front>"]').addClass('is-active');
// close entrees
_$corpus_canvas.trigger({'type':'close-all-entree'});
_$corpus_canvas.trigger({'type':'scramble-collection'});
if(typeof pop_state == "undefined" || !pop_state){
console.log('backToFrontPage push state');
history.pushState({home:true}, null, drupalSettings.path.baseUrl+drupalSettings.path.currentLanguage);
}
}
function initHome(){
addCloseModalBtnToCols();
// console.log('theme : initHome');
// console.log('theme : initProductions');
var $grid = $('.grid',_$row).masonry({
itemSelector:'.col',
columnWidth:'.col-2',
horizontalOrder: true,
containerStyle: null,
// disable initial layout
// initLayout: false,
});
// bind event
// $grid.masonry( 'on', 'layoutComplete', function() {
// console.log('layout is complete');
// });
// layout Masonry after each image loads
$grid.imagesLoaded().progress( function() {
$grid.masonry('layout');
});
$grid.imagesLoaded(function(){
$grid.masonry('layout');
});
}
// __ __ _ _
// | \/ |___ __| |__ _| |___
// | |\/| / _ \/ _` / _` | (_-<
@@ -1444,6 +1469,21 @@
_$row.html('');
_$ajaxLinks.removeClass('is-active');
_$body.trigger({'type':'all-modal-closed'});
// checkRowEmpty();
};
function checkRowEmpty(){
// TODO: remove is-active class from index or notice entree links
// if row is empty and we are not in productions or entree notice|index call closeAllModals()
if(!$('.col', _$row).length && !_$body.is('.entity-type-taxonomy_term.bundle-entrees')){
if(!_$body.is('.entity-type-node.bundle-page')){
// we weren't on production or entree, so go back to front page
backToFrontPage();
}else{
// if we were on production page just scramble collection in case of map was filtered
_$corpus_canvas.trigger({'type':'scramble-collection'});
}
}
};
// _ _ _
@@ -15,6 +15,7 @@
start:0,
end:0
};
var _corpus_promise;
// ___ _ _
// |_ _|_ _ (_) |_
@@ -23,6 +24,11 @@
function init(){
console.log("EdlpTheme init()");
if(!drupalSettings.path.isFront)
return;
_deferred = initEvents();
_audioPlayer = new AudioPlayer();
_compoPlayer = new CompoPlayer();
@@ -30,11 +36,10 @@
initHistory();
if(!drupalSettings.path.isFront)
return;
initEvents();
// if(!drupalSettings.path.isFront)
// return;
//
// initEvents();
};
// ___ _
@@ -42,8 +47,15 @@
// | _|\ V / -_) ' \ _(_-<
// |___|\_/\___|_||_\__/__/
function initEvents(){
// https://www.html5rocks.com/en/tutorials/async/deferred/
var $corpus_df = $.Deferred();
_corpus_promise = $corpus_df.promise();
_$body
.on('corpus-map-ready', onCorpusMapReady)
.on('corpus-map-ready', function(e){
onCorpusMapReady(e);
$corpus_df.resolve();
})
.on('on-studio-chutier-updated', initAjaxLinks)
.on('studio-initialized', function(e){
_compoPlayer.newCompo();
@@ -247,6 +259,22 @@
$('a[data-drupal-link-system-path="'+menu_sys_path+'"]').addClass('is-active-trail');
}
}
// if entity has corpus-map's linked document call a filter to corpus map
if(typeof data.documents_lies != 'undefined'){
if(_corpus_ready){
_$body.trigger({
type:'ajax-node-loaded-linked-documents',
nids:data.documents_lies
});
}else{
_corpus_promise.done(function(){
_$body.trigger({
type:'ajax-node-loaded-linked-documents',
nids:data.documents_lies
});
});
}
}
// if block attached (eg : from edlp_productions module)
// not used anymore as production block is always present (but not visible)
@@ -378,12 +406,7 @@
}
// remove the col
$col.remove();
// if row is empty and we are not in productions or entree notice|index call closeAllModals()
if(!$('.col', _$row).length
&& !_$body.is('.entity-type-node.bundle-page')
&& !_$body.is('.entity-type-taxonomy_term.bundle-entrees')){
backToFrontPage();
}
checkRowEmpty();
};
// _ _ ___ _ _
@@ -625,6 +648,7 @@
// | (__/ _ \ '_| '_ \ || (_-<
// \___\___/_| | .__/\_,_/__/
// |_|
function onCorpusMapReady(e){
//console.log('theme : onCorpusReady', e);
_corpus_ready = true;
@@ -1335,53 +1359,6 @@
// }
};
// ___ _ ___
// | __| _ ___ _ _| |_| _ \__ _ __ _ ___
// | _| '_/ _ \ ' \ _| _/ _` / _` / -_)
// |_||_| \___/_||_\__|_| \__,_\__, \___|
// |___/
function backToFrontPage(pop_state){
console.log('backToFrontPage', pop_state);
closeAllModals();
// assume we are going back to front page
$('body').removeClass().addClass('path-frontpage');
$('a[data-drupal-link-system-path="<front>"]').addClass('is-active');
// close entrees
_$corpus_canvas.trigger({'type':'close-all-entree'});
if(typeof pop_state == "undefined" || !pop_state){
console.log('backToFrontPage push state');
history.pushState({home:true}, null, drupalSettings.path.baseUrl+drupalSettings.path.currentLanguage);
}
}
function initHome(){
addCloseModalBtnToCols();
// console.log('theme : initHome');
// console.log('theme : initProductions');
var $grid = $('.grid',_$row).masonry({
itemSelector:'.col',
columnWidth:'.col-2',
horizontalOrder: true,
containerStyle: null,
// disable initial layout
// initLayout: false,
});
// bind event
// $grid.masonry( 'on', 'layoutComplete', function() {
// console.log('layout is complete');
// });
// layout Masonry after each image loads
$grid.imagesLoaded().progress( function() {
$grid.masonry('layout');
});
$grid.imagesLoaded(function(){
$grid.masonry('layout');
});
}
// ___ _ _ _
// | _ \_ _ ___ __| |_ _ __| |_(_)___ _ _ ___
// | _/ '_/ _ \/ _` | || / _| _| / _ \ ' \(_-<
@@ -1434,6 +1411,54 @@
});
};
// ___ _ ___
// | __| _ ___ _ _| |_| _ \__ _ __ _ ___
// | _| '_/ _ \ ' \ _| _/ _` / _` / -_)
// |_||_| \___/_||_\__|_| \__,_\__, \___|
// |___/
function backToFrontPage(pop_state){
console.log('backToFrontPage', pop_state);
closeAllModals();
// assume we are going back to front page
$('body').removeClass().addClass('path-frontpage');
$('a[data-drupal-link-system-path="<front>"]').addClass('is-active');
// close entrees
_$corpus_canvas.trigger({'type':'close-all-entree'});
_$corpus_canvas.trigger({'type':'scramble-collection'});
if(typeof pop_state == "undefined" || !pop_state){
console.log('backToFrontPage push state');
history.pushState({home:true}, null, drupalSettings.path.baseUrl+drupalSettings.path.currentLanguage);
}
}
function initHome(){
addCloseModalBtnToCols();
// console.log('theme : initHome');
// console.log('theme : initProductions');
var $grid = $('.grid',_$row).masonry({
itemSelector:'.col',
columnWidth:'.col-2',
horizontalOrder: true,
containerStyle: null,
// disable initial layout
// initLayout: false,
});
// bind event
// $grid.masonry( 'on', 'layoutComplete', function() {
// console.log('layout is complete');
// });
// layout Masonry after each image loads
$grid.imagesLoaded().progress( function() {
$grid.masonry('layout');
});
$grid.imagesLoaded(function(){
$grid.masonry('layout');
});
}
// __ __ _ _
// | \/ |___ __| |__ _| |___
// | |\/| / _ \/ _` / _` | (_-<
@@ -1444,6 +1469,21 @@
_$row.html('');
_$ajaxLinks.removeClass('is-active');
_$body.trigger({'type':'all-modal-closed'});
// checkRowEmpty();
};
function checkRowEmpty(){
// TODO: remove is-active class from index or notice entree links
// if row is empty and we are not in productions or entree notice|index call closeAllModals()
if(!$('.col', _$row).length && !_$body.is('.entity-type-taxonomy_term.bundle-entrees')){
if(!_$body.is('.entity-type-node.bundle-page')){
// we weren't on production or entree, so go back to front page
backToFrontPage();
}else{
// if we were on production page just scramble collection in case of map was filtered
_$corpus_canvas.trigger({'type':'scramble-collection'});
}
}
};
// _ _ _
@@ -27,7 +27,7 @@ content:
region: content
field_date:
type: daterange_custom
weight: 2
weight: 1
region: content
label: hidden
settings:
@@ -37,14 +37,14 @@ content:
third_party_settings: { }
field_page_liee:
type: entity_reference_label
weight: 1
weight: 0
region: content
label: hidden
settings:
link: false
third_party_settings: { }
links:
weight: 0
weight: 2
region: content
settings: { }
third_party_settings: { }
@@ -30,14 +30,6 @@ content:
settings: { }
third_party_settings: { }
region: content
field_documents_lies:
weight: 4
label: above
settings:
link: true
third_party_settings: { }
type: entity_reference_label
region: content
field_son:
weight: 2
label: hidden
@@ -61,12 +53,13 @@ content:
settings: { }
third_party_settings: { }
production_subtree:
weight: 5
weight: 4
region: content
settings: { }
third_party_settings: { }
hidden:
field_afficher_en_page_d_acceuil: true
field_documents_lies: true
field_page_type: true
field_view_mode: true
field_workflow_generic: true