mirror of
https://github.com/kihashi/stardew_community_checklist.git
synced 2025-10-19 08:03:17 +00:00
Remove old pages.
This commit is contained in:
parent
d6db006d2a
commit
b495dc759d
630
index.html
630
index.html
@ -1,630 +0,0 @@
|
||||
<!doctype HTML>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Stardew Valley Community Checklist</title>
|
||||
<link type="text/css" rel="stylesheet"
|
||||
href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.6.2/css/bulma.min.css"/>
|
||||
<link type="text/css" rel="stylesheet"
|
||||
href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css"/>
|
||||
<link type="text/css" rel="stylesheet" href="main.css"/>
|
||||
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
|
||||
<link rel="icon" href="/favicon.ico" type="image/x-icon">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="app">
|
||||
<section class="hero is-info">
|
||||
<div class="hero-head">
|
||||
<nav class="navbar">
|
||||
<div class="container">
|
||||
<div class="navbar-brand">
|
||||
<a href="./" class="navbar-item"><h1 class="title">Stardew Community Checklist</h1></a>
|
||||
</div>
|
||||
<div class="navbar-menu">
|
||||
<div class="navbar-end">
|
||||
<span class="navbar-item">
|
||||
<a href="#" id="save-button" class="button is-light is-outlined" v-on:click.stop="enterSaveMode">
|
||||
<span class="icon"><i class="fa fa-download"></i></span>
|
||||
<span>Export Data</span>
|
||||
</a>
|
||||
</span>
|
||||
<span class="navbar-item">
|
||||
<a href="#" id="load-button" class="button is-light is-outlined" v-on:click.stop="enterLoadMode">
|
||||
<span class="icon"><i class="fa fa-upload"></i></span>
|
||||
<span>Import Data</span>
|
||||
</a>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
</section>
|
||||
<nav class="navbar has-shadow">
|
||||
<div class="container">
|
||||
<div class="navbar-tabs">
|
||||
<a id="bundles-nav" class="navbar-item is-tab" href="#" v-on:click.stop="change_page('bundles')"
|
||||
v-bind:class="['bundles' == active_page ? 'is-active' : '']">
|
||||
Bundles
|
||||
</a>
|
||||
<a id="ab-nav" class="navbar-item is-tab" href="#" v-on:click.stop="change_page('ab-list')"
|
||||
v-bind:class="['ab-list' == active_page ? 'is-active' : '']">
|
||||
Alphabetical
|
||||
</a>
|
||||
<a id="seasons-nav" class="navbar-item is-tab" href="#" v-on:click.stop="change_page('seasons')"
|
||||
v-bind:class="['seasons' == active_page ? 'is-active' : '']">
|
||||
Seasons
|
||||
</a>
|
||||
<a id="skills-nav" class="navbar-item is-tab" href="#" v-on:click.stop="change_page('skills')"
|
||||
v-bind:class="['skills' == active_page ? 'is-active' : '']">
|
||||
Skills
|
||||
</a>
|
||||
<a id="change-nav" class="navbar-item is-tab" href="#" v-on:click.stop="change_page('changelog')"
|
||||
v-bind:class="['changelog' == active_page ? 'is-active' : '']">
|
||||
Change Log
|
||||
</a>
|
||||
</div>
|
||||
<div class="navbar-end">
|
||||
<span class="navbar-item">
|
||||
<a class="button" v-on:click="toggleHideCompleted">
|
||||
<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="navbar-item">
|
||||
<div class="buttons has-addons">
|
||||
<a class="button" v-on:click="toggleHideSpoilers">
|
||||
<span class="icon">
|
||||
<i class="fa" v-bind:class="[hideSpoilers ? 'fa-check-square-o' : 'fa-square-o']"></i>
|
||||
</span>
|
||||
<span>
|
||||
Hide Spoilers
|
||||
</span>
|
||||
</a>
|
||||
<a class="button is-info" v-on:click="enterSpoilerSettings">
|
||||
<span class="icon">
|
||||
<i class="fa fa-cogs"></i>
|
||||
</span>
|
||||
</a>
|
||||
</div>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<!-- Save Modal -->
|
||||
<div id="save-model" class="modal" v-bind:class="[save_mode ? 'is-active' : '']">
|
||||
<div class="modal-background" v-on:click="exitSaveMode"></div>
|
||||
<div class="modal-container">
|
||||
<div class="modal-content">
|
||||
<div class="box">
|
||||
<div class="notification is-success">
|
||||
Your data has been saved locally. This data string is provided in case you want to make a backup or
|
||||
take your data to another computer.
|
||||
</div>
|
||||
<div class="field has-addons">
|
||||
<div class="control is-expanded">
|
||||
<input id="user-data-serialized" readonly class="input" type="text" placeholder="Save Data"
|
||||
v-bind:value="user_data_serialized">
|
||||
</div>
|
||||
<div class="control">
|
||||
<a class="button is-info copy" data-clipboard-target="#user-data-serialized">
|
||||
<span class="icon">
|
||||
<i class="fa fa-clipboard"></i>
|
||||
</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<button class="modal-close" v-on:click="exitSaveMode"></button>
|
||||
</div>
|
||||
|
||||
<!-- Load Modal -->
|
||||
<div id="load-model" class="modal" v-bind:class="[load_mode ? 'is-active' : '']">
|
||||
<div class="modal-background" v-on:click="exitLoadMode"></div>
|
||||
<div class="modal-container">
|
||||
<div class="modal-content">
|
||||
<div class="box">
|
||||
<div class="notification is-warning">
|
||||
If you previously saved your data on this computer, it should already be loaded. This utility is
|
||||
only for loading a data string from a backup or another computer.
|
||||
</div>
|
||||
<div class="field has-addons">
|
||||
<div class="control is-expanded">
|
||||
<input class="input" type="text" placeholder="Load Data" v-model="enteredData">
|
||||
</div>
|
||||
<div class="control">
|
||||
<a class="button is-info" v-on:click="loadData(enteredData)">
|
||||
Load Data
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<button class="modal-close" v-on:click="exitLoadMode"></button>
|
||||
</div>
|
||||
|
||||
<!-- Spoilers Settings Modal -->
|
||||
<div id="spoilers-modal" class="modal" v-bind:class="[pick_spoilers ? 'is-active' : '']">
|
||||
<div class="modal-background" v-on:click="exitSpoilerSettings"></div>
|
||||
<div class="modal-container">
|
||||
<div class="modal-content">
|
||||
<div class="box">
|
||||
<div class="content">
|
||||
<p class="notification is-info">
|
||||
These settings control which elements are hidden when Hide Spoilers is enabled.
|
||||
</p>
|
||||
<p class="control">
|
||||
<label class="checkbox">
|
||||
<input type="checkbox" v-model="temp_spoilers.bundle_rewards">
|
||||
Bundle Rewards
|
||||
</label>
|
||||
</p>
|
||||
<p class="control">
|
||||
<label class="checkbox">
|
||||
<input type="checkbox" v-model="temp_spoilers.item_source">
|
||||
Item Source Information
|
||||
</label>
|
||||
</p>
|
||||
<p class="control">
|
||||
<label class="checkbox">
|
||||
<input type="checkbox" v-model="temp_spoilers.item_seasons">
|
||||
Item Seasons
|
||||
</label>
|
||||
</p>
|
||||
<p class="control">
|
||||
<label class="checkbox">
|
||||
<input type="checkbox" v-model="temp_spoilers.item_skills">
|
||||
Item Skills
|
||||
</label>
|
||||
</p>
|
||||
<a class="button is-info is-pulled-right" v-on:click="saveSpoilerSettings">
|
||||
<span class="icon">
|
||||
<i class="fa fa-save"></i>
|
||||
</span>
|
||||
<span>
|
||||
Save
|
||||
</span>
|
||||
</a>
|
||||
<div class="is-clearfix"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<button class="modal-close" v-on:click="exitSpoilerSettings"></button>
|
||||
</div>
|
||||
|
||||
<!-- BUNDLE TAB -->
|
||||
<section id="bundle-section" class="section" v-if="active_page == 'bundles' && static !== null">
|
||||
<div class="container is-fluid is-marginless">
|
||||
<div class="columns">
|
||||
<div class="column is-2 is-paddingless">
|
||||
<nav class="panel">
|
||||
<p class="panel-heading">
|
||||
Bundles
|
||||
</p>
|
||||
<p class="panel-tabs is-size-7">
|
||||
<a href="#" v-for="room in static.rooms" v-bind:id="'panel-room-' + room.id"
|
||||
class="has-text-centered"
|
||||
v-bind:class="[room.id == active_room ? 'is-active' : '']"
|
||||
v-on:click.stop="change_room(room.id)">
|
||||
{{ room.name }}
|
||||
</a>
|
||||
</p>
|
||||
<template v-for="bundle in active_room_bundles">
|
||||
<a class="panel-block" href="#"
|
||||
v-bind:id="'panel-bundle-' + bundle.id" v-bind:class="[bundle.id == active_bundle ? 'is-active' : '']"
|
||||
v-on:click.stop="change_bundle(bundle.id)" v-if="!(hideCompleted && isBundleComplete(bundle.id))">
|
||||
|
||||
<span class="panel-icon">
|
||||
<i class="fa fa-archive"></i>
|
||||
</span>
|
||||
<span v-bind:class="[isBundleComplete(bundle.id) ? 'bundle-complete' : '']">{{ bundle.name }}</span>
|
||||
</a>
|
||||
</template>
|
||||
</nav>
|
||||
</div>
|
||||
<div class="column">
|
||||
<div class="columns">
|
||||
<div class="column">
|
||||
<h3 class="title">
|
||||
{{ static.bundles[active_bundle].name }}
|
||||
<span class="is-pulled-right">
|
||||
{{ user_data[active_bundle].length }} / {{ static.bundles[active_bundle].items_required }}
|
||||
</span>
|
||||
</h3>
|
||||
<h5 class="subtitle" v-if="!(hideSpoilers && spoilers.bundle_rewards)">{{ static.bundles[active_bundle].reward }}</h5>
|
||||
<h5 class="subtitle" v-else> </h5>
|
||||
<progress class="progress is-info"
|
||||
v-bind:value="user_data[active_bundle].length"
|
||||
v-bind:max="static.bundles[active_bundle].items_required"></progress>
|
||||
</div>
|
||||
<div class="column">
|
||||
<h3 class="title">
|
||||
{{ static.rooms[static.bundles[active_bundle].room].name }}
|
||||
<span class="is-pulled-right">
|
||||
{{ getRoomItemsChecked(static.bundles[active_bundle].room) }} / {{ getRoomItemsRequired(static.bundles[active_bundle].room) }}
|
||||
</span>
|
||||
</h3>
|
||||
<h5 class="subtitle">{{ static.rooms[static.bundles[active_bundle].room].reward }}</h5>
|
||||
<progress class="progress is-info"
|
||||
v-bind:value="getRoomItemsChecked(static.bundles[active_bundle].room)"
|
||||
v-bind:max="getRoomItemsRequired(static.bundles[active_bundle].room)"
|
||||
>
|
||||
|
||||
</progress>
|
||||
</div>
|
||||
</div>
|
||||
<div class="columns is-multiline">
|
||||
<template v-for="item in active_bundle_items">
|
||||
<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 && spoilers.item_source)">{{ item.source }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="content">
|
||||
<p class="control">
|
||||
<a class="button is-fullwidth" v-for="(bundle_id, index) in item.bundles"
|
||||
v-on:click="toggleItemInBundle(bundle_id, item.id, index)"
|
||||
v-bind:class="[isItemInBundle(bundle_id, item.id, index) ? 'is-success' : '',
|
||||
!isItemInBundle(bundle_id, item.id, index) && !isBundleComplete(bundle_id) ? '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>
|
||||
<footer class="card-footer" v-if="!(hideSpoilers && spoilers.item_seasons)">
|
||||
<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 is-rounded"
|
||||
v-for="season in getItemSeasons(item)">
|
||||
{{ season.name }}
|
||||
</span>
|
||||
</div>
|
||||
</footer>
|
||||
<footer class="card-footer" v-if="!(hideSpoilers && spoilers.item_skills)">
|
||||
<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 is-rounded"
|
||||
v-for="skill in getItemSkills(item)">
|
||||
{{ skill.name }}
|
||||
</span>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- AB TAB -->
|
||||
<section id="ab-section" class="section" v-if="active_page == 'ab-list' && static !== null">
|
||||
<div class="container is-fluid is-marginless">
|
||||
<div class="columns">
|
||||
<div class="column is-4">
|
||||
<div class="field is-horizontal">
|
||||
<div class="field-label is-normal">
|
||||
<label class="label">Search</label>
|
||||
</div>
|
||||
<div class="field-body">
|
||||
<input class="input" type="text" placeholder="Search" v-model="search_term">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="columns is-multiline">
|
||||
<template v-for="item in filtered_items">
|
||||
<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 && spoilers.item_source)">{{ item.source }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="content">
|
||||
<p class="control">
|
||||
<a class="button is-fullwidth" v-for="(bundle_id, index) in item.bundles"
|
||||
v-on:click="toggleItemInBundle(bundle_id, item.id, index)"
|
||||
v-bind:class="[isItemInBundle(bundle_id, item.id, index) ? 'is-success' : '',
|
||||
!isItemInBundle(bundle_id, item.id, index) && !isBundleComplete(bundle_id) ? '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>
|
||||
<footer class="card-footer" v-if="!(hideSpoilers && spoilers.item_seasons)">
|
||||
<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 is-rounded"
|
||||
v-for="season in getItemSeasons(item)">
|
||||
{{ season.name }}
|
||||
</span>
|
||||
</div>
|
||||
</footer>
|
||||
<footer class="card-footer" v-if="!(hideSpoilers && spoilers.item_skills)">
|
||||
<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 is-rounded"
|
||||
v-for="skill in getItemSkills(item)">
|
||||
{{ skill.name }}
|
||||
</span>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Seasons Tab -->
|
||||
<section id="seasons-tab" class="section" v-if="active_page == 'seasons'">
|
||||
<div class="container is-fluid is-marginless">
|
||||
<div class="columns">
|
||||
<div class="column is-2">
|
||||
<nav class="panel">
|
||||
<p class="panel-heading">
|
||||
Seasons
|
||||
</p>
|
||||
<a class="panel-block" href="#" v-for="season in static.seasons" v-bind:id="'panel-season-' + season.id"
|
||||
v-bind:class="[season.id == active_season ? 'is-active' : '']"
|
||||
v-on:click.stop="change_season(season.id)">
|
||||
<span class="panel-icon">
|
||||
<i class="fa fa-calendar"></i>
|
||||
</span> {{ season.name }}
|
||||
</a>
|
||||
</nav>
|
||||
</div>
|
||||
<div class="column">
|
||||
<h3 class="title">{{ getSeasonName(active_season) }}</h3>
|
||||
<progress class="progress is-info" value="" max=""></progress>
|
||||
<div class="columns is-multiline">
|
||||
<template v-for="item in active_season_items">
|
||||
<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 && spoilers.item_source)">{{ item.source }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="content">
|
||||
<p class="control">
|
||||
<a class="button is-fullwidth" v-for="(bundle_id, index) in item.bundles"
|
||||
v-on:click="toggleItemInBundle(bundle_id, item.id, index)"
|
||||
v-bind:class="[isItemInBundle(bundle_id, item.id, index) ? 'is-success' : '',
|
||||
!isItemInBundle(bundle_id, item.id, index) && !isBundleComplete(bundle_id) ? '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>
|
||||
<footer class="card-footer" v-if="!(hideSpoilers && spoilers.item_seasons)">
|
||||
<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 is-rounded"
|
||||
v-for="season in getItemSeasons(item)">
|
||||
{{ season.name }}
|
||||
</span>
|
||||
</div>
|
||||
</footer>
|
||||
<footer class="card-footer" v-if="!(hideSpoilers && spoilers.item_skills)">
|
||||
<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 is-rounded"
|
||||
v-for="skill in getItemSkills(item)">
|
||||
{{ skill.name }}
|
||||
</span>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Skills Tab -->
|
||||
<section id="skills-tab" class="section" v-if="active_page == 'skills'">
|
||||
<div class="container is-fluid is-marginless">
|
||||
<div class="columns">
|
||||
<div class="column is-2">
|
||||
<nav class="panel">
|
||||
<p class="panel-heading">
|
||||
Skills
|
||||
</p>
|
||||
<a class="panel-block" href="#" v-for="skill in static.skills" v-bind:id="'panel-skill-' + skill.id"
|
||||
v-bind:class="[skill.id == active_skill ? 'is-active' : '']"
|
||||
v-on:click.stop="change_skill(skill.id)">
|
||||
<span class="panel-icon">
|
||||
<i class="fa fa-tree"></i>
|
||||
</span> {{ skill.name }}
|
||||
</a>
|
||||
</nav>
|
||||
</div>
|
||||
<div class="column">
|
||||
<h3 class="title">{{ getSkillName(active_skill) }}</h3>
|
||||
<progress class="progress is-info" value="" max=""></progress>
|
||||
<div class="columns is-multiline">
|
||||
<template v-for="item in active_skill_items">
|
||||
<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 && spoilers.item_source)">{{ item.source }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="content">
|
||||
<p class="control">
|
||||
<a class="button is-fullwidth" v-for="(bundle_id, index) in item.bundles"
|
||||
v-on:click="toggleItemInBundle(bundle_id, item.id, index)"
|
||||
v-bind:class="[isItemInBundle(bundle_id, item.id, index) ? 'is-success' : '',
|
||||
!isItemInBundle(bundle_id, item.id, index) && !isBundleComplete(bundle_id) ? '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>
|
||||
<footer class="card-footer" v-if="!(hideSpoilers && spoilers.item_seasons)">
|
||||
<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 is-rounded"
|
||||
v-for="season in getItemSeasons(item)">
|
||||
{{ season.name }}
|
||||
</span>
|
||||
</div>
|
||||
</footer>
|
||||
<footer class="card-footer" v-if="!(hideSpoilers && spoilers.item_skills)">
|
||||
<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 is-rounded"
|
||||
v-for="skill in getItemSkills(item)">
|
||||
{{ skill.name }}
|
||||
</span>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section" v-if="active_page == 'changelog'">
|
||||
<div class="container">
|
||||
<h1 class="title">Change Log</h1>
|
||||
<div class="card is-fullwidth" v-for="version in changelog">
|
||||
<header class="card-header">
|
||||
<p class="card-header-title">
|
||||
{{ version.id }}
|
||||
</p>
|
||||
</header>
|
||||
<div class="card-content">
|
||||
<div class="content">
|
||||
<ul>
|
||||
<li v-for="change in version.changes">{{ change }}</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<p class="card-footer-item">
|
||||
Release Date: {{ version.date }}
|
||||
</p>
|
||||
<a v-bind:href="'https://github.com/kihashi/stardew_community_checklist/releases/tag/' + version.link" class="card-footer-item">
|
||||
<span class="icon">
|
||||
<i class="fa fa-github-square" aria-hidden="true"></i>
|
||||
</span>
|
||||
<span>
|
||||
Github Release
|
||||
</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<div class="content has-text-centered">
|
||||
<p>
|
||||
<strong>Stardew Community Checklist</strong> by <a href="http://johncleaver.com">John Cleaver</a>. The source code is licensed
|
||||
<a href="http://opensource.org/licenses/mit-license.php">MIT</a>.
|
||||
</p>
|
||||
<p>
|
||||
Bundle and Item information is from the <a href="http://stardewvalleywiki.com/Stardew_Valley_Wiki">Stardew Valley Wiki</a>
|
||||
and is used under the <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">CC BY-NC-SA 3.0 License</a>.
|
||||
</p>
|
||||
<p>
|
||||
<a href="http://stardewvalley.net/">Stardew Valley</a> © <a href="">Chucklefish LTD</a>.
|
||||
Developed by <a href="https://twitter.com/ConcernedApe">ConcernedApe</a>.
|
||||
</p>
|
||||
<p>
|
||||
<a class="icon" href="https://github.com/kihashi/stardew_community_checklist">
|
||||
<i class="fa fa-github"></i>
|
||||
</a>
|
||||
<a class="icon" href="https://www.reddit.com/r/StardewValley/comments/4ell1b/stardew_community_checklist_a_site_to_keep_track/">
|
||||
<i class="fa fa-reddit"></i>
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
<!-- Javascript -->
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/vue@2.5.13/dist/vue.js"></script>
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/vue-resource@1.3.5"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/clipboard@1/dist/clipboard.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.4/lodash.min.js"></script>
|
||||
<script type="text/javascript" src="main.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
32
main.css
32
main.css
@ -1,32 +0,0 @@
|
||||
.eq-line {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.column.is-flex {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.card {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.card-content{
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.card-footer-item{
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.button{
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.panel-tabs a {
|
||||
padding: 3px;
|
||||
}
|
||||
|
||||
.bundle-complete {
|
||||
text-decoration: line-through;
|
||||
}
|
||||
279
main.js
279
main.js
@ -1,279 +0,0 @@
|
||||
var v = new Vue({
|
||||
el: '#app',
|
||||
data:{
|
||||
changelog: null,
|
||||
static: null,
|
||||
user_data: [],
|
||||
search_term: "",
|
||||
enteredData: "",
|
||||
active_page: "bundles",
|
||||
active_room: 0,
|
||||
active_bundle: 0,
|
||||
active_season: "spring",
|
||||
active_skill: "farming",
|
||||
save_mode: false,
|
||||
load_mode: false,
|
||||
pick_spoilers: false,
|
||||
hideCompleted: false,
|
||||
hideSpoilers: false,
|
||||
spoilers: {
|
||||
bundle_rewards: true,
|
||||
item_source: true,
|
||||
item_seasons: true,
|
||||
item_skills: true
|
||||
},
|
||||
temp_spoilers: {}
|
||||
|
||||
},
|
||||
beforeMount: function(){
|
||||
this.fetchData();
|
||||
this.fetchChangeLog();
|
||||
new Clipboard('.copy');
|
||||
storedUserData = localStorage.getItem('user_data');
|
||||
if(storedUserData !== null && storedUserData !== ""){
|
||||
this.loadData(storedUserData);
|
||||
}
|
||||
spoilers = localStorage.getItem('spoilers');
|
||||
if(spoilers !== null && spoilers !== ""){
|
||||
this.spoilers = JSON.parse(spoilers);
|
||||
}
|
||||
hideCompleted = localStorage.getItem('hideCompleted');
|
||||
if(hideCompleted !== null && hideCompleted !== ""){
|
||||
this.hideCompleted = JSON.parse(hideCompleted);
|
||||
}
|
||||
hideSpoilers = localStorage.getItem('hideSpoilers');
|
||||
if(hideSpoilers !== null && hideSpoilers !== ""){
|
||||
this.hideSpoilers = JSON.parse(hideSpoilers);
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
user_data_serialized: function(){
|
||||
return btoa(JSON.stringify(this.user_data));
|
||||
},
|
||||
active_room_bundles: function(){
|
||||
var self = this;
|
||||
return this.static.bundles.filter(function(bundle){ return bundle.room === self.active_room });
|
||||
},
|
||||
active_bundle_items: function(){
|
||||
var self = this;
|
||||
return this.static.items.filter(function(item){ return item.bundles.indexOf(self.active_bundle) > -1});
|
||||
},
|
||||
active_season_items: function() {
|
||||
var self = this;
|
||||
if (self.active_season === self.static.seasons[0].id){
|
||||
return _.orderBy(
|
||||
this.static.items.filter(
|
||||
function(item){
|
||||
return item.seasons.length === 4;
|
||||
}
|
||||
),
|
||||
'name'
|
||||
)
|
||||
|
||||
}
|
||||
else {
|
||||
return _.orderBy(
|
||||
this.static.items.filter(
|
||||
function (item) {
|
||||
return item.seasons.indexOf(self.active_season) > -1
|
||||
}
|
||||
),
|
||||
'name'
|
||||
)
|
||||
}
|
||||
},
|
||||
active_skill_items: function() {
|
||||
var self = this;
|
||||
return _.orderBy(
|
||||
this.static.items.filter(
|
||||
function(item){
|
||||
return item.skills.indexOf(self.active_skill) > -1
|
||||
}
|
||||
),
|
||||
'name'
|
||||
)
|
||||
},
|
||||
filtered_items: function(){
|
||||
var self = this;
|
||||
return _.orderBy(self.static.items.filter(function(item){ return item.name.toLowerCase().indexOf(self.search_term.toLowerCase()) !== -1 }), 'name');
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
fetchData: function(){
|
||||
this.$http.get('bundles.json').then(function(response) {
|
||||
this.static = response.body;
|
||||
if(this.user_data.length <= 0){
|
||||
for(i=0; i<this.static.bundles.length;i++){
|
||||
this.user_data.push([]);
|
||||
}
|
||||
};
|
||||
}, function(response) {
|
||||
console.log("error fetching bundle data");
|
||||
});
|
||||
|
||||
},
|
||||
fetchChangeLog: function() {
|
||||
this.$http.get('changelog.json').then(function(response) {
|
||||
this.changelog = response.body.versions;
|
||||
}, function(response) {
|
||||
console.log("error fetching change log data");
|
||||
});
|
||||
},
|
||||
enterLoadMode: function(){
|
||||
this.load_mode = true;
|
||||
},
|
||||
exitLoadMode: function(){
|
||||
this.load_mode = false;
|
||||
},
|
||||
loadData: function(data){
|
||||
this.user_data = JSON.parse(atob(data));
|
||||
this.exitLoadMode();
|
||||
},
|
||||
enterSaveMode: function(){
|
||||
this.save_mode = true;
|
||||
localStorage.setItem('user_data', this.user_data_serialized);
|
||||
},
|
||||
exitSaveMode: function(){
|
||||
this.save_mode = false;
|
||||
},
|
||||
enterSpoilerSettings: function(){
|
||||
this.temp_spoilers = JSON.parse(JSON.stringify(this.spoilers));
|
||||
this.pick_spoilers = true;
|
||||
},
|
||||
saveSpoilerSettings: function(){
|
||||
this.spoilers = JSON.parse(JSON.stringify(this.temp_spoilers));
|
||||
localStorage.setItem('spoilers', JSON.stringify(this.spoilers));
|
||||
this.exitSpoilerSettings();
|
||||
},
|
||||
exitSpoilerSettings: function(){
|
||||
this.pick_spoilers = false
|
||||
},
|
||||
change_page: function(new_page){
|
||||
this.active_page = new_page;
|
||||
},
|
||||
change_bundle: function(new_bundle){
|
||||
this.active_bundle = new_bundle;
|
||||
},
|
||||
change_room: function(new_room){
|
||||
this.active_room = new_room;
|
||||
},
|
||||
change_season: function(new_season){
|
||||
this.active_season = new_season;
|
||||
},
|
||||
change_skill: function(new_skill){
|
||||
this.active_skill = new_skill;
|
||||
},
|
||||
toggleHideCompleted: function(){
|
||||
this.hideCompleted = !this.hideCompleted;
|
||||
localStorage.setItem('hideCompleted', JSON.stringify(this.hideCompleted));
|
||||
},
|
||||
toggleHideSpoilers: function(){
|
||||
this.hideSpoilers = !this.hideSpoilers;
|
||||
localStorage.setItem('hideSpoilers', JSON.stringify(this.hideSpoilers));
|
||||
},
|
||||
addItemToBundle: function(bundleId, itemId, itemPosition){
|
||||
this.user_data[bundleId].push({item: itemId, position: itemPosition});
|
||||
},
|
||||
removeItemFromBundle: function(bundleId, itemId, itemPosition){
|
||||
for(i = 0; i < this.user_data[bundleId].length; i++){
|
||||
if(this.user_data[bundleId][i].item === itemId && this.user_data[bundleId][i].position === itemPosition){
|
||||
this.user_data[bundleId].splice(i, 1);
|
||||
}
|
||||
}
|
||||
},
|
||||
toggleItemInBundle: function(bundleId, itemId, itemPosition){
|
||||
if(this.isItemInBundle(bundleId, itemId, itemPosition)){
|
||||
this.removeItemFromBundle(bundleId, itemId, itemPosition);
|
||||
}
|
||||
else{
|
||||
this.addItemToBundle(bundleId, itemId, itemPosition);
|
||||
}
|
||||
localStorage.setItem('user_data', this.user_data_serialized);
|
||||
},
|
||||
isItemInBundle: function(bundleId, itemId, itemPosition){
|
||||
if(this.user_data[bundleId].filter(function(element){
|
||||
return element.item === itemId && element.position === itemPosition;
|
||||
}).length > 0){
|
||||
return true;
|
||||
}
|
||||
else{
|
||||
return false;
|
||||
}
|
||||
},
|
||||
getSeasonName: function(seasonId){
|
||||
for(i = 0; i < this.static.seasons.length; i++){
|
||||
if(this.static.seasons[i].id === seasonId){
|
||||
return this.static.seasons[i].name;
|
||||
}
|
||||
}
|
||||
return "";
|
||||
},
|
||||
getSkillName: function(skillId){
|
||||
for(i = 0; i < this.static.skills.length; i++){
|
||||
if(this.static.skills[i].id === skillId){
|
||||
return this.static.skills[i].name;
|
||||
}
|
||||
}
|
||||
return "";
|
||||
},
|
||||
getRoomItemsRequired: function(roomId) {
|
||||
return this.static.bundles.reduce(function(previousValue, nextValue){
|
||||
if(nextValue.room === roomId){
|
||||
return previousValue + nextValue.items_required;
|
||||
}
|
||||
else{
|
||||
return previousValue;
|
||||
}
|
||||
}, 0)
|
||||
},
|
||||
getRoomItemsChecked: function(roomId){
|
||||
var self = this;
|
||||
return this.static.bundles
|
||||
.filter(function(b){ return b.room === roomId; })
|
||||
.reduce(function(p, c){ return p + Math.min(self.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) || this.isBundleComplete(item.bundles[i]))){
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
},
|
||||
isBundleComplete: function(bundle_id){
|
||||
return this.user_data[bundle_id].length >= this.static.bundles[bundle_id].items_required;
|
||||
},
|
||||
getItemSeasons: function(item){
|
||||
return this.static.seasons.filter(function(season){ return item.seasons.indexOf(season.id) > -1 });
|
||||
},
|
||||
getItemSkills: function(item){
|
||||
return this.static.skills.filter(function(skill){ return item.skills.indexOf(skill.id) > -1 });
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
Vue.filter('inBundle', function(value, id){
|
||||
return value.filter(function(element){
|
||||
if(element.bundles.indexOf(id) > -1){
|
||||
return true;
|
||||
}
|
||||
else{
|
||||
return false;
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
Vue.filter('seasonFilter', function(items, season_id){
|
||||
return items.filter(function(element){
|
||||
if(season_id == "allseasons" && element.seasons.length > 3){
|
||||
return true;
|
||||
}
|
||||
else if(element.seasons.length < 4 && element.seasons.indexOf(season_id) > -1){
|
||||
return true;
|
||||
}
|
||||
else{
|
||||
return false;
|
||||
}
|
||||
});
|
||||
});
|
||||
Loading…
Reference in New Issue
Block a user