summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--db/queries.py17
-rw-r--r--db/schema.sql8
-rwxr-xr-ximporter.py3
-rw-r--r--web/static/css/search.ccss5
-rw-r--r--web/static/js/kill.js2
-rw-r--r--web/static/js/search.js27
-rw-r--r--web/templates/search.html8
7 files changed, 52 insertions, 18 deletions
diff --git a/db/queries.py b/db/queries.py
index 7ad56ff..a770667 100644
--- a/db/queries.py
+++ b/db/queries.py
@@ -3,12 +3,21 @@ import operator
import db
def search(q):
+ like_str = '{}%'.format(q)
with db.cursor() as c:
+ alliances = db.query(c, '''
+ SELECT DISTINCT alliance_id, alliance_name FROM characters
+ WHERE alliance_name LIKE ? LIMIT 25
+ ''', like_str)
corps = db.query(c, '''
SELECT DISTINCT corporation_id, corporation_name FROM characters
- WHERE corporation_name LIKE ?
- ''', '%{}%'.format(q))
- return {'corporations': corps}
+ WHERE corporation_name LIKE ? LIMIT 25
+ ''', like_str)
+ chars = db.query(c, '''
+ SELECT DISTINCT character_id, character_name FROM characters
+ WHERE character_name LIKE ? LIMIT 25
+ ''', like_str)
+ return {'alliances': alliances, 'corporations': corps, 'characters': chars}
def corporation(corp_id):
with db.cursor() as c:
@@ -20,7 +29,7 @@ def corporation(corp_id):
JOIN kill_costs ON kill_costs.kill_id = kills.kill_id
JOIN eve.mapSolarSystems ON solar_system_id = solarSystemID
JOIN eve.mapRegions ON mapSolarSystems.regionID = mapRegions.regionID
- WHERE corporation_id = ?
+ WHERE corporation_id = ? LIMIT 100
''', corp_id)
kill_ids = list(map(operator.itemgetter('kill_id'), kills))
char_rows = db.query(c, '''
diff --git a/db/schema.sql b/db/schema.sql
index 3c632a9..af21bf5 100644
--- a/db/schema.sql
+++ b/db/schema.sql
@@ -30,7 +30,13 @@ CREATE TABLE `characters` (
`security_status` float DEFAULT NULL,
`weapon_type_id` int DEFAULT NULL,
PRIMARY KEY (`id`),
- CONSTRAINT `fk_char_km` FOREIGN KEY (`kill_id`) REFERENCES `kills` (`kill_id`)
+ CONSTRAINT `fk_char_km` FOREIGN KEY (`kill_id`) REFERENCES `kills` (`kill_id`),
+ INDEX `character_id` (`character_id`),
+ INDEX `character_name` (`character_name`),
+ INDEX `alliance_id` (`alliance_id`),
+ INDEX `alliance_name` (`alliance_name`),
+ INDEX `corporation_id` (`corporation_id`),
+ INDEX `corporation_name` (`corporation_name`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
CREATE TABLE `items` (
diff --git a/importer.py b/importer.py
index 7aa582b..2ce4877 100755
--- a/importer.py
+++ b/importer.py
@@ -18,6 +18,9 @@ def insert_kill(c, kill):
print('duplicate:', kill['killID'])
return
raise
+ except TypeError:
+ print(kill)
+ raise
victim = kill['victim']
parambatch = [(
diff --git a/web/static/css/search.ccss b/web/static/css/search.ccss
new file mode 100644
index 0000000..9f6aa70
--- /dev/null
+++ b/web/static/css/search.ccss
@@ -0,0 +1,5 @@
+#wrapper:
+ padding: 20px
+
+h2:
+ margin-top: 0
diff --git a/web/static/js/kill.js b/web/static/js/kill.js
index baac084..88c07c7 100644
--- a/web/static/js/kill.js
+++ b/web/static/js/kill.js
@@ -178,7 +178,7 @@ window.addEvent('domready', function() {
ykill.portrait(char['weapon_type_id'], char['weapon_name'], 'type', '_32.png')
);
tr.grab(td);
- tr.grab(new Element('td').appendText(char['damage']));
+ tr.grab(new Element('td').appendText(char['damage'].toLocaleString()));
table.grab(tr);
}
diff --git a/web/static/js/search.js b/web/static/js/search.js
index 1bb2d51..7b72526 100644
--- a/web/static/js/search.js
+++ b/web/static/js/search.js
@@ -1,15 +1,26 @@
window.addEvent('domready', function() {
document.title += ' - search';
ykill.api('/search' + document.location.search, function(results) {
- var corps = $('corps');
- results.corporations.each(function(corp) {
- corps.adopt(
- new Element('a', {
- 'html': corp.corporation_name,
- 'href': '/corporation/' + corp.corporation_id,
- }),
- new Element('br')
+ var wrapper = $('wrapper');
+ Object.each(results, function(list, key) {
+ if (!list.length)
+ return;
+ var div = new Element('div').grab(
+ new Element('h2', {'html': key[0].toUpperCase() + key.substr(1)})
);
+ var key_singular = key.substr(0, key.length-1)
+ var name_key = key_singular + '_name';
+ var id_key = key_singular + '_id';
+ list.each(function(entity) {
+ div.adopt(
+ new Element('a', {
+ 'html': entity[name_key],
+ 'href': '/' + key_singular + '/' + entity[id_key],
+ }),
+ new Element('br')
+ );
+ });
+ wrapper.grab(div);
});
});
});
diff --git a/web/templates/search.html b/web/templates/search.html
index d84c5da..7373287 100644
--- a/web/templates/search.html
+++ b/web/templates/search.html
@@ -4,9 +4,9 @@
<script src="/static/js/search.js"></script>
{% end %}
-{% block main %}
-
-<h2>Corporations</h2>
-<div id="corps"></div>
+{% block css %}
+ <link rel="stylesheet" type="text/css" href="/css/search.css" />
+{% end %}
+{% block main %}
{% end %}