Cargo-Planner Docs
Uygulamanızda Cargo-Planner
Web uygulamamız çoğu kullanım senaryosunu kapsayacak olsa da, bazen yük planlama işlevselliğini mevcut bir WMS veya ERP sistemine - veya belki de kendi özel web portalınıza - eklemek ilginç olabilir. Çoğu işlevselliği Rest API ve JavaScript SDK’mızı kullanarak gerçekleştirebilirsiniz.
Sunucu tarafı
Aslında bir sunucu kullanmanıza gerek olmamakla birlikte, Cargo-Planner ile istemci arasında bir aracı olarak kullanmak iyi bir yoldur. API anahtarını istemciye güvenli bir şekilde yayınlamanın bir yolunu bulursanız (anahtarları localStorage’da veya kodda saklamanın iyi bir uygulama olmadığını unutmayın) - API’mizi doğrudan istemciden çağırabilirsiniz.
# Sunucunuzda bulunan /calculate endpoint'i https://api.acme.com adresinde
import requests
import json
CARGO_PLANNER_TOKEN = 'Token your-token'
def calculate(request):
response = requests.post(
url="https://api.cargo-planner.com/api/2/calculate/",
data=json.dumps(request.data),
headers={
'Content-type': 'application/json',
'Authorization': CARGO_PLANNER_TOKEN
})
if response.status_code == 200:
return response.json()
#...
İstemci
SDK’mizi buradan indirin. Aşağıdaki örnek, yukarıdaki endpoint’i çağıracak ve bu da API’mizi çağırarak hesaplama verileriniz için bir yük planı / çözümü döndürecek ve ardından her konteynerin 3D görüntüsünü gösterecektir.
<meta charset="utf-8">
<title>Müşteri portalım</title>
<script src="./cargoPlannerSDK.umd.min.js"></script>
<body>
<h1>Yük planı</h1>
</body>
<script>
calculate();
async function calculate() {
// 3D motorunu başlat
await cargoPlannerSDK.SceneManager.init();
// Daha fazla seçenek için API belgelerine bakın
let calculationData = {
length_dim: "M",
weight_dim: "KG",
"items": [
{
"label": "Yük 1",
"l": 1.2,
"w": 0.8,
"h": 0.5,
"wt": 300,
"qty": 20,
"layers": 2,
"color":"#48c9b0"
},
{
"label": "Yük 2",
"l": 1.2,
"w": 1.0,
"h": 0.9,
"wt": 300,
"qty": 20,
"layers": 2,
"color":"#ec7063"
},
],
"settings": {
"group_items": true
},
"container_types": [
{
"name": "40ft DV",
"L": 12,
"W": 2.33,
"H": 2.38,
"payload": 22000,
"door": {
H: 2.33,
W: 2.28
}
}
]
}
fetch('/calculate/', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(calculationData),
})
.then(response => response.json())
.then(data => {
// Eğer herhangi bir çözüm aldıysak
if(data.solutions) {
// Şu anda her hesaplama bir çözüm verir (gelecekte daha fazlasını sağlayabiliriz)
data.solutions.forEach((solution) => {
// Her konteyneri dolaş
solution.containers.forEach((container, index) => {
// Tuvali render et
cargoPlannerSDK.SceneManager.createScene(
container, // konteyner verileri
null, // Etkileşimli mod (birden fazla konteyner gösterildiğinde null olarak ayarlayın)
400, // Piksel cinsinden genişlik
200 // Piksel cinsinden yükseklik
).then((canvas) => {
const containerDiv = document.createElement("div");
const label = document.createTextNode(`Konteyner ${index+1}: ${container.name}`)
containerDiv.appendChild(label);
containerDiv.appendChild(canvas);
document.body.appendChild(containerDiv);
});
});
});
}
});
}
</script>
Yukarıdaki örnek aşağıdaki yük planını oluşturacaktır:
