Fixed ordering view.

This commit is contained in:
benni 2011-06-13 16:23:56 +02:00
parent adbe93f39e
commit f3773314a7
6 changed files with 417 additions and 291 deletions

View file

@ -0,0 +1,43 @@
<script>
//<![CDATA[
$(function() {
<% if Foodsoft.config[:tolerance_is_costly]
for i in 0...@price.size %>
addData(<%= @price[i] %>,
<%= @unit[i] %>,
<%= @price[i] * (@tolerance[i] + @quantity[i])%>,
<%= @others_quantity[i] %>,
<%= @others_tolerance[i] %>,
<%= @used_quantity[i] %>,
0);
<% end
else
for j in 0...@price.size -%>
addData(<%= @price[j] %>,
<%= @unit[j] %>,
<%= @price[j] * @quantity[j]%>,
<%= @others_quantity[j] %>,
<%= @others_tolerance[j] %>,
<%= @used_quantity[j] %>,
0);
<% end
end%>
setGroupBalance(<%= @availableFunds %>);
// localization
setDecimalSeparator(",");
// configuration
setToleranceBehaviour(<%= Foodsoft.config[:tolerance_is_costly] %>);
// initialize javascript
updateBalance();
// show article info on row hover
<%#*$$('tbody tr').observer('hover', function() {%>
<%#*});%>
});
//]]>
</script>

View file

@ -0,0 +1,88 @@
- content_for :head do
= render 'data'
= render :partial => 'order_head'
- form_tag(:action => 'saveOrder', :id => @order) do
.single_column{:style => "clear:both;margin-bottom:7em;"}
.box_title
%h2 Artikel
.column_content
%table#order.list
%thead
%tr
%th Name
%th{:style => "width:13px;"}
%th{:style => "width:4.5em;"} Preis
%th{:style => "width:4.5em;"} Einheit
%th{:style => "width:70px;"} Fehlende Einheiten
%th#col_required Menge
- if not @order.stockit?
%th#col_tolerance Toleranz
%th{:style => "width:15px;"} Summe
%tbody
- total = 0
- i = 0
- @articles_grouped_by_category.each do |category, order_articles|
%tr{:style => "background-color:#EFEFEF"}
%td{:style => "text-align:left"}
%b= h category
%td{:colspan => "9"}
- order_articles.each do |order_article|
- if Foodsoft.config[:tolerance_is_costly]
- article_total = @price[i] * (@tolerance[i] + @quantity[i])
- else
- article_total = @price[i] * @quantity[i]
- total += article_total
%tr{:class => "#{cycle('even', 'odd', :name => 'articles')} order-article", :valign => "top"}
%td.name= order_article.article.name
%td= h order_article.article.origin
%td= number_to_currency(@price[i])
%td= order_article.article.unit
%td
%span{:id => "missing_units_#{i}"}
- if @order.stockit?
- order_article.article.quantity_available
- else
- missing_units = @unit[i] - (((@quantity[i] + @others_quantity[i]) % @unit[i]) + @tolerance[i] + @others_tolerance[i])
- missing_units < 0 ? 0 : missing_units
%td.quantity
%input{:id => "q_#{i}", :name => "ordered[#{order_article.id}][quantity]", :size => "2", :type => "hidden", :value => @quantity[i]}/
%span.used{:id => "q_used_#{i}"}= @used_quantity[i]
+
%span.unused{:id => "q_unused_#{i}"}= @quantity[i] - @used_quantity[i]
= button_to_function('+', "increaseQuantity(#{i})")
= button_to_function('-', "decreaseQuantity(#{i})")
- unless @order.stockit?
%td.tolerance
%input{:id => "t_#{i}", :name => "ordered[#{order_article.id}][tolerance]", :size => "2", :type => "hidden", :value => @tolerance[i]}/
- if (@unit[i] > 1)
%span.used{:id => "t_used_#{i}"}= @used_tolerance[i]
+
%span.unused{:id => "t_unused_#{i}"}= @tolerance[i] - @used_tolerance[i]
= button_to_function('+', "increaseTolerance(#{i})")
= button_to_function('-', "decreaseTolerance(#{i})")
%td{:id => "td_price_#{i}", :style => "text-align:right; padding-right:10px; width:4em"}
%span{:id => "price_#{i}_display"}= number_to_currency(article_total, :unit => "")
.article-info
%h3= order_article.article.name
.right
Volle Gebinde:
%span{:id => "units_#{i}"}= order_article.units_to_order
%br/
Gesamt-Einheiten:
%span{:id => "q_total_#{i}"}= @quantity[i] + @others_quantity[i]
%br/
Gesamt-Toleranz:
%span{:id => "t_total_#{i}"}= @tolerance[i] + @others_tolerance[i]
%br/
.left
Hersteller: #{order_article.article.manufacturer}
%br/
Gebinde: #{@order.stockit? ? order_article.article.quantity_available : @unit[i]} * #{h order_article.article.unit}
%br/
Notiz: #{order_article.article.note}
%br/
- i = i + 1
= render "order_footer", :total => total

View file

@ -1,131 +0,0 @@
<%= render :partial => 'order_head' %>
<% form_tag(:action => 'saveOrder', :id => @order) do %>
<div class="single_column" style="clear:both;margin-bottom:7em;">
<div class="box_title">
<h2>Artikel</h2>
</div>
<div class="column_content">
<table id="order" class="list">
<thead>
<tr>
<th>Name</th>
<th style="width:13px;"></th>
<th style="width:4.5em;">Preis</th>
<th style="width:4.5em;">Einheit</th>
<th style="width:70px;">Fehlende Einheiten</th>
<th id="col_required">Menge</th>
<% if not @order.stockit? -%>
<th id="col_tolerance">Toleranz</th>
<% end %>
<th style="width:15px;">Summe</th>
</tr>
</thead>
<tbody>
<%-
total = 0
i = 0
@articles_grouped_by_category.each do |category, order_articles|
-%>
<tr style="background-color:#EFEFEF">
<td style="text-align:left"><b><%=h category %></b></td>
<td colspan="9"></td>
</tr>
<%-
order_articles.each do |order_article|
if Foodsoft.config[:tolerance_is_costly]
article_total = @price[i] * (@tolerance[i] + @quantity[i])
else
article_total = @price[i] * @quantity[i]
end
total += article_total
-%>
<tr class="<%= cycle('even', 'odd', :name => 'articles') %> order-article" valign="top">
<td class="name"><%= order_article.article.name %></td>
<td><%=h order_article.article.origin %></td>
<td><%= number_to_currency(@price[i]) %></td>
<td><%= order_article.article.unit %></td>
<td>
<span id="missing_units_<%= i %>">
<%= if @order.stockit?
order_article.article.quantity_available
else
missing_units = @unit[i] - (((@quantity[i] + @others_quantity[i]) % @unit[i]) + @tolerance[i] + @others_tolerance[i])
missing_units < 0 ? 0 : missing_units
end %>
</span>
</td>
<td class="quantity">
<input type="hidden" id="q_<%= i %>" name="<%= "ordered[#{order_article.id}][quantity]" %>" value="<%= @quantity[i] %>" size="2" />
<span id="q_used_<%= i %>" class="used"><%= @used_quantity[i] %></span> +
<span id="q_unused_<%= i %>" class="unused"><%= @quantity[i] - @used_quantity[i] %></span>
<%= button_to_function('+', "increaseQuantity(#{i})") %>
<%= button_to_function('-', "decreaseQuantity(#{i})") %>
</td>
<% if not @order.stockit? -%>
<td class="tolerance">
<input type="hidden" id="t_<%= i %>" name="<%= "ordered[#{order_article.id}][tolerance]" %>" value="<%= @tolerance[i] %>" size="2" />
<% if (@unit[i] > 1) -%>
<span id="t_used_<%= i %>" class="used"><%= @used_tolerance[i] %></span> +
<span id="t_unused_<%= i %>" class="unused"><%= @tolerance[i] - @used_tolerance[i] %></span>
<%= button_to_function('+', "increaseTolerance(#{i})") %>
<%= button_to_function('-', "decreaseTolerance(#{i})") %>
<% end -%>
</td>
<% end %>
<td id="td_price_<%= i %>" style="text-align:right; padding-right:10px; width:4em"><span id="price_<%= i %>_display"><%= number_to_currency(article_total, :unit => "") %></span> €
<div class="article-info">
<h3><%= order_article.article.name -%></h3>
<div class="right">
Volle Gebinde: <span id="units_<%= i %>"><%= order_article.units_to_order %></span><br/>
Gesamt-Einheiten: <span id="q_total_<%= i %>"><%= @quantity[i] + @others_quantity[i] %></span><br/>
Gesamt-Toleranz: <span id="t_total_<%= i %>"><%= @tolerance[i] + @others_tolerance[i] %></span><br/>
</div>
<div class="left">
Hersteller: <%= order_article.article.manufacturer -%><br />
Gebinde: <%= @order.stockit? ? order_article.article.quantity_available : @unit[i] %> * <%=h order_article.article.unit %><br/>
Notiz: <%= order_article.article.note -%><br />
</div>
</div>
</td>
</tr>
<%- i = i + 1
end
end -%>
</tbody>
</table>
</div>
</div>
<%= render "order_footer", :total => total %>
<% end %>
<script type="text/javascript">
//<![CDATA[
// preset data
<% if Foodsoft.config[:tolerance_is_costly]
for i in 0...@price.size -%>
addData(<%= @price[i] %>, <%= @unit[i] %>, <%= @price[i] * (@tolerance[i] + @quantity[i])%>, <%= @others_quantity[i] %>, <%= @others_tolerance[i] %>, <%= @used_quantity[i] %>, 0);
<% end
else
for j in 0...@price.size -%>
addData(<%= @price[j] %>, <%= @unit[j] %>, <%= @price[j] * @quantity[j]%>, <%= @others_quantity[j] %>, <%= @others_tolerance[j] %>, <%= @used_quantity[j] %>, 0);
<% end
end%>
setGroupBalance(<%= @availableFunds %>);
// localization
setDecimalSeparator(",");
// configuration
setToleranceBehaviour(<%= Foodsoft.config[:tolerance_is_costly] %>);
// initialize javascript
updateBalance();
// show article info on row hover
<%#*$$('tbody tr').observer('hover', function() {%>
<%#*});%>
//]]>
</script>

View file

@ -14,13 +14,13 @@ var toleranceIsCostly = true; // default tolerance behaviour
var price = new Array(); var price = new Array();
var unit = new Array(); // items per order unit var unit = new Array(); // items per order unit
var itemTotal = new Array(); // total item price var itemTotal = new Array(); // total item price
var quantityOthers = new Array(); var quantityOthers = new Array();
var toleranceOthers = new Array(); var toleranceOthers = new Array();
var itemsAllocated = new Array(); // how many items the group has been allocated and should definitely get var itemsAllocated = new Array(); // how many items the group has been allocated and should definitely get
var quantityAvailable = new Array(); // stock_order. how many items are currently in stock var quantityAvailable = new Array(); // stock_order. how many items are currently in stock
function setDecimalSeparator(character) { function setDecimalSeparator(character) {
decimalSeparator = character; decimalSeparator = character;
} }
function setToleranceBehaviour(value) { function setToleranceBehaviour(value) {
@ -28,147 +28,147 @@ function setToleranceBehaviour(value) {
} }
function setGroupBalance(amount) { function setGroupBalance(amount) {
groupBalance = amount; groupBalance = amount;
} }
function addData(itemPrice, itemUnit, itemSubtotal, itemQuantityOthers, itemToleranceOthers, allocated, available) { function addData(itemPrice, itemUnit, itemSubtotal, itemQuantityOthers, itemToleranceOthers, allocated, available) {
i = price.length; i = price.length;
price[i] = itemPrice; price[i] = itemPrice;
unit[i] = itemUnit; unit[i] = itemUnit;
itemTotal[i] = itemSubtotal; itemTotal[i] = itemSubtotal;
quantityOthers[i] = itemQuantityOthers; quantityOthers[i] = itemQuantityOthers;
toleranceOthers[i] = itemToleranceOthers; toleranceOthers[i] = itemToleranceOthers;
itemsAllocated[i] = allocated; itemsAllocated[i] = allocated;
quantityAvailable[i] = available; quantityAvailable[i] = available;
} }
function increaseQuantity(item) { function increaseQuantity(item) {
value = Number($('q_' + item).value) + 1; value = Number($('#q_' + item).val()) + 1;
update(item, value, $('t_' + item).value); update(item, value, $('#t_' + item).val());
} }
function decreaseQuantity(item) { function decreaseQuantity(item) {
value = Number($('q_' + item).value) - 1; value = Number($('#q_' + item).val()) - 1;
if (value >= 0) { if (value >= 0) {
update(item, value, $('t_' + item).value); update(item, value, $('#t_' + item).val());
} }
} }
function increaseTolerance(item) { function increaseTolerance(item) {
value = Number($('t_' + item).value) + 1; value = Number($('#t_' + item).val()) + 1;
update(item, $('q_' + item).value, value); update(item, $('#q_' + item).val(), value);
} }
function decreaseTolerance(item) { function decreaseTolerance(item) {
value = Number($('t_' + item).value) - 1; value = Number($('#t_' + item).val()) - 1;
if (value >= 0) { if (value >= 0) {
update(item, $('q_' + item).value, value); update(item, $('#q_' + item).val(), value);
} }
} }
function update(item, quantity, tolerance) { function update(item, quantity, tolerance) {
// set modification flag // set modification flag
modified = true modified = true
// update hidden input fields // update hidden input fields
$('q_' + item).value = quantity; $('#q_' + item).val(quantity);
$('t_' + item).value = tolerance; $('#t_' + item).val(tolerance);
// calculate how many units would be ordered in total // calculate how many units would be ordered in total
units = calcUnits(unit[item], quantityOthers[item] + Number(quantity), toleranceOthers[item] + Number(tolerance)); units = calcUnits(unit[item], quantityOthers[item] + Number(quantity), toleranceOthers[item] + Number(tolerance));
if (unitCompletedFromTolerance(unit[item], quantityOthers[item] + Number(quantity), toleranceOthers[item] + Number(tolerance))) { if (unitCompletedFromTolerance(unit[item], quantityOthers[item] + Number(quantity), toleranceOthers[item] + Number(tolerance))) {
$('units_' + item).update('<span style="color:grey">' + String(units) + "</span>"); $('#units_' + item).html('<span style="color:grey">' + String(units) + "</span>");
} else { } else {
$('units_' + item).update(String(units)); $('#units_' + item).html(String(units));
} }
// update used/unused quantity // update used/unused quantity
available = Math.max(0, units * unit[item] - quantityOthers[item]); available = Math.max(0, units * unit[item] - quantityOthers[item]);
q_used = Math.min(available, quantity); q_used = Math.min(available, quantity);
// ensure that at least the amout of items this group has already been allocated is used // ensure that at least the amout of items this group has already been allocated is used
if (quantity >= itemsAllocated[item] && q_used < itemsAllocated[item]) { if (quantity >= itemsAllocated[item] && q_used < itemsAllocated[item]) {
q_used = itemsAllocated[item]; q_used = itemsAllocated[item];
} }
$('q_used_' + item).update(String(q_used)); $('#q_used_' + item).html(String(q_used));
$('q_unused_' + item).update(String(quantity - q_used)); $('#q_unused_' + item).html(String(quantity - q_used));
$('q_total_' + item).update(String(Number(quantity) + quantityOthers[item])); $('#q_total_' + item).html(String(Number(quantity) + quantityOthers[item]));
// update used/unused tolerance // update used/unused tolerance
if (unit[item] > 1) { if (unit[item] > 1) {
available = Math.max(0, available - q_used - toleranceOthers[item]); available = Math.max(0, available - q_used - toleranceOthers[item]);
t_used = Math.min(available, tolerance); t_used = Math.min(available, tolerance);
$('t_used_' + item).update(String(t_used)); $('#t_used_' + item).html(String(t_used));
$('t_unused_' + item).update(String(tolerance - t_used)); $('#t_unused_' + item).html(String(tolerance - t_used));
$('t_total_' + item).update(String(Number(tolerance) + toleranceOthers[item])); $('#t_total_' + item).html(String(Number(tolerance) + toleranceOthers[item]));
} }
// update total price // update total price
if(toleranceIsCostly == true) { if(toleranceIsCostly == true) {
itemTotal[item] = price[item] * (Number(quantity) + Number(tolerance)); itemTotal[item] = price[item] * (Number(quantity) + Number(tolerance));
} else { } else {
itemTotal[item] = price[item] * (Number(quantity)); itemTotal[item] = price[item] * (Number(quantity));
} }
$('price_' + item + '_display').update(asMoney(itemTotal[item])); $('#price_' + item + '_display').html(asMoney(itemTotal[item]));
// update missing units
missing_units = unit[item] - (((quantityOthers[item] + Number(quantity)) % unit[item]) + Number(tolerance) + toleranceOthers[item])
if (missing_units < 0) {
missing_units = 0;
}
$('#missing_units_' + item).html(String(missing_units));
// update missing units
missing_units = unit[item] - (((quantityOthers[item] + Number(quantity)) % unit[item]) + Number(tolerance) + toleranceOthers[item])
if (missing_units < 0) {
missing_units = 0;
}
$('missing_units_' + item).update(String(missing_units));
// update balance // update balance
updateBalance(); updateBalance();
} }
function increaseStockQuantity(item) { function increaseStockQuantity(item) {
value = Number($('q_' + item).value) + 1; value = Number($('#q_' + item).val()) + 1;
if (value <= quantityAvailable[item] - quantityOthers[item]) { if (value <= quantityAvailable[item] - quantityOthers[item]) {
updateStockQuantity(item, value); updateStockQuantity(item, value);
} }
} }
function decreaseStockQuantity(item) { function decreaseStockQuantity(item) {
value = Number($('q_' + item).value) - 1; value = Number($('#q_' + item).val()) - 1;
if (value >= 0) { if (value >= 0) {
updateStockQuantity(item, value); updateStockQuantity(item, value);
} }
} }
function updateStockQuantity(item, quantity) { function updateStockQuantity(item, quantity) {
// set modification flag // set modification flag
modified = true modified = true
// update hidden input fields // update hidden input fields
$('q_' + item).value = quantity; $('#q_' + item).val() = quantity;
// update used/unused quantity // update used/unused quantity
available = Math.max(0, quantityAvailable[item] - quantityOthers[item]); available = Math.max(0, quantityAvailable[item] - quantityOthers[item]);
q_used = Math.min(available, quantity); q_used = Math.min(available, quantity);
// ensure that at least the amout of items this group has already been allocated is used // ensure that at least the amout of items this group has already been allocated is used
if (quantity >= itemsAllocated[item] && q_used < itemsAllocated[item]) { if (quantity >= itemsAllocated[item] && q_used < itemsAllocated[item]) {
q_used = itemsAllocated[item]; q_used = itemsAllocated[item];
} }
$('q_used_' + item).update(String(q_used)); $('#q_used_' + item).html(String(q_used));
$('q_total_' + item).update(String(Number(quantity) + quantityOthers[item])); $('#q_total_' + item).html(String(Number(quantity) + quantityOthers[item]));
// update total price // update total price
itemTotal[item] = price[item] * (Number(quantity)); itemTotal[item] = price[item] * (Number(quantity));
$('price_' + item + '_display').update(asMoney(itemTotal[item])); $('#price_' + item + '_display').html(asMoney(itemTotal[item]));
// update balance // update balance
updateBalance(); updateBalance();
} }
function asMoney(amount) { function asMoney(amount) {
return String(amount.toFixed(2)).replace(/\./, ","); return String(amount.toFixed(2)).replace(/\./, ",");
} }
function calcUnits(unitSize, quantity, tolerance) { function calcUnits(unitSize, quantity, tolerance) {
units = Math.floor(quantity / unitSize) units = Math.floor(quantity / unitSize)
remainder = quantity % unitSize remainder = quantity % unitSize
return units + ((remainder > 0) && (remainder + tolerance >= unitSize) ? 1 : 0) return units + ((remainder > 0) && (remainder + tolerance >= unitSize) ? 1 : 0)
} }
function unitCompletedFromTolerance(unitSize, quantity, tolerance) { function unitCompletedFromTolerance(unitSize, quantity, tolerance) {
@ -181,25 +181,25 @@ function updateBalance() {
total = 0; total = 0;
for (i = 0; i < itemTotal.length; i++) { for (i = 0; i < itemTotal.length; i++) {
total += itemTotal[i]; total += itemTotal[i];
} }
$('total_price').update(asMoney(total)); $('#total_price').html(asMoney(total));
balance = groupBalance - total; balance = groupBalance - total;
$('new_balance').update(asMoney(balance)); $('#new_balance').html(asMoney(balance));
$('total_balance').value = asMoney(balance); $('#total_balance').val(asMoney(balance));
// determine bgcolor and submit button state according to balance // determine bgcolor and submit button state according to balance
if (balance < 0) { if (balance < 0) {
bgcolor = '#FF0000'; bgcolor = '#FF0000';
$('submit_button').disabled = true; $('#submit_button').disabled = true;
} else { } else {
bgcolor = ''; bgcolor = '';
$('submit_button').disabled = false; $('#submit_button').disabled = false;
} }
// update bgcolor // update bgcolor
for (i = 0; i < itemTotal.length; i++) { for (i = 0; i < itemTotal.length; i++) {
$('td_price_' + i).style.backgroundColor = bgcolor; $('#ltd_price_' + i).css('background-color', bgcolor);
} }
} }
function confirmSwitchOrder() { function confirmSwitchOrder() {
return (!modified || confirm('Änderungen an dieser Bestellung gehen verloren, wenn zu einer anderen Bestellung gewechselt wird.')) return (!modified || confirm('Änderungen an dieser Bestellung gehen verloren, wenn zu einer anderen Bestellung gewechselt wird.'))
} }

View file

@ -1,4 +1,3 @@
/* General rules ... */
body { body {
background-color: white; background-color: white;
color: black; color: black;
@ -81,6 +80,12 @@ option {
span.click-me { span.click-me {
cursor: pointer; } cursor: pointer; }
.left {
float: left; }
.right {
float: right; }
.clear { .clear {
clear: both; } clear: both; }
@ -88,6 +93,9 @@ span.click-me {
color: grey; color: grey;
font-size: 0.9em; } font-size: 0.9em; }
.hidden {
display: none; }
#login { #login {
margin: auto; margin: auto;
width: 27em; width: 27em;
@ -239,6 +247,12 @@ table {
background-color: #ffffc2; } background-color: #ffffc2; }
table tr.click-me { table tr.click-me {
cursor: pointer; } cursor: pointer; }
table tr.ignored {
color: grey; }
table tr.success {
color: green; }
table tr.failed {
color: red; }
table.list tr { table.list tr {
border: 1px solid #e3e3e3; } border: 1px solid #e3e3e3; }
@ -378,28 +392,78 @@ span.total {
table#order { table#order {
text-align: center; } text-align: center; }
table#order input { table#order input {
font-size: 80%; } font-size: 0.9em;
font-weight: bolder;
background-color: #78b74e;
color: white;
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
padding: 0; }
table#order th#col_required, table#order th#col_tolerance { table#order th#col_required, table#order th#col_tolerance {
width: 145px; } width: 140px; }
table#order th#col_packages, table#order th#col_left_units { table#order th#col_packages, table#order th#col_left_units {
width: 50px; } width: 50px; }
table#order td.quantity, table#order td.tolerance {
text-align: right; }
table#order td#col_left_units { table#order td#col_left_units {
color: #ed0606; } color: #ed0606; }
table#order td { table#order td {
padding: 0.6em; } padding: 0.6em; }
table#order td.name, table#order tr.note td { table#order td.name {
text-align: left; text-align: left;
padding-left: 10px; } padding-left: 10px; }
table#order tfoot tr { table#order tfoot tr {
background-color: #e4eed6; } background-color: #e4eed6; }
table#order tfoot td { table#order tfoot td {
padding-right: 10px; } padding-right: 10px; }
table#order tr.note {
background-color: #fbfbfb; #order-footer, .article-info {
font-size: 0.9em; text-align: left;
border-bottom: 1px solid #dddddd; } z-index: 1;
table#order tr.note td { position: fixed;
padding-left: 20px; } bottom: 0;
background-color: #e4eed6;
border-top: 2px solid #78b74e; }
#order-footer #total-sum, .article-info #total-sum {
width: 22em;
margin: 0.5em 2em 0 0;
float: right; }
#order-footer #total-sum #order-button, .article-info #total-sum #order-button {
margin: 0.5em 0; }
#order-footer #total-sum #order-button input, .article-info #total-sum #order-button input {
background-color: #78b74e;
color: white;
-moz-border-radius: 3px;
-webkit-border-radius: 3px; }
#order-footer #total-sum #order-button input:disabled, .article-info #total-sum #order-button input:disabled {
background-color: red; }
#order-footer {
width: 100%;
right: 0;
left: 0; }
.article-info {
z-index: 2;
width: 45em;
height: 8em;
border: none;
left: 30px; }
.article-info h3 {
text-align: center;
margin: 0;
margin-bottom: 5px;
width: 100%; }
.article-info .right {
width: 35%; }
.article-info .left {
width: 60%; }
tr.order-article .article-info {
display: none; }
tr.order-article:hover .article-info {
display: block; }
#newComment { #newComment {
margin: 1em; } margin: 1em; }
@ -451,24 +515,25 @@ ul.autocomplete .informal {
text-align: center; text-align: center;
margin: 0 10px 10px 0; } margin: 0 10px 10px 0; }
#wiki_content {
border-style: none;
color: black;
line-height: 1.5em; }
.wiki_show, .wiki_version, .wiki_new, .wiki_edit, .wiki_all { .wiki_show, .wiki_version, .wiki_new, .wiki_edit, .wiki_all {
margin-top: 30px; margin-top: 30px;
padding: 10px; } padding: 10px; }
.wiki_show h1, .wiki_version h1, .wiki_new h1, .wiki_edit h1, .wiki_all h1 {
padding-left: 0;
padding-top: 10px;
border-bottom-style: solid; }
.wiki_show .column_content, .wiki_version .column_content, .wiki_new .column_content, .wiki_edit .column_content, .wiki_all .column_content {
margin-bottom: 0; }
#wiki_content { #wiki_content {
border: 1px solid grey;
margin-right: 300px;
padding: 10px;
color: black;
line-height: 1.5em;
min-height: 400px; } min-height: 400px; }
#wiki_content span.editsection { #wiki_content span.editsection {
display: none; } display: none; }
#wiki_content h1 {
padding-left: 0;
padding-top: 10px;
border: none;
margin-bottom: 10px; }
#wiki_content h2, #wiki_content h3, #wiki_content h4, #wiki_content h5, #wiki_content h6 { #wiki_content h2, #wiki_content h3, #wiki_content h4, #wiki_content h5, #wiki_content h6 {
background: transparent none repeat scroll 0 0; background: transparent none repeat scroll 0 0;
border-bottom: 1px solid #aaaaaa; border-bottom: 1px solid #aaaaaa;
@ -529,7 +594,8 @@ a.new_wiki_link {
#sidebar { #sidebar {
float: right; float: right;
width: 290px; } width: 290px;
margin-top: -60px; }
#sidebar #sidebar-links { #sidebar #sidebar-links {
margin-bottom: 18px; margin-bottom: 18px;
text-align: right; } text-align: right; }

View file

@ -6,7 +6,7 @@ $lightGrey: #efefef
$darkGreen: #78b74e $darkGreen: #78b74e
$lightGreen: #e4eed6 $lightGreen: #e4eed6
/* General rules ... */ // General rules ...
body body
:background-color #fff :background-color #fff
:color black :color black
@ -26,17 +26,17 @@ body
:border :border
:width 2px :width 2px
:style solid :style solid
:color $main_red color: $main_red
a, a:visited a, a:visited
:text-decoration underline :text-decoration underline
:color black :color black
a:hover a:hover
:color $main_red color: $main_red
h1, h2 h1, h2
:color $main_red color: $main_red
h1 h1
:font-size 2.2em :font-size 2.2em
@ -46,7 +46,7 @@ h1
:border-bottom :border-bottom
:width 1px :width 1px
:style dotted :style dotted
:color $main_red color: $main_red
h2 h2
:font-size 1.4em :font-size 1.4em
@ -90,14 +90,20 @@ option
span.click-me span.click-me
cursor: pointer cursor: pointer
.left
float: left
.right
float: right
.clear .clear
clear: both clear: both
.description .description
color: grey color: grey
font-size: 0.9em font-size: 0.9em
.hidden
display: none
// ********************************* loginpage // ********************************* loginpage
#login #login
:margin auto :margin auto
@ -118,7 +124,7 @@ span.click-me
#logo #logo
:background $main_red background: $main_red
:height 1.1em :height 1.1em
:width 8em :width 8em
:padding 0 20px :padding 0 20px
@ -130,17 +136,17 @@ span.click-me
:margin 0 :margin 0
a, a:hover a, a:hover
:color white :color white
:background-color $main_red background-color: $main_red
:text-decoration none :text-decoration none
a span a span
:color $main_red color: $main_red
:background #FFF :background #FFF
:padding-right 0.1em :padding-right 0.1em
:font-weight bold :font-weight bold
:border-top :border-top
:width 2px :width 2px
:style dotted :style dotted
:color $main_red color: $main_red
#logininfo #logininfo
:position absolute :position absolute
@ -156,7 +162,7 @@ span.click-me
:color #737272 :color #737272
:font-weight bold :font-weight bold
a:hover a:hover
:color $main_red color: $main_red
// ************************************* box structure // ************************************* box structure
#main #main
@ -264,6 +270,12 @@ table
:background-color #ffffc2 :background-color #ffffc2
tr.click-me tr.click-me
:cursor pointer :cursor pointer
tr.ignored
color: grey
tr.success
color: green
tr.failed
color: red
table.list table.list
//:border 2px solid #78b74e //:border 2px solid #78b74e
@ -278,7 +290,7 @@ table tfoot tr
:padding-top 0.8em :padding-top 0.8em
tr.edit_inline tr.edit_inline
:background-color $hover_yellow background-color: $hover_yellow
td, span td, span
:padding 0.5em 0.2em :padding 0.5em 0.2em
@ -314,7 +326,7 @@ td.closed
td.open td.open
background: url(/images/arrow_down_red.png) no-repeat center left background: url(/images/arrow_down_red.png) no-repeat center left
// ************************************* for edit formulars */ // ************************************* for edit formulars
div.edit_form div.edit_form
:border 2px solid #e3e3e3 :border 2px solid #e3e3e3
:background #f5f5f5 :background #f5f5f5
@ -333,7 +345,7 @@ div.edit_form
:border :border
:width 3px :width 3px
:style solid :style solid
:color $main_red color: $main_red
// ***************************************** other boxes */ // ***************************************** other boxes */
@ -372,7 +384,7 @@ div.box_title
:font-size 1.3em :font-size 1.3em
div.column_content div.column_content
:background $boxContent background: $boxContent
:color black :color black
:padding 10px :padding 10px
margin-bottom: 2em margin-bottom: 2em
@ -419,30 +431,76 @@ span.total
table#order table#order
:text-align center :text-align center
input input
:font-size 80% font-size: 0.9em
font-weight: bolder
background-color: #78B74E
color: #fff
-moz-border-radius: 3px
-webkit-border-radius: 3px
padding: 0
th#col_required, th#col_tolerance th#col_required, th#col_tolerance
:width 145px :width 140px
th#col_packages, th#col_left_units th#col_packages, th#col_left_units
:width 50px :width 50px
td.quantity, td.tolerance
text-align: right
td#col_left_units td#col_left_units
:color #ed0606 :color #ed0606
td td
:padding 0.6em :padding 0.6em
td.name, tr.note td td.name
:text-align left :text-align left
:padding-left 10px :padding-left 10px
tfoot tfoot
tr tr
:background-color $lightGreen background-color: $lightGreen
td td
:padding-right 10px :padding-right 10px
tr.note #order-footer, .article-info
:background-color #FBFBFB text-align: left
:font-size 0.9em z-index: 1
:border-bottom 1px solid #DDDDDD position: fixed
td bottom: 0
:padding-left 20px background-color: #E4EED6
border-top: 2px solid #78B74E
//opacity: 0.95
#total-sum
width: 22em
margin: .5em 2em 0 0
float: right
#order-button
margin: .5em 0
input
background-color: #78B74E
color: #fff
-moz-border-radius: 3px
-webkit-border-radius: 3px
input:disabled
background-color: red
#order-footer
width: 100%
right: 0
left: 0
.article-info
z-index: 2
width: 45em
height: 8em
border: none
left: 30px
h3
text-align: center
margin: 0
margin-bottom: 5px
width: 100%
.right
width: 35%
.left
width: 60%
tr.order-article .article-info
display: none
tr.order-article:hover .article-info
display: block
// ********* Comments // ********* Comments
#newComment #newComment
:margin 1em :margin 1em
@ -498,27 +556,28 @@ ul.autocomplete
background-color: #fff background-color: #fff
text-align: center text-align: center
margin: 0 10px 10px 0 margin: 0 10px 10px 0
// *** wiki // *** wiki
#wiki_content
border-style: none
color: black
line-height: 1.5em
.wiki_show, .wiki_version, .wiki_new, .wiki_edit, .wiki_all .wiki_show, .wiki_version, .wiki_new, .wiki_edit, .wiki_all
margin-top: 30px margin-top: 30px
padding: 10px padding: 10px
.column_content
#wiki_content
border: 1px solid grey
margin-right: 300px
padding: 10px
color: black
line-height: 1.5em
min-height: 400px
span.editsection
display: none
h1 h1
padding-left: 0 padding-left: 0
padding-top: 10px padding-top: 10px
border: none border-bottom:
margin-bottom: 10px :style solid
.column_content
margin-bottom: 0
#wiki_content
min-height: 400px
span.editsection
display: none
h2, h3, h4, h5, h6 h2, h3, h4, h5, h6
background: transparent none repeat scroll 0 0 background: transparent none repeat scroll 0 0
border-bottom: 1px solid #AAAAAA border-bottom: 1px solid #AAAAAA
@ -570,13 +629,14 @@ a.new_wiki_link
height: 1em height: 1em
color: #ED0606 color: #ED0606
a a
:color $main_red color: $main_red
:text-decoration none text-decoration: none
a:hover a:hover
:text-decoration underline text-decoration: underline
#sidebar #sidebar
float: right float: right
width: 290px width: 290px
margin-top: -60px
#sidebar-links #sidebar-links
margin-bottom: 18px margin-bottom: 18px
text-align: right text-align: right