vcomjs
Version:
Vericom AppJs
390 lines (360 loc) • 11.3 kB
JavaScript
import $ from 'jquery';
import 'jquery-blockui';
import Toastify from 'toastify-js';
import 'toastify-js/src/toastify.css';
import Croppie from 'croppie';
import 'croppie/croppie.css';
import './vcom/sweetalert.min.js';
import './vcom/loading.css';
import './vcom/loader.css';
// jQuery global olarak tanımlanmalı
window.$ = window.jQuery = $;
//Block ON
function BlockStart() {
$.blockUI({
message: ' <div class="lds-dual-ring center-block"></div>',
css: {
border: 'none',
backgroundColor: 'rgba(0, 0, 0, 0)'
}
});
}
//Block Off
function BlockStop() {
try {
$(document).ajaxStop($.unblockUI);
} catch (e) {
$.unblockUI();
}
}
//Notification (bg-info , bg-success , bg-danger)
function ToastOpen(color, data, title) {
if (color == "bg-info") {
color = "#7ec0ee";
}
else if (color == "bg-success") {
color = "#2e8b57";
}
else if (color == "bg-danger") {
color = "#ff0000";
}
Toastify({
text: data,
duration: 3000, // Gösterim süresi (ms)
gravity: "top", // "top" veya "bottom"
position: "center", // "left", "center" veya "right"
backgroundColor: color, // Yeşil renk
close: false, // Kapatma düğmesi ekle
}).showToast();
}
//Manuel Toast
function AddNotif(ms) {
ToastOpen("bg-info", ms, _warning);
}
//Form içi input temizleme
function ClearForm(FormId) {
$(FormId).find('input').val('');
}
//Tailwind Modal Açma
function OpenModal(ModalId) {
$(ModalId).removeClass('hidden');
}
//Tailwind Modal Kapatma
function CloseModal(ModalId) {
$(ModalId).addClass('hidden');
}
//Form Data Çeviri
function GetFormDataAsJSON(form) {
var formData = {};
$(form).serializeArray().forEach(function (input) {
formData[input.name] = input.value;
});
$(form).find('input[type="checkbox"]').each(function () {
var name = $(this).attr('name');
formData[name] = $(this).is(':checked'); // true or false
});
return formData;
}
//Div Güncelleme Loading..
function DivLoad(divid, jdata, jurl) {
return new Promise((resolve, reject) => {
var jsonObject = jdata;
console.log('Sending data:', jsonObject);
console.log('Sending URL:', jurl);
// Loader'ı ekle
var loaderHtml = `<div class="loader" style="margin-left: auto;margin-right: auto;"></div>`;
$(divid).html(loaderHtml);
$.ajax({
type: "POST",
data: jsonObject,
url: jurl,
success: function (data) {
// Yükleme tamamlandığında loader'ı kaldır ve içeriği yükle
$(divid).html(data);
resolve("Success");
},
error: function (xhr, status, error) {
console.error("AJAX Error:", error);
$(divid).html(`<p style="color:red;">Hata oluştu!</p>`);
reject(error);
}
});
});
}
//div güncelleme loading olmadan
function DivNoLoading(divid, jdata, jurl) {
return new Promise((resolve, reject) => {
var jsonObject = jdata;
console.log('Sending data:', jsonObject);
console.log('Sending URL:', jurl);
$.ajax({
type: "POST",
data: jsonObject,
url: jurl,
success: function (data) {
// Yükleme tamamlandığında loader'ı kaldır ve içeriği yükle
$(divid).html(data);
resolve("Success");
},
error: function (xhr, status, error) {
console.error("AJAX Error:", error);
$(divid).html(`<p style="color:red;">Hata oluştu!</p>`);
reject(error);
}
});
});
}
//Kaydetme Metodu
function AppAdd(jdata, jurl) {
return new Promise((resolve, reject) => {
BlockStart();
var jsonObject = jdata;
$.ajax({
type: "POST",
data: jsonObject,
url: jurl,
success: function (data) {
//console.log(data);
if (data.result == true) {
ToastOpen("bg-success", data.ms, _success);
resolve({ status: "Success", id: data.id || null, code: data.code || "" });
} else {
ToastOpen("bg-info", data.ms, _warning);
resolve({ status: "Error", id: data.id || null, code: data.code || "" });
}
},
error: function (data) {
ToastOpen("bg-danger", data.ms, _error);
resolve({ status: "Error", id: data.id || null, code: data.code || "" });
}
});
BlockStop();
});
}
//Form Data Kullanarak file dosya ekleme Metodu
function AddCollection(jdata, purl) {
return new Promise((resolve, reject) => {
BlockStart();
var jsonObject = jdata;
$.ajax({
type: "POST",
data: jdata,
contentType: false,
processData: false,
cache: false,
url: purl,
success: function (data) {
if (data.result == true) {
ToastOpen("bg-success", data.ms, _success);
resolve({ status: "Success", id: data.id || null });
} else {
ToastOpen("bg-info", data.ms, _warning);
resolve({ status: "Error", id: data.id || null });
}
},
error: function (resault) {
ToastOpen("bg-danger", data.ms, _error);
resolve({ status: "Error", id: data.id || null });
}
});
BlockStop();
});
}
//Sweet Alert Onaylı işlem Data url Başlık ve açıklama içerir
function AppConfirm(jdata, jurl, title, text) {
return new Promise((resolve, reject) => {
swal({
title: title,
text: text,
type: 'warning',
buttons: {
cancel: {
visible: true,
text: _cancel,
className: 'btn btn-danger'
},
confirm: {
text: _confirm,
className: 'btn btn-success'
}
}
}).then((willDelete) => {
if (willDelete) {
var jsonObject = jdata;
$.ajax({
type: "POST",
data: jsonObject,
url: jurl,
success: function (data) {
if (data.result == true) {
ToastOpen("bg-success", data.ms, _success);
resolve("Success");
} else {
ToastOpen("bg-info", data.ms, _warning);
resolve("Error");
}
},
error: function (resault) {
ToastOpen("bg-info", data.ms, _error);
resolve("Error");
}
})
}
else {
resolve("hata");
swal(_transactioncanceled, {
buttons: {
confirm: {
className: 'btn btn-success'
}
}
});
}
});
});
}
//İmage Cropper
function ImageCrop( cropperId, ModalId ) {
var rawImg;
var basic = $(cropper).croppie
({
viewport: { width: 400, height: 400 },
boundary: { width: 500, height: 500 },
showZoomer: true,
url: '/img/news/1.jpeg',
format: 'jpeg' | 'png',
resizeControls: { width: true, height: true },
enableResize: false,
showZoomer: true,
mouseWheelZoom: true,
enableExif: true,
enforceBoundary: true,
enableOrientation: false,
enableKeyMovement: true,
});
function readFile(input) {
if (input.files && input.files[0]) {
var reader = new FileReader();
reader.onload = function (e) {
rawImg = e.target.result;
//$('#main-cropper').addClass('ready');
$(ModalId).modal('show');
}
reader.readAsDataURL(input.files[0]);
}
}
$(ModalId).on('shown.bs.modal', function () {
// alert('Shown pop');
basic.croppie('bind', {
url: rawImg
}).then(function () {
console.log('jQuery bind complete');
});
});
$('#Attachment').on('change', function () {
$(ModalId).modal('show');
readFile(this);
});
$('#cropImageBtn').on('click', function (ev) {
basic.croppie('result', {
type: 'canvas',
size: 'viewport',
format: 'jpeg'
}).then(function (resp) {
$('#item-img-output').attr('src', resp);
$(ModalId).modal('hide');
SaveImg(resp);
});
});
}
//Anlık kaydetme yok
function ImageCropDontSave(cropperId, ModalId) {
var rawImg;
var basic = $(cropperId).croppie
({
viewport: { width: 400, height: 400 },
boundary: { width: 500, height: 500 },
showZoomer: true,
url: '/img/news/1.jpeg',
format: 'jpeg' | 'png',
resizeControls: { width: true, height: true },
enableResize: false,
showZoomer: true,
mouseWheelZoom: true,
enableExif: true,
enforceBoundary: true,
enableOrientation: false,
enableKeyMovement: true,
});
function readFile(input) {
if (input.files && input.files[0]) {
var reader = new FileReader();
reader.onload = function (e) {
rawImg = e.target.result;
//$('#main-cropper').addClass('ready');
$(ModalId).modal('show');
}
reader.readAsDataURL(input.files[0]);
}
}
$(ModalId).on('shown.bs.modal', function () {
// alert('Shown pop');
basic.croppie('bind', {
url: rawImg
}).then(function () {
console.log('jQuery bind complete');
});
});
// Change Event to Read file content from File input
$('#Attachment').on('change', function () {
$(ModalId).modal('show');
readFile(this);
});
$('#cropImageBtn').on('click', function (ev) {
basic.croppie('result', {
type: 'canvas',
size: 'viewport',
format: 'jpeg'
}).then(function (resp) {
$('#item-img-output').attr('src', resp);
$(ModalId).modal('hide');
});
});
}
export {
BlockStart,
BlockStop,
ToastOpen,
AddNotif,
GetFormDataAsJSON,
DivLoad,
DivNoLoading,
AppAdd,
AddCollection,
ImageCrop,
ImageCropDontSave,
ClearForm,
OpenModal,
CloseModal,
AppConfirm
};