вашеимя
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque efficitur sit amet diam eu pharetra. Aliquam sit amet odio at urna tempus vehicula in sed quam. Cras ultricies dolor sit amet ex aliquam mollis. Donec iaculis est eget vestibulum aliquet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque efficitur sit amet diam eu pharetra. Aliquam sit amet odio at urna tempus vehicula in sed quam. Cras ultricies dolor sit amet ex aliquam mollis. Donec iaculis est eget vestibulum aliquet.
love
улица бесконечное лето долгая бесконечная жизнь какие-то еще слова
flood
вася иванов 2 3
write
1 2 3

yanichegoneznayu

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » yanichegoneznayu » готовые штуки » банк


банк

Сообщений 1 страница 2 из 2

1

ы

0

2

[hideprofile][html]

<style>
/* =========================================================
   ON:AIR BANK / СИНЯЯ ВЕРСИЯ
   ЦВЕТА И ГАБАРИТЫ — МЕНЯЙТЕ В ЭТОМ БЛОКЕ
   ========================================================= */
.oa-bank {
  --bank-dark: #11182f;       /* внешняя рамка */
  --bank-blue: #273b70;       /* второй цвет рамки */
  --cover-1: #253e7d;        /* первый цвет верхней обложки */
  --cover-2: #5278bc;        /* второй цвет верхней обложки */
  --cover-3: #24345e;        /* третий цвет верхней обложки */
  --bank-paper: #f6f8ff;     /* светлая правая панель */
  --bank-row: #eaf0fa;       /* фон строк с ценами */
  --bank-text: #283757;      /* основной текст */
  --bank-muted: #7586a5;     /* дополнительные подписи */
  --bank-accent: #5479bd;    /* акценты/кнопки/скролл */
  --bank-ice: #9de1f3;       /* голубой свет */
  --bank-height: 598px;      /* ВАЖНО: общая высота обеих колонок */
  width: min(900px, 100%);
  max-width: calc(100vw - 16px);
  margin: 20px auto;
  padding: 12px;
  box-sizing: border-box;
  border-radius: 32px;
  background: linear-gradient(130deg,var(--bank-dark),var(--bank-blue));
  box-shadow: 0 16px 38px rgba(15,26,61,.19);
  font: 12px/1.45 'Trebuchet MS',Arial,sans-serif;
  color: var(--bank-text);
}
.oa-bank, .oa-bank *, .oa-bank *::before, .oa-bank *::after { box-sizing:border-box; }
.oa-bank input[type="radio"] { position:absolute; width:1px; height:1px; opacity:0; pointer-events:none; }
.oa-bank-card {
  padding: 18px 18px 16px;
  border-radius: 25px;
  background:
    radial-gradient(circle at 92% 4%,rgba(157,225,243,.13),transparent 24%),
    radial-gradient(circle at 8% 88%,rgba(157,225,243,.09),transparent 31%),
    linear-gradient(125deg,var(--cover-1),var(--cover-2) 48%,var(--cover-3));
  overflow: hidden;
}
/* ВЕРХ БАНКА */
.oa-bank-top { display:flex; align-items:center; justify-content:space-between; gap:14px; margin-bottom:14px; color:#fff; }
.oa-bank-top > div:first-child > span { display:block; color:#d2ebff; font-size:10px; letter-spacing:2px; text-transform:uppercase; }
.oa-bank-top h2 { margin:4px 0 3px; font-size:34px; line-height:1; font-weight:900; text-transform:lowercase; color:#fff; }
.oa-bank-top em { display:block; font-style:normal; font-size:10px; letter-spacing:1px; color:#d8e8fc; text-transform:uppercase; }
.oa-bank-coins { flex:0 0 auto; text-align:center; min-width:112px; padding:9px 13px; border:1px solid rgba(255,255,255,.24); border-radius:19px; background:rgba(255,255,255,.16); }
.oa-bank-coins b { display:block; font-size:24px; line-height:1.1; color:var(--bank-ice); }
.oa-bank-coins span { display:block; margin-top:3px; font-size:9px; letter-spacing:.9px; color:#fff; text-transform:uppercase; }
/* ВКЛАДКИ — ВЫСОТА ПРИ ПЕРЕКЛЮЧЕНИИ НЕ МЕНЯЕТСЯ */
.oa-bank-tabs { display:flex; gap:7px; flex-wrap:wrap; margin-bottom:14px; }
.oa-bank-tabs label { padding:8px 13px; border-radius:999px; border:1px solid rgba(255,255,255,.20); background:rgba(10,24,57,.24); color:#eff7ff; font-size:10px; letter-spacing:1px; text-transform:uppercase; cursor:pointer; }
.oa-bank-tabs label:hover { background:rgba(255,255,255,.18); }
#oa-bank-main:checked ~ .oa-bank-card .oa-bank-tabs label[for="oa-bank-main"],
#oa-bank-game:checked ~ .oa-bank-card .oa-bank-tabs label[for="oa-bank-game"],
#oa-bank-active:checked ~ .oa-bank-card .oa-bank-tabs label[for="oa-bank-active"],
#oa-bank-spend:checked ~ .oa-bank-card .oa-bank-tabs label[for="oa-bank-spend"] {
  background:#f5f9ff; color:#294779; border-color:#fff; font-weight:bold;
}
/* ОСНОВНАЯ СЕТКА: ОБЕ КОЛОНКИ ФИКСИРОВАННОЙ ВЫСОТЫ */
.oa-bank-body {
  display:grid;
  grid-template-columns: 246px minmax(0,1fr);
  gap:14px;
  height: var(--bank-height);
  min-height:0;
  align-items:stretch;
}
/* СЛЕВА — ТЁМНАЯ ПАНЕЛЬ И НЕПОДВИЖНЫЙ СЧЁТЧИК */
.oa-bank-machine { display:flex; flex-direction:column; min-height:0; height:100%; padding:10px; background:linear-gradient(155deg,#18213a,#0d1630); color:#fff; border-radius:24px; }
.oa-bank-display { flex:0 0 154px; position:relative; overflow:hidden; padding:14px; border-radius:19px; background:
  radial-gradient(circle at 90% 12%,rgba(157,225,243,.16),transparent 36%),
  linear-gradient(135deg,rgba(255,255,255,.10),rgba(91,132,200,.07)); }
.oa-bank-display:after { content:'ON AIR'; position:absolute; right:-6px; bottom:-17px; white-space:nowrap; color:rgba(255,255,255,.05); font-size:60px; letter-spacing:-4px; font-weight:900; pointer-events:none; }
.oa-bank-live { display:inline-flex; align-items:center; gap:7px; padding:5px 9px; border-radius:30px; background:rgba(255,255,255,.09); color:#f5faff; font-size:9px; letter-spacing:1.3px; }
.oa-bank-live i { width:7px; height:7px; border-radius:50%; background:var(--bank-ice); box-shadow:0 0 7px rgba(157,225,243,.5); }
.oa-bank-title { position:relative; z-index:2; margin-top:13px; }
.oa-bank-title span { display:block; font-size:9px; text-transform:uppercase; letter-spacing:1.6px; color:#b4c8e8; }
.oa-bank-title b { display:block; font-size:26px; line-height:1; margin-top:3px; }
.oa-bank-title em { display:block; font-style:normal; font-size:10px; color:#d9eafa; margin-top:7px; }
.oa-bank-equalizer { position:absolute; bottom:12px; right:14px; z-index:2; display:flex; align-items:end; gap:4px; height:21px; }
.oa-bank-equalizer i { width:4px; border-radius:5px; background:linear-gradient(180deg,var(--bank-ice),#709bc8); }
.oa-bank-equalizer i:nth-child(1) {height:7px}.oa-bank-equalizer i:nth-child(2){height:15px}.oa-bank-equalizer i:nth-child(3){height:12px}.oa-bank-equalizer i:nth-child(4){height:20px}.oa-bank-equalizer i:nth-child(5){height:9px}
.oa-bank-tags {display:none}
.oa-bank-reader { flex:1 1 auto; display:flex; flex-direction:column; min-height:0; margin-top:9px; padding:10px; background:rgba(255,255,255,.07); border-radius:19px; }
.oa-bank-reader h4 { margin:0 0 8px; color:var(--bank-ice); font-size:11px; letter-spacing:1px; text-transform:uppercase; }
.oa-reader-tabs { display:grid; grid-template-columns:1fr 1fr; gap:6px; margin-bottom:8px; }
.oa-reader-tabs button { border:0; border-radius:11px; padding:7px; background:#344563; color:#fff; font:10px 'Trebuchet MS',Arial,sans-serif; cursor:pointer; }
.oa-reader-tabs button.active { background:#a9e2f3; color:#1c335a; font-weight:bold; }
.oa-reader-panel { display:none; min-height:0; }
.oa-reader-panel.active { display:flex; flex:1 1 auto; flex-direction:column; min-height:0; }
.oa-bank-picked { flex:1 1 auto; height:102px; min-height:0; overflow-y:auto; padding-right:4px; }
.oa-bank-picked > span { display:block; color:#c4d4ec; font-size:10px; line-height:1.3; padding:6px 2px; }
.oa-picked-item { padding:8px; margin-bottom:6px; border-radius:11px; background:rgba(7,20,43,.40); }
.oa-picked-item strong { display:block; color:#fff; font-size:10px; line-height:1.3; }
.oa-picked-item em { display:block; font-style:normal; font-size:10px; color:var(--bank-ice); margin:3px 0 5px; }
.oa-picked-controls { display:grid; grid-template-columns:24px 1fr 24px; gap:5px; }
.oa-picked-minus,.oa-picked-plus { min-width:0; border:0; border-radius:7px; background:#4d6289; color:#fff; cursor:pointer; }
.oa-bank .oa-picked-item input { width:100%; min-width:0; text-align:center; padding:5px; border:0; border-radius:7px; background:#edf4fd; color:#283757; font:12px 'Trebuchet MS',Arial,sans-serif; }
.oa-picked-remove { margin-top:5px; padding:4px 7px; border:0; border-radius:10px; background:rgba(255,255,255,.1); color:#fff; font-size:9px; cursor:pointer; }
.oa-bank-total { display:flex; justify-content:space-between; align-items:center; gap:4px; margin:7px 0; border-radius:10px; padding:7px 8px; background:#0d1630; color:#b6e9f4; font-size:10px; }
.oa-bank-total b {white-space:nowrap}
.oa-bank #oaBankResult,.oa-bank #oaSpendResult { flex:0 0 94px; resize:none; width:100%; height:94px; min-height:0; border:0; border-radius:10px; background:#f4f7fc; color:#394a68; padding:8px; font:10px/1.3 'Trebuchet MS',Arial,sans-serif; }
.oa-bank #oaBankCopy,.oa-bank #oaBankClear,.oa-bank #oaSpendCopy,.oa-bank #oaSpendClear { flex:0 0 auto; width:100%; border:0; border-radius:10px; margin-top:5px; padding:7px; background:#86c8e7; color:#172e4f; font:10px 'Trebuchet MS',Arial,sans-serif; cursor:pointer; }
.oa-bank #oaBankClear,.oa-bank #oaSpendClear { background:#30405f; color:#fff; }
/* ПРАВАЯ ПАНЕЛЬ: ФИКСИРОВАННАЯ ВЫСОТА + СКРОЛЛ ВНУТРИ КАЖДОЙ ВКЛАДКИ */
.oa-bank-pages {
  min-width:0; height:100%; min-height:0;
  padding:12px;
  border-radius:23px;
  background:rgba(247,249,255,.97);
  overflow:hidden;
}
.oa-bank-page {
  display:none;
  height:100%;
  min-height:0;
  overflow-y:auto;
  overflow-x:hidden;
  padding:1px 6px 1px 1px;
  scrollbar-width:thin;
  scrollbar-color:#9eb4d7 transparent;
}
#oa-bank-main:checked ~ .oa-bank-card .page-main,
#oa-bank-game:checked ~ .oa-bank-card .page-game,
#oa-bank-active:checked ~ .oa-bank-card .page-active,
#oa-bank-spend:checked ~ .oa-bank-card .page-spend { display:block; }
.oa-bank-page::-webkit-scrollbar,.oa-bank-picked::-webkit-scrollbar {width:6px}
.oa-bank-page::-webkit-scrollbar-thumb,.oa-bank-picked::-webkit-scrollbar-thumb {background:#9eb4d7;border-radius:9px}
.oa-bank-hero { padding:17px; margin-bottom:11px; background:linear-gradient(135deg,#dfe9fa,#f9fbff); border-radius:19px; }
.oa-bank-hero h3 { margin:0 0 6px; font-size:21px; line-height:1.1; color:#2f487e; }
.oa-bank-hero p { margin:0; line-height:1.45; color:#5a6c8d; font-size:12px; }
/* ВАЖНО: height:auto, иначе длинная «Активность» растягивала родительский блок */
.oa-bank-section { display:block; height:auto; min-height:0; padding:14px; margin-bottom:10px; border-radius:18px; background:#fff; box-shadow:0 3px 12px rgba(43,69,110,.07); }
.oa-bank-section h3 { margin:0 0 11px; color:#2e4676; font-size:18px; line-height:1.1; }
.oa-bank-row { display:flex; justify-content:space-between; align-items:center; gap:9px; min-width:0; padding:9px 10px; margin-bottom:6px; background:var(--bank-row); border-radius:12px; }
.oa-bank-row:last-child {margin-bottom:0}
.oa-bank-row span { min-width:0; font-size:11px; line-height:1.4; color:#4d5d79; }
.oa-bank-row b { flex:0 0 auto; max-width:52%; padding:5px 8px; border-radius:999px; background:#d8e5f7; color:#365991; font-size:10px; line-height:1.3; text-align:center; font-weight:bold; }
.oa-bank-row[data-calc],.oa-bank-row[data-spend] {cursor:pointer}
.oa-bank-row[data-calc]:hover,.oa-bank-row[data-spend]:hover { background:#dceafc; }
/* АДАПТИВ: НА УЗКИХ ЭКРАНАХ СЧЁТЧИК НАД СПИСКОМ,
   НО ВЫСОТА ВКЛАДОК ОСТАЁТСЯ ПОСТОЯННОЙ */
@media(max-width:760px) {
  .oa-bank { max-width:calc(100vw - 12px); padding:8px; }
  .oa-bank-card { padding:14px; }
  .oa-bank-top { flex-wrap:wrap; }
  .oa-bank-top h2 {font-size:30px}
  .oa-bank-tabs {flex-wrap:nowrap;overflow-x:auto;padding-bottom:5px}
  .oa-bank-tabs label {flex:0 0 auto;white-space:nowrap}
  .oa-bank-body {display:flex;flex-direction:column;height:auto;gap:12px}
  .oa-bank-machine {height:540px;flex:0 0 540px}
  .oa-bank-display {flex-basis:112px}
  .oa-bank-pages {height:485px;flex:0 0 485px}
}
@media(max-width:440px) {
  .oa-bank-card {padding:10px;border-radius:20px}
  .oa-bank-coins {padding:6px 10px;min-width:90px}
  .oa-bank-coins b {font-size:20px}
  .oa-bank-tabs label {padding:7px 10px;font-size:9px}
  .oa-bank-pages {padding:8px}
  .oa-bank-section {padding:10px}
  .oa-bank-row {flex-wrap:wrap;gap:5px}
  .oa-bank-row b {max-width:100%;margin-left:auto}
}

</style>

<div class="oa-bank">

<input type="radio" name="oa-bank-tabs" id="oa-bank-main" checked>
<input type="radio" name="oa-bank-tabs" id="oa-bank-game">
<input type="radio" name="oa-bank-tabs" id="oa-bank-active">
<input type="radio" name="oa-bank-tabs" id="oa-bank-spend">

<div class="oa-bank-card">

  <div class="oa-bank-top">
    <div>
      <span>ON:AIR BANK</span>
      <h2>банк</h2>
      <em>баланс / начисления / списания / активность</em>
    </div>

    <div class="oa-bank-coins">
      <b>Ⓥ</b>
      <span>считаем голоса</span>
    </div>
  </div>

  <div class="oa-bank-tabs">
    <label for="oa-bank-main">основное</label>
    <label for="oa-bank-game">игровое</label>
    <label for="oa-bank-active">активное</label>
    <label for="oa-bank-spend">траты</label>
  </div>

  <div class="oa-bank-body">

    <div class="oa-bank-machine">
      <div class="oa-bank-display">

        <div class="oa-bank-live">
          <i></i>
          <b>BANK ON AIR</b>
        </div>

        <div class="oa-bank-title">
          <span>daily balance</span>
          <b>банк</b>
          <em>зарабатываем / тратим</em>
        </div>

        <div class="oa-bank-equalizer">
          <i></i><i></i><i></i><i></i><i></i>
        </div>

        <div class="oa-bank-tags"></div>

      </div>

      <div class="oa-bank-reader">
        <h4>счётчик</h4>

        <div class="oa-reader-tabs">
          <button type="button" class="active" id="oaReaderIncomeTab">начислить</button>
          <button type="button" id="oaReaderSpendTab">тратить</button>
        </div>

        <div class="oa-reader-panel active" id="oaReaderIncome">
          <div class="oa-bank-picked" id="oaBankPicked">
            <span>нажми на позиции справа</span>
          </div>

          <div class="oa-bank-total">
            <span>итого</span>
            <b id="oaBankTotal">0 голосов</b>
          </div>

          <textarea id="oaBankResult" readonly></textarea>

          <button type="button" id="oaBankCopy">скопировать</button>
          <button type="button" id="oaBankClear">очистить</button>
        </div>

        <div class="oa-reader-panel" id="oaReaderSpend">
          <div class="oa-bank-picked" id="oaSpendPicked">
            <span>нажми на траты справа</span>
          </div>

          <div class="oa-bank-total">
            <span>тратим</span>
            <b id="oaSpendTotal">0 голосов</b>
          </div>

          <textarea id="oaSpendResult" readonly></textarea>

          <button type="button" id="oaSpendCopy">скопировать</button>
          <button type="button" id="oaSpendClear">очистить</button>
        </div>
      </div>
    </div>

    <div class="oa-bank-pages">

      <div class="oa-bank-page page-main">

        <div class="oa-bank-hero">
          <h3>как работает банк?</h3>
          <p>
            Банк — это тема, где игроки забирают голоса за основные действия на форуме:
            регистрацию, анкету, приход по заявке, оформление профиля и другие стартовые активности.
            Всё приносится по шаблону с доказательствами.
          </p>
        </div>

        <div class="oa-bank-section">
          <h3>основные начисления</h3>

          <div class="oa-bank-row" data-calc data-name="регистрация персонажа" data-price="50"><span>регистрация персонажа</span><b>50 голосов</b></div>
          <div class="oa-bank-row" data-calc data-name="пришёл по заявке" data-price="100"><span>пришёл по заявке</span><b>100 голосов</b></div>
          <div class="oa-bank-row" data-calc data-name="анкета текстом" data-price="100"><span>анкета текстом</span><b>100 голосов</b></div>
          <div class="oa-bank-row" data-calc data-name="анкета мемами" data-price="70"><span>анкета мемами</span><b>70 голосов</b></div>
          <div class="oa-bank-row" data-calc data-name="оставить заявку на нужного" data-price="150"><span>оставить заявку на нужного</span><b>150 голосов</b></div>
          <div class="oa-bank-row" data-calc data-name="привести друга" data-price="200"><span>привести друга</span><b>200 голосов</b></div>
          <div class="oa-bank-row" data-calc data-name="первая покупка в магазине" data-price="50"><span>первая покупка в магазине</span><b>50 голосов</b></div>
        </div>

      </div>

      <div class="oa-bank-page page-game">

        <div class="oa-bank-section">
          <h3>игровые начисления</h3>

          <div class="oa-bank-row" data-calc data-name="открыть игровой эпизод" data-price="100"><span>открыть игровой эпизод</span><b>100 голосов</b></div>
          <div class="oa-bank-row" data-calc data-name="закрыть игровой эпизод" data-price="150"><span>закрыть игровой эпизод</span><b>150 голосов</b></div>
          <div class="oa-bank-row" data-calc data-name="написать первый игровой пост" data-price="200"><span>написать первый игровой пост</span><b>200 голосов</b></div>
          <div class="oa-bank-row" data-calc data-name="написать sns-пост" data-price="50"><span>написать sns-пост</span><b>50 голосов</b></div>
          <div class="oa-bank-row" data-calc data-name="каждые 5 sns-постов" data-price="100"><span>каждые 5 sns-постов</span><b>100 голосов</b></div>
          <div class="oa-bank-row" data-calc data-name="пост до 3500 символов" data-price="100"><span>пост до 3500 символов</span><b>100 голосов</b></div>
          <div class="oa-bank-row" data-calc data-name="пост от 3500 до 7000 символов" data-price="200"><span>пост от 3500 до 7000 символов</span><b>200 голосов</b></div>
          <div class="oa-bank-row" data-calc data-name="пост от 7500 символов и выше" data-price="500"><span>пост от 7500 символов и выше</span><b>500 голосов</b></div>
            <div class="oa-bank-row" data-calc data-name="ответ в течение суток" data-price="200"><span>ответ в течение суток</span><b>200 голосов</b></div>
            <div class="oa-bank-row" data-calc data-name="что-то про соцсеть" data-price="200"><span>что-то про соцсеть</span><b>200 голосов</b></div>
         </div>

      </div>

      <div class="oa-bank-page page-active">

        <div class="oa-bank-section">
          <h3>активность</h3>

          <div class="oa-bank-row" data-calc data-name="первые 100 сообщений" data-price="100"><span>первые 100 сообщений</span><b>100 голосов</b></div>
          <div class="oa-bank-row" data-calc data-name="каждые 100 сообщений" data-price="50"><span>каждые 100 сообщений</span><b>50 голосов</b></div>
          <div class="oa-bank-row" data-calc data-name="каждые 100 позитива" data-price="50"><span>каждые 100 позитива</span><b>50 голосов</b></div>
          <div class="oa-bank-row" data-calc data-name="каждые 100 уважения" data-price="50"><span>каждые 100 уважения</span><b>50 голосов</b></div>
          <div class="oa-bank-row" data-calc data-name="быть на форуме 1 час" data-price="100"><span>быть на форуме 1 час</span><b>100 голосов</b></div>
          <div class="oa-bank-row" data-calc data-name="быть на форуме 3 часа" data-price="300"><span>быть на форуме 3 часа</span><b>300 голосов</b></div>
          <div class="oa-bank-row" data-calc data-name="каждые 10 реклам" data-price="100"><span>каждые 10 реклам</span><b>100 голосов</b></div>
          <div class="oa-bank-row" data-calc data-name="каждые 15 'это интересно'" data-price="50"><span>каждые 15 'это интересно'</span><b>50 голосов</b></div>
          <div class="oa-bank-row" data-calc data-name="создал флуд'" data-price="100"><span>создал флуд</span><b>100 голосов</b></div>
          <div class="oa-bank-row" data-calc data-name="добил флуд'" data-price="100"><span>добил флуд</span><b>100 голосов</b></div>
          <div class="oa-bank-row" data-calc data-name="участие в конкурсе'" data-price="50"><span>участие в конкурсе</span><b>50 голосов</b></div>
          <div class="oa-bank-row" data-calc data-name="попадание в таблицу" data-price="250"><span>попадание в таблицу</span><b>250 голосов</b></div>
          <div class="oa-bank-row" data-calc data-name="провёл на форуме 1 день" data-price="200"><span>провёл на форуме 1 день</span><b>200 голосов</b></div>
          <div class="oa-bank-row" data-calc data-name="провёл на форуме 15 дней" data-price="500"><span>провёл на форуме 15 дней</span><b>500 голосов</b></div>
          <div class="oa-bank-row" data-calc data-name="провёл на форуме 30 дней" data-price="1000"><span>провёл на форуме 30 дней</span><b>1000 голосов</b>
</div>
        </div>

      </div>

      <div class="oa-bank-page page-spend">

        <div class="oa-bank-hero">
          <h3>траты</h3>
          <p>
            Здесь можно выбрать позиции, на которые игрок тратит голоса. Нажимай на строку,
            и она попадёт в левый счётчик во вкладку «тратить».
          </p>
        </div>

        <div class="oa-bank-section">
          <h3>магазин трат</h3>

          <div class="oa-bank-row" data-spend data-name="первая смена внешности" data-price="0"><span>смена внешности</span><b>бесплатно</b></div>
          <div class="oa-bank-row" data-spend data-name="смена внешности" data-price="1500"><span>смена внешности</span><b>1500 голосов</b></div>
          <div class="oa-bank-row" data-spend data-name="выкупить внешность на неделю" data-price="1000"><span>выкупить внешность на неделю</span><b>1000 голосов</b></div>
          <div class="oa-bank-row" data-spend data-name="выкупить внешность на 2 недели" data-price="2000"><span>выкупить внешность на неделю</span><b>2000 голосов</b></div>
          <div class="oa-bank-row" data-spend data-name="первый твин" data-price="0"><span>твин</span><b>бесплатно (с одобрения амс, коммент) </b></div>
          <div class="oa-bank-row" data-spend data-name="твин" data-price="3500"><span>твин</span><b>3500 голосов</b></div>
          <div class="oa-bank-row" data-spend data-name="выписаться из списков" data-price="10000"><span>выписаться из списков</span><b>10000 голосов</b></div>
          <div class="oa-bank-row" data-spend data-name="аватар от амс" data-price="0"><span>индивидуальный фон</span><b>только в кредит ахах</b></div>
          <div class="oa-bank-row" data-spend data-name="индивидуальный фон" data-price="2000"><span>индивидуальный фон</span><b>2000 голосов</b></div>
          <div class="oa-bank-row" data-spend data-name="индивидуальная плашка" data-price="1500"><span>индивидуальная плашка</span><b>1500 голосов</b></div>
          <div class="oa-bank-row" data-spend data-name="индивидуальная иконка" data-price="1000"><span>индивидуальная иконка</span><b>1000 голосов</b></div>
        </div>

      </div>

    </div>
  </div>

</div>
</div>

<script>
(function () {
  var bank = document.querySelector('.oa-bank');
  if (!bank) return;

  var incomeRows = bank.querySelectorAll('.oa-bank-row[data-calc]');
  var spendRows = bank.querySelectorAll('.oa-bank-row[data-spend]');

  var incomeTab = bank.querySelector('#oaReaderIncomeTab');
  var spendTab = bank.querySelector('#oaReaderSpendTab');
  var incomePanel = bank.querySelector('#oaReaderIncome');
  var spendPanel = bank.querySelector('#oaReaderSpend');

  var incomeBox = bank.querySelector('#oaBankPicked');
  var incomeTotal = bank.querySelector('#oaBankTotal');
  var incomeResult = bank.querySelector('#oaBankResult');
  var incomeCopy = bank.querySelector('#oaBankCopy');
  var incomeClear = bank.querySelector('#oaBankClear');

  var spendBox = bank.querySelector('#oaSpendPicked');
  var spendTotal = bank.querySelector('#oaSpendTotal');
  var spendResult = bank.querySelector('#oaSpendResult');
  var spendCopy = bank.querySelector('#oaSpendCopy');
  var spendClear = bank.querySelector('#oaSpendClear');

  var incomeItems = [];
  var spendItems = [];

  function bbOpen() {
    return '[' + 'b' + ']';
  }

  function bbClose() {
    return '[' + '/' + 'b' + ']';
  }

  function word(num) {
    var n = Math.abs(num) % 100;
    var n1 = n % 10;
    if (n > 10 && n < 20) return 'голосов';
    if (n1 > 1 && n1 < 5) return 'голоса';
    if (n1 === 1) return 'голос';
    return 'голосов';
  }

  function switchReader(mode) {
    if (mode === 'spend') {
      incomeTab.classList.remove('active');
      spendTab.classList.add('active');
      incomePanel.classList.remove('active');
      spendPanel.classList.add('active');
    } else {
      spendTab.classList.remove('active');
      incomeTab.classList.add('active');
      spendPanel.classList.remove('active');
      incomePanel.classList.add('active');
    }
  }

  function getTotal(items) {
    var total = 0;
    items.forEach(function (item) {
      total += item.price * (parseInt(item.count, 10) || 0);
    });
    return total;
  }

  /* ЗДЕСЬ МЕНЯЕТСЯ ГОТОВЫЙ КОД ДЛЯ НАЧИСЛЕНИЙ */
  function buildIncomeText() {
    var total = getTotal(incomeItems);
    var lines = [];

    incomeItems.forEach(function (item) {
      var count = parseInt(item.count, 10) || 0;
      var sum = item.price * count;
      var detail = count > 1 ? ' x ' + count : '';

      if (sum > 0) {
        lines.push('— ' + item.name + detail + ': ' + sum + ' ' + word(sum));
      }
    });

    incomeTotal.textContent = total + ' ' + word(total);

    incomeResult.value =
      bbOpen() + 'за что:' + bbClose() + '\n' +
      (lines.length ? lines.join('\n') : '— ') +
      '\n' + bbOpen() + 'доказательства:' + bbClose() + '\n' +
      '\n' + bbOpen() + 'сумма:' + bbClose() + ' ' + total + ' ' + word(total) +
      '\n' + bbOpen() + 'итого на балансе:' + bbClose();
  }

  /* ЗДЕСЬ МЕНЯЕТСЯ ГОТОВЫЙ КОД ДЛЯ ТРАТ */
  function buildSpendText() {
    var total = getTotal(spendItems);
    var lines = [];

    spendItems.forEach(function (item) {
      var count = parseInt(item.count, 10) || 0;
      var sum = item.price * count;
      var detail = count > 1 ? ' x ' + count : '';

      if (sum > 0) {
        lines.push('— ' + item.name + detail + ': ' + sum + ' ' + word(sum));
      }
    });

    spendTotal.textContent = total + ' ' + word(total);

    spendResult.value =
      bbOpen() + 'что берём:' + bbClose() + '\n' +
      (lines.length ? lines.join('\n') : '— ') +
      '\n' + bbOpen() + 'исхи и пожелания:' + bbClose() + '\n' +
      '\n' + bbOpen() + 'скока тратим:' + bbClose() + ' ' + total + ' ' + word(total) +
      '\n' + bbOpen() + 'скока осталось:' + bbClose();
  }

  function renderList(box, items, emptyText, mode) {
    box.innerHTML = '';

    if (!items.length) {
      box.innerHTML = '<span>' + emptyText + '</span>';
      if (mode === 'income') buildIncomeText();
      if (mode === 'spend') buildSpendText();
      return;
    }

    items.forEach(function (item, index) {
      var count = parseInt(item.count, 10) || 0;
      var sum = item.price * count;

      var el = document.createElement('div');
      el.className = 'oa-picked-item';

      el.innerHTML =
        '<strong>' + item.name + '</strong>' +
        '<em>' + sum + ' ' + word(sum) + '</em>' +
        '<div class="oa-picked-controls">' +
          '<button type="button" class="oa-picked-minus" data-mode="' + mode + '" data-index="' + index + '">-</button>' +
          '<input type="number" min="0" value="' + count + '" data-mode="' + mode + '" data-index="' + index + '" placeholder="сколько раз?">' +
          '<button type="button" class="oa-picked-plus" data-mode="' + mode + '" data-index="' + index + '">+</button>' +
        '</div>' +
        '<button type="button" class="oa-picked-remove" data-mode="' + mode + '" data-index="' + index + '">убрать</button>';

      box.appendChild(el);
    });

    if (mode === 'income') buildIncomeText();
    if (mode === 'spend') buildSpendText();
  }

  function renderIncome() {
    renderList(incomeBox, incomeItems, 'нажми на позиции справа', 'income');
  }

  function renderSpend() {
    renderList(spendBox, spendItems, 'нажми на траты справа', 'spend');
  }

  function addItem(items, name, price) {
    var exists = items.find(function (item) {
      return item.name === name;
    });

    if (exists) {
      exists.count += 1;
    } else {
      items.push({
        name: name,
        price: price,
        count: 1
      });
    }
  }

  function updateInput(target) {
    var mode = target.dataset.mode;
    var index = parseInt(target.dataset.index, 10);
    var items = mode === 'spend' ? spendItems : incomeItems;

    if (!items[index]) return;

    items[index].count = parseInt(target.value, 10) || 0;

    var item = items[index];
    var sum = item.price * item.count;
    var pickedItem = target.closest('.oa-picked-item');

    if (pickedItem) {
      pickedItem.querySelector('em').textContent = sum + ' ' + word(sum);
    }

    if (mode === 'spend') {
      buildSpendText();
    } else {
      buildIncomeText();
    }
  }

  function handlePickedClick(e) {
    var mode = e.target.dataset.mode;
    if (!mode) return;

    var items = mode === 'spend' ? spendItems : incomeItems;
    var index = parseInt(e.target.dataset.index, 10);

    if (!items[index]) return;

    if (e.target.classList.contains('oa-picked-remove')) {
      items.splice(index, 1);
    }

    if (e.target.classList.contains('oa-picked-minus')) {
      items[index].count = Math.max(0, (parseInt(items[index].count, 10) || 0) - 1);
    }

    if (e.target.classList.contains('oa-picked-plus')) {
      items[index].count = (parseInt(items[index].count, 10) || 0) + 1;
    }

    if (mode === 'spend') {
      renderSpend();
    } else {
      renderIncome();
    }
  }

  incomeRows.forEach(function (row) {
    row.addEventListener('click', function () {
      addItem(incomeItems, row.dataset.name, parseInt(row.dataset.price, 10) || 0);
      switchReader('income');
      renderIncome();
    });
  });

  spendRows.forEach(function (row) {
    row.addEventListener('click', function () {
      addItem(spendItems, row.dataset.name, parseInt(row.dataset.price, 10) || 0);
      switchReader('spend');
      renderSpend();
    });
  });

  incomeTab.addEventListener('click', function () {
    switchReader('income');
  });

  spendTab.addEventListener('click', function () {
    switchReader('spend');
  });

  incomeBox.addEventListener('focusin', function (e) {
    if (e.target.matches('input') && e.target.value === '0') e.target.value = '';
  });

  spendBox.addEventListener('focusin', function (e) {
    if (e.target.matches('input') && e.target.value === '0') e.target.value = '';
  });

  incomeBox.addEventListener('input', function (e) {
    if (e.target.matches('input')) updateInput(e.target);
  });

  spendBox.addEventListener('input', function (e) {
    if (e.target.matches('input')) updateInput(e.target);
  });

  incomeBox.addEventListener('focusout', function (e) {
    if (e.target.matches('input') && e.target.value === '') {
      e.target.value = '0';
      updateInput(e.target);
    }
  });

  spendBox.addEventListener('focusout', function (e) {
    if (e.target.matches('input') && e.target.value === '') {
      e.target.value = '0';
      updateInput(e.target);
    }
  });

  incomeBox.addEventListener('click', handlePickedClick);
  spendBox.addEventListener('click', handlePickedClick);

  incomeCopy.addEventListener('click', function () {
    incomeResult.select();
    document.execCommand('copy');
    incomeCopy.textContent = 'скопировано';
    setTimeout(function () {
      incomeCopy.textContent = 'скопировать';
    }, 1200);
  });

  spendCopy.addEventListener('click', function () {
    spendResult.select();
    document.execCommand('copy');
    spendCopy.textContent = 'скопировано';
    setTimeout(function () {
      spendCopy.textContent = 'скопировать';
    }, 1200);
  });

  incomeClear.addEventListener('click', function () {
    incomeItems = [];
    renderIncome();
  });

  spendClear.addEventListener('click', function () {
    spendItems = [];
    renderSpend();
  });

  renderIncome();
  renderSpend();
})();
</script>

[/html][/hideprofile]

начислить

Код:
[b]за что:[/b]
[b]доказательства:[/b]
[b]сумма:[/b]
[b]итого на балансе:[/b]

потратить

Код:
[b]что берём:[/b]
[b]скока тратим:[/b]
[b]скока осталось:[/b]

0


Вы здесь » yanichegoneznayu » готовые штуки » банк


Рейтинг форумов | Создать форум бесплатно