| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- import { product } from "./product.js";
- import { product_container } from "./product_container.js";
- export class product_containers {
- #content;
- #where;
- #inserted;
- #counter;
- #count;
- #next_button;
- #previous_button;
- constructor(where) {
- this.#counter = 0;
- this.#count = 24;
-
- this.#content = new Array();
- this.#inserted = new Array();
- this.#where = document.createElement("div");
- this.#where.classList.add("products-list");
-
- this.#next_button = document.createElement("input");
- this.#next_button.type = "button";
- this.#next_button.value = _("show-next");
- this.#previous_button = document.createElement("input");
- this.#previous_button.type = "button";
- this.#previous_button.value = _("show-previous");
- this.#next_button.addEventListener("click", () => {
- this.#next();
- });
- this.#previous_button.addEventListener("click", () => {
- this.#previous();
- });
- where.appendChild(this.#previous_button);
- where.appendChild(this.#where);
- where.appendChild(this.#next_button);
- }
-
- add_list(target) {
- target.forEach(count => {
- this.add(count);
- });
- return this;
- }
- add(target) {
- const current = new product_container(target);
- this.#content.push(current);
- return this;
- }
- clean() {
- this.#counter = 0;
- this.#content = new Array();
- return this;
- }
- #update_buttons() {
- if (this.previous_avairable) {
- this.#previous_button.style.opacity = "1";
- } else {
- this.#previous_button.style.opacity = "0";
- }
- if (this.next_avairable) {
- this.#next_button.style.opacity = "1";
- } else {
- this.#next_button.style.opacity = "0";
- }
- }
- update() {
- this.#update_buttons();
- this.#hide();
- setTimeout(() => {
- const first = this.#counter;
- const last = this.#counter + this.#count;
- const current = this.#content.slice(first, last);
-
- current.forEach(count => {
- this.#show_sigle(count);
- });
- }, 500);
- return this;
- }
- get next_avairable() {
- return (this.#counter + this.#count) <= this.#content.length;
- }
- get previous_avairable() {
- return this.#counter >= this.#count;
- }
- #next() {
- if (!this.next_avairable) return;
- this.#counter += this.#count;
- this.update();
- }
- #previous() {
- if (!this.previous_avairable) return;
- this.#counter -= this.#count;
- this.#counter = this.#counter < 0 ? 0 : this.#counter;
- this.update();
- }
- #show_sigle(target) {
- this.#inserted.push(target);
- target.add(this.#where);
- }
- #hide() {
- this.#inserted.forEach(count => {
- count.drop();
- });
- this.#inserted = new Array();
- return this;
- }
- }
|