1
0
mirror of https://github.com/kihashi/stardew_community_checklist.git synced 2025-10-19 08:03:17 +00:00

Merge pull request #34 from kihashi/feature/#24-hide-completed-items

Feature/#24 hide completed items
This commit is contained in:
John Cleaver 2016-04-11 23:22:11 -04:00
commit 7066cc56d6
2 changed files with 218 additions and 178 deletions

View File

@ -65,6 +65,28 @@
Skills
</a>
</div>
<div class="header-right header-menu">
<span class="header-item">
<a class="button" v-on:click="hideCompleted = !hideCompleted">
<span class="icon">
<i class="fa" v-bind:class="[hideCompleted ? 'fa-check-square-o' : 'fa-square-o']"></i>
</span>
<span>
Hide Completed
</span>
</a>
</span>
<span class="header-item">
<a class="button" v-on:click="hideSpoilers = !hideSpoilers">
<span class="icon">
<i class="fa" v-bind:class="[hideSpoilers ? 'fa-check-square-o' : 'fa-square-o']"></i>
</span>
<span>
Hide Spoilers
</span>
</a>
</span>
</div>
</div>
</nav>
@ -161,55 +183,57 @@
</div>
</div>
<div class="columns is-multiline">
<div class="column is-3 is-flex" v-for="item in static.items | inBundle active_bundle">
<div class="card is-fullwidth is-flex eq-line">
<header class="card-header">
<p class="card-header-title">
{{ item.name }}
</p>
</header>
<div class="card-content eq-line is-flex">
<div class="content is-flex">
<div class="columns source">
<div class="column">
<div class="">{{ item.source }}</div>
<template v-for="item in static.items | inBundle active_bundle">
<div class="column is-3 is-flex" v-if="!(hideCompleted && isCompleted(item))">
<div class="card is-fullwidth is-flex eq-line">
<header class="card-header">
<p class="card-header-title">
{{ item.name }}
</p>
</header>
<div class="card-content eq-line is-flex">
<div class="content is-flex">
<div class="columns source">
<div class="column">
<div v-if="!hideSpoilers">{{ item.source }}</div>
</div>
</div>
</div>
<div class="content">
<p class="control">
<a class="button is-fullwidth" v-for="bundle_id in item.bundles"
v-on:click="toggleItemInBundle(bundle_id, item.id, $index)"
v-bind:class="[isItemInBundle(bundle_id, item.id, $index) ? 'is-success' : 'is-danger']">
<span class="icon">
<i class="fa"
v-bind:class="[isItemInBundle(bundle_id, item.id, $index) ? 'fa-check-square-o' : 'fa-square-o']"></i>
</span>
<span>{{ static.bundles[bundle_id].name }}</span>
</a>
</p>
</div>
</div>
<div class="content">
<p class="control">
<a class="button is-fullwidth" v-for="bundle_id in item.bundles"
v-on:click="toggleItemInBundle(bundle_id, item.id, $index)"
v-bind:class="[isItemInBundle(bundle_id, item.id, $index) ? 'is-success' : 'is-danger']">
<span class="icon">
<i class="fa"
v-bind:class="[isItemInBundle(bundle_id, item.id, $index) ? 'fa-check-square-o' : 'fa-square-o']"></i>
</span>
<span>{{ static.bundles[bundle_id].name }}</span>
</a>
</p>
</div>
<footer class="card-footer" v-if="!hideSpoilers">
<div class="card-footer-item">
<span class="icon is-small"><i class="fa fa-calendar-check-o"></i></span>
<span class="tag is-primary is-text-centered"
v-for="season in static.seasons | filterByArray item.seasons">
{{ season.name }}
</span>
</div>
</footer>
<footer class="card-footer" v-if="!hideSpoilers">
<div class="card-footer-item">
<span class="icon is-small"><i class="fa fa-tree"></i></span>
<span class="tag is-info is-text-centered"
v-for="skill in static.skills | filterByArray item.skills">
{{ skill.name }}
</span>
</div>
</footer>
</div>
<footer class="card-footer">
<div class="card-footer-item">
<span class="icon is-small"><i class="fa fa-calendar-check-o"></i></span>
<span class="tag is-primary is-text-centered"
v-for="season in static.seasons | filterByArray item.seasons">
{{ season.name }}
</span>
</div>
</footer>
<footer class="card-footer">
<div class="card-footer-item">
<span class="icon is-small"><i class="fa fa-tree"></i></span>
<span class="tag is-info is-text-centered"
v-for="skill in static.skills | filterByArray item.skills">
{{ skill.name }}
</span>
</div>
</footer>
</div>
</div>
</template>
</div>
</div>
</div>
@ -234,56 +258,57 @@
<div class="columns is-multiline">
<div class="column is-3 is-flex"
v-for="item in static.items | filterBy search_term in 'name' | orderBy 'name'">
<div class="card is-fullwidth is-flex eq-line">
<header class="card-header">
<p class="card-header-title">
{{ item.name }}
</p>
</header>
<div class="card-content eq-line is-flex">
<div class="content is-flex">
<div class="columns source">
<div class="column">
<div class="">{{ item.source }}</div>
<template v-for="item in static.items | filterBy search_term in 'name' | orderBy 'name'">
<div class="column is-3 is-flex" v-if="!(hideCompleted && isCompleted(item))">
<div class="card is-fullwidth is-flex eq-line">
<header class="card-header">
<p class="card-header-title">
{{ item.name }}
</p>
</header>
<div class="card-content eq-line is-flex">
<div class="content is-flex">
<div class="columns source">
<div class="column">
<div v-if="!hideSpoilers">{{ item.source }}</div>
</div>
</div>
</div>
<div class="content">
<p class="control">
<a class="button is-fullwidth" v-for="bundle_id in item.bundles"
v-on:click="toggleItemInBundle(bundle_id, item.id, $index)"
v-bind:class="[isItemInBundle(bundle_id, item.id, $index) ? 'is-success' : 'is-danger']">
<span class="icon">
<i class="fa"
v-bind:class="[isItemInBundle(bundle_id, item.id, $index) ? 'fa-check-square-o' : 'fa-square-o']"></i>
</span>
<span>{{ static.bundles[bundle_id].name }}</span>
</a>
</p>
</div>
</div>
<div class="content">
<p class="control">
<a class="button is-fullwidth" v-for="bundle_id in item.bundles"
v-on:click="toggleItemInBundle(bundle_id, item.id, $index)"
v-bind:class="[isItemInBundle(bundle_id, item.id, $index) ? 'is-success' : 'is-danger']">
<span class="icon">
<i class="fa"
v-bind:class="[isItemInBundle(bundle_id, item.id, $index) ? 'fa-check-square-o' : 'fa-square-o']"></i>
</span>
<span>{{ static.bundles[bundle_id].name }}</span>
</a>
</p>
</div>
<footer class="card-footer" v-if="!hideSpoilers">
<div class="card-footer-item">
<span class="icon is-small"><i class="fa fa-calendar-check-o"></i></span>
<span class="tag is-primary is-text-centered"
v-for="season in static.seasons | filterByArray item.seasons">
{{ season.name }}
</span>
</div>
</footer>
<footer class="card-footer" v-if="!hideSpoilers">
<div class="card-footer-item">
<span class="icon is-small"><i class="fa fa-tree"></i></span>
<span class="tag is-info is-text-centered"
v-for="skill in static.skills | filterByArray item.skills">
{{ skill.name }}
</span>
</div>
</footer>
</div>
<footer class="card-footer">
<div class="card-footer-item">
<span class="icon is-small"><i class="fa fa-calendar-check-o"></i></span>
<span class="tag is-primary is-text-centered"
v-for="season in static.seasons | filterByArray item.seasons">
{{ season.name }}
</span>
</div>
</footer>
<footer class="card-footer">
<div class="card-footer-item">
<span class="icon is-small"><i class="fa fa-tree"></i></span>
<span class="tag is-info is-text-centered"
v-for="skill in static.skills | filterByArray item.skills">
{{ skill.name }}
</span>
</div>
</footer>
</div>
</div>
</template>
</div>
</div>
</section>
@ -310,55 +335,57 @@
<h3 class="title">{{ getSeasonName(active_season) }}</h3>
<progress class="progress is-info" value="" max=""></progress>
<div class="columns is-multiline">
<div class="column is-3 is-flex" v-for="item in static.items | filterBy active_season in 'seasons'">
<div class="card is-fullwidth is-flex eq-line">
<header class="card-header">
<p class="card-header-title">
{{ item.name }}
</p>
</header>
<div class="card-content eq-line is-flex">
<div class="content is-flex">
<div class="columns source">
<div class="column">
<div class="">{{ item.source }}</div>
<template v-for="item in static.items | filterBy active_season in 'seasons'">
<div class="column is-3 is-flex" v-if="!(hideCompleted && isCompleted(item))">
<div class="card is-fullwidth is-flex eq-line">
<header class="card-header">
<p class="card-header-title">
{{ item.name }}
</p>
</header>
<div class="card-content eq-line is-flex">
<div class="content is-flex">
<div class="columns source">
<div class="column">
<div v-if="!hideSpoilers">{{ item.source }}</div>
</div>
</div>
</div>
<div class="content">
<p class="control">
<a class="button is-fullwidth" v-for="bundle_id in item.bundles"
v-on:click="toggleItemInBundle(bundle_id, item.id, $index)"
v-bind:class="[isItemInBundle(bundle_id, item.id, $index) ? 'is-success' : 'is-danger']">
<span class="icon">
<i class="fa"
v-bind:class="[isItemInBundle(bundle_id, item.id, $index) ? 'fa-check-square-o' : 'fa-square-o']"></i>
</span>
<span>{{ static.bundles[bundle_id].name }}</span>
</a>
</p>
</div>
</div>
<div class="content">
<p class="control">
<a class="button is-fullwidth" v-for="bundle_id in item.bundles"
v-on:click="toggleItemInBundle(bundle_id, item.id, $index)"
v-bind:class="[isItemInBundle(bundle_id, item.id, $index) ? 'is-success' : 'is-danger']">
<span class="icon">
<i class="fa"
v-bind:class="[isItemInBundle(bundle_id, item.id, $index) ? 'fa-check-square-o' : 'fa-square-o']"></i>
</span>
<span>{{ static.bundles[bundle_id].name }}</span>
</a>
</p>
</div>
<footer class="card-footer" v-if="!hideSpoilers">
<div class="card-footer-item">
<span class="icon is-small"><i class="fa fa-calendar-check-o"></i></span>
<span class="tag is-primary is-text-centered"
v-for="season in static.seasons | filterByArray item.seasons">
{{ season.name }}
</span>
</div>
</footer>
<footer class="card-footer" v-if="!hideSpoilers">
<div class="card-footer-item">
<span class="icon is-small"><i class="fa fa-tree"></i></span>
<span class="tag is-info is-text-centered"
v-for="skill in static.skills | filterByArray item.skills">
{{ skill.name }}
</span>
</div>
</footer>
</div>
<footer class="card-footer">
<div class="card-footer-item">
<span class="icon is-small"><i class="fa fa-calendar-check-o"></i></span>
<span class="tag is-primary is-text-centered"
v-for="season in static.seasons | filterByArray item.seasons">
{{ season.name }}
</span>
</div>
</footer>
<footer class="card-footer">
<div class="card-footer-item">
<span class="icon is-small"><i class="fa fa-tree"></i></span>
<span class="tag is-info is-text-centered"
v-for="skill in static.skills | filterByArray item.skills">
{{ skill.name }}
</span>
</div>
</footer>
</div>
</div>
</template>
</div>
</div>
</div>
@ -387,55 +414,57 @@
<h3 class="title">{{ getSkillName(active_skill) }}</h3>
<progress class="progress is-info" value="" max=""></progress>
<div class="columns is-multiline">
<div class="column is-3 is-flex" v-for="item in static.items | filterBy active_skill in 'skills'">
<div class="card is-fullwidth is-flex eq-line">
<header class="card-header">
<p class="card-header-title">
{{ item.name }}
</p>
</header>
<div class="card-content eq-line is-flex">
<div class="content is-flex">
<div class="columns source">
<div class="column">
<div class="">{{ item.source }}</div>
<template v-for="item in static.items | filterBy active_skill in 'skills'">
<div class="column is-3 is-flex" v-if="!(hideCompleted && isCompleted(item))">
<div class="card is-fullwidth is-flex eq-line">
<header class="card-header">
<p class="card-header-title">
{{ item.name }}
</p>
</header>
<div class="card-content eq-line is-flex">
<div class="content is-flex">
<div class="columns source">
<div class="column">
<div v-if="!hideSpoilers">{{ item.source }}</div>
</div>
</div>
</div>
<div class="content">
<p class="control">
<a class="button is-fullwidth" v-for="bundle_id in item.bundles"
v-on:click="toggleItemInBundle(bundle_id, item.id, $index)"
v-bind:class="[isItemInBundle(bundle_id, item.id, $index) ? 'is-success' : 'is-danger']">
<span class="icon">
<i class="fa"
v-bind:class="[isItemInBundle(bundle_id, item.id, $index) ? 'fa-check-square-o' : 'fa-square-o']"></i>
</span>
<span>{{ static.bundles[bundle_id].name }}</span>
</a>
</p>
</div>
</div>
<div class="content">
<p class="control">
<a class="button is-fullwidth" v-for="bundle_id in item.bundles"
v-on:click="toggleItemInBundle(bundle_id, item.id, $index)"
v-bind:class="[isItemInBundle(bundle_id, item.id, $index) ? 'is-success' : 'is-danger']">
<span class="icon">
<i class="fa"
v-bind:class="[isItemInBundle(bundle_id, item.id, $index) ? 'fa-check-square-o' : 'fa-square-o']"></i>
</span>
<span>{{ static.bundles[bundle_id].name }}</span>
</a>
</p>
</div>
<footer class="card-footer" v-if="!hideSpoilers">
<div class="card-footer-item">
<span class="icon is-small"><i class="fa fa-calendar-check-o"></i></span>
<span class="tag is-primary is-text-centered"
v-for="season in static.seasons | filterByArray item.seasons">
{{ season.name }}
</span>
</div>
</footer>
<footer class="card-footer" v-if="!hideSpoilers">
<div class="card-footer-item">
<span class="icon is-small"><i class="fa fa-tree"></i></span>
<span class="tag is-info is-text-centered"
v-for="skill in static.skills | filterByArray item.skills">
{{ skill.name }}
</span>
</div>
</footer>
</div>
<footer class="card-footer">
<div class="card-footer-item">
<span class="icon is-small"><i class="fa fa-calendar-check-o"></i></span>
<span class="tag is-primary is-text-centered"
v-for="season in static.seasons | filterByArray item.seasons">
{{ season.name }}
</span>
</div>
</footer>
<footer class="card-footer">
<div class="card-footer-item">
<span class="icon is-small"><i class="fa fa-tree"></i></span>
<span class="tag is-info is-text-centered"
v-for="skill in static.skills | filterByArray item.skills">
{{ skill.name }}
</span>
</div>
</footer>
</div>
</div>
</template>
</div>
</div>
</div>

13
main.js
View File

@ -10,7 +10,9 @@ var v = new Vue({
active_season: "spring",
active_skill: "farming",
save_mode: false,
load_mode: false
load_mode: false,
hideCompleted: false,
hideSpoilers: false
},
ready: function(){
this.fetchData();
@ -131,6 +133,15 @@ var v = new Vue({
return this.static.bundles
.filter(function(b){ return b.room === roomId; })
.reduce(function(p, c){ return p + Math.min(v.user_data[c.id].length, c.items_required); }, 0);
},
isCompleted: function (item) {
for(i=0; i < item.bundles.length; i++){
if(!this.isItemInBundle(item.bundles[i], item.id, i)){
return false;
}
}
return true;
}
}
});