Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
NW.js Image Viewer - main.js

main.js

Caricato da: GN
Scarica il programma completo

  1. var fs = require("fs");
  2. var path = require("path");
  3. var mime = require("mime");
  4. var filesize = require("filesize");
  5. var gui = require("nw.gui");
  6. var strHelper = require("./js/strHelper.js");
  7.  
  8. gui.Window.get().showDevTools();
  9.  
  10. var fileList = [];
  11.  
  12. $(document).ready(function(){
  13.   $("#dir").val((process.platform === 'win32') ? process.env.HOMEPATH : process.env.HOME);
  14.   updateDir();
  15.   updateCarouselSize();
  16.  
  17.   var win = gui.Window.get();
  18.   win.on("resize", function(){
  19.     updateCarouselSize();
  20.   });
  21.  
  22.   function updateCarouselSize(){
  23.     $("#runtimeStyle").html("#carousel img {max-width:" + $("#tabContents").width() + "px; max-height:" + $("#tabContents").height() + "px;}");
  24.   }
  25.  
  26.   $("#browse").change(function() {
  27.     $("#dir").val($(this).val());
  28.     updateDir();
  29.   });
  30.  
  31.   $("#browseBtn").click(function(){
  32.     $("#browse").trigger("click");
  33.   });
  34.  
  35.   $("#dir").on("input", function(){
  36.     updateDir();
  37.   });
  38.  
  39.   function setActiveTab(id){
  40.     $("#tabs").children().removeClass("active");
  41.     $(id).addClass("active");
  42.     var panel = id.slice(0, -3);
  43.     $("#tabContents > .tabActive").not(panel).fadeOut(200, function(){
  44.       $(panel).fadeIn(200);
  45.       $("#tabContents > .tabActive").removeClass("tabActive");
  46.       $(panel).addClass("tabActive");
  47.     });
  48.   }
  49.  
  50.   function updateDir(){
  51.     var dir = $("#dir").val();
  52.     fileList = [];
  53.     $("#detailsList").empty();
  54.     $("#thumbnailsList").empty();
  55.     $(".carousel-inner").empty();
  56.     $(".carousel-control").hide();
  57.     if(fs.existsSync(dir)){
  58.       $("#dirNotExists").addClass("hidden");
  59.       fs.readdirSync(dir).forEach(function(fileName){
  60.         var filePath = path.join(dir, fileName);
  61.         var fileMime = mime.lookup(filePath);
  62.         if(strHelper.startsWith(fileMime, "image/")){
  63.           fileList.push(filePath);
  64.           fileStats = fs.statSync(filePath);
  65.           $("#detailsList").append('<tr><td><a href="#" class="detailsItem">' + fileName + '</a></td><td>' + fileStats.mtime.toLocaleDateString() + ' ' + fileStats.mtime.toLocaleTimeString() + '</td><td>' + fileMime.substr(6) + '</td><td>' + filesize(fileStats.size) + '</td></tr>');
  66.           $("#thumbnailsList").append('<div class="col-xs-4 col-md-3 col-lg-2"><a href="#" class="thumbnail"><img src="' + filePath + '" /><div class="caption">' + fileName + '</div></a></div>');
  67.           $(".carousel-inner").append('<div class="item"><img src="' + filePath + '"></div>');
  68.           $(".carousel-inner :first").addClass("active");
  69.         }
  70.       });
  71.       if(fileList.length === 0){
  72.         $("#noImages").removeClass("hidden");
  73.       }else{
  74.         $("#noImages").addClass("hidden");
  75.         $(".carousel-control").show();
  76.       }
  77.     }else{
  78.       $("#dirNotExists").removeClass("hidden");
  79.       $("#noImages").addClass("hidden");
  80.     }
  81.     $(".thumbnail").click(function(){
  82.       $("#carousel").carousel($(this).parent().index());
  83.       setActiveTab("#slideshowBtn");
  84.     });
  85.     $(".detailsItem").click(function(){
  86.       $("#carousel").carousel($(this).parent().parent().index());
  87.       setActiveTab("#slideshowBtn");
  88.     });
  89.   }
  90.  
  91.   $(".tabBtn").click(function(){
  92.     console.log("#" + $(this).attr("id"));
  93.     setActiveTab("#" + $(this).attr("id"));
  94.   });
  95. });