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:

API'den oluşturulan yük planı