mobilos nagyjából kész, színkezelés hozzáadva
This commit is contained in:
		
							parent
							
								
									512c3915b1
								
							
						
					
					
						commit
						d2f1075601
					
				@ -2,19 +2,22 @@
 | 
				
			|||||||
<html lang="hu">
 | 
					<html lang="hu">
 | 
				
			||||||
<head>
 | 
					<head>
 | 
				
			||||||
    <meta charset="utf-8"/>
 | 
					    <meta charset="utf-8"/>
 | 
				
			||||||
 | 
					    <meta name='viewport' content='width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0'>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <title>Fotófal</title>
 | 
					    <title>Fotófal</title>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <script src="js/o.js"></script>
 | 
					    <script src="js/o.js"></script>
 | 
				
			||||||
    <script src="js/socket.js"></script>
 | 
					    <script src="js/socket.js"></script>
 | 
				
			||||||
    <script src="js/slider.js"></script>
 | 
					    <script src="js/slider.js"></script>
 | 
				
			||||||
    <script src="js/phw.js"></script>
 | 
					    <script src="js/phw.js"></script>
 | 
				
			||||||
 | 
					    <script src="js/color.js"></script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <link href="phw.css" rel="stylesheet">
 | 
					    <link href="phw.css" rel="stylesheet">
 | 
				
			||||||
</head>
 | 
					</head>
 | 
				
			||||||
<body>
 | 
					<body>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<!-- MEGJELENÍTŐ -->
 | 
					<!-- MEGJELENÍTŐ -->
 | 
				
			||||||
<section id="display">
 | 
					<section class="display" id="display">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
</section>
 | 
					</section>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -55,6 +58,7 @@
 | 
				
			|||||||
                <label for="description">Leírás:</label><br>
 | 
					                <label for="description">Leírás:</label><br>
 | 
				
			||||||
                <textarea id="description" style="width: 440px; height: 5em;"
 | 
					                <textarea id="description" style="width: 440px; height: 5em;"
 | 
				
			||||||
                          placeholder="A válasz az életet, a világmindenséget, meg mindent érintő kérdésre."></textarea><br><br>
 | 
					                          placeholder="A válasz az életet, a világmindenséget, meg mindent érintő kérdésre."></textarea><br><br>
 | 
				
			||||||
 | 
					                <input type="checkbox" id="respchkbox">A feltöltött tartalmamért <i>teljes</i> felelősséget vállalok.
 | 
				
			||||||
            </section>
 | 
					            </section>
 | 
				
			||||||
            <section style="text-align: right;">
 | 
					            <section style="text-align: right;">
 | 
				
			||||||
                <section class="btn" onclick="publish()" id="publishbtn">Mehet!</section>
 | 
					                <section class="btn" onclick="publish()" id="publishbtn">Mehet!</section>
 | 
				
			||||||
@ -75,6 +79,9 @@
 | 
				
			|||||||
    </section>
 | 
					    </section>
 | 
				
			||||||
</section>
 | 
					</section>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<!-- TESZTVERZIÓ -->
 | 
				
			||||||
 | 
					<section class="testversion-sign">TESZTVERZIÓ</section>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<script>
 | 
					<script>
 | 
				
			||||||
    init_photowall();
 | 
					    init_photowall();
 | 
				
			||||||
</script>
 | 
					</script>
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										110
									
								
								js/color.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										110
									
								
								js/color.js
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,110 @@
 | 
				
			|||||||
 | 
					class Color {
 | 
				
			||||||
 | 
					    constructor() {
 | 
				
			||||||
 | 
					        this.r = this.g = this.b = 0;
 | 
				
			||||||
 | 
					        this.a = 1.0;
 | 
				
			||||||
 | 
					        this.components = [ "r", "g", "b", "a" ];
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // komponensek korlátozása az értelmezési tartományra
 | 
				
			||||||
 | 
					    clip_components() {
 | 
				
			||||||
 | 
					        for (let i = 0; i < 4; i++) {
 | 
				
			||||||
 | 
					            let orig_val = this[this.components[i]];
 | 
				
			||||||
 | 
					            this[this.components[i]] = Math.round(Math.min(255, Math.max(this[this.components[i]], 0)));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (orig_val !== this[this.components[i]]) {
 | 
				
			||||||
 | 
					                console.log(`Warning: channel ${this.components[i]} clipped!`);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // rgb(r,g,b) vagy rgba(r,g,b,a) formátumot feldolgoz
 | 
				
			||||||
 | 
					    from_cssrgb(rgb_str) {
 | 
				
			||||||
 | 
					        let parts = rgb_str.split("(");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // ha érvénytelen az eredmény
 | 
				
			||||||
 | 
					        if (parts === null || parts.length < 2) {
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // ha érvényes, akkor levágjuk a végéről a zárójelet
 | 
				
			||||||
 | 
					        parts = parts[1].split(")");
 | 
				
			||||||
 | 
					        if (parts === null || parts.length < 1) {
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        let components_str = parts[0];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // whitespace-ek kiütése
 | 
				
			||||||
 | 
					        components_str = components_str.replace(/[ ]/, '');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // komponensek kigyűjtése
 | 
				
			||||||
 | 
					        let components = components_str.split(",");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // ha nincs elég komponens, akkor érvénytelen
 | 
				
			||||||
 | 
					        if (components === null || components.length < 3) {
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // csonkolás a megfelelő tartományra
 | 
				
			||||||
 | 
					        for (let i = 0; i < components.length; i++) {
 | 
				
			||||||
 | 
					            components[i] = Math.round(Math.min(255, Math.max(components[i], 0)));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // komponensek előállítása
 | 
				
			||||||
 | 
					        this.r = Number(components[0]);
 | 
				
			||||||
 | 
					        this.g = Number(components[1]);
 | 
				
			||||||
 | 
					        this.b = Number(components[2]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (components.length <= 4) {
 | 
				
			||||||
 | 
					            this.a = Number(components[3]);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // rgb(r,g,b) formátumban kiadja a színt
 | 
				
			||||||
 | 
					    to_cssrgb() {
 | 
				
			||||||
 | 
					        return `rgb(${this.r},${this.g},${this.b})`;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // rgba(r,g,b,a) formátumban kiadja a színt
 | 
				
			||||||
 | 
					    to_rgba() {
 | 
				
			||||||
 | 
					        return `rgb(${this.r},${this.g},${this.b},${this.a})`;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // #RRGGBB vagy #RRGGBBAA formátum befogadása
 | 
				
			||||||
 | 
					    from_hexa(hexa_str) {
 | 
				
			||||||
 | 
					        let val = hexa_str.trim();
 | 
				
			||||||
 | 
					        if (hexa_str.charAt(0) === '#') {
 | 
				
			||||||
 | 
					            val = val.substr(1);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        this.r = parseInt(val.substr(0,2), 16);
 | 
				
			||||||
 | 
					        this.g = parseInt(val.substr(2,2), 16);
 | 
				
			||||||
 | 
					        this.b = parseInt(val.substr(4,2), 16);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // ha van alpha-csatorna is...
 | 
				
			||||||
 | 
					        if (val.length >= 8) {
 | 
				
			||||||
 | 
					            this.a = parseInt(val.substr(6,2), 16);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // alpha-csatornával együtt kiadja hex-formátumban
 | 
				
			||||||
 | 
					    to_hexa() {
 | 
				
			||||||
 | 
					        return `#${this.r.toString(16)}${this.g.toString(16)}${this.b.toString(16)}${this.a.toString(16)}`;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // szín kiadása hex-formátumban alpha-csatorna nélkül
 | 
				
			||||||
 | 
					    to_hex() {
 | 
				
			||||||
 | 
					        return `#${this.r.toString(16)}${this.g.toString(16)}${this.b.toString(16)}`;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // szín szorzása konstanssal
 | 
				
			||||||
 | 
					    mul(c) {
 | 
				
			||||||
 | 
					        for (let i = 0; i < 4; i++) {
 | 
				
			||||||
 | 
					            this[this.components[i]] *= c;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // clip...
 | 
				
			||||||
 | 
					        this.clip_components();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										66
									
								
								js/phw.js
									
									
									
									
									
								
							
							
						
						
									
										66
									
								
								js/phw.js
									
									
									
									
									
								
							@ -12,7 +12,7 @@ function toggle_show(obj) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function scroll_enable(on) {
 | 
					function scroll_enable(on) {
 | 
				
			||||||
    document.body.style.overflow = on ? "auto" : "hidden";
 | 
					    document.body.style.overflowY = on ? "scroll" : "hidden";
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// -----------------------------------------
 | 
					// -----------------------------------------
 | 
				
			||||||
@ -24,6 +24,13 @@ var publish_btn_id = "publishbtn";
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
var image_uid = null;
 | 
					var image_uid = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function determine_sliding_unit() {
 | 
				
			||||||
 | 
					    if (window.innerWidth > 600) { // számítógépes megjelenítés
 | 
				
			||||||
 | 
					        slide_unit = 504;
 | 
				
			||||||
 | 
					    } else { // mobilos megjelenítés
 | 
				
			||||||
 | 
					        slide_unit = ((window.orientation % 90) === 0) ? window.innerWidth : window.innerHeight; // deprecated, de működik...
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function pup_slide(units) {
 | 
					function pup_slide(units) {
 | 
				
			||||||
    slider_slide(slider_id, -slide_unit * units);
 | 
					    slider_slide(slider_id, -slide_unit * units);
 | 
				
			||||||
@ -33,6 +40,12 @@ function pup_reset() {
 | 
				
			|||||||
    hide(upload_popup_id); // ablak eltüntetése
 | 
					    hide(upload_popup_id); // ablak eltüntetése
 | 
				
			||||||
    reset_slider(slider_id); // slider visszaállítása
 | 
					    reset_slider(slider_id); // slider visszaállítása
 | 
				
			||||||
    o(publish_btn_id).innerText = "Mehet!"; // gombfelirat visszaállítása
 | 
					    o(publish_btn_id).innerText = "Mehet!"; // gombfelirat visszaállítása
 | 
				
			||||||
 | 
					    o("respchkbox").checked = false; // pipa kivétele
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // mezők törlése
 | 
				
			||||||
 | 
					    o("author").value = "";
 | 
				
			||||||
 | 
					    o("imgtitle").value = "";
 | 
				
			||||||
 | 
					    o("description").value = "";
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// kép publikálása
 | 
					// kép publikálása
 | 
				
			||||||
@ -52,6 +65,11 @@ function publish() {
 | 
				
			|||||||
        return;
 | 
					        return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // checkbox ellenőrzése
 | 
				
			||||||
 | 
					    if (!o("respchkbox").checked) {
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // struktúra összeállítása
 | 
					    // struktúra összeállítása
 | 
				
			||||||
    let details = {
 | 
					    let details = {
 | 
				
			||||||
        uid: image_uid,
 | 
					        uid: image_uid,
 | 
				
			||||||
@ -73,7 +91,7 @@ function publish() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            if (Number(req.response) === 0) {
 | 
					            if (Number(req.response) === 0) {
 | 
				
			||||||
                alert("Sikeres feltöltés!");
 | 
					                alert("Sikeres feltöltés!");
 | 
				
			||||||
                req_update();
 | 
					                close_upload_pup();
 | 
				
			||||||
            } else {
 | 
					            } else {
 | 
				
			||||||
                alert("Ugyanezt képet már korábban feltöltötték!");
 | 
					                alert("Ugyanezt képet már korábban feltöltötték!");
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
@ -151,6 +169,7 @@ function close_upload_pup() {
 | 
				
			|||||||
    let display = o("display");
 | 
					    let display = o("display");
 | 
				
			||||||
    display.style.filter = "";
 | 
					    display.style.filter = "";
 | 
				
			||||||
    scroll_enable(true);
 | 
					    scroll_enable(true);
 | 
				
			||||||
 | 
					    pup_reset();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -186,24 +205,37 @@ var batch_loading_quantity = 10; // egyszerre betöltött képek mennyisége
 | 
				
			|||||||
var autoload_enabled = false; // automatikus betöltés
 | 
					var autoload_enabled = false; // automatikus betöltés
 | 
				
			||||||
var artworks_loaded_n = 0; // ennyi kép van betöltve a megjelenítőbe
 | 
					var artworks_loaded_n = 0; // ennyi kép van betöltve a megjelenítőbe
 | 
				
			||||||
var thumbnail_padding = 8; // kép körüli margó
 | 
					var thumbnail_padding = 8; // kép körüli margó
 | 
				
			||||||
var extra_margin = 10; // extra margó, amire számítani kell a fal generálásakor
 | 
					var extra_margin = 0; // extra margó, amire számítani kell a fal generálásakor
 | 
				
			||||||
var last_uid = ""; // utolsó UID
 | 
					var last_uid = ""; // utolsó UID
 | 
				
			||||||
var wall_height = 0; // a fal magassága, pixelben
 | 
					var wall_height = 0; // a fal magassága, pixelben
 | 
				
			||||||
var dynamic_load_distance = 200; // ennyi pixellel a fal alja előtt indítja a dinamikus betöltést
 | 
					var dynamic_load_distance = 200; // ennyi pixellel a fal alja előtt indítja a dinamikus betöltést
 | 
				
			||||||
var dynamic_loading_under_way = false; // dinamikus töltés folyamatban, ne indítsunk új requestet
 | 
					var dynamic_loading_under_way = false; // dinamikus töltés folyamatban, ne indítsunk új requestet
 | 
				
			||||||
 | 
					var update_interval = 10000; // automatikus frissítés 10 másodpercenként
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var thumbnails = [];
 | 
					var thumbnails = [];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// fotófal inicializálása
 | 
					// fotófal inicializálása
 | 
				
			||||||
function init_photowall() {
 | 
					function init_photowall() {
 | 
				
			||||||
 | 
					    scroll_enable(true);
 | 
				
			||||||
 | 
					    determine_sliding_unit();
 | 
				
			||||||
    init_drag_and_drop();
 | 
					    init_drag_and_drop();
 | 
				
			||||||
    req_general_info();
 | 
					    req_general_info();
 | 
				
			||||||
    init_dynamic_loading();
 | 
					    init_dynamic_loading();
 | 
				
			||||||
    init_viewer();
 | 
					    init_viewer();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // újrakompozitálás átméretezés esetén
 | 
				
			||||||
    window.addEventListener("resize", () => {
 | 
					    window.addEventListener("resize", () => {
 | 
				
			||||||
        compose_wall();
 | 
					        compose_wall();
 | 
				
			||||||
    }, false);
 | 
					    }, false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    window.addEventListener("orientationchange", (e) => {
 | 
				
			||||||
 | 
					        determine_sliding_unit();
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // automatikus frissítés
 | 
				
			||||||
 | 
					    setInterval(() => {
 | 
				
			||||||
 | 
					        req_update();
 | 
				
			||||||
 | 
					    }, 10000);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// inicializálási lánc
 | 
					// inicializálási lánc
 | 
				
			||||||
@ -331,12 +363,12 @@ function compose_wall() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        // képek elhelyzése
 | 
					        // képek elhelyzése
 | 
				
			||||||
        for (let i = 0; i < line_entries.length; i++) {
 | 
					        for (let i = 0; i < line_entries.length; i++) {
 | 
				
			||||||
 | 
					            // képet tároló elem
 | 
				
			||||||
            let container_section = document.createElement("section");
 | 
					            let container_section = document.createElement("section");
 | 
				
			||||||
            container_section.style.backgroundColor = line_entries[i].ColorMean;
 | 
					            container_section.style.backgroundColor = line_entries[i].ColorMean;
 | 
				
			||||||
            container_section.classList.add("thumbnail-container");
 | 
					            container_section.classList.add("thumbnail-container");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            console.log(line_entries[i]);
 | 
					            // a bélyegkép
 | 
				
			||||||
 | 
					 | 
				
			||||||
            let img = document.createElement("img");
 | 
					            let img = document.createElement("img");
 | 
				
			||||||
            img.classList.add("thumbnail");
 | 
					            img.classList.add("thumbnail");
 | 
				
			||||||
            container_section.style.width = img.style.width = `${line_entries[i].width * line_entries[i].scale_factor}px`;
 | 
					            container_section.style.width = img.style.width = `${line_entries[i].width * line_entries[i].scale_factor}px`;
 | 
				
			||||||
@ -350,7 +382,20 @@ function compose_wall() {
 | 
				
			|||||||
                open_viewer(img.details);
 | 
					                open_viewer(img.details);
 | 
				
			||||||
            }, false);
 | 
					            }, false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // kép címe
 | 
				
			||||||
 | 
					            let title_span = document.createElement("span");
 | 
				
			||||||
 | 
					            title_span.classList.add("thumb-title");
 | 
				
			||||||
 | 
					            title_span.innerText = line_entries[i].Title;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // sáv színének igazítása a kép domináns színéhez
 | 
				
			||||||
 | 
					            let title_bgcolor = new Color();
 | 
				
			||||||
 | 
					            title_bgcolor.from_cssrgb(line_entries[i].ColorMean);
 | 
				
			||||||
 | 
					            //title_bgcolor.mul(0.8);
 | 
				
			||||||
 | 
					            title_bgcolor.a = 0.6;
 | 
				
			||||||
 | 
					            title_span.style.backgroundColor = title_bgcolor.to_rgba();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            container_section.appendChild(img);
 | 
					            container_section.appendChild(img);
 | 
				
			||||||
 | 
					            container_section.appendChild(title_span);
 | 
				
			||||||
            display.appendChild(container_section);
 | 
					            display.appendChild(container_section);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -374,6 +419,11 @@ function req_update() {
 | 
				
			|||||||
function recv_update(state, resp) {
 | 
					function recv_update(state, resp) {
 | 
				
			||||||
    let img_update_batch = JSON.parse(resp);
 | 
					    let img_update_batch = JSON.parse(resp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // ha nem volt semmi újabb, akkor kilépünk
 | 
				
			||||||
 | 
					    if (img_update_batch.length === 0) {
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // növeljük az összes és a betöltött művek számát
 | 
					    // növeljük az összes és a betöltött művek számát
 | 
				
			||||||
    artworks_loaded_n += img_update_batch.length;
 | 
					    artworks_loaded_n += img_update_batch.length;
 | 
				
			||||||
    total_artwork_count += img_update_batch.length;
 | 
					    total_artwork_count += img_update_batch.length;
 | 
				
			||||||
@ -464,6 +514,12 @@ function open_viewer(details) {
 | 
				
			|||||||
    o("artauthor").innerText = details.Author;
 | 
					    o("artauthor").innerText = details.Author;
 | 
				
			||||||
    o("artdesc").innerText = details.Description;
 | 
					    o("artdesc").innerText = details.Description;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // feliratcsík háttérszínének meghatározása a domináns szín alapján
 | 
				
			||||||
 | 
					    /*let captions_bgcolor = new Color();
 | 
				
			||||||
 | 
					    captions_bgcolor.from_cssrgb(details.ColorMean);
 | 
				
			||||||
 | 
					    captions_bgcolor.a = 0.6;
 | 
				
			||||||
 | 
					    o("artcaptions").style.backgroundColor = captions_bgcolor.to_rgba();*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // ...
 | 
					    // ...
 | 
				
			||||||
    scroll_enable(false);
 | 
					    scroll_enable(false);
 | 
				
			||||||
    show("viewersect");
 | 
					    show("viewersect");
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										150
									
								
								phw.css
									
									
									
									
									
								
							
							
						
						
									
										150
									
								
								phw.css
									
									
									
									
									
								
							@ -18,6 +18,11 @@ body {
 | 
				
			|||||||
    --DESC-COLOR: white;
 | 
					    --DESC-COLOR: white;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    background-color: var(--PAGE-BGCOLOR);
 | 
					    background-color: var(--PAGE-BGCOLOR);
 | 
				
			||||||
 | 
					    scrollbar-width: none;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					body::-webkit-scrollbar {
 | 
				
			||||||
 | 
					    display: none;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
input, textarea {
 | 
					input, textarea {
 | 
				
			||||||
@ -61,6 +66,29 @@ section.upload-popup-inner-container {
 | 
				
			|||||||
    padding: 10px;
 | 
					    padding: 10px;
 | 
				
			||||||
    vertical-align: bottom;
 | 
					    vertical-align: bottom;
 | 
				
			||||||
    background-color: var(--PUP-BGCOLOR);
 | 
					    background-color: var(--PUP-BGCOLOR);
 | 
				
			||||||
 | 
					    overflow-y: auto;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@media only screen and (max-width: 600px) {
 | 
				
			||||||
 | 
					    section.upload-popup {
 | 
				
			||||||
 | 
					        top: 0;
 | 
				
			||||||
 | 
					        left: 0;
 | 
				
			||||||
 | 
					        right: 0;
 | 
				
			||||||
 | 
					        bottom: 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        width: unset;
 | 
				
			||||||
 | 
					        height: unset;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    section.upload-popup-slider {
 | 
				
			||||||
 | 
					        width: calc(300% + 100px);
 | 
				
			||||||
 | 
					        height: 100%;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    section.upload-popup-inner-container {
 | 
				
			||||||
 | 
					        width: calc(100vw - 40px);
 | 
				
			||||||
 | 
					        height: 100%;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
section.btn,
 | 
					section.btn,
 | 
				
			||||||
@ -119,6 +147,13 @@ textarea {
 | 
				
			|||||||
    border-bottom: 2px solid var(--INPUT-INACT-BORDERCOLOR);
 | 
					    border-bottom: 2px solid var(--INPUT-INACT-BORDERCOLOR);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@media only screen and (max-width: 600px) {
 | 
				
			||||||
 | 
					    input[type="text"],
 | 
				
			||||||
 | 
					    textarea {
 | 
				
			||||||
 | 
					        max-width: 80vw;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
input[type="text"]:focus,
 | 
					input[type="text"]:focus,
 | 
				
			||||||
textarea:focus {
 | 
					textarea:focus {
 | 
				
			||||||
    border-bottom-color: var(--INPUT-ACT-BORDERCOLOR);
 | 
					    border-bottom-color: var(--INPUT-ACT-BORDERCOLOR);
 | 
				
			||||||
@ -139,8 +174,16 @@ section.upload-popup-closebtn {
 | 
				
			|||||||
section.display {
 | 
					section.display {
 | 
				
			||||||
    display: block;
 | 
					    display: block;
 | 
				
			||||||
    position: absolute;
 | 
					    position: absolute;
 | 
				
			||||||
    width: calc(100vw - 10px);
 | 
					    top: 5px;
 | 
				
			||||||
    margin: 5px;
 | 
					    left: 5px;
 | 
				
			||||||
 | 
					    right: 0;
 | 
				
			||||||
 | 
					    margin: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@media only screen and (max-width: 600px) {
 | 
				
			||||||
 | 
					    section.display {
 | 
				
			||||||
 | 
					        margin: 0;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
img.thumbnail {
 | 
					img.thumbnail {
 | 
				
			||||||
@ -160,12 +203,13 @@ img.thumbnail:hover {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
section.thumbnail-container {
 | 
					section.thumbnail-container {
 | 
				
			||||||
 | 
					    position: relative;
 | 
				
			||||||
    margin: 4px 4px;
 | 
					    margin: 4px 4px;
 | 
				
			||||||
    display: inline-block;
 | 
					    display: inline-block;
 | 
				
			||||||
    border-radius: 2px;
 | 
					    border-radius: 2px;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
section.viewer {
 | 
					/*section.viewer {
 | 
				
			||||||
    position: fixed;
 | 
					    position: fixed;
 | 
				
			||||||
    display: block;
 | 
					    display: block;
 | 
				
			||||||
    z-index: 2000;
 | 
					    z-index: 2000;
 | 
				
			||||||
@ -178,6 +222,24 @@ section.viewer {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    opacity: 0;
 | 
					    opacity: 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    transition: 0.3s ease;
 | 
				
			||||||
 | 
					}*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					section.viewer {
 | 
				
			||||||
 | 
					    position: fixed;
 | 
				
			||||||
 | 
					    display: flex;
 | 
				
			||||||
 | 
					    z-index: 2000;
 | 
				
			||||||
 | 
					    top: 0;
 | 
				
			||||||
 | 
					    left: 0;
 | 
				
			||||||
 | 
					    height: 100vh;
 | 
				
			||||||
 | 
					    width: 100vw;
 | 
				
			||||||
 | 
					    background-color: rgba(0, 0, 0, 0.9);
 | 
				
			||||||
 | 
					    text-align: center;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    justify-content: center;
 | 
				
			||||||
 | 
					    align-items: center;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    opacity: 0;
 | 
				
			||||||
    transition: 0.3s ease;
 | 
					    transition: 0.3s ease;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -198,30 +260,36 @@ img.viewer {
 | 
				
			|||||||
span.art-title,
 | 
					span.art-title,
 | 
				
			||||||
span.art-author,
 | 
					span.art-author,
 | 
				
			||||||
span.art-desc {
 | 
					span.art-desc {
 | 
				
			||||||
    position: absolute;
 | 
					    display: block;
 | 
				
			||||||
 | 
					    text-align: left;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
span.art-title {
 | 
					span.art-title {
 | 
				
			||||||
    left: 1em;
 | 
					 | 
				
			||||||
    color: var(--TITLE-COLOR);
 | 
					    color: var(--TITLE-COLOR);
 | 
				
			||||||
    font-weight: bold;
 | 
					    font-weight: bold;
 | 
				
			||||||
    font-size: 32px;
 | 
					    font-size: 32px;
 | 
				
			||||||
 | 
					    text-align: left;
 | 
				
			||||||
 | 
					    text-indent: 1em;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
span.art-author {
 | 
					span.art-author {
 | 
				
			||||||
    left: 2.5em;
 | 
					 | 
				
			||||||
    top: 45px;
 | 
					 | 
				
			||||||
    color: var(--AUTHOR-COLOR);
 | 
					    color: var(--AUTHOR-COLOR);
 | 
				
			||||||
    font-size: 20px;
 | 
					    font-size: 20px;
 | 
				
			||||||
 | 
					    margin-left: 3em;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
span.art-desc {
 | 
					span.art-desc {
 | 
				
			||||||
    left: 2.2em;
 | 
					 | 
				
			||||||
    right: 1em;
 | 
					    right: 1em;
 | 
				
			||||||
    top: 85px;
 | 
					 | 
				
			||||||
    color: var(--DESC-COLOR);
 | 
					    color: var(--DESC-COLOR);
 | 
				
			||||||
    font-size: 16px;
 | 
					    font-size: 16px;
 | 
				
			||||||
    text-align: left;
 | 
					    margin-left: 3.5em;
 | 
				
			||||||
 | 
					    margin-top: 0.5em;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@keyframes hide-art-caption {
 | 
				
			||||||
 | 
					    0% { max-height: 100vh; background-color: rgba(0, 0, 0, 0.6); }
 | 
				
			||||||
 | 
					    80% { max-height: 100vh; background-color: rgba(0, 0, 0, 0.6); }
 | 
				
			||||||
 | 
					    100% { max-height: 24px; background-color: rgba(0, 0, 0, 0.0); }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
section.art-captions {
 | 
					section.art-captions {
 | 
				
			||||||
@ -231,13 +299,71 @@ section.art-captions {
 | 
				
			|||||||
    left: 0;
 | 
					    left: 0;
 | 
				
			||||||
    right: 0;
 | 
					    right: 0;
 | 
				
			||||||
    bottom: 0;
 | 
					    bottom: 0;
 | 
				
			||||||
    height: 200px;
 | 
					    padding-bottom: 2em;
 | 
				
			||||||
 | 
					    background-color: rgba(0, 0, 0, 0.6);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    opacity: 0%;
 | 
				
			||||||
 | 
					    max-height: 24px;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    transition: 1s ease;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					section.art-captions[shown="true"] {
 | 
				
			||||||
 | 
					    animation-name: hide-art-caption;
 | 
				
			||||||
 | 
					    animation-duration: 10s;
 | 
				
			||||||
 | 
					    animation-delay: 0s;
 | 
				
			||||||
 | 
					    /*animation-fill-mode: forwards;*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    background-color: rgba(0, 0, 0, 0.0);
 | 
				
			||||||
 | 
					    transition: 1s ease;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					section.art-captions[shown="true"]:hover {
 | 
				
			||||||
 | 
					    max-height: 100vh !important;
 | 
				
			||||||
 | 
					    background-color: rgba(0, 0, 0, 0.6);
 | 
				
			||||||
 | 
					    transition: 1s ease;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					section[shown="true"] {
 | 
				
			||||||
 | 
					    opacity: 100%;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@media only screen and (max-width: 600px) {
 | 
				
			||||||
 | 
					    section.art-captions {
 | 
				
			||||||
 | 
					        padding-bottom: 5.5em;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					section.testversion-sign {
 | 
				
			||||||
 | 
					    position: fixed;
 | 
				
			||||||
 | 
					    display: block;
 | 
				
			||||||
 | 
					    background-color: #198786;
 | 
				
			||||||
 | 
					    color: white;
 | 
				
			||||||
 | 
					    left: -40px;
 | 
				
			||||||
 | 
					    bottom: 33px;
 | 
				
			||||||
 | 
					    transform: rotate(45deg);
 | 
				
			||||||
 | 
					    width: 170px;
 | 
				
			||||||
 | 
					    text-align: center;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					span.thumb-title {
 | 
				
			||||||
 | 
					    display: block;
 | 
				
			||||||
 | 
					    position: absolute;
 | 
				
			||||||
 | 
					    left: 0em;
 | 
				
			||||||
 | 
					    bottom: 0em;
 | 
				
			||||||
 | 
					    font-size: 24px;
 | 
				
			||||||
 | 
					    right: 0;
 | 
				
			||||||
 | 
					    color: white;
 | 
				
			||||||
 | 
					    background-color: rgba(0,0,0,0.8);
 | 
				
			||||||
 | 
					    padding-left: 1em;
 | 
				
			||||||
 | 
					    padding-top: 0.2em;
 | 
				
			||||||
 | 
					    padding-bottom: 0.2em;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    opacity: 0;
 | 
					    opacity: 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    transition: 0.3s ease;
 | 
					    transition: 0.3s ease;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
section[shown="true"] {
 | 
					section.thumbnail-container:hover > span.thumb-title {
 | 
				
			||||||
    opacity: 100%;
 | 
					    opacity: 100%;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user