278 lines
12 KiB
HTML
278 lines
12 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="fr">
|
|
<head>
|
|
<!-- Title -->
|
|
<title>Entries</title>
|
|
|
|
<!-- Bootstrap CSS -->
|
|
<link href="bootstrap/css/bootstrap.min.css" rel="stylesheet" media="screen">
|
|
|
|
<!-- Bootstrap datepicker plugin CSS -->
|
|
<link href="datepicker/css/datepicker.css" rel="stylesheet" media="screen">
|
|
|
|
<!-- JQPlot CSS -->
|
|
<link href="jqplot/jquery.jqplot.min.css" rel="stylesheet" type="text/css">
|
|
</head>
|
|
|
|
<body>
|
|
<div class="container-fluid">
|
|
<div class="row-fluid">
|
|
<div class="span12">
|
|
<!-- Navbar with accounts -->
|
|
<div class="navbar navbar-fixed-top">
|
|
<div class="navbar-inner">
|
|
<!-- Title -->
|
|
<a class="brand" href="#"> Comptes</a>
|
|
|
|
<!-- Account list -->
|
|
<div class="nav" data-bind="foreach: accounts, value: account">
|
|
<div class="btn-group">
|
|
<!-- Account button -->
|
|
<button class="btn btn-nav" data-bind="css: { active: $data === $root.account() }, click: $parent.selectAccount"><span data-bind="text: name"></span> (<span data-bind="text: current, css: {'text-warning': $data.current < 0 && $data.current >= $data.authorized_overdraft, 'text-error': $data.current < $data.authorized_overdraft }"></span> / <span data-bind="text: pointed"></span>)</button>
|
|
<!-- Dropdown button -->
|
|
<button class="btn btn-nav dropdown-toggle" data-toggle="dropdown"><b class="caret"></b></button>
|
|
|
|
<!-- Dropdown menu -->
|
|
<ul class="dropdown-menu">
|
|
<li><a href="#" data-bind="click: $root.editAccount">Modifier</a></li>
|
|
<li><a href="#" data-bind="click: $root.removeAccount">Supprimer</a></li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- New account button -->
|
|
<div class="btn btn-nav">
|
|
<a data-bind="click: $root.addAccount" href="#"><i class="icon-plus"></i></a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Navbar with the months of the selected account -->
|
|
<div class="navbar navbar-fixed-bottom">
|
|
<div class="navbar-inner">
|
|
<ul data-bind="foreach: months()" class="nav">
|
|
<li data-bind="css: {'active': $data == $root.month()}"><a href="#" data-bind="click: $parent.selectMonth"><span data-bind="text: $data.year"></span>-<span data-bind="text: $data.month"></span></a></li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Emtpy row with top margin to avoid data under the fixed top navbar -->
|
|
<div class="row-fluid" style="margin-top: 46px"></div>
|
|
|
|
<!-- Chart row -->
|
|
<div class="row-fluid">
|
|
<!-- Sold evolution chart placeholder -->
|
|
<div class="span8">
|
|
<div id="entries-chart-placeholder" data-bind="chart: $root.entriesChart"></div>
|
|
</div>
|
|
|
|
<!-- Expense category piechart -->
|
|
<div class="span4">
|
|
<div id="expense-categories-chart-placeholder" data-bind="pieChart: $root.expenseCategoriesChart"></div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Message placeholder -->
|
|
<div class="row-fluid">
|
|
<div id="message-placeholder"></div>
|
|
</div>
|
|
|
|
<!-- Row with entry table -->
|
|
<div class="row-fluid">
|
|
<table class="table table-striped table-condensed table-hover">
|
|
<!-- Head of the table containing column headers and size -->
|
|
<thead>
|
|
<tr>
|
|
<th style="width: 100px">Date de valeur</th>
|
|
<!--<th style="width: 100px">Date de l'op.</th>-->
|
|
<th>Libellé de l'opération</th>
|
|
<th style="width: 50px">Montant</th>
|
|
<th style="width: 50px">Solde</th>
|
|
<th style="width: 100px">Catégorie</th>
|
|
<th style="width: 60px">Actions</th>
|
|
</tr>
|
|
</thead>
|
|
|
|
<!-- Body of the table containing the entries -->
|
|
<tbody data-bind="template:{name: templateToUse, foreach: entries}"></tbody>
|
|
</table>
|
|
</div>
|
|
|
|
<!-- Emtpy row with bottom margin to avoid data undur the fixed bottom navbar -->
|
|
<div class="row-fluid" style="margin-bottom: 21px"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Confirm entry removal modal dialog -->
|
|
<div id="remove-confirm" class="modal hide fade">
|
|
<!-- Dialog header with title -->
|
|
<div class="modal-header">
|
|
<h3>Confirmer la suppression</h3>
|
|
</div>
|
|
|
|
<!-- Dialog body -->
|
|
<div class="modal-body">
|
|
<p>Confirmez-vous la suppression de cette entrée ?</p>
|
|
</div>
|
|
|
|
<!-- Dialog footer with buttons -->
|
|
<div class="modal-footer">
|
|
<a href="#" class="btn btn-primary" data-dismiss="modal" aria-hidden="true">Non</a>
|
|
<a href="#" class="btn" data-bind="click: confirmRemove">Oui</a>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Confirm account removal modal dialog -->
|
|
<div id="remove-account-confirm" class="modal hide fade">
|
|
<!-- Dialog header with title -->
|
|
<div class="modal-header">
|
|
<h3>Confirmer la suppression</h3>
|
|
</div>
|
|
|
|
<!-- Dialog body -->
|
|
<div class="modal-body">
|
|
<p>Confirmez-vous la suppression de ce compte ?</p>
|
|
</div>
|
|
|
|
<!-- Dialog footer with buttons -->
|
|
<div class="modal-footer">
|
|
<a href="#" class="btn btn-primary" data-dismiss="modal" aria-hidden="true">Non</a>
|
|
<a href="#" class="btn" data-bind="click: confirmAccountRemove">Oui</a>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Account edit modal dialog -->
|
|
<div id="edit-account" class="modal hide fade">
|
|
<!-- Dialog header with title -->
|
|
<div class="modal-header">
|
|
<h3>Éditer le compte</h3>
|
|
</div>
|
|
|
|
<!-- Dialog body -->
|
|
<div class="modal-body">
|
|
<form class="form-horizontal" data-bind="with: editingAccount">
|
|
<div class="control-group">
|
|
<!-- Account name field -->
|
|
<label class="control-label" for="inputName">Nom du compte</label>
|
|
<div class="controls">
|
|
<input type="text" id="inputName" data-bind="value: name"></input>
|
|
</div>
|
|
|
|
<!-- Authorized overdraft field -->
|
|
<label class="control-label" for="inputAuthorizedOverdraft">Découvert authorisé</label>
|
|
<div class="controls">
|
|
<input type="text" id="inputAuthorizedOverdraft" data-bind="value: authorized_overdraft"></input>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
|
|
<!-- Dialog footer with buttons -->
|
|
<div class="modal-footer">
|
|
<a href="#" class="btn btn-primary" data-bind="click: saveAccount">OK</a>
|
|
<a href="#" class="btn" data-bind="click: cancelEditAccount">Annuler</a>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Displayed item template -->
|
|
<script id="itemsTmpl" type="text/html">
|
|
<tr data-bind="css: { 'warning': sold() < 0 && sold() >= $root.account().authorized_overdraft(), 'error': sold() < $root.account().authorized_overdraft() }">
|
|
<td data-bind="text: operation_date"></td>
|
|
|
|
<td data-bind="text: label"></td>
|
|
|
|
<td data-bind="text: value, css: {'text-error': value() < 0 }"></td>
|
|
|
|
<td data-bind="text: sold, css: {'text-warning': sold() < 0 && sold() >= $root.account().authorized_overdraft(), 'text-error': sold() < $root.account().authorized_overdraft() }"></td>
|
|
|
|
<td data-bind="text: category"></td>
|
|
|
|
<td>
|
|
<div class="btn-group">
|
|
<a class="btn btn-mini" data-bind="click: $root.edit" href="#" title="edit"><i class="icon-edit"></i></a>
|
|
<a class="btn btn-mini" data-bind="click: $root.remove" href="#" title="remove"><i class="icon-trash"></i></a>
|
|
<a class="btn btn-mini" data-bind="css: {'active': pointed}, click: $root.pointEntry" href="#" title="point"><i class="icon-pencil"></i></a>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</script>
|
|
|
|
<!-- New item template -->
|
|
<script id="newTmpl" type="text/html">
|
|
<tr class="form-inline">
|
|
<td><input type="text" class="input-small" data-bind="value: operation_date" data-date-format="yyyy-mm-dd" id="new_operation_date" /></td>
|
|
|
|
<td><input type="text" class="input-xxlarge" data-bind="value: label"/></td>
|
|
|
|
<td><input type="text" class="input-mini" data-bind="value: value"/></td>
|
|
|
|
<td></td>
|
|
|
|
<td><input type="text" class="input-small" data-bind="value: category, typeahead: {source: $root.categories }"/></td>
|
|
|
|
<td>
|
|
<div class="btn-group">
|
|
<a class="btn btn-mini btn-success" data-bind="click: $root.save" href="#" title="Add"><i class="icon-plus"></i></a>
|
|
<a class="btn btn-mini" data-bind="click: $root.cancel" href="#" title="Clear"><i class="icon-remove"></i></a>
|
|
<a class="btn btn-mini" data-bind="css: {'active': pointed}, click: $root.pointEntry" href="#" title="point"><i class="icon-pencil"></i></a>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</script>
|
|
|
|
<!-- Edit item template -->
|
|
<script id="editTmpl" type="text/html">
|
|
<tr class="form-inline" data-bind="css: { 'warning': sold() < 0 && sold() >= $root.account().authorized_overdraft(), 'error': sold() < $root.account().authorized_overdraft() }">
|
|
<td><input type="text" class="input-small" data-bind="value: operation_date" data-date-format="yyyy-mm-dd" id="operation_date" /></td>
|
|
|
|
<td><input type="text" class="input-xxlarge" data-bind="value: label"/></td>
|
|
|
|
<td><input type="text" class="input-mini" data-bind="value: value"/></td>
|
|
|
|
<td data-bind="text: sold, css: {'text-warning': sold() < 0 && sold() >= $root.account().authorized_overdraft(), 'text-error': sold() < $root.account().authorized_overdraft() }"></td>
|
|
|
|
<td><input type="text" class="input-small" data-bind="value: category, typeahead: {source: $root.categories }" /></td>
|
|
|
|
<td>
|
|
<div class="btn-group">
|
|
<a class="btn btn-mini btn-success" data-bind="click: $root.save" href="#" title="Save"><i class="icon-ok"></i></a>
|
|
<a class="btn btn-mini" data-bind="click: $root.cancel" href="#" title="Cancel"><i class="icon-ban-circle"></i></a>
|
|
<a class="btn btn-mini" data-bind="css: {'active': pointed}, click: $root.pointEntry" href="#" title="point"><i class="icon-pencil"></i></a>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</script>
|
|
|
|
<!-- JQuery Javascript library -->
|
|
<script type="text/javascript" src="jquery/jquery.min.js"></script>
|
|
<script type="text/javascript" src="jquery/jquery-migrate.min.js"></script>
|
|
|
|
<!-- Bootstrap Javascript library -->
|
|
<script type="text/javascript" src="bootstrap/js/bootstrap.min.js"></script>
|
|
<!-- Bootstrap datepicker module -->
|
|
<script type="text/javascript" src="datepicker/js/bootstrap-datepicker.js"></script>
|
|
|
|
<!-- Knockoutjs.com Javascript library -->
|
|
<script type="text/javascript" src="knockout/knockout.min.js"></script>
|
|
<script type="text/javascript" src="knockout/knockout-mapping.min.js"></script>
|
|
|
|
<!-- JQPlot Javascript library and needed modules -->
|
|
<script type="text/javascript" src="jqplot/jquery.jqplot.js"></script>
|
|
<script type="text/javascript" src="jqplot/plugins/jqplot.dateAxisRenderer.js"></script>
|
|
<script type="text/javascript" src="jqplot/plugins/jqplot.categoryAxisRenderer.min.js"></script>
|
|
<script type="text/javascript" src="jqplot/plugins/jqplot.canvasTextRenderer.min.js"></script>
|
|
<script type="text/javascript" src="jqplot/plugins/jqplot.canvasAxisTickRenderer.min.js"></script>
|
|
<script type="text/javascript" src="jqplot/plugins/jqplot.pieRenderer.min.js"></script>
|
|
<script type="text/javascript" src="jqplot/plugins/jqplot.highlighter.min.js"></script>
|
|
<script type="text/javascript" src="jqplot/plugins/jqplot.canvasOverlay.min.js"></script>
|
|
|
|
<!-- Custom Javascript library for date manipulation -->
|
|
<script type="text/javascript" src="js/date.js"></script>
|
|
|
|
<!-- Custom Javascript library for entries -->
|
|
<script type="text/javascript" src="js/entries.js"></script>
|
|
</body>
|
|
</html>
|
|
|