panhui 7 anni fa
parent
commit
30bf95070e
25 ha cambiato i file con 894 aggiunte e 14 eliminazioni
  1. 797 0
      src/main/House/src/exif.js
  2. 87 8
      src/main/House/src/pages/Feedback.vue
  3. 4 0
      src/main/House/src/router/index.js
  4. 2 2
      src/main/webapp/WEB-INF/html/house.html
  5. 0 0
      src/main/webapp/staticWeb/house/css/app.bd2ac70be5019a2863e6660ec702dcc5.css
  6. 0 0
      src/main/webapp/staticWeb/house/css/app.bd2ac70be5019a2863e6660ec702dcc5.css.map
  7. 0 0
      src/main/webapp/staticWeb/house/js/1.f343135143e4f31fcbba.js.map
  8. 0 0
      src/main/webapp/staticWeb/house/js/10.c1baaf207418d4717864.js
  9. 0 0
      src/main/webapp/staticWeb/house/js/10.c1baaf207418d4717864.js.map
  10. 2 0
      src/main/webapp/staticWeb/house/js/10.eabf89ab52916806d514.js
  11. 0 0
      src/main/webapp/staticWeb/house/js/10.eabf89ab52916806d514.js.map
  12. 0 0
      src/main/webapp/staticWeb/house/js/7.9d9538ab024486179832.js
  13. 0 0
      src/main/webapp/staticWeb/house/js/7.9d9538ab024486179832.js.map
  14. 0 0
      src/main/webapp/staticWeb/house/js/8.b62bdc2adda10de98726.js
  15. 0 0
      src/main/webapp/staticWeb/house/js/8.b62bdc2adda10de98726.js.map
  16. 0 2
      src/main/webapp/staticWeb/house/js/9.7e6bfa07f754537de6b5.js
  17. 0 0
      src/main/webapp/staticWeb/house/js/9.7e6bfa07f754537de6b5.js.map
  18. 0 0
      src/main/webapp/staticWeb/house/js/9.ab7560b28eadcc22b5aa.js
  19. 0 0
      src/main/webapp/staticWeb/house/js/9.ab7560b28eadcc22b5aa.js.map
  20. 0 0
      src/main/webapp/staticWeb/house/js/app.2d6a37cf96361ee98bb4.js.map
  21. 0 0
      src/main/webapp/staticWeb/house/js/app.7631ba0091e6dbfc808e.js
  22. 0 0
      src/main/webapp/staticWeb/house/js/app.7631ba0091e6dbfc808e.js.map
  23. 0 2
      src/main/webapp/staticWeb/house/js/manifest.5ad6bc823ea00558377e.js
  24. 2 0
      src/main/webapp/staticWeb/house/js/manifest.60118c59a8f6eaedb579.js
  25. 0 0
      src/main/webapp/staticWeb/house/js/manifest.60118c59a8f6eaedb579.js.map

+ 797 - 0
src/main/House/src/exif.js

@@ -0,0 +1,797 @@
+/* exif */
+
+var debug = false;
+
+var root = this;
+
+var EXIF = function (obj) {
+    if (obj instanceof EXIF) return obj;
+    if (!(this instanceof EXIF)) return new EXIF(obj);
+    this.EXIFwrapped = obj;
+};
+
+var ExifTags = EXIF.Tags = {
+
+    // version tags
+    0x9000: "ExifVersion",             // EXIF version
+    0xA000: "FlashpixVersion",         // Flashpix format version
+
+    // colorspace tags
+    0xA001: "ColorSpace",              // Color space information tag
+
+    // image configuration
+    0xA002: "PixelXDimension",         // Valid width of meaningful image
+    0xA003: "PixelYDimension",         // Valid height of meaningful image
+    0x9101: "ComponentsConfiguration", // Information about channels
+    0x9102: "CompressedBitsPerPixel",  // Compressed bits per pixel
+
+    // user information
+    0x927C: "MakerNote",               // Any desired information written by the manufacturer
+    0x9286: "UserComment",             // Comments by user
+
+    // related file
+    0xA004: "RelatedSoundFile",        // Name of related sound file
+
+    // date and time
+    0x9003: "DateTimeOriginal",        // Date and time when the original image was generated
+    0x9004: "DateTimeDigitized",       // Date and time when the image was stored digitally
+    0x9290: "SubsecTime",              // Fractions of seconds for DateTime
+    0x9291: "SubsecTimeOriginal",      // Fractions of seconds for DateTimeOriginal
+    0x9292: "SubsecTimeDigitized",     // Fractions of seconds for DateTimeDigitized
+
+    // picture-taking conditions
+    0x829A: "ExposureTime",            // Exposure time (in seconds)
+    0x829D: "FNumber",                 // F number
+    0x8822: "ExposureProgram",         // Exposure program
+    0x8824: "SpectralSensitivity",     // Spectral sensitivity
+    0x8827: "ISOSpeedRatings",         // ISO speed rating
+    0x8828: "OECF",                    // Optoelectric conversion factor
+    0x9201: "ShutterSpeedValue",       // Shutter speed
+    0x9202: "ApertureValue",           // Lens aperture
+    0x9203: "BrightnessValue",         // Value of brightness
+    0x9204: "ExposureBias",            // Exposure bias
+    0x9205: "MaxApertureValue",        // Smallest F number of lens
+    0x9206: "SubjectDistance",         // Distance to subject in meters
+    0x9207: "MeteringMode",            // Metering mode
+    0x9208: "LightSource",             // Kind of light source
+    0x9209: "Flash",                   // Flash status
+    0x9214: "SubjectArea",             // Location and area of main subject
+    0x920A: "FocalLength",             // Focal length of the lens in mm
+    0xA20B: "FlashEnergy",             // Strobe energy in BCPS
+    0xA20C: "SpatialFrequencyResponse",    //
+    0xA20E: "FocalPlaneXResolution",   // Number of pixels in width direction per FocalPlaneResolutionUnit
+    0xA20F: "FocalPlaneYResolution",   // Number of pixels in height direction per FocalPlaneResolutionUnit
+    0xA210: "FocalPlaneResolutionUnit",    // Unit for measuring FocalPlaneXResolution and FocalPlaneYResolution
+    0xA214: "SubjectLocation",         // Location of subject in image
+    0xA215: "ExposureIndex",           // Exposure index selected on camera
+    0xA217: "SensingMethod",           // Image sensor type
+    0xA300: "FileSource",              // Image source (3 == DSC)
+    0xA301: "SceneType",               // Scene type (1 == directly photographed)
+    0xA302: "CFAPattern",              // Color filter array geometric pattern
+    0xA401: "CustomRendered",          // Special processing
+    0xA402: "ExposureMode",            // Exposure mode
+    0xA403: "WhiteBalance",            // 1 = auto white balance, 2 = manual
+    0xA404: "DigitalZoomRation",       // Digital zoom ratio
+    0xA405: "FocalLengthIn35mmFilm",   // Equivalent foacl length assuming 35mm film camera (in mm)
+    0xA406: "SceneCaptureType",        // Type of scene
+    0xA407: "GainControl",             // Degree of overall image gain adjustment
+    0xA408: "Contrast",                // Direction of contrast processing applied by camera
+    0xA409: "Saturation",              // Direction of saturation processing applied by camera
+    0xA40A: "Sharpness",               // Direction of sharpness processing applied by camera
+    0xA40B: "DeviceSettingDescription",    //
+    0xA40C: "SubjectDistanceRange",    // Distance to subject
+
+    // other tags
+    0xA005: "InteroperabilityIFDPointer",
+    0xA420: "ImageUniqueID"            // Identifier assigned uniquely to each image
+};
+
+var TiffTags = EXIF.TiffTags = {
+    0x0100: "ImageWidth",
+    0x0101: "ImageHeight",
+    0x8769: "ExifIFDPointer",
+    0x8825: "GPSInfoIFDPointer",
+    0xA005: "InteroperabilityIFDPointer",
+    0x0102: "BitsPerSample",
+    0x0103: "Compression",
+    0x0106: "PhotometricInterpretation",
+    0x0112: "Orientation",
+    0x0115: "SamplesPerPixel",
+    0x011C: "PlanarConfiguration",
+    0x0212: "YCbCrSubSampling",
+    0x0213: "YCbCrPositioning",
+    0x011A: "XResolution",
+    0x011B: "YResolution",
+    0x0128: "ResolutionUnit",
+    0x0111: "StripOffsets",
+    0x0116: "RowsPerStrip",
+    0x0117: "StripByteCounts",
+    0x0201: "JPEGInterchangeFormat",
+    0x0202: "JPEGInterchangeFormatLength",
+    0x012D: "TransferFunction",
+    0x013E: "WhitePoint",
+    0x013F: "PrimaryChromaticities",
+    0x0211: "YCbCrCoefficients",
+    0x0214: "ReferenceBlackWhite",
+    0x0132: "DateTime",
+    0x010E: "ImageDescription",
+    0x010F: "Make",
+    0x0110: "Model",
+    0x0131: "Software",
+    0x013B: "Artist",
+    0x8298: "Copyright"
+};
+
+var GPSTags = EXIF.GPSTags = {
+    0x0000: "GPSVersionID",
+    0x0001: "GPSLatitudeRef",
+    0x0002: "GPSLatitude",
+    0x0003: "GPSLongitudeRef",
+    0x0004: "GPSLongitude",
+    0x0005: "GPSAltitudeRef",
+    0x0006: "GPSAltitude",
+    0x0007: "GPSTimeStamp",
+    0x0008: "GPSSatellites",
+    0x0009: "GPSStatus",
+    0x000A: "GPSMeasureMode",
+    0x000B: "GPSDOP",
+    0x000C: "GPSSpeedRef",
+    0x000D: "GPSSpeed",
+    0x000E: "GPSTrackRef",
+    0x000F: "GPSTrack",
+    0x0010: "GPSImgDirectionRef",
+    0x0011: "GPSImgDirection",
+    0x0012: "GPSMapDatum",
+    0x0013: "GPSDestLatitudeRef",
+    0x0014: "GPSDestLatitude",
+    0x0015: "GPSDestLongitudeRef",
+    0x0016: "GPSDestLongitude",
+    0x0017: "GPSDestBearingRef",
+    0x0018: "GPSDestBearing",
+    0x0019: "GPSDestDistanceRef",
+    0x001A: "GPSDestDistance",
+    0x001B: "GPSProcessingMethod",
+    0x001C: "GPSAreaInformation",
+    0x001D: "GPSDateStamp",
+    0x001E: "GPSDifferential"
+};
+
+var StringValues = EXIF.StringValues = {
+    ExposureProgram: {
+        0: "Not defined",
+        1: "Manual",
+        2: "Normal program",
+        3: "Aperture priority",
+        4: "Shutter priority",
+        5: "Creative program",
+        6: "Action program",
+        7: "Portrait mode",
+        8: "Landscape mode"
+    },
+    MeteringMode: {
+        0: "Unknown",
+        1: "Average",
+        2: "CenterWeightedAverage",
+        3: "Spot",
+        4: "MultiSpot",
+        5: "Pattern",
+        6: "Partial",
+        255: "Other"
+    },
+    LightSource: {
+        0: "Unknown",
+        1: "Daylight",
+        2: "Fluorescent",
+        3: "Tungsten (incandescent light)",
+        4: "Flash",
+        9: "Fine weather",
+        10: "Cloudy weather",
+        11: "Shade",
+        12: "Daylight fluorescent (D 5700 - 7100K)",
+        13: "Day white fluorescent (N 4600 - 5400K)",
+        14: "Cool white fluorescent (W 3900 - 4500K)",
+        15: "White fluorescent (WW 3200 - 3700K)",
+        17: "Standard light A",
+        18: "Standard light B",
+        19: "Standard light C",
+        20: "D55",
+        21: "D65",
+        22: "D75",
+        23: "D50",
+        24: "ISO studio tungsten",
+        255: "Other"
+    },
+    Flash: {
+        0x0000: "Flash did not fire",
+        0x0001: "Flash fired",
+        0x0005: "Strobe return light not detected",
+        0x0007: "Strobe return light detected",
+        0x0009: "Flash fired, compulsory flash mode",
+        0x000D: "Flash fired, compulsory flash mode, return light not detected",
+        0x000F: "Flash fired, compulsory flash mode, return light detected",
+        0x0010: "Flash did not fire, compulsory flash mode",
+        0x0018: "Flash did not fire, auto mode",
+        0x0019: "Flash fired, auto mode",
+        0x001D: "Flash fired, auto mode, return light not detected",
+        0x001F: "Flash fired, auto mode, return light detected",
+        0x0020: "No flash function",
+        0x0041: "Flash fired, red-eye reduction mode",
+        0x0045: "Flash fired, red-eye reduction mode, return light not detected",
+        0x0047: "Flash fired, red-eye reduction mode, return light detected",
+        0x0049: "Flash fired, compulsory flash mode, red-eye reduction mode",
+        0x004D: "Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected",
+        0x004F: "Flash fired, compulsory flash mode, red-eye reduction mode, return light detected",
+        0x0059: "Flash fired, auto mode, red-eye reduction mode",
+        0x005D: "Flash fired, auto mode, return light not detected, red-eye reduction mode",
+        0x005F: "Flash fired, auto mode, return light detected, red-eye reduction mode"
+    },
+    SensingMethod: {
+        1: "Not defined",
+        2: "One-chip color area sensor",
+        3: "Two-chip color area sensor",
+        4: "Three-chip color area sensor",
+        5: "Color sequential area sensor",
+        7: "Trilinear sensor",
+        8: "Color sequential linear sensor"
+    },
+    SceneCaptureType: {
+        0: "Standard",
+        1: "Landscape",
+        2: "Portrait",
+        3: "Night scene"
+    },
+    SceneType: {
+        1: "Directly photographed"
+    },
+    CustomRendered: {
+        0: "Normal process",
+        1: "Custom process"
+    },
+    WhiteBalance: {
+        0: "Auto white balance",
+        1: "Manual white balance"
+    },
+    GainControl: {
+        0: "None",
+        1: "Low gain up",
+        2: "High gain up",
+        3: "Low gain down",
+        4: "High gain down"
+    },
+    Contrast: {
+        0: "Normal",
+        1: "Soft",
+        2: "Hard"
+    },
+    Saturation: {
+        0: "Normal",
+        1: "Low saturation",
+        2: "High saturation"
+    },
+    Sharpness: {
+        0: "Normal",
+        1: "Soft",
+        2: "Hard"
+    },
+    SubjectDistanceRange: {
+        0: "Unknown",
+        1: "Macro",
+        2: "Close view",
+        3: "Distant view"
+    },
+    FileSource: {
+        3: "DSC"
+    },
+
+    Components: {
+        0: "",
+        1: "Y",
+        2: "Cb",
+        3: "Cr",
+        4: "R",
+        5: "G",
+        6: "B"
+    }
+};
+
+function addEvent(element, event, handler) {
+    if (element.addEventListener) {
+        element.addEventListener(event, handler, false);
+    } else if (element.attachEvent) {
+        element.attachEvent("on" + event, handler);
+    }
+}
+
+function imageHasData(img) {
+    return !!(img.exifdata);
+}
+
+
+function base64ToArrayBuffer(base64, contentType) {
+    contentType = contentType || base64.match(/^data\:([^\;]+)\;base64,/mi)[1] || ''; // e.g. 'data:image/jpeg;base64,...' => 'image/jpeg'
+    base64 = base64.replace(/^data\:([^\;]+)\;base64,/gmi, '');
+    var binary = atob(base64);
+    var len = binary.length;
+    var buffer = new ArrayBuffer(len);
+    var view = new Uint8Array(buffer);
+    for (var i = 0; i < len; i++) {
+        view[i] = binary.charCodeAt(i);
+    }
+    return buffer;
+}
+
+function objectURLToBlob(url, callback) {
+    var http = new XMLHttpRequest();
+    http.open("GET", url, true);
+    http.responseType = "blob";
+    http.onload = function (e) {
+        if (this.status == 200 || this.status === 0) {
+            callback(this.response);
+        }
+    };
+    http.send();
+}
+
+function getImageData(img, callback) {
+    function handleBinaryFile(binFile) {
+        var data = findEXIFinJPEG(binFile);
+        var iptcdata = findIPTCinJPEG(binFile);
+        img.exifdata = data || {};
+        img.iptcdata = iptcdata || {};
+        if (callback) {
+            callback.call(img);
+        }
+    }
+
+    if (img.src) {
+        if (/^data\:/i.test(img.src)) { // Data URI
+            var arrayBuffer = base64ToArrayBuffer(img.src);
+            handleBinaryFile(arrayBuffer);
+
+        } else if (/^blob\:/i.test(img.src)) { // Object URL
+            var fileReader = new FileReader();
+            fileReader.onload = function (e) {
+                handleBinaryFile(e.target.result);
+            };
+            objectURLToBlob(img.src, function (blob) {
+                fileReader.readAsArrayBuffer(blob);
+            });
+        } else {
+            var http = new XMLHttpRequest();
+            http.onload = function () {
+                if (this.status == 200 || this.status === 0) {
+                    handleBinaryFile(http.response);
+                } else {
+                    callback(new Error("Could not load image"));
+                }
+                http = null;
+            };
+            http.open("GET", img.src, true);
+            http.responseType = "arraybuffer";
+            http.send(null);
+        }
+    } else if (window.FileReader && (img instanceof window.Blob || img instanceof window.File)) {
+        var fileReader = new FileReader();
+        fileReader.onload = function (e) {
+            if (debug) console.log("Got file of length " + e.target.result.byteLength);
+            handleBinaryFile(e.target.result);
+        };
+
+        fileReader.readAsArrayBuffer(img);
+    }
+}
+
+function findEXIFinJPEG(file) {
+    var dataView = new DataView(file);
+
+    if (debug) console.log("Got file of length " + file.byteLength);
+    if ((dataView.getUint8(0) != 0xFF) || (dataView.getUint8(1) != 0xD8)) {
+        if (debug) console.log("Not a valid JPEG");
+        return false; // not a valid jpeg
+    }
+
+    var offset = 2,
+        length = file.byteLength,
+        marker;
+
+    while (offset < length) {
+        if (dataView.getUint8(offset) != 0xFF) {
+            if (debug) console.log("Not a valid marker at offset " + offset + ", found: " + dataView.getUint8(offset));
+            return false; // not a valid marker, something is wrong
+        }
+
+        marker = dataView.getUint8(offset + 1);
+        if (debug) console.log(marker);
+
+        // we could implement handling for other markers here,
+        // but we're only looking for 0xFFE1 for EXIF data
+
+        if (marker == 225) {
+            if (debug) console.log("Found 0xFFE1 marker");
+
+            return readEXIFData(dataView, offset + 4, dataView.getUint16(offset + 2) - 2);
+
+            // offset += 2 + file.getShortAt(offset+2, true);
+
+        } else {
+            offset += 2 + dataView.getUint16(offset + 2);
+        }
+
+    }
+
+}
+
+function findIPTCinJPEG(file) {
+    var dataView = new DataView(file);
+
+    if (debug) console.log("Got file of length " + file.byteLength);
+    if ((dataView.getUint8(0) != 0xFF) || (dataView.getUint8(1) != 0xD8)) {
+        if (debug) console.log("Not a valid JPEG");
+        return false; // not a valid jpeg
+    }
+
+    var offset = 2,
+        length = file.byteLength;
+
+
+    var isFieldSegmentStart = function (dataView, offset) {
+        return (
+            dataView.getUint8(offset) === 0x38 &&
+            dataView.getUint8(offset + 1) === 0x42 &&
+            dataView.getUint8(offset + 2) === 0x49 &&
+            dataView.getUint8(offset + 3) === 0x4D &&
+            dataView.getUint8(offset + 4) === 0x04 &&
+            dataView.getUint8(offset + 5) === 0x04
+        );
+    };
+
+    while (offset < length) {
+
+        if (isFieldSegmentStart(dataView, offset)) {
+
+            // Get the length of the name header (which is padded to an even number of bytes)
+            var nameHeaderLength = dataView.getUint8(offset + 7);
+            if (nameHeaderLength % 2 !== 0) nameHeaderLength += 1;
+            // Check for pre photoshop 6 format
+            if (nameHeaderLength === 0) {
+                // Always 4
+                nameHeaderLength = 4;
+            }
+
+            var startOffset = offset + 8 + nameHeaderLength;
+            var sectionLength = dataView.getUint16(offset + 6 + nameHeaderLength);
+
+            return readIPTCData(file, startOffset, sectionLength);
+
+            break;
+
+        }
+
+
+        // Not the marker, continue searching
+        offset++;
+
+    }
+
+}
+
+var IptcFieldMap = {
+    0x78: 'caption',
+    0x6E: 'credit',
+    0x19: 'keywords',
+    0x37: 'dateCreated',
+    0x50: 'byline',
+    0x55: 'bylineTitle',
+    0x7A: 'captionWriter',
+    0x69: 'headline',
+    0x74: 'copyright',
+    0x0F: 'category'
+};
+
+function readIPTCData(file, startOffset, sectionLength) {
+    var dataView = new DataView(file);
+    var data = {};
+    var fieldValue, fieldName, dataSize, segmentType, segmentSize;
+    var segmentStartPos = startOffset;
+    while (segmentStartPos < startOffset + sectionLength) {
+        if (dataView.getUint8(segmentStartPos) === 0x1C && dataView.getUint8(segmentStartPos + 1) === 0x02) {
+            segmentType = dataView.getUint8(segmentStartPos + 2);
+            if (segmentType in IptcFieldMap) {
+                dataSize = dataView.getInt16(segmentStartPos + 3);
+                segmentSize = dataSize + 5;
+                fieldName = IptcFieldMap[segmentType];
+                fieldValue = getStringFromDB(dataView, segmentStartPos + 5, dataSize);
+                // Check if we already stored a value with this name
+                if (data.hasOwnProperty(fieldName)) {
+                    // Value already stored with this name, create multivalue field
+                    if (data[fieldName] instanceof Array) {
+                        data[fieldName].push(fieldValue);
+                    }
+                    else {
+                        data[fieldName] = [data[fieldName], fieldValue];
+                    }
+                }
+                else {
+                    data[fieldName] = fieldValue;
+                }
+            }
+
+        }
+        segmentStartPos++;
+    }
+    return data;
+}
+
+
+function readTags(file, tiffStart, dirStart, strings, bigEnd) {
+    var entries = file.getUint16(dirStart, !bigEnd),
+        tags = {},
+        entryOffset, tag,
+        i;
+
+    for (i = 0; i < entries; i++) {
+        entryOffset = dirStart + i * 12 + 2;
+        tag = strings[file.getUint16(entryOffset, !bigEnd)];
+        if (!tag && debug) console.log("Unknown tag: " + file.getUint16(entryOffset, !bigEnd));
+        tags[tag] = readTagValue(file, entryOffset, tiffStart, dirStart, bigEnd);
+    }
+    return tags;
+}
+
+
+function readTagValue(file, entryOffset, tiffStart, dirStart, bigEnd) {
+    var type = file.getUint16(entryOffset + 2, !bigEnd),
+        numValues = file.getUint32(entryOffset + 4, !bigEnd),
+        valueOffset = file.getUint32(entryOffset + 8, !bigEnd) + tiffStart,
+        offset,
+        vals, val, n,
+        numerator, denominator;
+
+    switch (type) {
+        case 1: // byte, 8-bit unsigned int
+        case 7: // undefined, 8-bit byte, value depending on field
+            if (numValues == 1) {
+                return file.getUint8(entryOffset + 8, !bigEnd);
+            } else {
+                offset = numValues > 4 ? valueOffset : (entryOffset + 8);
+                vals = [];
+                for (n = 0; n < numValues; n++) {
+                    vals[n] = file.getUint8(offset + n);
+                }
+                return vals;
+            }
+
+        case 2: // ascii, 8-bit byte
+            offset = numValues > 4 ? valueOffset : (entryOffset + 8);
+            return getStringFromDB(file, offset, numValues - 1);
+
+        case 3: // short, 16 bit int
+            if (numValues == 1) {
+                return file.getUint16(entryOffset + 8, !bigEnd);
+            } else {
+                offset = numValues > 2 ? valueOffset : (entryOffset + 8);
+                vals = [];
+                for (n = 0; n < numValues; n++) {
+                    vals[n] = file.getUint16(offset + 2 * n, !bigEnd);
+                }
+                return vals;
+            }
+
+        case 4: // long, 32 bit int
+            if (numValues == 1) {
+                return file.getUint32(entryOffset + 8, !bigEnd);
+            } else {
+                vals = [];
+                for (n = 0; n < numValues; n++) {
+                    vals[n] = file.getUint32(valueOffset + 4 * n, !bigEnd);
+                }
+                return vals;
+            }
+
+        case 5:    // rational = two long values, first is numerator, second is denominator
+            if (numValues == 1) {
+                numerator = file.getUint32(valueOffset, !bigEnd);
+                denominator = file.getUint32(valueOffset + 4, !bigEnd);
+                val = new Number(numerator / denominator);
+                val.numerator = numerator;
+                val.denominator = denominator;
+                return val;
+            } else {
+                vals = [];
+                for (n = 0; n < numValues; n++) {
+                    numerator = file.getUint32(valueOffset + 8 * n, !bigEnd);
+                    denominator = file.getUint32(valueOffset + 4 + 8 * n, !bigEnd);
+                    vals[n] = new Number(numerator / denominator);
+                    vals[n].numerator = numerator;
+                    vals[n].denominator = denominator;
+                }
+                return vals;
+            }
+
+        case 9: // slong, 32 bit signed int
+            if (numValues == 1) {
+                return file.getInt32(entryOffset + 8, !bigEnd);
+            } else {
+                vals = [];
+                for (n = 0; n < numValues; n++) {
+                    vals[n] = file.getInt32(valueOffset + 4 * n, !bigEnd);
+                }
+                return vals;
+            }
+
+        case 10: // signed rational, two slongs, first is numerator, second is denominator
+            if (numValues == 1) {
+                return file.getInt32(valueOffset, !bigEnd) / file.getInt32(valueOffset + 4, !bigEnd);
+            } else {
+                vals = [];
+                for (n = 0; n < numValues; n++) {
+                    vals[n] = file.getInt32(valueOffset + 8 * n, !bigEnd) / file.getInt32(valueOffset + 4 + 8 * n, !bigEnd);
+                }
+                return vals;
+            }
+    }
+}
+
+function getStringFromDB(buffer, start, length) {
+    var outstr = "", n;
+    for (n = start; n < start + length; n++) {
+        outstr += String.fromCharCode(buffer.getUint8(n));
+    }
+    return outstr;
+}
+
+function readEXIFData(file, start) {
+    if (getStringFromDB(file, start, 4) != "Exif") {
+        if (debug) console.log("Not valid EXIF data! " + getStringFromDB(file, start, 4));
+        return false;
+    }
+
+    var bigEnd,
+        tags, tag,
+        exifData, gpsData,
+        tiffOffset = start + 6;
+
+    // test for TIFF validity and endianness
+    if (file.getUint16(tiffOffset) == 0x4949) {
+        bigEnd = false;
+    } else if (file.getUint16(tiffOffset) == 0x4D4D) {
+        bigEnd = true;
+    } else {
+        if (debug) console.log("Not valid TIFF data! (no 0x4949 or 0x4D4D)");
+        return false;
+    }
+
+    if (file.getUint16(tiffOffset + 2, !bigEnd) != 0x002A) {
+        if (debug) console.log("Not valid TIFF data! (no 0x002A)");
+        return false;
+    }
+
+    var firstIFDOffset = file.getUint32(tiffOffset + 4, !bigEnd);
+
+    if (firstIFDOffset < 0x00000008) {
+        if (debug) console.log("Not valid TIFF data! (First offset less than 8)", file.getUint32(tiffOffset + 4, !bigEnd));
+        return false;
+    }
+
+    tags = readTags(file, tiffOffset, tiffOffset + firstIFDOffset, TiffTags, bigEnd);
+
+    if (tags.ExifIFDPointer) {
+        exifData = readTags(file, tiffOffset, tiffOffset + tags.ExifIFDPointer, ExifTags, bigEnd);
+        for (tag in exifData) {
+            switch (tag) {
+                case "LightSource":
+                case "Flash":
+                case "MeteringMode":
+                case "ExposureProgram":
+                case "SensingMethod":
+                case "SceneCaptureType":
+                case "SceneType":
+                case "CustomRendered":
+                case "WhiteBalance":
+                case "GainControl":
+                case "Contrast":
+                case "Saturation":
+                case "Sharpness":
+                case "SubjectDistanceRange":
+                case "FileSource":
+                    exifData[tag] = StringValues[tag][exifData[tag]];
+                    break;
+
+                case "ExifVersion":
+                case "FlashpixVersion":
+                    exifData[tag] = String.fromCharCode(exifData[tag][0], exifData[tag][1], exifData[tag][2], exifData[tag][3]);
+                    break;
+
+                case "ComponentsConfiguration":
+                    exifData[tag] =
+                        StringValues.Components[exifData[tag][0]] +
+                        StringValues.Components[exifData[tag][1]] +
+                        StringValues.Components[exifData[tag][2]] +
+                        StringValues.Components[exifData[tag][3]];
+                    break;
+            }
+            tags[tag] = exifData[tag];
+        }
+    }
+
+    if (tags.GPSInfoIFDPointer) {
+        gpsData = readTags(file, tiffOffset, tiffOffset + tags.GPSInfoIFDPointer, GPSTags, bigEnd);
+        for (tag in gpsData) {
+            switch (tag) {
+                case "GPSVersionID":
+                    gpsData[tag] = gpsData[tag][0] +
+                        "." + gpsData[tag][1] +
+                        "." + gpsData[tag][2] +
+                        "." + gpsData[tag][3];
+                    break;
+            }
+            tags[tag] = gpsData[tag];
+        }
+    }
+
+    return tags;
+}
+
+EXIF.getData = function (img, callback) {
+    if ((img instanceof Image || img instanceof HTMLImageElement) && !img.complete) return false;
+
+    if (!imageHasData(img)) {
+        getImageData(img, callback);
+    } else {
+        if (callback) {
+            callback.call(img);
+        }
+    }
+    return true;
+}
+
+EXIF.getTag = function (img, tag) {
+    if (!imageHasData(img)) return;
+    return img.exifdata[tag];
+}
+
+EXIF.getAllTags = function (img) {
+    if (!imageHasData(img)) return {};
+    var a,
+        data = img.exifdata,
+        tags = {};
+    for (a in data) {
+        if (data.hasOwnProperty(a)) {
+            tags[a] = data[a];
+        }
+    }
+    return tags;
+}
+
+EXIF.pretty = function (img) {
+    if (!imageHasData(img)) return "";
+    var a,
+        data = img.exifdata,
+        strPretty = "";
+    for (a in data) {
+        if (data.hasOwnProperty(a)) {
+            if (typeof data[a] == "object") {
+                if (data[a] instanceof Number) {
+                    strPretty += a + " : " + data[a] + " [" + data[a].numerator + "/" + data[a].denominator + "]\r\n";
+                } else {
+                    strPretty += a + " : [" + data[a].length + " values]\r\n";
+                }
+            } else {
+                strPretty += a + " : " + data[a] + "\r\n";
+            }
+        }
+    }
+    return strPretty;
+}
+
+EXIF.readFromBinaryFile = function (file) {
+    return findEXIFinJPEG(file);
+}
+
+if (typeof define === 'function' && define.amd) {
+    define('exif-js', [], function () {
+        return EXIF;
+    });
+}
+
+export default EXIF;

+ 87 - 8
src/main/House/src/pages/Feedback.vue

@@ -4,7 +4,7 @@
             <textarea name="message" maxlength="300" placeholder="请描述一下您遇到的问题" v-model="message"></textarea>
             <textarea name="message" maxlength="300" placeholder="请描述一下您遇到的问题" v-model="message"></textarea>
             <div class="num">{{message.length}}/300</div>
             <div class="num">{{message.length}}/300</div>
             <div class="imgList">
             <div class="imgList">
-                <div class="img" v-for="(item,index) in imgList"  :style="{backgroundImage:'url('+item+')'}">
+                <div class="img" v-for="(item,index) in imgList" :style="{backgroundImage:'url('+item+')'}">
                     <input @change="change($event,index)" ref="file" type="file" accept="image/*">
                     <input @change="change($event,index)" ref="file" type="file" accept="image/*">
                 </div>
                 </div>
                 <div class="img" v-if="imgList.length==0">
                 <div class="img" v-if="imgList.length==0">
@@ -26,6 +26,7 @@
 <script>
 <script>
 import GmButton from '@/components/Button'
 import GmButton from '@/components/Button'
 import { mapState } from "vuex";
 import { mapState } from "vuex";
+import EXIF from '../exif'
 export default {
 export default {
     data() {
     data() {
         return {
         return {
@@ -83,11 +84,7 @@ export default {
             }
             }
         },
         },
         change(e, index) {
         change(e, index) {
-            console.log(e)
-            var reader = new FileReader()
-            reader.onload = () => {
-                var base64 = reader.result
-                var src = URL.createObjectURL(e.target.files[0])
+            this.compress(e.target.files[0]).then(base64 => {
                 this.getImg(base64).then((value) => {
                 this.getImg(base64).then((value) => {
                     console.log(value)
                     console.log(value)
                     if (index == this.imgList.length) {
                     if (index == this.imgList.length) {
@@ -97,8 +94,7 @@ export default {
                         this.$set(this.imgList, index, value)
                         this.$set(this.imgList, index, value)
                     }
                     }
                 })
                 })
-            }
-            reader.readAsDataURL(e.target.files[0])
+            })
         },
         },
         getImg(base64) {
         getImg(base64) {
 
 
@@ -119,6 +115,89 @@ export default {
                     }
                     }
                 });
                 });
             })
             })
+        },
+        compress(file) {
+            this.$store.commit('updateLoading', true)
+            return new Promise((resolve, reject) => {
+                if (!file) {
+                    reject()
+                    return
+                }
+                var img = new Image()
+                img.onload = () => {
+
+                    var w = img.naturalWidth,
+                        h = img.naturalHeight,
+                        self = this,
+                        cvs = document.createElement('canvas'),
+                        ctx = cvs.getContext("2d")
+                    EXIF.getData(file, function () {
+                        var orientation = EXIF.getTag(this, "Orientation")
+                        console.log('orientation', orientation)
+                        switch (orientation) {
+                            case 3:
+                                cvs.width = w
+                                cvs.height = h
+                                ctx.rotate(180 * Math.PI / 180);
+                                ctx.drawImage(img, -w, -h, w, h);
+                                break;
+                            case 6:
+                                cvs.width = h
+                                cvs.height = w
+                                ctx.rotate(90 * Math.PI / 180);
+                                ctx.drawImage(img, 0, -h, w, h);
+                                break;
+                            case 8:
+                                cvs.width = h
+                                cvs.height = w
+                                ctx.rotate(270 * Math.PI / 180);
+                                ctx.drawImage(img, -w, 0, w, h);
+                                break;
+                            case 2:
+                                cvs.width = w
+                                cvs.height = h
+                                ctx.translate(w, 0);
+                                ctx.scale(-1, 1);
+                                ctx.drawImage(img, 0, 0, w, h);
+                                break;
+                            case 4:
+                                cvs.width = w
+                                cvs.height = h
+                                ctx.translate(w, 0);
+                                ctx.scale(-1, 1);
+                                ctx.rotate(180 * Math.PI / 180);
+                                ctx.drawImage(img, -w, -h, w, h);
+                                break;
+                            case 5:
+                                cvs.width = h
+                                cvs.height = w
+                                ctx.translate(h, 0);
+                                ctx.scale(-1, 1);
+                                ctx.rotate(90 * Math.PI / 180);
+                                ctx.drawImage(img, 0, -h, w, h);
+                                break;
+                            case 7:
+                                cvs.width = h
+                                cvs.height = w
+                                ctx.translate(h, 0);
+                                ctx.scale(-1, 1);
+                                ctx.rotate(270 * Math.PI / 180);
+                                ctx.drawImage(img, -w, 0, w, h);
+                                break;
+                            default:
+                                cvs.width = w
+                                cvs.height = h
+                                ctx.drawImage(img, 0, 0, w, h);
+                        }
+                        var newImageData = cvs.toDataURL('image/jpeg', 0.6);
+                        ctx = null
+                        cvs = null
+
+                        resolve(newImageData)
+                    })
+                }
+                img.src = URL.createObjectURL(file)
+            })
         }
         }
     },
     },
     components: { GmButton }
     components: { GmButton }

+ 4 - 0
src/main/House/src/router/index.js

@@ -182,6 +182,10 @@ router.beforeEach((to, from, next) => {
             axios.get('/userInfo/getUserInfo').then(res => {
             axios.get('/userInfo/getUserInfo').then(res => {
                 if (res.status === 200) {
                 if (res.status === 200) {
                     if (res.data.success) {
                     if (res.data.success) {
+                        if (!res.data.data) {
+                            next('/login');
+                            return;
+                        }
                         store.commit('updateUserInfo', res.data.data);
                         store.commit('updateUserInfo', res.data.data);
                         next();
                         next();
                         return;
                         return;

+ 2 - 2
src/main/webapp/WEB-INF/html/house.html

@@ -1,4 +1,4 @@
-<!DOCTYPE html><html><head><meta charset=utf-8><title>享居屋</title><meta name=viewport content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no"><script src=https://3gimg.qq.com/lightmap/components/geolocation/geolocation.min.js></script><script src=//unpkg.com/vue-ydui/dist/ydui.flexible.js></script><link href=./staticWeb/house/css/app.f7662e03d4ae7489de2c4a710a6c7050.css rel=stylesheet></head><style>.swiper-pagination-bullet {
+<!DOCTYPE html><html><head><meta charset=utf-8><title>享居屋</title><meta name=viewport content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no"><script src=https://3gimg.qq.com/lightmap/components/geolocation/geolocation.min.js></script><script src=//unpkg.com/vue-ydui/dist/ydui.flexible.js></script><link href=./staticWeb/house/css/app.bd2ac70be5019a2863e6660ec702dcc5.css rel=stylesheet></head><style>.swiper-pagination-bullet {
         width: 0.16rem;
         width: 0.16rem;
         height: 0.04rem;
         height: 0.04rem;
         background: rgba(255, 255, 255, 0.5);
         background: rgba(255, 255, 255, 0.5);
@@ -44,4 +44,4 @@
         width: 30%!important;
         width: 30%!important;
     }
     }
     
     
-    .mint-datetime-cancel {}</style><body><div id=app></div><script type=text/javascript src=./staticWeb/house/js/manifest.5ad6bc823ea00558377e.js></script><script type=text/javascript src=./staticWeb/house/js/vendor.5c62c0610e6477bc8275.js></script><script type=text/javascript src=./staticWeb/house/js/app.2d6a37cf96361ee98bb4.js></script></body></html>
+    .mint-datetime-cancel {}</style><body><div id=app></div><script type=text/javascript src=./staticWeb/house/js/manifest.60118c59a8f6eaedb579.js></script><script type=text/javascript src=./staticWeb/house/js/vendor.5c62c0610e6477bc8275.js></script><script type=text/javascript src=./staticWeb/house/js/app.7631ba0091e6dbfc808e.js></script></body></html>

File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/staticWeb/house/css/app.bd2ac70be5019a2863e6660ec702dcc5.css


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/staticWeb/house/css/app.bd2ac70be5019a2863e6660ec702dcc5.css.map


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/staticWeb/house/js/1.f343135143e4f31fcbba.js.map


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/staticWeb/house/js/10.c1baaf207418d4717864.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/staticWeb/house/js/10.c1baaf207418d4717864.js.map


+ 2 - 0
src/main/webapp/staticWeb/house/js/10.eabf89ab52916806d514.js

@@ -0,0 +1,2 @@
+webpackJsonp([10],{"/Vz3":function(t,e,s){t.exports=s.p+"house/img/info_icon_shouchang_kong.63b8eba.png"},TGYN:function(t,e,s){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=s("Dd8w"),n=s.n(a),i=s("qkow"),o=s("Cpzv"),r=s("NYxO"),c={data:function(){return{list:[],flag:!0,currentPage:0}},created:function(){this.$store.commit("updateLoading",!0),this.getData()},computed:n()({},Object(r.b)(["locationInfo","userInfo"])),methods:{getData:function(){var t=this;this.flag&&(this.flag=!1,0==this.currentPage&&(this.list=[]),this.currentPage++,this.$http.get({url:"/userCollection/page",data:{userId:this.userInfo.id,currentPage:this.currentPage,pageNumber:20,showFlag:"Y"}}).then(function(e){t.$store.commit("updateLoading",!1),e.success&&(e.data.pp.forEach(function(e){t.list.push(e)}),e.data.page.currentPage<e.data.page.totalPage&&(t.flag=!0))}))},menu:function(){this.$refs.list.scrollTop+this.$refs.list.offsetHeight>=this.$refs.list.scrollHeight&&this.getData()},goHome:function(){this.$router.push({name:"home"})}},components:{GmButton:i.a,largeGoodsItem:o.a}},l={render:function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"container"},[t.list.length>0?a("div",{ref:"list",staticClass:"list",on:{scroll:t.menu}},t._l(t.list,function(e,s){return a("largeGoodsItem",{attrs:{goodsInfo:e.houseInfo,hasLine:s!=t.list.length-1}})})):a("div",{staticClass:"nothing"},[a("img",{attrs:{src:s("/Vz3"),alt:""}}),t._v(" "),a("div",{staticClass:"title"},[t._v("还没收藏任何房源哦~")]),t._v(" "),a("div",{staticClass:"btn"},[a("gm-button",{attrs:{type:"primary"},on:{click:t.goHome}},[t._v("去逛逛")])],1)])])},staticRenderFns:[]};var u=s("VU/8")(c,l,!1,function(t){s("dypU")},"data-v-b425f28c",null);e.default=u.exports},dypU:function(t,e){}});
+//# sourceMappingURL=10.eabf89ab52916806d514.js.map

File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/staticWeb/house/js/10.eabf89ab52916806d514.js.map


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/staticWeb/house/js/7.9d9538ab024486179832.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/staticWeb/house/js/7.9d9538ab024486179832.js.map


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/staticWeb/house/js/8.b62bdc2adda10de98726.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/staticWeb/house/js/8.b62bdc2adda10de98726.js.map


+ 0 - 2
src/main/webapp/staticWeb/house/js/9.7e6bfa07f754537de6b5.js

@@ -1,2 +0,0 @@
-webpackJsonp([9],{"/Vz3":function(t,e,s){t.exports=s.p+"house/img/info_icon_shouchang_kong.63b8eba.png"},TGYN:function(t,e,s){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=s("Dd8w"),n=s.n(a),i=s("qkow"),o=s("Cpzv"),r=s("NYxO"),c={data:function(){return{list:[],flag:!0,currentPage:0}},created:function(){this.$store.commit("updateLoading",!0),this.getData()},computed:n()({},Object(r.b)(["locationInfo","userInfo"])),methods:{getData:function(){var t=this;this.flag&&(this.flag=!1,0==this.currentPage&&(this.list=[]),this.currentPage++,this.$http.get({url:"/userCollection/page",data:{userId:this.userInfo.id,currentPage:this.currentPage,pageNumber:20,showFlag:"Y"}}).then(function(e){t.$store.commit("updateLoading",!1),e.success&&(e.data.pp.forEach(function(e){t.list.push(e)}),e.data.page.currentPage<e.data.page.totalPage&&(t.flag=!0))}))},menu:function(){this.$refs.list.scrollTop+this.$refs.list.offsetHeight>=this.$refs.list.scrollHeight&&this.getData()},goHome:function(){this.$router.push({name:"home"})}},components:{GmButton:i.a,largeGoodsItem:o.a}},l={render:function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"container"},[t.list.length>0?a("div",{ref:"list",staticClass:"list",on:{scroll:t.menu}},t._l(t.list,function(e,s){return a("largeGoodsItem",{attrs:{goodsInfo:e.houseInfo,hasLine:s!=t.list.length-1}})})):a("div",{staticClass:"nothing"},[a("img",{attrs:{src:s("/Vz3"),alt:""}}),t._v(" "),a("div",{staticClass:"title"},[t._v("还没收藏任何房源哦~")]),t._v(" "),a("div",{staticClass:"btn"},[a("gm-button",{attrs:{type:"primary"},on:{click:t.goHome}},[t._v("去逛逛")])],1)])])},staticRenderFns:[]};var u=s("VU/8")(c,l,!1,function(t){s("dypU")},"data-v-b425f28c",null);e.default=u.exports},dypU:function(t,e){}});
-//# sourceMappingURL=9.7e6bfa07f754537de6b5.js.map

File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/staticWeb/house/js/9.7e6bfa07f754537de6b5.js.map


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/staticWeb/house/js/9.ab7560b28eadcc22b5aa.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/staticWeb/house/js/9.ab7560b28eadcc22b5aa.js.map


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/staticWeb/house/js/app.2d6a37cf96361ee98bb4.js.map


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/staticWeb/house/js/app.7631ba0091e6dbfc808e.js


File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/staticWeb/house/js/app.7631ba0091e6dbfc808e.js.map


+ 0 - 2
src/main/webapp/staticWeb/house/js/manifest.5ad6bc823ea00558377e.js

@@ -1,2 +0,0 @@
-!function(e){var n=window.webpackJsonp;window.webpackJsonp=function(r,a,o){for(var f,d,u,b=0,i=[];b<r.length;b++)d=r[b],t[d]&&i.push(t[d][0]),t[d]=0;for(f in a)Object.prototype.hasOwnProperty.call(a,f)&&(e[f]=a[f]);for(n&&n(r,a,o);i.length;)i.shift()();if(o)for(b=0;b<o.length;b++)u=c(c.s=o[b]);return u};var r={},t={20:0};function c(n){if(r[n])return r[n].exports;var t=r[n]={i:n,l:!1,exports:{}};return e[n].call(t.exports,t,t.exports,c),t.l=!0,t.exports}c.e=function(e){var n=t[e];if(0===n)return new Promise(function(e){e()});if(n)return n[2];var r=new Promise(function(r,c){n=t[e]=[r,c]});n[2]=r;var a=document.getElementsByTagName("head")[0],o=document.createElement("script");o.type="text/javascript",o.charset="utf-8",o.async=!0,o.timeout=12e4,c.nc&&o.setAttribute("nonce",c.nc),o.src=c.p+"house/js/"+e+"."+{0:"9f58be4ad468b87c03b1",1:"f343135143e4f31fcbba",2:"633cb55458313e64b21f",3:"dece21d003dee5bbc24c",4:"e0d63ebcde94bfcd4a7a",5:"aa86283d633bccb3af4d",6:"8c4bb944ccdf0dcfa8d2",7:"41688c22304583e32562",8:"1f2f8f476e88adb58e15",9:"7e6bfa07f754537de6b5",10:"c1baaf207418d4717864",11:"959c2c9ce5023d00d410",12:"c22a78756c8f731af5ec",13:"54870e93c85e7b1a55f1",14:"b2daa59e72aa0344a9e4",15:"a2d6713a0ca235622d20",16:"7a9b8cafeb7c0fc31527",17:"5bbdbb41df8aa8df299b"}[e]+".js";var f=setTimeout(d,12e4);function d(){o.onerror=o.onload=null,clearTimeout(f);var n=t[e];0!==n&&(n&&n[1](new Error("Loading chunk "+e+" failed.")),t[e]=void 0)}return o.onerror=o.onload=d,a.appendChild(o),r},c.m=e,c.c=r,c.d=function(e,n,r){c.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},c.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return c.d(n,"a",n),n},c.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},c.p="./staticWeb/",c.oe=function(e){throw console.error(e),e}}([]);
-//# sourceMappingURL=manifest.5ad6bc823ea00558377e.js.map

+ 2 - 0
src/main/webapp/staticWeb/house/js/manifest.60118c59a8f6eaedb579.js

@@ -0,0 +1,2 @@
+!function(e){var n=window.webpackJsonp;window.webpackJsonp=function(r,c,o){for(var d,f,b,u=0,i=[];u<r.length;u++)f=r[u],t[f]&&i.push(t[f][0]),t[f]=0;for(d in c)Object.prototype.hasOwnProperty.call(c,d)&&(e[d]=c[d]);for(n&&n(r,c,o);i.length;)i.shift()();if(o)for(u=0;u<o.length;u++)b=a(a.s=o[u]);return b};var r={},t={20:0};function a(n){if(r[n])return r[n].exports;var t=r[n]={i:n,l:!1,exports:{}};return e[n].call(t.exports,t,t.exports,a),t.l=!0,t.exports}a.e=function(e){var n=t[e];if(0===n)return new Promise(function(e){e()});if(n)return n[2];var r=new Promise(function(r,a){n=t[e]=[r,a]});n[2]=r;var c=document.getElementsByTagName("head")[0],o=document.createElement("script");o.type="text/javascript",o.charset="utf-8",o.async=!0,o.timeout=12e4,a.nc&&o.setAttribute("nonce",a.nc),o.src=a.p+"house/js/"+e+"."+{0:"9f58be4ad468b87c03b1",1:"f343135143e4f31fcbba",2:"633cb55458313e64b21f",3:"dece21d003dee5bbc24c",4:"e0d63ebcde94bfcd4a7a",5:"aa86283d633bccb3af4d",6:"8c4bb944ccdf0dcfa8d2",7:"9d9538ab024486179832",8:"b62bdc2adda10de98726",9:"ab7560b28eadcc22b5aa",10:"eabf89ab52916806d514",11:"959c2c9ce5023d00d410",12:"c22a78756c8f731af5ec",13:"54870e93c85e7b1a55f1",14:"b2daa59e72aa0344a9e4",15:"a2d6713a0ca235622d20",16:"7a9b8cafeb7c0fc31527",17:"5bbdbb41df8aa8df299b"}[e]+".js";var d=setTimeout(f,12e4);function f(){o.onerror=o.onload=null,clearTimeout(d);var n=t[e];0!==n&&(n&&n[1](new Error("Loading chunk "+e+" failed.")),t[e]=void 0)}return o.onerror=o.onload=f,c.appendChild(o),r},a.m=e,a.c=r,a.d=function(e,n,r){a.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},a.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(n,"a",n),n},a.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},a.p="./staticWeb/",a.oe=function(e){throw console.error(e),e}}([]);
+//# sourceMappingURL=manifest.60118c59a8f6eaedb579.js.map

File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/staticWeb/house/js/manifest.60118c59a8f6eaedb579.js.map


Some files were not shown because too many files changed in this diff