Cargo-Planner Docs

Cargo-Planner ในแอปพลิเคชันของคุณ

แม้ว่าเว็บแอปพลิเคชันของเราควรจะครอบคลุมการใช้งานส่วนใหญ่ได้ แต่บางครั้งอาจมีความสนใจที่จะเพิ่มฟังก์ชันการวางแผนการโหลดไปยังระบบ WMS หรือ ERP ที่มีอยู่แล้ว - หรืออาจเป็นเว็บพอร์ทัลที่สร้างขึ้นเอง คุณสามารถใช้ฟังก์ชันส่วนใหญ่ได้โดยใช้ Rest API และ JavaScript SDK ของเรา

ฝั่งเซิร์ฟเวอร์

แม้ว่าคุณจะไม่จำเป็นต้องใช้เซิร์ฟเวอร์จริง ๆ แต่ก็เป็นวิธีที่ดีในการใช้เป็นตัวกลางระหว่าง Cargo-Planner และไคลเอนต์ หากคุณมีวิธีการเผยแพร่ API token ไปยังไคลเอนต์อย่างปลอดภัย (จำไว้ว่าการเก็บกุญแจใน localStorage หรือในโค้ดไม่ใช่วิธีปฏิบัติที่ดี) - คุณสามารถเรียก API ของเราได้ตรงจากไคลเอนต์

# /calculate endpoint ที่เซิร์ฟเวอร์ของคุณตั้งอยู่ที่ https://api.acme.com

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()
    #...

ฝั่งไคลเอนต์

ดาวน์โหลด SDK ของเราได้ ที่นี่ ตัวอย่างด้านล่างจะเรียก endpoint ข้างต้นซึ่งจะเรียก API ของเราและคืนแผนการโหลด / โซลูชันสำหรับข้อมูลการคำนวณของคุณ และจะแสดงภาพ 3 มิติของแต่ละคอนเทนเนอร์

<meta charset="utf-8">
<title>My customer portal</title>
<script src="./cargoPlannerSDK.umd.min.js"></script>

<body>
    <h1>Load plan</h1>
</body>

<script>

calculate();

async function calculate() {

    // เริ่มต้นเครื่องยนต์ 3 มิติ
    await cargoPlannerSDK.SceneManager.init();

    // อ้างอิงเอกสาร API สำหรับตัวเลือกเพิ่มเติม
    let calculationData = {
        length_dim: "M",
        weight_dim: "KG",
        "items": [
            {
                "label": "Cargo 1",
                "l": 1.2,
                "w": 0.8,
                "h": 0.5,
                "wt": 300,
                "qty": 20,
                "layers": 2,
                "color":"#48c9b0"
            },
            {
                "label": "Cargo 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 => {
        // ถ้าเราได้รับโซลูชันใด ๆ
        if(data.solutions) {

            // ขณะนี้การคำนวณแต่ละครั้งจะให้โซลูชันหนึ่ง (ในอนาคตเราอาจให้มากกว่านี้)
            data.solutions.forEach((solution) => {

                // ผ่านแต่ละคอนเทนเนอร์
                solution.containers.forEach((container, index) => {

                    // แสดงผล canvas
                    cargoPlannerSDK.SceneManager.createScene(
                        container,  // ข้อมูลคอนเทนเนอร์
                        null,       // โหมดโต้ตอบ (ตั้งค่าเป็น null เมื่อแสดงหลายคอนเทนเนอร์)
                        400,        // ความกว้างเป็นพิกเซล
                        200         // ความสูงเป็นพิกเซล
                    ).then((canvas) => {

                        const containerDiv = document.createElement("div");

                        const label = document.createTextNode(`Container ${index+1}: ${container.name}`)
                        containerDiv.appendChild(label);
                        containerDiv.appendChild(canvas);

                        document.body.appendChild(containerDiv);
                    });

                });
            });
        }
    });
}

</script>

ตัวอย่างข้างต้นจะสร้างแผนการโหลดด้านล่าง:

แผนการโหลดจาก API