Skip to content

Commit

Permalink
implemented ignore colors
Browse files Browse the repository at this point in the history
  • Loading branch information
appletomato committed Dec 7, 2019
1 parent 77869f2 commit 7f3b9aa
Show file tree
Hide file tree
Showing 4 changed files with 114 additions and 11 deletions.
33 changes: 31 additions & 2 deletions src/app/boardGUI.js
Original file line number Diff line number Diff line change
Expand Up @@ -665,15 +665,44 @@ module.exports = function (window, board) {
addEventListenerOnChangeToSearchInfo(input)
}


// search controls
var searchControl = document.createElement('div')
searchControl.id = "searchControl"
searchControl.classList.add("searchControl")

var ignoreColorDiv = document.createElement('div')
ignoreColorDiv.classList.add("searchControlDiv")

var ignoreColorDesc = document.createElement('div')
ignoreColorDesc.innerHTML = "Ignore colors"

var ignoreColorOpt = document.createElement('input')
ignoreColorOpt.type = "checkbox"
ignoreColorOpt.name = "ignoreColor"


ignoreColorOpt.checked = (searchParams.ignoreColor == false) ? false : true
ignoreColorOpt.id = "searchParam_ignoreColor"
addEventListenerOnChangeToSearchInfo(ignoreColorOpt)


ignoreColorDiv.appendChild(ignoreColorOpt)
ignoreColorDiv.appendChild(ignoreColorDesc)

searchControl.appendChild(searchInfoTable)
searchControl.appendChild(ignoreColorDiv)

searchInfoContainer.appendChild(searchStatusBar)
searchInfoContainer.appendChild(searchInfoTable)
searchInfoContainer.appendChild(searchControl)
container.appendChild(searchInfoContainer)


// hide searchbar if not searching
if (!searchParams.displaySearchBar) {
searchInfoTable.classList.add("display__none")
searchControl.classList.add("display__none")
}

}


Expand Down
47 changes: 44 additions & 3 deletions src/app/db.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,8 @@ module.exports = function () {
white: "",
black: "",
event: "",
tags: [""]
tags: [""],
ignoreColor: true,
}

module.searchParams = searchParams
Expand Down Expand Up @@ -111,35 +112,75 @@ module.exports = function () {
if (searchParams.searching) {

var query = {}
var altQuery = {}

if (searchParams.fen) {
query.positions = searchParams.fen
altQuery.positions = searchParams.fen
}
if (searchParams.white) {
query.white = searchParams.white
altQuery.black = searchParams.white
}
if (searchParams.black) {
query.black = searchParams.black
altQuery.white = searchParams.black
}
if (searchParams.event) {
query.event = searchParams.event
altQuery.event = searchParams.event
}

var queries = []
var altQueryNeeded = false

if (Object.keys(query).length > 0) {

queries = [db.games.where(query).primaryKeys()]

if (searchParams.ignoreColor == true &&
(searchParams.white || searchParams.black)) {

console.log("add query with reversed color")
altQueryNeeded = true
queries.push(db.games.where(altQuery).primaryKeys())
}
}


if (searchParams.tags[0] != "") {
for (var i = 0, len = searchParams.tags.length; i < len; i++) {
for (let i = 0, len = searchParams.tags.length; i < len; i++) {
queries.push(db.games.where('tags').equals(searchParams.tags[i]).primaryKeys())
}
}

return Promise.all(queries).then(keys => {

// Find all common primary keys
var intersection = tools.intersect([...keys])
var queryKeyArray = []
var altQueryKeyArray = []

for (let i = 0, len = keys.length; i < len; i++) {

if (altQueryNeeded && i == 1) {
continue
}

queryKeyArray.push(keys[i])
}

var intersection = tools.intersect(queryKeyArray)

if (altQueryNeeded) {
for (let i = 1, len = keys.length; i < len; i++) {
altQueryKeyArray.push(keys[i])
}

intersection = intersection.concat(tools.intersect(altQueryKeyArray))
}



searchParams.queryCount = intersection.length

// Look up the actual objects from these primary keys
Expand Down
25 changes: 20 additions & 5 deletions src/app/window.js
Original file line number Diff line number Diff line change
Expand Up @@ -221,9 +221,17 @@ module.exports = function (window) {

var key = evt.detail.key.replace(/^searchParam_/, '')
var value = evt.detail.value
db.searchParams[key] = value
var needsRedraw = true

db.searchParams['pageNum'] = 0

if (key == "ignoreColor") {
db.searchParams['ignoreColor'] = (db.searchParams['ignoreColor'] == true) ? false : true
} else {
db.searchParams[key] = value
}


if (db.searchParams['fen'] == "" &&
db.searchParams['white'] == "" &&
db.searchParams['black'] == "" &&
Expand All @@ -232,13 +240,20 @@ module.exports = function (window) {
db.searchParams['tags'][0] == "") {

db.searchParams['searching'] = false

if (key == "ignoreColor") {
needsRedraw = false
}

} else {
db.searchParams['searching'] = true
}

console.log("set gui.searchParams", db.searchParams)
drawDBEntries()

if (needsRedraw) {
drawDBEntries()
}

})

Expand Down Expand Up @@ -861,15 +876,15 @@ module.exports = function (window) {

function toggleSearchBar() {

var searchInfoTable = window.document.getElementById("searchInfoTable")
var searchControl = window.document.getElementById("searchControl")
if (db.searchParams.displaySearchBar) {
db.searchParams.displaySearchBar = false
searchInfoTable.classList.add("display__none")
searchControl.classList.add("display__none")
db.searchParams.searching = false

} else {
db.searchParams.displaySearchBar = true
searchInfoTable.classList.remove("display__none")
searchControl.classList.remove("display__none")
}

db.resetSearchParams()
Expand Down
20 changes: 19 additions & 1 deletion src/css/common.css
Original file line number Diff line number Diff line change
Expand Up @@ -876,6 +876,24 @@ div.awesomplete {

/* search info */

.searchControl {
margin-bottom: 24px;
}

.searchControlDiv input {
cursor: pointer;
}

.searchControlDiv {
display: flex;
flex-direction: row;
color: var(--base6-color);
}

.searchControlDiv > div {
padding-left: 8px;
}

.searchInfoContainer {
font-size: 90%;
padding: 8px 12px;
Expand All @@ -893,7 +911,7 @@ div.awesomplete {
}

.searchInfoTable {
margin-bottom: 16px;
margin-bottom: 8px;
border-collapse: collapse;
width: 100%;
color: var(--base6-color);
Expand Down

0 comments on commit 7f3b9aa

Please sign in to comment.