import ProductDialogReminder from "../components/product/dialog/Reminder.vue";
import ProductDialogMenu from "../components/product/dialog/Menu.vue";
import ProductDialogShare from "../components/product/dialog/Share.vue";
import ProductDialogLineChart from "../components/product/dialog/LineChart.vue";

export default (data) => {
  const { dialog, t } = inject("service");
  const fevorites = useFavoritesStore();
  const cart = useCartStore();
  const token = useCookie("token");
  const router = useRouter();

  const confg = reactive({
    btns: {
      report: {
        props: {
          label: t("reportIncorrectSpecs"),
          icon: "isax isax-info-circle",
          severity: "secondary",
          iconPos: "right",
          rounded: true,
          text: true,
        },
      },
      arrows: [
        { icon: "isax isax-arrow-right-3", rounded: true, swiper: true },
        { icon: "isax isax-arrow-left-2", rounded: true, swiper: true },
      ],
      close: {
        props: {
          icon: "isax isax-close-circle",
          severity: "secondary",
          rounded: true,
          text: true,
        },
      },
      shares: {
        copyLink: {
          props: {
            label: t("copyLink"),
            icon: "isax isax-document-copy",
            severity: "secondary",
            iconPos: "right",
            outlined: true,
          },
        },
        telegram: {
          props: {
            label: t("telegram"),
            icon: "isax isax-send-2",
            severity: "primary",
            iconPos: "right",
          },
        },
        whatsapp: {
          props: {
            label: t("whatsapp"),
            icon: "isax isax-call4",
            severity: "success",
            iconPos: "right",
          },
        },
      },
      submit: {
        props: {
          label: t("submitComment"),
          outlined: true,
        },
      },
      sort: {
        createdAt: {
          props: {
            label: t("newest"),
            severity: "secondary",
            text: true,
          },
        },
        point: {
          props: {
            label: t("mostUseful"),
            severity: "secondary",
            text: true,
          },
        },
      },
    },
    swiper: {
      gallery: {
        pagination: { dynamicBullets: true },
        modules: [SwiperPagination],
      },
      similars: {
        slidesPerView: "auto",
        modules: [SwiperNavigation],
        navigation: {
          prevEl: "div>button[swiper]:first-of-type",
          nextEl: "div>button[swiper]:last-of-type",
        },
      },
    },
    chart: {
      setChartData: (prices, dates) => {
        var ctx = document.getElementsByTagName("canvas")[0].getContext("2d");
        var gradient = ctx.createLinearGradient(0, 0, 0, 400);
        gradient.addColorStop(0, "rgba(1, 86, 153, 0.62)");
        gradient.addColorStop(1, "rgba(1, 86, 153, 0)");
        const labels = [];
        const data = [];
        prices
          // .filter((item) => {
          //     return (
          //         new Date(item.date) >= new Date(dates.from) &&
          //         new Date(item.date) <= new Date(dates.to)
          //     )
          // })
          .forEach(({ date, price }) => {
            labels.push(
              new Date(date).toLocaleDateString("fa", {
                month: "long",
                year: "numeric",
              })
            );
            data.push(price);
          });

        return {
          labels,
          datasets: [
            {
              label: "",
              data,
              fill: true,
              tension: 0.4,
              borderColor: "#379956",
              backgroundColor: gradient,
            },
          ],
        };
      },
      setChartOptions: () => {
        return {
          maintainAspectRatio: false,
          aspectRatio: 0.6,
          plugins: { legend: { display: false } },
          scales: {
            x: { grid: { display: false } },
            y: {
              display: true,
              title: {
                display: true,
                text: "Toman",
              },
            },
          },
        };
      },
    },
    menu: {
      share: {
        label: t("shareProduct"),
        icon: "isax isax-share",
        click: () => dialog.show(ProductDialogShare, data),
      },
      reminder: {
        label: t("amazingInformation"),
        icon: "isax isax-notification4",
        click: (dialogRef) => {
          if (token.value) dialog.show(ProductDialogReminder, data);
          else {
            dialogRef.close();
            router.push("/auth/login");
          }
        },
      },
      chart: {
        label: t("priceChart"),
        icon: "isax isax-chart-2",
        click: () => dialog.show(ProductDialogLineChart, data),
      },
      compare: {
        label: t("compareProduct"),
        icon: "isax isax-row-horizontal4",
        click: () => router.push("/compare/" + data.id),
      },
    },
    options: {
      favorite: {
        props: {
          severity: "secondary",
          text: true,
          rounded: true,
          icon: computed(
            () => `isax isax-heart${fevorites.find(data.id) ? "5" : ""}`
          ),
        },
        click: () => {
          if (token.value) fevorites.update(data.id);
          else router.push("/auth/login");
        },
      },
      cart: {
        props: {
          icon: "isax isax-shopping-cart",
          severity: "secondary",
          text: true,
          rounded: true,
          badges: computed(() => cart.items.length),
        },
        click: () => router.push("/checkout/cart"),
      },
      menu: {
        props: {
          icon: "isax isax-more rotate-90",
          severity: "secondary",
          text: true,
          rounded: true,
        },
        click: () =>
          dialog.show(ProductDialogMenu, confg.menu, { dismissableMask: true }),
      },
    },
    actions: {
      favorite: {
        props: {
          severity: "secondary",
          text: true,
          rounded: true,
          icon: computed(() => {
            const like = fevorites.find(data.id);
            return `isax isax-heart${like ? "5" : ""}`;
          }),
        },
        click: () => {
          if (token.value) fevorites.update(data.id);
          else router.push("/auth/login");
        },
      },
      share: {
        props: {
          icon: "isax isax-share",
          severity: "secondary",
          text: true,
          rounded: true,
        },
        click: () => dialog.show(ProductDialogShare, data),
      },
      reminder: {
        props: {
          icon: "isax isax-notification4",
          severity: "secondary",
          text: true,
          rounded: true,
        },
        click: () => {
            if (token.value)
                dialog.show(ProductDialogReminder, data)
            else router.push('/auth/login')
        }
      },
      chart: {
        props: {
          icon: "isax isax-chart-2",
          severity: "secondary",
          text: true,
          rounded: true,
        },
        click: () => dialog.show(ProductDialogLineChart, data),
      },
      compare: {
        props: {
          icon: "isax isax-row-horizontal4",
          severity: "secondary",
          text: true,
          rounded: true,
        },
        click: () => router.push("/compare/" + data.id),
      },
    },
    checkboxes: {
      reminder: ["sms", "notif", "email"],
      report: [
        "incorrectName",
        "inappropriatePhoto",
        "incorrectSpecs",
        "incorrectDesc",
        "notOriginal",
        "duplicate",
      ],
    },
    sorts: [
      "mostRelevant",
      "mostVisited",
      "newest",
      "bestselling",
      "cheapest",
      "mostExpensive",
      "buyersSuggestion",
    ],
  });

  return confg;
};
