You've already forked collage-maker
							
							Implement selecting template for collage #14
							
								
								
									
										1
									
								
								main.go
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								main.go
									
									
									
									
									
								
							@@ -126,7 +126,6 @@ func MakeCollage(req *collage.Request) (string, error) {
 | 
				
			|||||||
	out, err := os.Create(path.Join(collageDir, collageFile))
 | 
						out, err := os.Create(path.Join(collageDir, collageFile))
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return "", fmt.Errorf("failed to create collage output file, err: %w", err)
 | 
							return "", fmt.Errorf("failed to create collage output file, err: %w", err)
 | 
				
			||||||
		// slog.Error("failed to create collage output file", "error", err)
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if err := collage.Make(req, imagesDirFs, out); err != nil {
 | 
						if err := collage.Make(req, imagesDirFs, out); err != nil {
 | 
				
			||||||
		return "", fmt.Errorf("failed to make collage, err: %w", err)
 | 
							return "", fmt.Errorf("failed to make collage, err: %w", err)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,12 +14,15 @@
 | 
				
			|||||||
    padding: 2rem;
 | 
					    padding: 2rem;
 | 
				
			||||||
    flex: 70%;
 | 
					    flex: 70%;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.image-surface {
 | 
					.image-surface {
 | 
				
			||||||
    overflow: hidden;
 | 
					    overflow: hidden;
 | 
				
			||||||
    margin: auto;
 | 
					    margin: auto;
 | 
				
			||||||
    border: 1px solid;
 | 
					    border: 1px solid;
 | 
				
			||||||
    height: 100%;
 | 
					    height: 100%;
 | 
				
			||||||
    width: 100%;
 | 
					    width: auto;
 | 
				
			||||||
 | 
					    --collage-ap: 110 / 85;
 | 
				
			||||||
 | 
					    aspect-ratio: var(--collage-ap);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
.showbuton {
 | 
					.showbuton {
 | 
				
			||||||
    font-size: 2rem;
 | 
					    font-size: 2rem;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,8 +4,8 @@
 | 
				
			|||||||
        <link rel="stylesheet" href="croppie.css" />
 | 
					        <link rel="stylesheet" href="croppie.css" />
 | 
				
			||||||
        <link rel="icon" href="data:;base64,iVBORw0KGgo=" />
 | 
					        <link rel="icon" href="data:;base64,iVBORw0KGgo=" />
 | 
				
			||||||
        <script src="http://localhost:35729/livereload.js"></script>
 | 
					        <script src="http://localhost:35729/livereload.js"></script>
 | 
				
			||||||
        <script src="croppie.js"></script>
 | 
					        <script src="croppie.js" defer></script>
 | 
				
			||||||
        <script src="index.js"></script>
 | 
					        <script src="index.js" defer></script>
 | 
				
			||||||
        <link rel="stylesheet" href="index.css" />
 | 
					        <link rel="stylesheet" href="index.css" />
 | 
				
			||||||
        <!--
 | 
					        <!--
 | 
				
			||||||
            width: 3264px;
 | 
					            width: 3264px;
 | 
				
			||||||
@@ -14,16 +14,29 @@
 | 
				
			|||||||
            height: 11in;
 | 
					            height: 11in;
 | 
				
			||||||
        -->
 | 
					        -->
 | 
				
			||||||
    </head>
 | 
					    </head>
 | 
				
			||||||
    <body onload="main()">
 | 
					    <body>
 | 
				
			||||||
        <div class="container">
 | 
					        <div class="container">
 | 
				
			||||||
            <div class="controls">
 | 
					            <div class="controls">
 | 
				
			||||||
                <div>
 | 
					                <div>
 | 
				
			||||||
                    <button class="showbuton" onClick="snap()">Snap Collage</button>
 | 
					                    <div>
 | 
				
			||||||
 | 
					                        <label>
 | 
				
			||||||
 | 
					                            Page size
 | 
				
			||||||
 | 
					                            <select id="page_size_selector" size=8 onChange="pageSizeChange(this)">
 | 
				
			||||||
| 
						
							
	
	
	
	
	
	
	
	 
					
					balki marked this conversation as resolved
					
						
						
							Outdated
						
					
				 
				 | 
				|||||||
 | 
					                                <option value="letter-portrait">Letter (Portrait)</option>
 | 
				
			||||||
 | 
					                                <option selected value="letter-landscape">Letter (Landscape)</option>
 | 
				
			||||||
 | 
					                                <option value="fiveseven-portrait">5 X 7 (Portrait)</option>
 | 
				
			||||||
 | 
					                                <option value="fiveseven-landscape">7 X 5 (Landscape)</option>
 | 
				
			||||||
 | 
					                                <option value="foursix-portrait">4 X 6 (Portrait)</option>
 | 
				
			||||||
 | 
					                                <option value="foursix-landscape">4 X 6 (Landscape)</option>
 | 
				
			||||||
 | 
					                            </select>
 | 
				
			||||||
 | 
					                        </label>
 | 
				
			||||||
 | 
					                    </div>
 | 
				
			||||||
 | 
					                    <button id="snapper" class="showbuton">Snap Collage</button>
 | 
				
			||||||
                    <p><a href="" target="_blank" id="collage-url"></a></p>
 | 
					                    <p><a href="" target="_blank" id="collage-url"></a></p>
 | 
				
			||||||
                </div>
 | 
					                </div>
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
            <div class="imagebox">
 | 
					            <div class="imagebox">
 | 
				
			||||||
| 
						
							
	
	
	
	
	
	
	
	 
					
					balki marked this conversation as resolved
					
						
						
							Outdated
						
					
				 
				
				
					
						balki
						commented  
			
		Remove empty line inside div Remove empty line inside div 
			
			
		 | 
				|||||||
                <div id="collage" class="image-surface fiveseven-landscape one-two">
 | 
					                <div id="collage" class="image-surface one-two">
 | 
				
			||||||
                    <div class="collage-img img1" data-collage-image-url="images/img1.jpg">
 | 
					                    <div class="collage-img img1" data-collage-image-url="images/img1.jpg">
 | 
				
			||||||
                    </div>
 | 
					                    </div>
 | 
				
			||||||
                    <div class="collage-img img2" data-collage-image-url="images/img2.jpg">
 | 
					                    <div class="collage-img img2" data-collage-image-url="images/img2.jpg">
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										78
									
								
								web/index.js
									
									
									
									
									
								
							
							
						
						
									
										78
									
								
								web/index.js
									
									
									
									
									
								
							@@ -1,6 +1,54 @@
 | 
				
			|||||||
 | 
					const pageSizes = {
 | 
				
			||||||
 | 
					    "letter-portrait" : {
 | 
				
			||||||
 | 
					        "ap": "85 / 110",
 | 
				
			||||||
 | 
					        "width": 3264,
 | 
				
			||||||
 | 
					        "height": 4224,
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "letter-landscape" : {
 | 
				
			||||||
 | 
					        "ap": "110 / 85",
 | 
				
			||||||
 | 
					        "width": 4224,
 | 
				
			||||||
 | 
					        "height": 3264,
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "fiveseven-portrait" : {
 | 
				
			||||||
 | 
					        "ap": "5 / 7",
 | 
				
			||||||
 | 
					        "width": 2250,
 | 
				
			||||||
 | 
					        "height": 3150,
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "fiveseven-landscape" : {
 | 
				
			||||||
 | 
					        "ap": "7 / 5",
 | 
				
			||||||
 | 
					        "width": 3150,
 | 
				
			||||||
 | 
					        "height": 2250,
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "foursix-portrait" : {
 | 
				
			||||||
 | 
					        "ap": "4 / 6",
 | 
				
			||||||
 | 
					        "width": 1800,
 | 
				
			||||||
 | 
					        "height": 2700,
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "foursix-landscape" : {
 | 
				
			||||||
 | 
					        "ap": "6 / 4",
 | 
				
			||||||
 | 
					        "width": 2700,
 | 
				
			||||||
 | 
					        "height": 1800,
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// elements -- dummy createElement for language server type hint
 | 
				
			||||||
 | 
					var snapButton     = document.createElement("button")
 | 
				
			||||||
 | 
					var collageDiv     = document.createElement("div")
 | 
				
			||||||
 | 
					var pageSizeSelect = document.createElement("select")
 | 
				
			||||||
 | 
					var collageUrlA    = document.createElement("a");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// collage state
 | 
				
			||||||
 | 
					var crops = [];
 | 
				
			||||||
 | 
					var pageSize = "letter-landscape";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function main() {
 | 
					function main() {
 | 
				
			||||||
    initCollage("collage")
 | 
					    snapButton = document.getElementById("snapper")
 | 
				
			||||||
 | 
					    collageDiv = document.getElementById("collage")
 | 
				
			||||||
 | 
					    pageSizeSelect = document.getElementById("page_size_selector")
 | 
				
			||||||
 | 
					    collageUrlA = document.getElementById("collage-url")
 | 
				
			||||||
 | 
					    initCollage()
 | 
				
			||||||
 | 
					    snapButton.onclick = () => snap()
 | 
				
			||||||
 | 
					    pageSizeSelect.onchange  = () => pageSizeChange(pageSizeSelect)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function makeCroppieElem(elem, imgUrl) {
 | 
					function makeCroppieElem(elem, imgUrl) {
 | 
				
			||||||
@@ -18,17 +66,14 @@ function makeCroppieElem(elem, imgUrl) {
 | 
				
			|||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return cpie
 | 
					    return cpie
 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// collage state
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
var collageDivId;
 | 
					function initCollage() {
 | 
				
			||||||
var crops = [];
 | 
					    for(cpie of crops) {
 | 
				
			||||||
 | 
					        cpie.destroy()
 | 
				
			||||||
function initCollage(divId) {
 | 
					    }
 | 
				
			||||||
    collageDivId = divId
 | 
					    crops = []
 | 
				
			||||||
    const collageDiv = document.getElementById(collageDivId)
 | 
					 | 
				
			||||||
    for(elem of collageDiv.getElementsByClassName("collage-img")) {
 | 
					    for(elem of collageDiv.getElementsByClassName("collage-img")) {
 | 
				
			||||||
        const cpie = makeCroppieElem(elem, elem.dataset.collageImageUrl)
 | 
					        const cpie = makeCroppieElem(elem, elem.dataset.collageImageUrl)
 | 
				
			||||||
        const lastLen = crops.push(cpie)
 | 
					        const lastLen = crops.push(cpie)
 | 
				
			||||||
@@ -56,15 +101,14 @@ async function makeCollage(req) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function snap() {
 | 
					function snap() {
 | 
				
			||||||
    const collageDiv = document.getElementById(collageDivId)
 | 
					 | 
				
			||||||
    col = collageDiv.offsetLeft;
 | 
					    col = collageDiv.offsetLeft;
 | 
				
			||||||
    cot = collageDiv.offsetTop;
 | 
					    cot = collageDiv.offsetTop;
 | 
				
			||||||
    console.log("----------------------")
 | 
					    console.log("----------------------")
 | 
				
			||||||
    req = {
 | 
					    req = {
 | 
				
			||||||
        background_image: "",
 | 
					        background_image: "",
 | 
				
			||||||
        aspect: {
 | 
					        aspect: {
 | 
				
			||||||
            width: 3150,
 | 
					            width: pageSizes[pageSize]["width"],
 | 
				
			||||||
            height: 2250,
 | 
					            height: pageSizes[pageSize]["height"],
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        dimension: {
 | 
					        dimension: {
 | 
				
			||||||
            width: collageDiv.clientWidth,
 | 
					            width: collageDiv.clientWidth,
 | 
				
			||||||
@@ -112,9 +156,15 @@ function snap() {
 | 
				
			|||||||
    console.log(JSON.stringify(req));
 | 
					    console.log(JSON.stringify(req));
 | 
				
			||||||
    (async () => {
 | 
					    (async () => {
 | 
				
			||||||
        collagFile = await makeCollage(req)
 | 
					        collagFile = await makeCollage(req)
 | 
				
			||||||
        // const collageUrlA = document.createElement("a");
 | 
					 | 
				
			||||||
        const collageUrlA = document.getElementById("collage-url");
 | 
					 | 
				
			||||||
        collageUrlA.href = `collages/${collagFile}`;
 | 
					        collageUrlA.href = `collages/${collagFile}`;
 | 
				
			||||||
        collageUrlA.text = `${collagFile} generated`;
 | 
					        collageUrlA.text = `${collagFile} generated`;
 | 
				
			||||||
    })();
 | 
					    })();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function pageSizeChange(selectElem) {
 | 
				
			||||||
 | 
					    document.getElementById("collage").style.setProperty('--collage-ap', pageSizes[selectElem.value]["ap"])
 | 
				
			||||||
 | 
					    pageSize = selectElem.value
 | 
				
			||||||
 | 
					    initCollage()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					main()
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user
	
remove onChange