<commit_before>{% extends "base.html" %}
{% load thing_extras %}

{% block title %}BPCalc{% endblock %}

{% block extra_head %}
  <script type="text/javascript">
  $(document).ready(function() {
    // call the tablesorter plugin
    $("#build-table").tablesorter({
      'headers': {
        1: { sorter: false },
        2: { sorter: false },
        4: { sorter: false },
        5: { sorter: 'human' },
        6: { sorter: false },
        7: { sorter: 'human' },
        10: { sorter: false },
        11: { sorter: false },
        12: { sorter: 'human' },
        13: { sorter: false },
        14: { sorter: false },
      },
      'sortList': [[8, 1]],
    });
  });

  function filter_profit() {
    var keep = [];
    var min_profit = $('#profit').attr('value');
    $("#build-table tbody tr").each(function(i, tr) {
      var profit_td = $(tr).children()[8];
      var profit = parseFloat($(profit_td).text().split('%')[0]);
      if (profit >= min_profit)
        keep.push('bpi=' + $(tr).attr('data_bpi'));
    });
    
    var parsed = parseUri(window.location.href);
    var days = parsed.queryKey.days;
    window.location = parsed.path + '?days=' + days + '&' + keep.join('&');
  }

  function filter_movement() {
    var keep = [];
    var max_movement = $('#movement').attr('value');
    $("#build-table tbody tr").each(function(i, tr) {
      var movement_td = $(tr).children()[13];
      var movement = parseFloat($(movement_td).text().split('%')[0]);
      if (movement < max_movement)
        keep.push('bpi=' + $(tr).attr('data_bpi'));
    });
    
    var parsed = parseUri(window.location.href);
    var days = parsed.queryKey.days;
    window.location = parsed.path + '?days=' + days + '&' + keep.join('&');
  }

  function filter_slots() {
    var keep = [];
    var slots = $('#slots').attr('value');
    $("#build-table tbody tr").each(function(i, tr) {
      if (i < slots) {
        keep.push('bpi=' + $(tr).attr('data_bpi'));
      }
    });
    
    var parsed = parseUri(window.location.href);
    var days = parsed.queryKey.days;
    window.location = parsed.path + '?days=' + days + '&' + keep.join('&');
  }
  
  function filter_checked() {
    var keep = [];
    $('#build-table tbody tr td input').each(function(i, input) {
      if (!input.checked) {
        keep.push('bpi=' + $(input).closest('tr').attr('data_bpi'));
      }
    });
    
    var parsed = parseUri(window.location.href);
    var days = parsed.queryKey.days;
    window.location = parsed.path + '?days=' + days + '&' + keep.join('&');
  }
  </script>
{% endblock %}

{% block content %}
      <div class="row-fluid">
        <div class="span12">
          <h2>Building</h2>
          <p>
            <a href="#" onclick="filter_profit();">filter profit &lt;</a> <input id="profit" type="text" value="5" class="input-mini">
            <span class="divider">/</span>
            <a href="#" onclick="filter_movement();">filter movement ></a> <input id="movement" type="text" value="50" class="input-mini">
            <span class="divider">/</span>
            <a href="#" onclick="filter_slots();">limit slots to</a> <input id="slots" type="text" value="50" class="input-mini">
            <span class="divider">/</span>
            <a href="#" onclick="filter_checked();">filter checked</a>
          </p>
          <table id="build-table" class="table table-striped table-bordered table-condensed">
            <thead>
              <tr>
                <td colspan="3"></td>
                <td colspan="3" class="head">From Buys</td>
                <td colspan="3" class="head">From Sells</td>
                <td colspan="3" class="head">Sell</td>
                <td colspan="2" class="head">Volume</td>
                <td></td>
              </tr>
              <tr class="c">
                <th class="l">Name</th>
                <th>Runs</th>
                <th>Time</th>
                <th>Total m3</th>
                <th>Build</th>
                <th>Profit</th>
                <th>P%</th>
                <th>Build</th>
                <th>Profit</th>
                <th>P%</th>
                <th>Built</th>
                <th>Sell</th>
                <th>Total</th>
                <th>Week</th>
                <th>%</th>
                <th></th>
              </tr>
            </thead>
            <tbody>
              {% for bpi in bpis %}
              <tr class="r" data_bpi="{{ bpi.id }}">
                <td class="l">{{ bpi.blueprint.item }}</td>
                <td>{{ bpi.z_runs|commas }}</td>
                <td>{{ bpi.z_total_time|duration }}</td>
                <td>{{ bpi.z_total_m3|commas }} m<sup>3</sup></td>
                <td>{{ bpi.z_buy_build|humanize }}</td>
                <td>{{ bpi.z_buy_profit|humanize|balance }}</td>
                <td>{{ bpi.z_buy_profit_per|spanif:"neg < 7" }}%</td>
                <td>{{ bpi.z_sell_build|humanize }}</td>
                <td>{{ bpi.z_sell_profit|humanize|balance }}</td>
                <td>{{ bpi.z_sell_profit_per|spanif:"neg < 7" }}%</td>
                <td>{{ bpi.z_built|commas }}</td>
                <td>{{ bpi.blueprint.item.sell_price|humanize }}</td>
                <td>{{ bpi.z_total_sell|humanize }}</td>
                <td>{{ bpi.z_volume_week|humanize }}</td>
                <td>{{ bpi.z_volume_percent|spanif:"neg > 10" }}%</td>
                <td><input type="checkbox"></td>
              </tr>
              {% empty %}
              <tr>
                <td colspan="14">No valid blueprint IDs were provided.</td>
              </tr>
              {% endfor %}
            </tbody>
            <tfoot>
              <tr class="r bold">
                <td colspan="3">{{ bpis|length }} slots required</td>
                <td>{{ bpi_totals.buy_build|humanize }}</td>
                <td>{{ bpi_totals.buy_profit|humanize }}</td>
                <td>{{ bpi_totals.buy_profit_per|spanif:"neg < 7" }}%</td>
                <td>{{ bpi_totals.sell_build|humanize }}</td>
                <td>{{ bpi_totals.sell_profit|humanize }}</td>
                <td>{{ bpi_totals.sell_profit_per|spanif:"neg < 7" }}%</td>
                <td colspan="2"></td>
                <td>{{ bpi_totals.total_sell|humanize }}</td>
                <td colspan="2"></td>
              </tr>
            </tfoot>
          </table>
        </div>
      </div>
      
      <div class="row-fluid">
        <div class="span3">&nbsp;</div>
        <div class="span6">
          <h2>Components</h2>
          <table class="table table-striped table-bordered table-condensed">
            <thead>
              <tr class="c">
                <th class="l">Name</th>
                <th>#</th>
                <th>Volume</th>
                <th>Buy</th>
                <th>Sell</th>
              </tr>
            </thead>
            <tbody>
              {% for component in components %}
              <tr class="r">
                <td class="l"><span class="dot" onclick="CCPEVE.showMarketDetails({{ component.item.id }});">{{ component.item.name }}</span></td>
                <td>{{ component.amount|commas }}</td>
                <td>{{ component.volume|commas }} m<sup>3</sup></td>
                <td>{{ component.buy_total|commas }}</td>
                <td>{{ component.sell_total|commas }}</td>
              </tr>
              {% empty %}
              <tr>
                <td colspan="5">No valid blueprint IDs were provided.</td>
              </tr>
              {% endfor %}
            </tbody>
            <tfoot>
              <tr class="r bold">
                <td colspan="2"></td>
                <td>{{ comp_totals.volume|commas }} m<sup>3</sup></td>
                <td>{{ comp_totals.buy_total|humanize }}</td>
                <td>{{ comp_totals.sell_total|humanize }}</td>
              </tr>
            </tfoot>
          </table>
        </div>
      </div>
{% endblock %}
<commit_msg>Twiddle-de-dee. I need to fix my dev environment.<commit_after>{% extends "base.html" %}
{% load thing_extras %}

{% block title %}BPCalc{% endblock %}

{% block extra_head %}
  <script type="text/javascript">
  $(document).ready(function() {
    // call the tablesorter plugin
    $("#build-table").tablesorter({
      'headers': {
        1: { sorter: false },
        2: { sorter: false },
        3: { sorter: 'human' },
        4: { sorter: false },
        5: { sorter: 'human' },
        6: { sorter: false },
        7: { sorter: 'human' },
        10: { sorter: false },
        11: { sorter: false },
        12: { sorter: 'human' },
        13: { sorter: false },
        14: { sorter: false },
      },
      'sortList': [[8, 1]],
    });
  });

  function filter_profit() {
    var keep = [];
    var min_profit = $('#profit').attr('value');
    $("#build-table tbody tr").each(function(i, tr) {
      var profit_td = $(tr).children()[8];
      var profit = parseFloat($(profit_td).text().split('%')[0]);
      if (profit >= min_profit)
        keep.push('bpi=' + $(tr).attr('data_bpi'));
    });
    
    var parsed = parseUri(window.location.href);
    var days = parsed.queryKey.days;
    window.location = parsed.path + '?days=' + days + '&' + keep.join('&');
  }

  function filter_movement() {
    var keep = [];
    var max_movement = $('#movement').attr('value');
    $("#build-table tbody tr").each(function(i, tr) {
      var movement_td = $(tr).children()[13];
      var movement = parseFloat($(movement_td).text().split('%')[0]);
      if (movement < max_movement)
        keep.push('bpi=' + $(tr).attr('data_bpi'));
    });
    
    var parsed = parseUri(window.location.href);
    var days = parsed.queryKey.days;
    window.location = parsed.path + '?days=' + days + '&' + keep.join('&');
  }

  function filter_slots() {
    var keep = [];
    var slots = $('#slots').attr('value');
    $("#build-table tbody tr").each(function(i, tr) {
      if (i < slots) {
        keep.push('bpi=' + $(tr).attr('data_bpi'));
      }
    });
    
    var parsed = parseUri(window.location.href);
    var days = parsed.queryKey.days;
    window.location = parsed.path + '?days=' + days + '&' + keep.join('&');
  }
  
  function filter_checked() {
    var keep = [];
    $('#build-table tbody tr td input').each(function(i, input) {
      if (!input.checked) {
        keep.push('bpi=' + $(input).closest('tr').attr('data_bpi'));
      }
    });
    
    var parsed = parseUri(window.location.href);
    var days = parsed.queryKey.days;
    window.location = parsed.path + '?days=' + days + '&' + keep.join('&');
  }
  </script>
{% endblock %}

{% block content %}
      <div class="row-fluid">
        <div class="span12">
          <h2>Building</h2>
          <p>
            <a href="#" onclick="filter_profit();">filter profit &lt;</a> <input id="profit" type="text" value="5" class="input-mini">
            <span class="divider">/</span>
            <a href="#" onclick="filter_movement();">filter movement ></a> <input id="movement" type="text" value="50" class="input-mini">
            <span class="divider">/</span>
            <a href="#" onclick="filter_slots();">limit slots to</a> <input id="slots" type="text" value="50" class="input-mini">
            <span class="divider">/</span>
            <a href="#" onclick="filter_checked();">filter checked</a>
          </p>
          <table id="build-table" class="table table-striped table-bordered table-condensed">
            <thead>
              <tr>
                <td colspan="3"></td>
                <td colspan="3" class="head">From Buys</td>
                <td colspan="3" class="head">From Sells</td>
                <td colspan="3" class="head">Sell</td>
                <td colspan="2" class="head">Volume</td>
                <td></td>
              </tr>
              <tr class="c">
                <th class="l">Name</th>
                <th>Runs</th>
                <th>Time</th>
                <th>Total m3</th>
                <th>Build</th>
                <th>Profit</th>
                <th>P%</th>
                <th>Build</th>
                <th>Profit</th>
                <th>P%</th>
                <th>Built</th>
                <th>Sell</th>
                <th>Total</th>
                <th>Week</th>
                <th>%</th>
                <th></th>
              </tr>
            </thead>
            <tbody>
              {% for bpi in bpis %}
              <tr class="r" data_bpi="{{ bpi.id }}">
                <td class="l">{{ bpi.blueprint.item }}</td>
                <td>{{ bpi.z_runs|commas }}</td>
                <td>{{ bpi.z_total_time|duration }}</td>
                <td>{{ bpi.z_total_m3|humanize }}</td>
                <td>{{ bpi.z_buy_build|humanize }}</td>
                <td>{{ bpi.z_buy_profit|humanize|balance }}</td>
                <td>{{ bpi.z_buy_profit_per|spanif:"neg < 7" }}%</td>
                <td>{{ bpi.z_sell_build|humanize }}</td>
                <td>{{ bpi.z_sell_profit|humanize|balance }}</td>
                <td>{{ bpi.z_sell_profit_per|spanif:"neg < 7" }}%</td>
                <td>{{ bpi.z_built|commas }}</td>
                <td>{{ bpi.blueprint.item.sell_price|humanize }}</td>
                <td>{{ bpi.z_total_sell|humanize }}</td>
                <td>{{ bpi.z_volume_week|humanize }}</td>
                <td>{{ bpi.z_volume_percent|spanif:"neg > 10" }}%</td>
                <td><input type="checkbox"></td>
              </tr>
              {% empty %}
              <tr>
                <td colspan="14">No valid blueprint IDs were provided.</td>
              </tr>
              {% endfor %}
            </tbody>
            <tfoot>
              <tr class="r bold">
                <td colspan="3">{{ bpis|length }} slots required</td>
                <td>{{ bpi_totals.buy_build|humanize }}</td>
                <td>{{ bpi_totals.buy_profit|humanize }}</td>
                <td>{{ bpi_totals.buy_profit_per|spanif:"neg < 7" }}%</td>
                <td>{{ bpi_totals.sell_build|humanize }}</td>
                <td>{{ bpi_totals.sell_profit|humanize }}</td>
                <td>{{ bpi_totals.sell_profit_per|spanif:"neg < 7" }}%</td>
                <td colspan="2"></td>
                <td>{{ bpi_totals.total_sell|humanize }}</td>
                <td colspan="2"></td>
              </tr>
            </tfoot>
          </table>
        </div>
      </div>
      
      <div class="row-fluid">
        <div class="span3">&nbsp;</div>
        <div class="span6">
          <h2>Components</h2>
          <table class="table table-striped table-bordered table-condensed">
            <thead>
              <tr class="c">
                <th class="l">Name</th>
                <th>#</th>
                <th>Volume</th>
                <th>Buy</th>
                <th>Sell</th>
              </tr>
            </thead>
            <tbody>
              {% for component in components %}
              <tr class="r">
                <td class="l"><span class="dot" onclick="CCPEVE.showMarketDetails({{ component.item.id }});">{{ component.item.name }}</span></td>
                <td>{{ component.amount|commas }}</td>
                <td>{{ component.volume|commas }} m<sup>3</sup></td>
                <td>{{ component.buy_total|commas }}</td>
                <td>{{ component.sell_total|commas }}</td>
              </tr>
              {% empty %}
              <tr>
                <td colspan="5">No valid blueprint IDs were provided.</td>
              </tr>
              {% endfor %}
            </tbody>
            <tfoot>
              <tr class="r bold">
                <td colspan="2"></td>
                <td>{{ comp_totals.volume|commas }} m<sup>3</sup></td>
                <td>{{ comp_totals.buy_total|humanize }}</td>
                <td>{{ comp_totals.sell_total|humanize }}</td>
              </tr>
            </tfoot>
          </table>
        </div>
      </div>
{% endblock %}

{'fraction_non_alphanumeric': 0.19326040487866214, 'fraction_numerical': 0.0074185841820696595, 'mean_word_length': 1.6983884648006786, 'pattern_counts': {'":': 0, '<': 425, '<?xml version=': 0, '>': 419, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7362696', 'n_tokens_mistral': 5398, 'n_tokens_neox': 5040, 'n_words': 950}