Homesit
$scope.compressImageAndUpload = async function() {
const fileInput = $scope.view.wdg['FileUpload-1'].file;
if (!fileInput || fileInput.length === 0) {
alert("Please select an image first.");
return;
}
const file = fileInput[0];
const compressedBase64 = await compressImage(file);
const byteCharacters = atob(compressedBase64);
const byteNumbers = Array.from(byteCharacters, c => c.charCodeAt(0));
const byteArray = new Uint8Array(byteNumbers);
const compressedBlob = new Blob([byteArray], { type: "image/jpeg" });
uploadToRepository(compressedBlob, file.name);
};
function compressImage(file) {
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = (e) => {
const img = new Image();
img.src = e.target.result;
img.onload = () => {
const canvas = document.createElement("canvas");
const maxWidth = 800;
const scale = maxWidth / img.width;
canvas.width = maxWidth;
canvas.height = img.height * scale;
const ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
canvas.toBlob((blob) => {
const reader2 = new FileReader();
reader2.readAsDataURL(blob);
reader2.onloadend = () => {
const base64 = reader2.result.split(",")[1];
resolve(base64);
};
}, 'image/jpeg', 0.6); // Quality = 60%
};
img.onerror = () => reject("Image load error");
};
reader.onerror = () => reject("File read error");
});
}
function uploadToRepository(blob, fileName) {
const formData = new FormData();
formData.append("file", blob, fileName);
const uploadURL = "/Thingworx/FileRepositories/SystemRepository/Services/SaveBinary";
fetch(uploadURL, {
method: 'POST',
headers: {
'Accept': 'application/json',
'X-XSRF-TOKEN': $rootScope.app.XsrfToken
},
body: formData
}).then(response => {
if (response.ok) {
alert("Compressed Image uploaded successfully.");
} else {
alert("Upload failed.");
}
}).catch(err => {
console.error("Upload error:", err);
alert("Error during upload.");
});
}
let result = Resources["InfoTableFunctions"].CreateInfoTableFromDataShape({
infoTableName: "BreadcrumbData",
dataShapeName: "FamilyBreadcrumbShape"
});
// Example path: Grandfather > Father > You > Your Daughter
result.AddRow({ text: "Grandfather" });
result.AddRow({ text: "Father" });
result.AddRow({ text: "You" });
result.AddRow({ text: "Your Daughter" });
return result;
let result = Resources["InfoTableFunctions"].CreateInfoTableFromDataShape({
infoTableName: "OrgTree",
dataShapeName: "OrganizationTreeShape"
});
result.AddRow({
id: "ceo",
name: "CEO",
parentId: null,
data: {"department": "Executive", "level": 1}
});
result.AddRow({
id: "cto",
name: "CTO",
parentId: "ceo",
data: {"department": "Technology", "level": 2}
});
// ... add all rows like your JSON
return result;
Comments
Post a Comment