plxdcma_eshop
Version:
Instala todo lo necesario para una tienda virtual
376 lines (326 loc) • 8.19 kB
JavaScript
var ShopDB={}
var currencyList=["DOP","USD"]
var shRegistryCaracteristicsList=[]
/*
function toDOP(price){
if(isNaN(price)==false){
price=`${price}`
}
var splited=price.split("")
var arr=[[]]
var i = splited.length-1
while(i >= 0){
arr[0].splice(0,0,splited[i])
if(arr[0].length==3){
arr.splice(0,0,[])
}
i=i-1
}
if(arr[0].length == 0){
arr.splice(0,1);
}
var nextar=[]
for(var i = 0 ; i<arr.length;i++){
if(i == 0){
nextar.push(arr[i].join(""))
continue
}else{
nextar.push(",")
nextar.push(arr[i].join(""))
}
}
return `${nextar.join("")}.00`;
}
*/
function toUSD(price){
if(price == null){
return null
}
var str=`${price}`
if(str.indexOf(".") >= 0){
if(str[0] == "$"){
return str
}
return `$${str}`
}else{
// Create our number formatter.
const formatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
// These options can be used to round to whole numbers.
trailingZeroDisplay: 'stripIfInteger' // This is probably what most people
// want. It will only stop printing
// the fraction when the input
// amount is a round number (int)
// already. If that's not what you
// need, have a look at the options
// below.
//minimumFractionDigits: 0, // This suffices for whole numbers, but will
// print 2500.10 as $2,500.1
//maximumFractionDigits: 0, // Causes 2500.99 to be printed as $2,501
});
return formatter.format(price);
}
}
function toDOP(price){
if(price == null){
return null
}
if(isNaN(price)==false){
price=`${price}`
}
var splited=price.split("")
var arr=[[]]
var i = splited.length-1
while(i >= 0){
arr[0].splice(0,0,splited[i])
if(arr[0].length==3){
arr.splice(0,0,[])
}
i=i-1
}
if(arr[0].length == 0){
arr.splice(0,1);
}
var nextar=[]
for(var i = 0 ; i<arr.length;i++){
if(i == 0){
nextar.push(arr[i].join(""))
continue
}else{
nextar.push(",")
nextar.push(arr[i].join(""))
}
}
return `${nextar.join("")}.00`;
}
function toCurrency(v,c){
return toDOP(v)
}
function comatated(v){
return toDOP(v)
}
var Meses=[
"Enero",
"Febrero",
"Marzo",
"Abril",
"Mayo",
"Junio",
"Julio",
"Agosto",
"Septiembre",
"Octubre",
"Noviembre",
"Diciembre"
]
var Dias=[
"Domingo",
"Lunes",
"Martes",
"Miercoles",
"Jueves",
"Viernes",
"Sabado"
]
function shopReadData(){
}
function appendImageToShop(image,data){
var d=document.createElement("img")
d.src=image
d.style.width="100%"
d.data=data
return d
}
var shopmodaldelegate
function showShopModalPreviewLoading(delegate){
ShopModalPreview.style.display="block"
shopviewloading.style.opacity=1
shopSellCaracteristics.style.display="none"
shopTableItems.style.display="none"
shopmodaldelegate=delegate
}
function didTouchShopModalPreviewBodyBtn(index){
shopmodaldelegate.didSwitchToIndex(index)
for(var each in shoppreviewparts.children){
if(shoppreviewparts.children[each].style != null){
shoppreviewparts.children[each].style.display="none"
}
}
shoppreviewparts.children[index].style.display="block"
}
//----
var previewingImagesHolder=[]
var previewshopdelegate;
var previewItemPreset;
function didpressedtobuybtn(){
if(previewshopdelegate != null){
if(previewshopdelegate.didBuy != null){
previewshopdelegate.didBuy()
}
}
}
function closeShopItemPreview(){
ShopItemModalPreview.style.display="none"
}
function reloadPreviewShopItemImages(){
var preset=previewItemPreset
previewingImagesHolder.length=0
itemimagesselector.innerHTML=""
if(preset.images.length > 0 && preset.images[0] != null){
itemimagesselector.innerHTML=""
previewingImagesHolder.length=0
if(typeof(preset.images[0]) == "string"){
shopitemimagepreview.src=preset.images[0]
}else{
shopitemimagepreview.src=preset.images[0].big
}
shopitemimagepreview.style.display="block"
itemimagesselector.style.display="block"
}else{
shopitemimagepreview.style.display="none"
itemimagesselector.style.display="none"
}
for(var each in preset.images){
var img=preset.images[each]
var d=document.createElement("div")
if(img == null){
continue
}
if(typeof(img) == "string"){
d.style.background=`url('${img}')`
}else{
d.style.background=`url('${img.small}')`
}
d.style.backgroundPosition="center"
d.style.backgroundSize="cover"
d.classList.add("shopSmallimagePreview")
d.onclick=function(){
for(var each in previewingImagesHolder){
previewingImagesHolder[each].style.opacity=`0.5`;
}
this.img.style.opacity=1
shopitemimagepreview.src=this.imgele.big
}.bind({img:d,imgele:img})
previewingImagesHolder.push(d)
itemimagesselector.appendChild(d)
}
}
function previewShopitem(preset,delegate){
previewshopdelegate=delegate
previewItemPreset=preset
if(delegate != null){
if(delegate.showEditBtn){
editbtnonshp.onclick=function(){
var config={
close:function(){
ShopItemModalPreview.style.display="none"
}
}
delegate.didConfig(config,preset)
}
editbtnonshp.style.display="block"
}else{
editbtnonshp.style.display="none"
}
}else{
editbtnonshp.style.display="none"
}
ShopItemModalPreview.style.display="block"
if(preset.images.length > 0){
itemimagesselector.innerHTML=""
previewingImagesHolder.length=0
if(shopitemimagepreview.src=preset.images[0] != null){
shopitemimagepreview.src=preset.images[0].big
}
shopitemimagepreview.style.display="block"
itemimagesselector.style.display="block"
reloadPreviewShopItemImages()
}else{
shopitemimagepreview.style.display="none"
itemimagesselector.style.display="none"
}
itemname.innerHTML=preset.nombre ?? preset.name ?? preset.titulo ?? preset.title;
shopitemdescription.innerHTML=preset.descripcion
precioitempreview.innerHTML=`${preset.precio ?? preset.price} ${preset.currency ?? preset.moneda ?? preset.curency}`;
reloadPriviewShopItemCaracteristics()
}
function reloadPriviewShopItemCaracteristics(){
itemcaracteristicsections.innerHTML=""
rerenderRowsWithRemoveBtns(previewItemPreset.caracteristicas ?? previewItemPreset.caracteristics,false,function(index,html){
itemcaracteristicsections.appendChild(html)
})
}
function didTouchSaveBtnOnShopModal(){
alert("didTouchSaveBtnOnShopModal")
}
function shopLoadingScreen(){
var d=document.createElement("div")
d.classList.add("shopModal")
var dp=document.createElement("p")
dp.innerHTML=`<h1 style='text-align:center'><i class='fa fa-spinner fa-spin'></i></h1>`
d.appendChild(dp)
document.body.appendChild(d)
return d
}
function myShop(action){
switch (action) {
case "nuevo/producto":
case "new/product":
shopRegisterProduct(null,{},function(){
console.log(`reach local`)
})
break;
}
}
function producto_precio_inventario(obj){
var precio=obj.precioId
var inventario=obj.inventarioId
return {
msg:"incompleto"
}
}
function myShopPrepareSizesToUpload(producto,o){
var productoId=producto
if(producto.id != null){
productoId=producto.id
}
var toupload=[]
var objects=[]
for(var each in o.sizes){
var z=o.sizes[each]
toupload.push([productoId,z.precio,z.inventario,z.texto.toLowerCase().trim(),o.coin])
objects.push({
product:productoId,
precio:z.precio,
inventario:z.inventario,
texto:z.texto.toLowerCase().trim(),
moneda:o.coin
})
}
return {
objects:objects,
inserts:toupload
}
}
function myShopSanitizeProductSizes(a){
var sizes=[]
for(var each in a){
var x=a[each]
sizes.push({
id:x.id,
inventario:x.inventario,
precio:x.precio,
texto:x.texto ?? x.text,
})
}
var coin="DOP"
if(a.length > 0){
coin=a[0].moneda
}
return {
sizes:sizes,
coin:coin
}
}
//---