Moisson-Rouge/index.html
2022-06-01 14:44:29 +02:00

354 lines
20 KiB
HTML

<!DOCTYPE html>
<html lang="fr" ng-app="app">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/x-icon" href="favicon.ico">
<title>Moisson Rouge - Dofus Ocre</title>
<link rel="stylesheet" href="style.css" />
<style>
body {
padding-top: 60px;
}
.label {
margin-right: 5px;
}
tbody tr {
cursor: pointer;
}
</style>
</head>
<body ng-controller="AppCtrl as appCtrl">
<nav class="navbar navbar-inverse navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<img src="logo.png" style="height:50px;width:auto;"></img>
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">Moisson Rouge ({{ appCtrl.owned() }}/{{ appCtrl.monsters.length }})</a>
</div>
<div id="navbar" class="collapse navbar-collapse">
<ul class="nav navbar-nav">
<li ng-class="{active: appCtrl.sorting == 0}"><a href="#" ng-click="appCtrl.chooseSorting(0)">Ordre alphabétique</a></li>
<li ng-class="{active: appCtrl.sorting == 1}"><a href="#" ng-click="appCtrl.chooseSorting(1)">Zones</a></li>
<li ng-class="{active: appCtrl.sorting == 2}"><a href="#" ng-click="appCtrl.chooseSorting(2)">Étapes</a></li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li><a href="#" data-toggle="modal" data-target="#saveModal">Sauvegarde</a></li>
<li><a href="#" data-toggle="modal" data-target="#helpModal">Aide</a></li>
<li><a href="#" data-toggle="modal" data-target="#aboutModal">À propos</a></li>
</ul>
</div><!--/.nav-collapse -->
</div>
</nav>
<div class="container">
<div class="row">
<div class="col-xs-12">
<div class="row">
<div class="col-xs-12">
<div class="row">
<div class="col-xs-12 col-sm-3">
Monstres : {{ appCtrl.owned('monster') }}/{{ appCtrl.total('monster') }}
<div class="progress">
<div class="progress-bar progress-bar-primary progress-bar-striped" role="progressbar" aria-valuenow="{{ appCtrl.ownedPercentage('monster') }}" aria-valuemin="0" aria-valuemax="100" style="min-width: 2em; width: {{ appCtrl.ownedPercentage('monster') }}%;">
{{ appCtrl.ownedPercentage('monster') }}%
</div>
</div>
</div>
<div class="col-xs-12 col-sm-3">
Boss : {{ appCtrl.owned('boss') }}/{{ appCtrl.total('boss') }}
<div class="progress">
<div class="progress-bar progress-bar-primary progress-bar-striped" role="progressbar" aria-valuenow="{{ appCtrl.ownedPercentage('boss') }}" aria-valuemin="0" aria-valuemax="100" style="min-width: 2em; width: {{ appCtrl.ownedPercentage('boss') }}%;">
{{ appCtrl.ownedPercentage('boss') }}%
</div>
</div>
</div>
<div class="col-xs-12 col-sm-3">
Archimonstres : {{ appCtrl.owned('archi') }}/{{ appCtrl.total('archi') }}
<div class="progress">
<div class="progress-bar progress-bar-primary progress-bar-striped" role="progressbar" aria-valuenow="{{ appCtrl.ownedPercentage('archi') }}" aria-valuemin="0" aria-valuemax="100" style="min-width: 2em; width: {{ appCtrl.ownedPercentage('archi') }}%;">
{{ appCtrl.ownedPercentage('archi') }}%
</div>
</div>
</div>
<div class="col-xs-12 col-sm-3">
Etapes : {{ appCtrl.completedSteps() }}/{{ appCtrl.totalSteps }}
<div class="progress">
<div class="progress-bar progress-bar-primary progress-bar-striped" role="progressbar" aria-valuenow="{{ appCtrl.ownedPercentage('archi') }}" aria-valuemin="0" aria-valuemax="100" style="min-width: 2em; width: {{ appCtrl.ownedPercentage('archi') }}%;">
{{ appCtrl.ownedPercentage('archi') }}%
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-xs-12">
Total : {{ appCtrl.owned() }}/{{ appCtrl.monsters.length }}
<div class="progress">
<div class="progress-bar progress-bar-primary progress-bar-striped" role="progressbar" aria-valuenow="{{ appCtrl.ownedPercentage() }}" aria-valuemin="0" aria-valuemax="100" style="min-width: 2em; width: {{ appCtrl.ownedPercentage() }}%;">
{{ appCtrl.ownedPercentage() }}%
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-xs-3">
Nombre de chasses simultanées :
<input class="form-control" type="number" ng-model="appCtrl.simultaneous" ng-change="appCtrl.saveSimultaneous()">
</div>
</div>
<div ng-if="appCtrl.sorting == 0">
<div>
<div class="checkbox">
<label>
<input type="checkbox" ng-model="appCtrl.displayOwnedMonsters" ng-change="appCtrl.toggleOwnedMonsters()" /> Masquer les monstres possédés
</label>
</div>
</div>
<table class="table table-stripped table-hover table-bordered">
<thead>
<tr>
<th style="width:100px;">Possédé</th>
<th>Nom</th>
<th>Étape</th>
<th>Zones</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="monster in appCtrl.monsters | orderBy:'name'" ng-class="{success: appCtrl.isOwned(monster)}" ng-hide="appCtrl.displayOwnedMonsters && appCtrl.isOwned(monster)">
<td><button class="btn btn-info btn-xs" ng-click="appCtrl.increase(monster)"><i class="glyphicon glyphicon-plus"></i></button> {{ monster.owned ? monster.owned : 0 }} <button class="btn btn-info btn-xs" ng-click="appCtrl.decrease(monster)"><i class="glyphicon glyphicon-minus"></i></button></td>
<td>
<i class="glyphicon glyphicon-star" ng-if="monster.type == 'boss'"></i>
<i class="glyphicon glyphicon-fire" ng-if="monster.type == 'archi'"></i>
{{ monster.name }}
</td>
<td>{{ monster.step }}</td>
<td>
<span class="label label-primary" ng-repeat="zone in monster.zones">{{ zone }}</span>
</td>
</tr>
</tbody>
</table>
</div>
<div ng-if="appCtrl.sorting == 1">
<div class="checkbox">
<label>
<input type="checkbox" ng-model="appCtrl.displayFinishedZones" ng-change="appCtrl.toggleFinishedZones()" /> Masquer les zones terminées
</label>
</div>
<div class="panel panel-default" ng-repeat="(zone, monsters) in appCtrl.zones" ng-hide="appCtrl.displayFinishedZones && appCtrl.owned(false, zone) == appCtrl.total(false, zone)">
<div class="panel-heading">
{{ zone }} ({{ appCtrl.owned(false, zone) }}/{{ appCtrl.total(false, zone) }})
<div class="pull-right">
<button class="btn btn-info btn-xs" ng-click="appCtrl.toggleZone(zone)">
Tout <span ng-if="appCtrl.owned(false, zone) == appCtrl.total(false, zone)"></span>cocher
</button>
</div>
</div>
<table class="table table-bordered">
<thead>
<tr>
<th style="width:100px;">Possédé</th>
<th>Nom</th>
<th>Étape</th>
<th>Zones</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="monster in monsters" ng-class="{success: appCtrl.isOwned(monster)}">
<td><button class="btn btn-info btn-xs" ng-click="appCtrl.increase(monster)"><i class="glyphicon glyphicon-plus"></i></button> {{ monster.owned ? monster.owned : 0 }} <button class="btn btn-info btn-xs" ng-click="appCtrl.decrease(monster)"><i class="glyphicon glyphicon-minus"></i></button></td>
<td>
<i class="glyphicon glyphicon-star" ng-if="monster.type == 'boss'"></i>
<i class="glyphicon glyphicon-fire" ng-if="monster.type == 'archi'"></i>
{{ monster.name }}
</td>
<td>{{ monster.step }}</td>
<td>
<span class="label label-primary" ng-repeat="zone in monster.zones">{{ zone }}</span>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div ng-if="appCtrl.sorting == 2">
<div class="checkbox">
<label>
<input type="checkbox" ng-model="appCtrl.displayFinishedSteps" ng-change="appCtrl.toggleFinishedSteps()" /> Masquer les étapes terminées
</label>
</div>
<div class="panel panel-default" ng-repeat="(step, monsters) in appCtrl.steps" ng-hide="step == 0 || (appCtrl.displayFinishedSteps && appCtrl.owned(false, false, step) == appCtrl.total(false, false, step))">
<div class="panel-heading">
Étape {{ step }} ({{ appCtrl.owned(false, false, step) }}/{{ appCtrl.total(false, false, step) }})
<div class="pull-right">
<button class="btn btn-info btn-xs" ng-click="appCtrl.toggleStep(step)">
Tout <span ng-if="appCtrl.owned(false, false, step) == appCtrl.total(false, false, step)"></span>cocher
</button>
</div>
</div>
<table class="table table-bordered">
<thead>
<tr>
<th style="width:100px;">Possédé</th>
<th>Nom</th>
<th>Zones</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="monster in monsters" ng-class="{success: appCtrl.isOwned(monster)}">
<td><button class="btn btn-info btn-xs" ng-click="appCtrl.increase(monster)"><i class="glyphicon glyphicon-plus"></i></button> {{ monster.owned ? monster.owned : 0 }} <button class="btn btn-info btn-xs" ng-click="appCtrl.decrease(monster)"><i class="glyphicon glyphicon-minus"></i></button></td>
<td>
<i class="glyphicon glyphicon-star" ng-if="monster.type == 'boss'"></i>
<i class="glyphicon glyphicon-fire" ng-if="monster.type == 'archi'"></i>
{{ monster.name }}
</td>
<td>
<span class="label label-primary" ng-repeat="zone in monster.zones">{{ zone }}</span>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-xs-12">
<p>
Cet outil facilite la gestion de la quête du Dofus Ocre.
<a href="https://git.crystalyx.net/camelia-studio/Moisson-Rouge">Voir sur Gitea</a>
<span class="pull-right">Dofus est la propriété d'Ankama</span>
</p>
</div>
</div>
</div>
<div class="modal fade" id="saveModal" tabindex="-1" role="dialog" aria-labelledby="saveModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title" id="saveModalLabel">Gestion de la sauvegarde</h4>
</div>
<div class="modal-body">
<div class="form-group">
<label for="inputSave">Sauvegarde actuelle</label>
<input type="text" name="save" id="inputSave" class="form-control" ng-model="appCtrl.saveData" />
</div>
<hr />
<div class="form-group">
<label for="inputLoad">Charger une sauvegarde</label>
<div class="input-group">
<input type="text" name="load" id="inputLoad" class="form-control" ng-model="appCtrl.loadData" />
<span class="input-group-btn">
<button class="btn btn-warning" type="button" ng-click="appCtrl.load()" ng-disabled="!appCtrl.loadData.length">Charger</button>
</span>
</div>
</div>
<hr />
<div class="text-center">
<h4>ATTENTION CELA VA TOUT EFFACER !!</h4>
<button class="btn btn-danger" ng-click="appCtrl.resetAll()">Remise à zéro</button>
</div>
<p class="text-danger" ng-show="appCtrl.loadData.length">Attention ! Charger une sauvegarde effacera les données actuelles.</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary" data-dismiss="modal">Fermer</button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="helpModal" tabindex="-1" role="dialog" aria-labelledby="helpModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title" id="helpModalLabel">Aide</h4>
</div>
<div class="modal-body">
<p>Cet outils permet de faciliter la gestion de la quête du Dofus Ocre.</p>
<p>Pour ajouter ou supprimer un monstre il suffit de cliquer sur sa ligne.<br />
La sauvegarde se fait automatiquement et il n'y a pas besoin de compte.<br />
Les données sont enregistrées localement dans le navigateur. Vous pouvez donc fermer la page
et revenir plus tard.</p>
<p>Si vous changez de navigateur vous pouvez exporter la sauvegarde pour la charger plus tard.</p>
<p>Si vous trouvez un bogue, avez une idée d'amélioration ou si la liste des monstres n'est pas à jour,
contribuez sur <a href="https://git.crystalyx.net/camelia-studio/Moisson-Rouge">Gitea</a> en faisant
une <i>Pull Request</i> ou en créant une <i>issue</i>.</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary" data-dismiss="modal">Fermer</button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="aboutModal" tabindex="-1" role="dialog" aria-labelledby="aboutModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title" id="aboutModalLabel">À Propos</h4>
</div>
<div class="modal-body">
<p>Ce site est libre et open source sur <a href="https://git.crystalyx.net/camelia-studio/Moisson-Rouge">Gitea</a>
et est écrit en AngularJS (version 1.x).</p>
<p>Les contributions sont les bienvenues.</p>
<p>Le code source est distribué sous licence MIT, vous avez donc le droit de le copier/modifier/distribuer
et de l'héberger vous même si vous préférez.</p>
<p>Il s'agit d'un <i>Fork</i> du projet de <a href="https://github.com/Mopolo/Eternelle-Moisson" target="_blank">Mopolo</a>.</p>
<p>Ce projet a été repris et amélioré par la branche <a href="https://cila.camelia-studio.org/" target="_blank">CILA</a> de l'association <a href="https://camelia-studio.org/" target="_blank">Camélia Studio</a>, pour le compte de sa branche <a href="https://camelia-studio.org/branches/zaap-sufokien/" target="_blank">Zaap Sufokien</a>.</p>
<p>Vous pouvez venir discuter autour de ce projet <a href="https://discord.gg/nBuZ9vJ" target="_blank">sur le Discord</a> de notre association ; <b>Camélia Studio</b>.</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary" data-dismiss="modal">Fermer</button>
</div>
</div>
</div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.9/angular.min.js"></script>
<script src="https://cdn.jsdelivr.net/angular.locker/2.0.4/angular-locker.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script>
<script src="app.js" type="text/javascript"></script>
</body>
</html>