Commit 15128b92 authored by delanoe's avatar delanoe

Merge branch 'romain-refactoring' into refactoring

parents 7a3a35ab 54e5e456
......@@ -475,10 +475,12 @@ class ListFamily(APIView):
hidden_ngrams_query = _query_grouped_ngrams(groups_id, details=True,
scoring_metric_id= scores_id)
# infos for stoplist terms, absent from mainlist
stop_ngrams_query = _query_list(other_list_ids['stoplist'], details=True,
scoring_metric_id=scores_id)
# and for the other lists (stop and map)
# no details needed here, just the member ids
# - maplist ngrams will already be in ngraminfos b/c of mainlist
# - stoplist ngrams will not be shown in detail
for li in other_list_ids:
li_elts = _query_list(other_list_ids[li], details=False
).all()
......@@ -497,7 +499,7 @@ class ListFamily(APIView):
# TODO add maplist membership
ngrams_which_need_detailed_info = mainlist_query.all()
else:
ngrams_which_need_detailed_info = mainlist_query.all() + hidden_ngrams_query.all()
ngrams_which_need_detailed_info = mainlist_query.all() + hidden_ngrams_query.all() + stop_ngrams_query.all()
# the output form of details is:
# ngraminfo[id] => [term, weight]
......
......@@ -69,18 +69,10 @@ function Push2Buffer( NewVal ) {
}
function Final_UpdateTable( action ) {
// (1) Identifying if the button is collapsed:
var isCollapsed=false;
var accordiontext = $("#collapseOne").attr("class")
if(accordiontext.indexOf("collapse in")>-1)
isCollapsed=true;
var UpdateTable = false
if ( (action == "click" && !isCollapsed) || (action=="changerange" && isCollapsed) ) {
if (action=="changerange") {
UpdateTable = true;
$("#corpusdisplayer").html("View by titles")
} else $("#corpusdisplayer").html("View by titles")
}
pr("update table??: "+UpdateTable)
......@@ -98,7 +90,7 @@ function Final_UpdateTable( action ) {
// console.log("dataini, datafin")
// console.log(dataini, datafin)
$.each(AjaxRecords, function(i, node) {
if (node.date >= dataini && node.date >= dataini) {
if (node.date >= dataini && node.date <= datafin) {
// pr( AjaxRecords[i].date+" : "+AjaxRecords[i].id )
TimeRange.push(node);
}
......@@ -128,8 +120,8 @@ function Final_UpdateTable( action ) {
// STEP 01:
// remember url elements
var id_from_url = function(name) {
var regex = new RegExp(name + '/(\\d+)');
var id_from_url = function(nodename) {
var regex = new RegExp(nodename + '/(\\d+)');
var result = regex.exec(location.href);
return result ? result[1] : null;
};
......@@ -164,17 +156,19 @@ function getRecords() {
function transformContent2(rec_id) {
// pr("\t\ttransformContent2: "+rec_id)
var elem = AjaxRecords[rec_id];
// pr("\t"+elem.title)
// pr("\t"+elem.rawtitle)
var result = {}
if (elem["del"]) {
result["id"] = elem["id"]
result["date"] = '<strike>'+elem["date"]+'</strike>'
result["name"] = '<strike>'+elem["name"]+'</strike>'
result["docurl"] = '<strike>'+elem["docurl"]+'</strike>'
result["rawtitle"] = elem["rawtitle"]
result["del"] = '<input id='+rec_id+' onclick="overRide(this)" type="checkbox" checked/>'
} else {
result["id"] = elem["id"]
result["date"] = elem["date"]
result["name"] = elem["name"]
result["docurl"] = elem["docurl"]
result["rawtitle"] = elem["rawtitle"]
result["del"] = '<input id='+rec_id+' onclick="overRide(this)" type="checkbox"/>'
}
return result;
......@@ -272,11 +266,11 @@ function Main_test(Data) {
div_table += '<table id="my-ajax-table" class="table table-bordered">'+"\n"
div_table += "\t"+'<thead>'+"\n"
div_table += "\t"+"\t"+'<th width="100px;" data-dynatable-column="date">'+"\n"
div_table += "\t"+"\t"+'<span class="glyphicon glyphicon-calendar" aria-hidden="true"></span> Date</th>'+"\n"
div_table += "\t"+"\t"+'<th data-dynatable-column="name">'+"\n"
div_table += "\t"+"\t"+'<span class="glyphicon glyphicon-text-size" aria-hidden="true"></span> Title</th>'+"\n"
div_table += "\t"+"\t"+'<span class="glyphicon glyphicon-calendar"></span> Date</th>'+"\n"
div_table += "\t"+"\t"+'<th data-dynatable-column="docurl">'+"\n"
div_table += "\t"+"\t"+'<span class="glyphicon glyphicon-text-size"></span> Title</th>'+"\n"
div_table += "\t"+"\t"+'<th data-dynatable-column="del" data-dynatable-no-sort="true">'+"\n"
div_table += "\t"+"\t"+'<span class="glyphicon glyphicon-trash" aria-hidden="true"></span>'+"\n"
div_table += "\t"+"\t"+'<span class="glyphicon glyphicon-trash"></span>'+"\n"
div_table += "\t"+"\t"+'</th>'+"\n"
div_table += "\t"+'</thead>'+"\n"
div_table += "\t"+'<tbody>'+"\n"
......@@ -290,7 +284,7 @@ function Main_test(Data) {
var date = Data[i]["date"];
if ( ! justdates[date] ) justdates[date] = 0;
justdates[date]++;
// console.log(Data[i]["date"]+" : originalRecords["+arr_id+"] <- "+orig_id+" | "+Data[i]["name"])
// console.log(Data[i]["date"]+" : originalRecords["+arr_id+"] <- "+orig_id+" | "+Data[i]["docurl"])
}
var t0 = get_node_date(AjaxRecords[0]);
......@@ -420,6 +414,8 @@ function Main_test(Data) {
var chartfilt = chart.filter()
// tricky part: identifying when the moveChart changes.
if(chartfilt) {
console.log("chart.filter()")
console.log(chart.filter())
Push2Buffer ( chart.filter() )
} else {
if(TheBuffer) {
......@@ -435,13 +431,17 @@ function Main_test(Data) {
MyTable = []
MyTable = $('#my-ajax-table').dynatable({
dataset: {
records: Data
records: Data,
sorts : {"date": 1},
sortTypes: {
docurl: 'rawtitleSort'
}
},
features: {
pushState: false,
// prevent default title search which can't do title vs abstract
search: false,
// sort: false //i need to fix the sorting function... the current one just sucks
sort: true
},
inputs: {
// our own search which differentiates title vs abstract queries
......@@ -454,7 +454,7 @@ function Main_test(Data) {
});
MyTable.data('dynatable').paginationPage.set(1);
MyTable.data('dynatable').process();
// MyTable.data('dynatable').process();
if ( $(".imadiv").length>0 ) return 1;
$('<br><br><div class="imadiv"></div>').insertAfter(".dynatable-per-page")
......@@ -471,7 +471,7 @@ function Main_test(Data) {
// NB searchString == $("#doubleSearch").val()
// by default we always decide to search in the title
matchInTexts = [record.title]
matchInTexts = [record.rawtitle]
// if box is checked we'll also search in the abstracts
if (doAbstractsSearch) {
......@@ -493,20 +493,25 @@ function Main_test(Data) {
}
return contains;
}
MyTable.data('dynatable').process();
// MyTable.data('dynatable').process();
// also append another bound filter for duplicates
MyTable.data('dynatable').queries
.functions['dupFilter'] = function(record,selected) {
return (selected == 'filter_all')||(countByTitles[record.title] > 1)
return (selected == 'filter_all')||(countByTitles[record.rawtitle] > 1)
}
// and set this filter's initial status to 'filter_all'
MyTable.data('dynatable').settings.dataset.queries['dupFilter'] = 'filter_all'
MyTable.data('dynatable').process();
MyTable.data('dynatable').process
MyTable.data('dynatable').sorts.functions["rawtitleSort"] = function testSort (rec1,rec2) {
// sorts on rawtitle instead of derived docurl
// and sorts with locale-aware order
return rec1.rawtitle.localeCompare(rec2.rawtitle)
}
MyTable.data('dynatable').process();
// re-apply search function on click
$('#searchAB').click( function() {
......@@ -523,7 +528,28 @@ function Main_test(Data) {
return "OK"
}
$("#corpusdisplayer").hide()
var dupFlag = false ;
$("#div-table").on("dynatable:queries:added", function(e, qname, qval) {
if (!dupFlag && qname == 'dupFilter' && qval == "filter_dupl") {
MyTable.data('dynatable').queries.remove('dupFilter')
// to avoid recursion when we'll call this filter again in 4 lines
dupFlag = true ;
// sort alphabetically **before** duplicates filter
MyTable.data('dynatable').sorts.clear();
MyTable.data('dynatable').sorts.add('rawtitle', -1) // -1 <==> DESC (ASC doesn't work well ?)
MyTable.data('dynatable').queries.add('dupFilter', 'filter_dupl')
MyTable.data('dynatable').process();
}
});
$("#div-table").on("dynatable:queries:removed", function(e, qname) {
if (qname == 'dupFilter') {
dupFlag = false ;
}
});
// FIRST portion of code to be EXECUTED:
// (3) Get records and hyperdata for paginator
$.ajax({
......@@ -536,15 +562,17 @@ $.ajax({
var orig_id = parseInt(record.id);
var arr_id = parseInt(i)
RecDict[orig_id] = arr_id;
record.title = record.name;
record.name = '<a target="_blank" href="/projects/' + project_id + '/corpora/'+ corpus_id + '/documents/' + record.id + '">' + record.name + '</a>';
record.rawtitle = record.name;
// trick to have a clickable title in docurl slot, but could be done in transformContent2
record.docurl = '<a target="_blank" href="/projects/' + project_id + '/corpora/'+ corpus_id + '/documents/' + record.id + '">' + record.name + '</a>';
record.date = get_node_date(record);
record.del = false;
});
// initialize CountByTitle census
for (var i in data.records) {
ourTitle = data.records[i]['title'] ;
ourTitle = data.records[i]['rawtitle'] ;
if (countByTitles.hasOwnProperty(ourTitle)) {
countByTitles[ourTitle] ++ ;
}
......@@ -556,9 +584,7 @@ $.ajax({
var result = Main_test(data.records)
$("#corpusdisplayer").show()
$("#content_loader").remove()
$("#corpusdisplayer").click()
console.log( result )
},
......
......@@ -100,27 +100,15 @@ function Push2Buffer( NewVal ) {
}
function Final_UpdateTable( action ) {
// (1) Identifying if the button is collapsed:
var isCollapsed=false;
var tableClass = $("#journal_table").attr("class")
//\bcollapse\b
if(tableClass.indexOf(" collapse ")>-1) {
isCollapsed=true;
}
var UpdateTable = false
if ( (action == "click" && !isCollapsed) || (action=="changerange" && isCollapsed) ) {
if (action=="changerange") {
UpdateTable = true;
$("#corpusdisplayer").html("Close Folder")
} else $("#corpusdisplayer").html("View by journals")
}
pr("update table??: "+UpdateTable)
if ( ! UpdateTable ) return false; //stop whatever you wanted to do.
var TimeRange = AjaxRecords;
var dataini = (TheBuffer[0])?TheBuffer[0]:oldest;
......@@ -502,8 +490,6 @@ function Main_test( data , initial) {
$("#corpusdisplayer").hide()
console.log(window.location.href)
// match corpus_id in the url
......@@ -525,13 +511,8 @@ if (rematch) {
var result = Main_test( data.by.journal , "FirstScore" )
console.log( result )
$("#corpusdisplayer").show()
$("#content_loader").remove()
$("#corpusdisplayer").click()
}
});
}
else {
}
......@@ -27,8 +27,10 @@
* Romain Loth
* - minor 2016 modifications + doc
* - unify table ids with ngram ids
* - new api routes + prefetch maplist terms
* - simplify UpdateTable
*
* @version 1.0 beta
* @version 1.1
*
* @requires jquery.dynatable
* @requires d3
......@@ -304,27 +306,14 @@ function Final_UpdateTable( action ) {
// console.log("AjaxRecords")
// console.log(AjaxRecords)
// (1) Identifying if the button is collapsed:
var isCollapsed=false;
var tableClass = $("#terms_table").attr("class")
//\bcollapse\b
if(tableClass.indexOf(" collapse ")>-1) {
isCollapsed=true;
}
var UpdateTable = false
if ( (action == "click" && !isCollapsed) || (action=="changerange" && isCollapsed) ) {
if (action=="changerange") {
UpdateTable = true;
$("#corpusdisplayer").html("Close Term List")
} else $("#corpusdisplayer").html("View by terms")
}
pr("update table??: "+UpdateTable)
if ( ! UpdateTable ) return false; //stop whatever you wanted to do.
var TimeRange = AjaxRecords;
var dataini = (TheBuffer[0])?TheBuffer[0]:oldest;
......@@ -1433,19 +1422,19 @@ function GROUPCRUD( groupnode_id , post_data , callback) {
* 3. Creates the scores distribution chart over table
* 4. Set up Search div
*
* @param data: a response from the api/node/CID/ngrams/list/ routes
* @param ngdata: a response from the api/node/CID/ngrams/list/ routes
* @param initial: initial score type "occs" or "tfidf"
* @param search_filter: eg 'filter_all' (see SearchFilters.MODE)
*/
function MainTableAndCharts( data , initial , search_filter) {
function MainTableAndCharts( ngdata , initial , search_filter) {
// debug
// alert("refresh main")
console.log("")
console.log(" = = = = MainTableAndCharts: = = = = ")
console.log("data:")
console.log(data)
console.log("ngdata:")
console.log(ngdata)
console.log("initial:") //
console.log(initial)
console.log("search_filter:") // eg 'filter_all'
......@@ -1453,13 +1442,13 @@ function MainTableAndCharts( data , initial , search_filter) {
console.log(" = = = = / MainTableAndCharts: = = = = ")
console.log("")
// Expected infos in "data.ngrams" should have the form:
// Expected infos in "ngdata.ngrams" should have the form:
// { "1": { id: "1", name: "réalité", score: 36 },
// "9": { id: "9", name: "pdg", score: 116 },
// "10": { id:"10", name: "infrastructure", score: 12 } etc. }
// (see filling of rec_info below)
// console.log(data.ngrams)
// console.log(ngdata.ngrams)
var DistributionDict = {}
for(var i in DistributionDict)
......@@ -1541,8 +1530,8 @@ function MainTableAndCharts( data , initial , search_filter) {
$('#mapAll').data("columnSelection", 'SOME')
var div_stats = "<p>";
for(var i in data.scores) {
var value = (!isNaN(Number(data.scores[i])))? Number(data.scores[i]).toFixed(1) : data.scores[i];
for(var i in ngdata.scores) {
var value = (!isNaN(Number(ngdata.scores[i])))? Number(ngdata.scores[i]).toFixed(1) : ngdata.scores[i];
div_stats += i+": "+value+" | "
}
div_stats += "</p>"
......@@ -1550,11 +1539,11 @@ function MainTableAndCharts( data , initial , search_filter) {
AjaxRecords = {}
for(var id in data.ngrams) {
for(var id in ngdata.ngrams) {
// console.log(i)
// console.log(data.ngrams[i])
var le_ngram = data.ngrams[id] ;
// console.log(ngdata.ngrams[i])
var le_ngram = ngdata.ngrams[id] ;
// INIT records
// one record <=> one line in the table + ngram states
......@@ -1893,13 +1882,6 @@ var NGrams = {
"scores" : {}
}
$("#corpusdisplayer").hide()
// if( $("#share_button").length==0 ) {
// $("#ImportList").remove()
// }
// NEW AJAX x 2
......@@ -2029,13 +2011,20 @@ function AfterAjax() {
// ----------------------------------------- MAPLIST
if( Object.keys(NGrams["map"]).length>0 ) {
for(var ngram_id in NGrams["main"].ngrams) {
myMiamNgram = NGrams["main"].ngrams[ngram_id]
myNgram = NGrams["main"].ngrams[ngram_id]
if(NGrams["map"][ngram_id]) {
// keepstateId = 1
keepstateId = System[0]["statesD"]["keep"]
// initialize state of maplist items
myMiamNgram["state"] = keepstateId ;
myNgram["state"] = keepstateId ;
}
else if (NGrams["stop"][ngram_id]) {
// delstateId = 2
delstateId = System[0]["statesD"]["delete"]
// initialize state of stoplist items
myNgram["state"] = delstateId ;
}
}
}
......@@ -2071,10 +2060,7 @@ function AfterAjax() {
//
// });
$("#corpusdisplayer").show()
$("#content_loader").remove()
$("#corpusdisplayer").click()
$(".nav-tabs a").click(function(e){
e.preventDefault();
......
/* styles for menu.html template (navbar etc) */
#dafixedtop .navbar-text {
#dafixedtop .navbar-text, #graphsfixedtop .navbar-text {
margin: 0 ;
padding-top: 15px;
padding-bottom: 15px;
......
......@@ -8,6 +8,7 @@
<link rel="stylesheet" href="{% static "js/libs/css2/custom.css" %}" media="screen">
<link rel="stylesheet" href="{% static "js/libs/css2/sidebar.css" %}" media="screen">
<link rel="stylesheet" type="text/css" href="{% static "js/gargantext/menu.css"%}"/>
<style>
#leftcolumn {
......@@ -44,7 +45,7 @@
<body>
<div class="navbar navbar-inverse" role="navigation">
<div id="graphsfixedtop" class="navbar navbar-inverse" role="navigation">
<div class="container">
<div class="navbar-inner">
<button class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
......@@ -84,20 +85,27 @@
<ul class="nav pull-right">
<li class="dropdown">
<a href="#" role="button" class="dropdown-toggle" data-toggle="dropdown" title="That is your login"><i class="icon-user"></i>
<span class="glyphicon glyphicon-user" aria-hidden="true" style="color:white"></span>
{{ user.username | truncatechars:15}}
<a href="#" role="button" class="dropdown-toggle navbar-text" data-toggle="dropdown" title="That is your username">
<i class="icon-user"></i>
<span class="glyphicon glyphicon-user" aria-hidden="true" style="color:white"></span>
{{ user.username | truncatechars:15}}
<i class="caret"></i>
</a>
<ul class="dropdown-menu">
<li><a tabindex="-1" href="http://www.iscpif.fr/tiki-index.php?page=gargantext_feedback" title="Send us a message (bug, thanks, congrats...)">Report Feedback</a></li>
<li><a tabindex="-1" href="http://www.iscpif.fr/tiki-index.php?page=gargantext_feedback" title="Send us a message (bug, thanks, congrats...)">
<span class="glyphicon glyphicon-bullhorn" aria-hidden="true"></span>
Report Feedback</a></li>
<li class="divider"></li>
{% if user.is_authenticated %}
<li><a tabindex="-1" href="/auth/logout" title="Click here to logout especially on public devices">Logout</a></li>
{% if user.is_authenticated %}
<li>
<a tabindex="-1" href="/auth/logout"
title="Click here to logout especially on public devices">
<span class="glyphicon glyphicon-log-out" aria-hidden="true"></span>
Logout
</a></li>
{% else %}
<li><a tabindex="-1" href="/auth/">Login</a></li>
{% endif %}
<li><a tabindex="-1" href="/auth/login">Login</a></li>
{% endif %}
</ul>
</li>
</ul>
......
......@@ -23,7 +23,7 @@
<center>
Select a frequency group in the chart with blue bars to zoom in
<p align="center">
<!--<a class="btn btn-xs btn-default" role="button" href="/chart/corpus/{{ corpus.id }}/data.csv">Save</a>--!>
<!--<a class="btn btn-xs btn-default" role="button" href="/chart/corpus/{{ corpus.id }}/data.csv">Save</a>-->
<a class="btn btn-xs btn-default" href="javascript:volumeChart.filterAll();dc.redrawAll();">Reset</a></p>
<!-- <p style="font-size:70%">
<b>x</b>: amount of documents for the journal
......@@ -51,36 +51,29 @@
<div class="container">
<div class="jumbotron">
<div class="row">
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#collapseOne">
<!-- Final_UpdateTable redraws the dynatable if necessary -->
<p id="corpusdisplayer" onclick='Final_UpdateTable("click")' class="btn btn-primary btn-lg">Journals
</p>
</a>
</h4>
</div>
<div id="journal_table" class="panel-collapse collapse in no-transition" role="tabpanel">
<div class="panel-body">
<div id="div-table">
<!-- (table id="my-ajax-table") dynamically set by Journals_dyna_chart_and_table -->
</div>
</div>
</div> <!-- /div panel-collapse -->
</div> <!-- /div panel -->
</div> <!-- /row with the dynatable panels -->
</div> <!-- /jumbotron -->
<!--
</div> Alignment
</div> (these divs are closed by the menu)
/container -->
<div class="jumbotron">
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
Publications by source
</h4>
</div>
<div class="panel-body">
<div id="div-table">
<!-- (table id="my-ajax-table") dynamically set by Journals_dyna_chart_and_table -->
</div>
</div>
</div> <!-- /div panel -->
</div> <!-- /jumbotron -->
</div>
......
......@@ -20,7 +20,7 @@
<center>
Select a score/frequency range in the chart with blue bars to zoom in
<p align="center">
<!--<a class="btn btn-xs btn-default" role="button" href="/chart/corpus/{{ corpus.id }}/data.csv">Save</a>--!>
<!--<a class="btn btn-xs btn-default" role="button" href="/chart/corpus/{{ corpus.id }}/data.csv">Save</a>-->
<a class="btn btn-xs btn-default" href="javascript:volumeChart.filterAll();dc.redrawAll();">Reset</a></p>
<div class="clearfix"></div>
</center>
......@@ -49,16 +49,11 @@
<input type="hidden" id="scores_id" value=""></input>
<div class="jumbotron">
<div class="row">
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#collapseOne">
<!-- Final_UpdateTable redraws the dynatable if necessary -->
<p id="corpusdisplayer" onclick='Final_UpdateTable("click")' class="btn btn-primary btn-lg">
Close term list
</p>
Extracted terms
<!-- <button title='run test function' onclick="doATest()">
TEST
</button> -->
......@@ -72,37 +67,34 @@
<option value='0'>Candidates only</option>
<!-- <option value='1' selected="selected">Map terms only</option> -->
<option value='1'>Map terms only</option>
<option value='2'>New stopwords only</option>
<option value='2'>Stopwords only</option>
</select>
</div>
</h4>
</div>
<div id="terms_table" class="panel-collapse collapse in no-transition" role="tabpanel">
<div class="panel-body">
<div id="div-table">
<!-- (table id="my-ajax-table") dynamically set by Ngrams_dyna_chart_and_table -->
</div>
<div id="terms_table" class="panel-body">
<div id="div-table">
<!-- (table id="my-ajax-table") dynamically set by Ngrams_dyna_chart_and_table -->
</div>
<!-- under the table -->
<p align="right">
<button id="Save_All" class="btn btn-primary">Save changes permanently</button>
</p>
</div>
</div> <!-- /div panel-collapse -->
<!-- under the table -->
<p align="right">
<button id="Save_All" class="btn btn-primary">Save changes permanently</button>
</p>
</div>
</div> <!-- /div panel -->
</div> <!-- /row with the dynatable panels -->
</div> <!-- /jumbotron -->
<!-- Divs closed by the menu
</div> Alignment
<!--
<button id="ImportList" onclick="GetUserPortfolio();" class="btn btn-warning">
Import a Corpus-List
</button>
</div> container
--!>
-->
</div>
......
......@@ -22,7 +22,7 @@
<center>
Select a time range in the chart with blue bars to zoom in
<p align="center">
<!--<a class="btn btn-xs btn-default" role="button" href="/chart/corpus/{{ corpus.id }}/data.csv">Save</a>--!>
<!--<a class="btn btn-xs btn-default" role="button" href="/chart/corpus/{{ corpus.id }}/data.csv">Save</a>-->
<a class="btn btn-xs btn-default" href="javascript:volumeChart.filterAll();dc.redrawAll();">Reset</a></p>
<div class="clearfix"></div>
......@@ -51,50 +51,42 @@
<div class="container">
<div class="jumbotron">
<div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
<div class="panel panel-body">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#collapseOne">
<p id="corpusdisplayer" onclick='Final_UpdateTable("click")' class="btn btn-primary btn-lg" style="width:200px; margin:0 auto; display:block;">Titles</h2></p>
</a>
</h4>
<!-- search box with custom function in Docs_dyna_chart_and_tables.js -->
<div class="pull-left" style="margin-top:1.85em; font-size: 16px;">
<span class="glyphicon glyphicon-search" aria-hidden="true"></span>
Search:
<input type="search" id="doubleSearch"/>
<span style="font-size:70%;">
<span class="glyphicon glyphicon-filter" aria-hidden="true"></span>
<!-- Used by the #doubleSearch associated function -->
<input title="Search in Titles" id="searchTI" name="searchTI" type="checkbox" checked onclick="return false">TI&nbsp;
<span class="glyphicon glyphicon-filter" aria-hidden="true"></span>
<input title="Search in Abstracts" id="searchAB" name="searchAB" type="checkbox">AB
</span>&nbsp;&nbsp;
<span class="glyphicon glyphicon-filter" aria-hidden="true"></span>
<select id="dupFilter" name="dupFilter">
<option value="filter_all">All</option>
<option value="filter_dupl">Duplicates by Title</option>
</select>
</div>
</div>
<div id="collapseOne" class="panel-collapse collapse no-transition" role="tabpanel">
<div class="panel-body">
<div id="div-table"></div>
<p align="right">
<button id="move2trash" class="btn btn-primary btn-lg" >
<span class="glyphicon glyphicon-trash" aria-hidden="true"></span>
Trash It!
</button>
</p>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
Publications by title
</h4>
<!-- search box with custom function in Docs_dyna_chart_and_tables.js -->
<div class="pull-left" style="margin-top:1.85em; font-size: 16px;">
<span class="glyphicon glyphicon-search" aria-hidden="true"></span>
Search:
<input type="search" id="doubleSearch"/>
<span style="font-size:70%;">
<span class="glyphicon glyphicon-filter" aria-hidden="true"></span>
<!-- Used by the #doubleSearch associated function -->
<input title="Search in Titles" id="searchTI" name="searchTI" type="checkbox" checked onclick="return false">TI&nbsp;
<span class="glyphicon glyphicon-filter" aria-hidden="true"></span>
<input title="Search in Abstracts" id="searchAB" name="searchAB" type="checkbox">AB
</span>&nbsp;&nbsp;
<span class="glyphicon glyphicon-filter" aria-hidden="true"></span>
<select id="dupFilter" name="dupFilter">
<option value="filter_all">All</option>
<option value="filter_dupl">Duplicates by Title</option>
</select>
</div>
</div>
<div class="panel-body">
<div id="div-table"></div>
<p align="right">
<button id="move2trash" class="btn btn-primary btn-lg" >
<span class="glyphicon glyphicon-trash" aria-hidden="true"></span>
Trash It!
</button>
</p>
</div>
</div>
</div>
</div>
<!-- here goes import script js/bootstrap/bootstrap-multiselect.js, mais ca marche pas-->
<script type="text/javascript" src="{% static "js/jquery/dynatable/jquery.dynatable.js" %}"></script>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment