Add new fields to admin panel (#14943)

* Add new fields to admin panel

* fix lint

* Update hall.js

* fix(plab): plab

* fix(lint): destructure assignment

* fix(subs): coerce offset to number

---------

Co-authored-by: SabreCat <sabe@habitica.com>
This commit is contained in:
Phillip Thelen
2024-01-16 21:45:57 +01:00
committed by GitHub
parent d6d131647a
commit d0e4b533e3
3 changed files with 66 additions and 27 deletions

View File

@@ -21,22 +21,40 @@
Group plan ID:
<strong>{{ hero.purchased.plan.owner }}</strong>
</div>
<div v-if="hero.purchased.plan.dateCreated">
<div v-if="hero.purchased.plan.dateCreated" class="form-inline">
<label>
Creation date:
<strong>{{ dateFormat(hero.purchased.plan.dateCreated) }}</strong>
<input
v-model="hero.purchased.plan.dateCreated"
class="form-control"
type="text"
> <strong class="ml-2">{{ dateFormat(hero.purchased.plan.dateCreated) }}</strong>
</label>
</div>
<div v-if="hero.purchased.plan.dateCurrentTypeCreated">
<div v-if="hero.purchased.plan.dateCurrentTypeCreated" class="form-inline">
<label>
Start date for current subscription type:
<strong>{{ dateFormat(hero.purchased.plan.dateCurrentTypeCreated) }}</strong>
</div>
<div>
Termination date:
<strong
v-if="hero.purchased.plan.dateTerminated"
<input
v-model="hero.purchased.plan.dateCurrentTypeCreated"
class="form-control"
type="text"
>
{{ dateFormat(hero.purchased.plan.dateTerminated) }}
</strong>
</label>
<strong class="ml-2">{{dateFormat(hero.purchased.plan.dateCurrentTypeCreated)}}</strong>
</div>
<div class="form-inline">
<label>
Termination date:
<div
v-if="hero.purchased.plan.dateTerminated">
<input
v-model="hero.purchased.plan.dateTerminated"
class="form-control"
type="text"
> <strong class="ml-2">{{ dateFormat(hero.purchased.plan.dateTerminated) }}</strong>
</div>
<strong v-else> None</strong>
</label>
</div>
<div class="form-inline">
<label>
@@ -50,9 +68,17 @@
>
</label>
</div>
<div>
<div class="form-inline">
<label>
Perk offset months:
<strong>{{ hero.purchased.plan.consecutive.offset }}</strong>
<input
v-model="hero.purchased.plan.consecutive.offset"
class="form-control"
type="number"
min="0"
step="1"
>
</label>
</div>
<div class="form-inline">
Perk month count:

View File

@@ -290,7 +290,7 @@ export function getPlanContext (user, now) {
const planMonths = subscriptionBlocks[plan.planId] ? subscriptionBlocks[plan.planId].months : 1;
let monthsTillNextHourglass;
if (planMonths > 1) {
monthsTillNextHourglass = plan.consecutive.offset + 1;
monthsTillNextHourglass = Number(plan.consecutive.offset) + 1;
} else {
monthsTillNextHourglass = 3 - plan.perkMonthCount;
}

View File

@@ -275,15 +275,25 @@ api.updateHero = {
}
if (updateData.purchased && updateData.purchased.plan) {
if (updateData.purchased.plan.gemsBought) {
hero.purchased.plan.gemsBought = updateData.purchased.plan.gemsBought;
const { plan } = updateData.purchased;
if (plan.gemsBought) {
hero.purchased.plan.gemsBought = plan.gemsBought;
}
if (updateData.purchased.plan.perkMonthCount) {
hero.purchased.plan.perkMonthCount = updateData.purchased.plan.perkMonthCount;
if (plan.dateCreated) {
hero.purchased.plan.dateCreated = plan.dateCreated;
}
if (updateData.purchased.plan.consecutive) {
if (updateData.purchased.plan.consecutive.trinkets) {
const changedHourglassTrinkets = updateData.purchased.plan.consecutive.trinkets
if (plan.dateCurrentTypeCreated) {
hero.purchased.plan.dateCurrentTypeCreated = plan.dateCurrentTypeCreated;
}
if (plan.dateTerminated) {
hero.purchased.plan.dateTerminated = plan.dateTerminated;
}
if (plan.perkMonthCount) {
hero.purchased.plan.perkMonthCount = plan.perkMonthCount;
}
if (plan.consecutive) {
if (plan.consecutive.trinkets) {
const changedHourglassTrinkets = plan.consecutive.trinkets
- hero.purchased.plan.consecutive.trinkets;
if (changedHourglassTrinkets !== 0) {
@@ -293,13 +303,16 @@ api.updateHero = {
);
}
hero.purchased.plan.consecutive.trinkets = updateData.purchased.plan.consecutive.trinkets;
hero.purchased.plan.consecutive.trinkets = plan.consecutive.trinkets;
}
if (updateData.purchased.plan.consecutive.gemCapExtra) {
hero.purchased.plan.consecutive.gemCapExtra = updateData.purchased.plan.consecutive.gemCapExtra; // eslint-disable-line max-len
if (plan.consecutive.gemCapExtra) {
hero.purchased.plan.consecutive.gemCapExtra = plan.consecutive.gemCapExtra; // eslint-disable-line max-len
}
if (updateData.purchased.plan.consecutive.count) {
hero.purchased.plan.consecutive.count = updateData.purchased.plan.consecutive.count; // eslint-disable-line max-len
if (plan.consecutive.count) {
hero.purchased.plan.consecutive.count = plan.consecutive.count; // eslint-disable-line max-len
}
if (plan.consecutive.offset) {
hero.purchased.plan.consecutive.offset = plan.consecutive.offset; // eslint-disable-line max-len
}
}
}