Skip to content
This repository has been archived by the owner on Jun 15, 2021. It is now read-only.

Commit

Permalink
Merge pull request #29 from KryptedGaming/december_release
Browse files Browse the repository at this point in the history
December release
  • Loading branch information
porowns authored Dec 22, 2020
2 parents 1dd2da7 + 2a531e6 commit d36ab3a
Show file tree
Hide file tree
Showing 9 changed files with 128 additions and 82 deletions.
2 changes: 1 addition & 1 deletion django_eveonline_doctrine_manager/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

__title__ = 'EVE Online Doctrine Manager'
__package_name__ = 'django-eveonline-doctrine-manager'
__version__ = '1.3.0'
__version__ = '1.3.1'
__author__ = 'Krypted Gaming'
__license__ = 'MIT License'
__copyright__ = 'Copyright © 2017-2020 Krypted Gaming. All rights reserved.'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -109,42 +109,8 @@ <h3 class="card-title">Skill Plans</h3>
</div>
</div>

<div class="row">
<div class="col-md-12">
<div class="card card-success card-outline">
<div class="card-header">
<h3 class="card-title">Fittings</h3>
</div>
<div id="{{object.pk}}" class="card-body doctrine-id">
<table class="table table-bordered table-striped dataTable">
<thead>
<th></th>
<th>Fitting Name</th>
<th>Actions</th>
</thead>
<tbody>
{% for fitting in object.fittings %}
<tr>
<td class="text-center">
<img src="https://images.evetech.net/types/{{fitting.ship_id}}/icon?size=32" class="img-circle" alt="Avatar"
width="32px" title="{{character.character.name}}">
<td>

{{fitting.name}}
</td>
<td>
<div style="display: flex;" class="btn-group">
<a style="flex: 1;" class="btn btn-info fa fa-eye" href="{% url 'django-eveonline-doctrine-manager-fittings-detail' fitting.pk %}"></a>
</div>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
</div>
</div>
{% include 'django_eveonline_doctrine_manager/adminlte/fittings/components/fitting_table.html' %}

{% endblock %}

{% block scripts %}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
<div class="row">
<div class="col-md-12">
<div class="card card-success card-outline">
<div class="card-header">
<h3 class="card-title">Fittings</h3>
</div>
<div id="{{object.pk}}" class="card-body doctrine-id">
<table class="table table-bordered table-striped dataTable">
<thead>
<th></th>
<th>Roles</th>
<th>Fitting Name</th>
<th>Actions</th>
</thead>
<tbody>
{% for fitting in object.fittings %}
<tr>
<td class="text-center">
<img src="https://images.evetech.net/types/{{fitting.ship_id}}/icon?size=32" class="img-circle" alt="Avatar"
width="32px" title="{{character.character.name}}">
<td>
{% for role in fitting.roles.all %}
<span class="badge badge-{{role.color}}">{{role}}</span>
{% endfor %}
</td>
<td>
{{fitting.name}}
</td>
<td>
<div style="display: flex;" class="btn-group">
<a style="flex: 1;" class="btn btn-info fa fa-eye" href="{% url 'django-eveonline-doctrine-manager-fittings-detail' fitting.pk %}"></a>
</div>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
</div>
</div>
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@ <h3 class="card-title">
{% endblock %}

{% block scripts %}
<script src="{% static 'adminlte/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.all.min.js' %}"></script>
<script>
$(function () {
// Summernote
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,15 @@ <h6>Filter by Tag</h5>
</select>
</select>
</div>
<div class="col">
<h6>Filter by Doctrine</h5>
<select id="doctrineFilter" class="select2 w-100 p-3" name="states[]" multiple="multiple">
{% for doctrine in doctrines %}
<option value="{{doctrine}}">{{doctrine}}</option>
{% endfor %}
</select>
</select>
</div>
</div>

</div>
Expand All @@ -67,26 +76,36 @@ <h6>Filter by Tag</h5>
<td class="text-center">
<img class="img-circle" src="https://images.evetech.net/types/{{fitting.ship_id}}/icon?size=32"
title="{{fitting.ship_name}}" width="32px">
<!-- Hiding Roles in Column -->
<div hidden>
{% for role in fitting.roles.all %}
<span class="badge badge-{{role.color}}">
{{role}}
</span>
{% endfor %}

</div>
<!-- Hiding Tags in Column -->
<div hidden>
{% for tag in fitting.tags.all %}
<p hidden>
{{tag}}
</p>
{% endfor %}
</div>
</td>
<!-- Hiding Doctrines in Column -->
<div hidden>
{% for doctrine in fitting.doctrines.all %}
<p hidden>
{{doctrine.name}}
</p>
{% endfor %}
</div>
</td>

<td>
<p>
{{fitting.name}}
</p>

</td>

<td >
Expand Down Expand Up @@ -118,27 +137,28 @@ <h6>Filter by Tag</h5>
<script>
$.fn.dataTable.ext.search.push(
function( settings, data, dataIndex ) {
let roleSelectData = $('#roleFilter').select2('data')

let tagSelectData = $('#tagFilter').select2('data')


let selectData = roleSelectData.concat(tagSelectData)
let roleList = $('#roleFilter').select2('data').map(function(item) { return item.id; });
let tagList = $('#tagFilter').select2('data').map(function(item) { return item.id; });
let doctrineList= $('#doctrineFilter').select2('data').map(function(item) { return item.id; });

let roleRegexCheck = new RegExp(roleList.join("|"));
let tagRegexCheck = new RegExp(tagList.join("|"));
let doctrineRegexCheck = new RegExp(doctrineList.join("|"));

if (selectData.length === 0) {
console.log('default true')
return true;
if (!roleRegexCheck.test(data[0])) {
return false;
}

let includes = true;
for (selection in selectData) {

let role = selectData[selection];
if (!data[0].includes(role.id)) {
includes = false;
}

if (!tagRegexCheck.test(data[0])) {
return false;
}
return includes;

if (!doctrineRegexCheck.test(data[0])) {
return false;
}

return true;
}
);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

{% block title %}
Fittings
<button class="btn btn-default float-right" onclick="toggleStocked(this)">Show Stocked</button>

{% endblock %}

{% block breadcrumbs %}
Expand All @@ -16,20 +16,22 @@
{% block content %}
<div class="card card-primary card-outline">
<div class="card-header">
<h3 class="card-title">
<h3 class="card-title float-left">
Market Rule Table

</h3>

</div>
<div class="card-body">
<button class="btn btn-default" onclick="toggleStocked(this)">Show Stocked</button>
<table class="table table-bordered table-striped dataTable">
<thead>
<th></th>
<th>Fitting</th>
<th class="d-none d-sm-block">Location</th>
<th>Desired Stock</th>
<th>Current Stock</th>
<th class="d-none d-sm-block">Actions</th>
<th class="d-none d-sm-table-cell">Location</th>
<th class="d-none d-sm-table-cell">Desired</th>
<th>Current</th>
<th class="d-none d-sm-table-cell">Actions</th>

</thead>
<tbody>
Expand All @@ -44,11 +46,13 @@ <h3 class="card-title">
src="https://images.evetech.net/types/{{fitting_rule.fitting.ship_id}}/icon?size=32"
title="{{fitting_rule.fitting.ship_name}}" width="24px"></td>
<td>{{fitting_rule.fitting.name}}</td>
<td class="d-none d-sm-block">{{fitting_rule.structure.name}}</td>
<td>{{fitting_rule.requested_stock}}</td>
<td class="d-none d-sm-table-cell">
<p>{{fitting_rule.structure.name}}</p>
</td>
<td class="d-none d-sm-table-cell">{{fitting_rule.requested_stock}}</td>
<td>{{fitting_rule.current_stock}}</td>

<td class="d-none d-sm-block">
<td class="d-none d-sm-table-cell">
{% if fitting_rule.current_stock < fitting_rule.requested_stock %}
<button type="button" class="btn btn-warning btn-block" data-toggle="modal" data-target="#modal_{{fitting_rule.pk}}">
Restock
Expand Down Expand Up @@ -103,11 +107,11 @@ <h4 class="modal-title" id="myModalLabel">Restock {{fitting_rule.fitting.name}}<
async function toggleStocked(button) {
if (button.innerHTML === "Show Stocked") {
button.innerHTML = "Hide Stocked"
button.classList = "btn btn-warning float-right"
button.classList = "btn btn-warning"
}
else {
button.innerHTML = "Show Stocked"
button.classList = "btn btn-default float-right"
button.classList = "btn btn-default"
}
stockedRows = document.querySelectorAll('.stocked')
stockedRows.forEach(element => {
Expand All @@ -116,7 +120,7 @@ <h4 class="modal-title" id="myModalLabel">Restock {{fitting_rule.fitting.name}}<

}
async function pullContracts(button) {
button.classList = "btn btn-danger float-right"
button.classList = "btn btn-danger"
button.disabled = true
button.innerHTML = '<i class="fa fa-1x fa-spinner fa-spin" aria-hidden="true"></i>'
location.href = "{% url 'django-eveonline-doctrine-manager-fittings-stock' %}";
Expand Down
25 changes: 18 additions & 7 deletions django_eveonline_doctrine_manager/utilities/fittings.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,10 @@ def parse_eft_format(fitting):
'cargo': [],
}

regex_pattern = "(?P<type_name>[[A-Za-z0-9\-_' ]*(?<![x0-9]))(?P<loaded>,.*)?(?P<quantity>x[0-9]*)?"
regex_pattern = "(?P<type_name>[[A-Za-z0-9\._' -]*(?<![x0-9]))(?P<loaded>,.*)?(?P<quantity>x[0-9]*)?"
quantity_regex_pattern = "^.*(x[0-9]*)$"
loaded_regex_pattern = ".*(,.*)"


fitting = fitting.fitting.splitlines()
fitting.reverse()
Expand Down Expand Up @@ -45,12 +48,20 @@ def parse_eft_format(fitting):
if 'Empty' in line or not line:
continue

results = re.search(regex_pattern, line)
try:
type_name = results.group('type_name').rstrip()
quantity = results.group('quantity')
except IndexError as e:
pass # just means no quantity
# strip quantity
if re.match(quantity_regex_pattern, line):
quantity = re.search(quantity_regex_pattern, line).group(1)
line = line[:-len(quantity)]
else:
quantity = "x1"

if re.match(loaded_regex_pattern, line):
loaded = re.search(loaded_regex_pattern, line).group(1)
line = line[:-len(loaded)]
else:
loaded = None

type_name = line.rstrip()
type_id = resolve_type_name_to_type_id(type_name)
category = resolve_type_id_to_category_name(type_id)
if case == 4 and category == 'Drone':
Expand Down
12 changes: 8 additions & 4 deletions django_eveonline_doctrine_manager/views/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,9 +52,11 @@ def get_character_fittings(request):
try:
character = EveCharacter.objects.get(external_id=request.GET['external_id'])
report = character.evecharacterdoctrinereport.get_report()['fittings']
except Exception as e:
logger.warning(e)
except EveCharacter.evecharacterdoctrinereport.RelatedObjectDoesNotExist as e:
return HttpResponse(status=404)
except Exception as e:
logger.exception(e)
return HttpResponse(status=500)

if user.has_perm("django_eveonline_doctrine_manager.view_evecharacterdoctrinereport") or character.token.user == user:
fittings = []
Expand All @@ -81,9 +83,11 @@ def get_character_doctrines(request):
character = EveCharacter.objects.get(
external_id=request.GET['external_id'])
report = character.evecharacterdoctrinereport.get_report()['doctrines']
except Exception as e:
logger.warning(e)
except EveCharacter.evecharacterdoctrinereport.RelatedObjectDoesNotExist as e:
return HttpResponse(status=404)
except Exception as e:
logger.exception(e)
return HttpResponse(status=500)

if user.has_perm("django_eveonline_doctrine_manager.view_evecharacterdoctrinereport") or character.token.user == user:
objects = []
Expand Down
3 changes: 2 additions & 1 deletion django_eveonline_doctrine_manager/views/fittings.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
from django.views.generic.list import ListView
from django.views.generic.detail import DetailView
from django.contrib import messages
from django_eveonline_doctrine_manager.models import EveFitting, EveDoctrineRole, EveDoctrineManagerTag
from django_eveonline_doctrine_manager.models import EveFitting, EveDoctrineRole, EveDoctrineManagerTag, EveDoctrine
from django_eveonline_doctrine_manager.forms import EveFittingForm
from django.urls import reverse_lazy
from django.shortcuts import redirect
Expand All @@ -27,6 +27,7 @@ def get_context_data(self,**kwargs):
context = super(FittingListView,self).get_context_data(**kwargs)
context['roles'] = EveDoctrineRole.objects.all()
context['tags'] = EveDoctrineManagerTag.objects.all()
context['doctrines'] = EveDoctrine.objects.all()
return context

class FittingCreateView(FormView):
Expand Down

0 comments on commit d36ab3a

Please sign in to comment.