create separated exif metadata table for files

This commit is contained in:
Milos Holba
2022-01-26 17:42:01 +01:00
parent 630cefee41
commit d16d73680f
13 changed files with 338 additions and 223 deletions

View File

@@ -25,7 +25,6 @@ class CreateFilesTable extends Migration
$table->text('filesize');
$table->text('type')->nullable();
$table->longText('metadata')->nullable();
$table->enum('author', ['user', 'member', 'visitor'])->default('user');

View File

@@ -27,8 +27,8 @@ class CreateUserSettingsTable extends Migration
$table->text('country')->nullable();
$table->text('phone_number')->nullable();
$table->decimal('timezone', 10, 1)->nullable();
$table->text('emoji_type')->default('twemoji');
$table->text('theme_mode')->default('system');
$table->text('emoji_type');
$table->text('theme_mode');
$table->charset = 'utf8mb4';
$table->collation = 'utf8mb4_unicode_ci';
});

View File

@@ -0,0 +1,54 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateExifsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('exifs', function (Blueprint $table) {
$table->uuid('id')->primary()->index();
$table->uuid('file_id')->index();
$table->timestamp('date_time_original')->nullable();
$table->string('artist')->nullable();
$table->integer('height')->nullable();
$table->integer('width')->nullable();
$table->string('x_resolution')->nullable();
$table->string('y_resolution')->nullable();
$table->integer('color_space')->nullable();
$table->string('camera')->nullable();
$table->string('model')->nullable();
$table->string('aperture_value')->nullable();
$table->string('exposure_time')->nullable();
$table->string('focal_length')->nullable();
$table->integer('iso')->nullable();
$table->string('aperture_f_number')->nullable();
$table->string('ccd_width')->nullable();
$table->string('longitude')->nullable();
$table->string('latitude')->nullable();
$table->string('longitude_ref')->nullable();
$table->string('latitude_ref')->nullable();
$table->charset = 'utf8mb4';
$table->collation = 'utf8mb4_unicode_ci';
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('exifs');
}
}

View File

@@ -2,172 +2,113 @@
"/js/main.js": "/js/main.js",
"/css/app.css": "/css/app.css",
"/css/tailwind.css": "/css/tailwind.css",
"/chunks/admin.js": "/chunks/admin.js?id=7cca3ef45f980d0e8a03",
"/chunks/admin-account.js": "/chunks/admin-account.js?id=6e28465565ea92af804f",
"/chunks/admin-account~chunks/app-appearance~chunks/app-email~chunks/app-index~chunks/app-others~chunk~9f5cf693.js": "/chunks/admin-account~chunks/app-appearance~chunks/app-email~chunks/app-index~chunks/app-others~chunk~9f5cf693.js?id=b315e8dcb5e79c1c8e7c",
"/chunks/admin-account~chunks/app-setup~chunks/billings-detail~chunks/create-new-password~chunks/datab~a2d1c36e.js": "/chunks/admin-account~chunks/app-setup~chunks/billings-detail~chunks/create-new-password~chunks/datab~a2d1c36e.js?id=bbdda6115aa358c2209e",
"/chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-email~chunks/app-index~chunks/app~f4e3acb1.js": "/chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-email~chunks/app-index~chunks/app~f4e3acb1.js?id=08ee54ab4c19d49dc342",
"/chunks/admin~chunks/app-language~chunks/files~chunks/my-shared-items~chunks/pages~chunks/plans~chunk~31d2e0e5.js": "/chunks/admin~chunks/app-language~chunks/files~chunks/my-shared-items~chunks/pages~chunks/plans~chunk~31d2e0e5.js?id=45350439fb9bcb879f5b",
"/chunks/admin~chunks/files~chunks/invitation~chunks/my-shared-items~chunks/platform~chunks/recent-upl~dfa67595.js": "/chunks/admin~chunks/files~chunks/invitation~chunks/my-shared-items~chunks/platform~chunks/recent-upl~dfa67595.js?id=0ae7b3d840e0e20fe358",
"/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/settin~673d1ac3.js": "/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/settin~673d1ac3.js?id=34845d890e9e65d2adc0",
"/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/settin~97130d1f.js": "/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/settin~97130d1f.js?id=195797158a27ef294ad5",
"/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/shared~1bec6fe4.js": "/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/shared~1bec6fe4.js?id=3d3f164e568760d8a9cf",
"/chunks/admin~chunks/platform.js": "/chunks/admin~chunks/platform.js?id=3f11fe45f7b999d1e375",
"/chunks/admin~chunks/platform~chunks/settings.js": "/chunks/admin~chunks/platform~chunks/settings.js?id=d0f80fceb2f27a39b283",
"/chunks/admin~chunks/platform~chunks/settings~chunks/shared.js": "/chunks/admin~chunks/platform~chunks/settings~chunks/shared.js?id=845ba11d36e357420492",
"/chunks/admin~chunks/platform~chunks/shared.js": "/chunks/admin~chunks/platform~chunks/shared.js?id=e40dcf843c95a51cd397",
"/chunks/app-appearance.js": "/chunks/app-appearance.js?id=1d5319a48a28f62bb131",
"/chunks/app-appearance~chunks/app-email~chunks/app-index~chunks/app-others~chunks/payments/billings~c~dd421a96.js": "/chunks/app-appearance~chunks/app-email~chunks/app-index~chunks/app-others~chunks/payments/billings~c~dd421a96.js?id=91eea8e08d675f1a84d2",
"/chunks/app-email.js": "/chunks/app-email.js?id=3b8d81b3f01fd4d10e0c",
"/chunks/app-index.js": "/chunks/app-index.js?id=fb1f81d6571b2dd12e3c",
"/chunks/app-language.js": "/chunks/app-language.js?id=605b221358837d98402f",
"/chunks/app-language~chunks/page-edit~chunks/pages~chunks/plan-create/fixed~chunks/plan-create/metere~daa2a968.js": "/chunks/app-language~chunks/page-edit~chunks/pages~chunks/plan-create/fixed~chunks/plan-create/metere~daa2a968.js?id=ef8cbb733f7e82636b51",
"/chunks/app-others.js": "/chunks/app-others.js?id=ed899e0c8ae8aa1c7741",
"/chunks/app-others~chunks/payments/settings.js": "/chunks/app-others~chunks/payments/settings.js?id=a9748a3aa53098b75df6",
"/chunks/app-settings.js": "/chunks/app-settings.js?id=62ce73b2d66590912cbc",
"/chunks/app-setup.js": "/chunks/app-setup.js?id=eccbfcc8ca52a7739539",
"/chunks/billing.js": "/chunks/billing.js?id=f35adaf4630e2cf78891",
"/chunks/billings-detail.js": "/chunks/billings-detail.js?id=8d98791de2ec92174b6e",
"/chunks/billing~chunks/dashboard~chunks/invoices~chunks/pages~chunks/payments/settings~chunks/plan-su~cdf8788b.js": "/chunks/billing~chunks/dashboard~chunks/invoices~chunks/pages~chunks/payments/settings~chunks/plan-su~cdf8788b.js?id=4714188c1549bd8829ab",
"/chunks/billing~chunks/settings-storage~chunks/user-storage~chunks/user-subscription.js": "/chunks/billing~chunks/settings-storage~chunks/user-storage~chunks/user-subscription.js?id=669bd6d15cfa4c6e75df",
"/chunks/contact-us.js": "/chunks/contact-us.js?id=b4409faf276c7a152cd4",
"/chunks/contact-us~chunks/dynamic-page~chunks/homepage.js": "/chunks/contact-us~chunks/dynamic-page~chunks/homepage.js?id=65ee559ca803555be568",
"/chunks/create-new-password.js": "/chunks/create-new-password.js?id=ff5ae86590a117661ac1",
"/chunks/dashboard.js": "/chunks/dashboard.js?id=1e46584a4f5562b7a8b5",
"/chunks/dashboard~chunks/plan-subscribers~chunks/users.js": "/chunks/dashboard~chunks/plan-subscribers~chunks/users.js?id=9bb04319263a6c0742f0",
"/chunks/database.js": "/chunks/database.js?id=38021b64e8ab2d213c19",
"/chunks/dynamic-page.js": "/chunks/dynamic-page.js?id=6c86916c6c6f679fa86b",
"/chunks/email-verified.js": "/chunks/email-verified.js?id=fcba9acf60a855b730d5",
"/chunks/environment-setup.js": "/chunks/environment-setup.js?id=cb6691f996a6ea765b4d",
"/chunks/files.js": "/chunks/files.js?id=692eff6c814b00ac7d97",
"/chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/shared~chunks/share~c7960950.js": "/chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/shared~chunks/share~c7960950.js?id=f41b30739fcbba3ae537",
"/chunks/files~chunks/my-shared-items~chunks/recent-uploads~chunks/shared-with-me~chunks/shared/files~~34b5eb22.js": "/chunks/files~chunks/my-shared-items~chunks/recent-uploads~chunks/shared-with-me~chunks/shared/files~~34b5eb22.js?id=94ead73a2f7abcbc3214",
"/chunks/files~chunks/my-shared-items~chunks/recent-uploads~chunks/shared-with-me~chunks/shared/files~~bf3ddedc.js": "/chunks/files~chunks/my-shared-items~chunks/recent-uploads~chunks/shared-with-me~chunks/shared/files~~bf3ddedc.js?id=6489d55d6d88986008c9",
"/chunks/files~chunks/platform~chunks/shared~chunks/shared-with-me~chunks/shared/files~chunks/team-folders.js": "/chunks/files~chunks/platform~chunks/shared~chunks/shared-with-me~chunks/shared/files~chunks/team-folders.js?id=6e49d14fe5f9065503fb",
"/chunks/forgotten-password.js": "/chunks/forgotten-password.js?id=7fe909d93242299552ec",
"/chunks/homepage.js": "/chunks/homepage.js?id=6a14173a7751010222ed",
"/chunks/installation-disclaimer.js": "/chunks/installation-disclaimer.js?id=103caafd51390f5c7896",
"/chunks/invitation.js": "/chunks/invitation.js?id=ce0aa06dd9c62f505b9b",
"/chunks/invoices.js": "/chunks/invoices.js?id=2e6f38d77e5dfd6cd38b",
"/chunks/my-shared-items.js": "/chunks/my-shared-items.js?id=ef0a2dbe808eaee42c1f",
"/chunks/not-found.js": "/chunks/not-found.js?id=bd6cc309172531900b13",
"/chunks/page-edit.js": "/chunks/page-edit.js?id=1ce1c4f40fbb672c6c3e",
"/chunks/pages.js": "/chunks/pages.js?id=188434ad0acb6921abdd",
"/chunks/payments.js": "/chunks/payments.js?id=56a633689fc98ab71b92",
"/chunks/payments/billings.js": "/chunks/payments/billings.js?id=21c286ff2723603036ea",
"/chunks/payments/settings.js": "/chunks/payments/settings.js?id=2ae059b694da0f255e47",
"/chunks/plan.js": "/chunks/plan.js?id=fc9e9e0b9bac63514475",
"/chunks/plan-create/fixed.js": "/chunks/plan-create/fixed.js?id=75b6e639a1fb66d34f10",
"/chunks/plan-create/metered.js": "/chunks/plan-create/metered.js?id=22a5c4fb60a77b72cd4e",
"/chunks/plan-delete.js": "/chunks/plan-delete.js?id=8289ae01c7e56404239b",
"/chunks/plan-settings.js": "/chunks/plan-settings.js?id=7f623c8a4002f17eecef",
"/chunks/plan-subscribers.js": "/chunks/plan-subscribers.js?id=24e47be06cbf2fedbf05",
"/chunks/plans.js": "/chunks/plans.js?id=20dc794bb02887a46f04",
"/chunks/platform.js": "/chunks/platform.js?id=c571ce8c6e3dcdc87c31",
"/chunks/platform~chunks/shared.js": "/chunks/platform~chunks/shared.js?id=be5c13376dec07e289ff",
"/chunks/platform~chunks/shared~chunks/shared-with-me~chunks/team-folders.js": "/chunks/platform~chunks/shared~chunks/shared-with-me~chunks/team-folders.js?id=66e964be4ab127b1f723",
"/chunks/profile.js": "/chunks/profile.js?id=0ecdd636c92f2f1172d2",
"/chunks/purchase-code.js": "/chunks/purchase-code.js?id=d9af0efad2af2679954b",
"/chunks/recent-uploads.js": "/chunks/recent-uploads.js?id=8577d4c771602671b38a",
"/chunks/settings.js": "/chunks/settings.js?id=e24df949c306186e108e",
"/chunks/settings-password.js": "/chunks/settings-password.js?id=1aeaaad4a4c6b719d31e",
"/chunks/settings-storage.js": "/chunks/settings-storage.js?id=d1504f06d93b88572249",
"/chunks/settings~chunks/settings-password.js": "/chunks/settings~chunks/settings-password.js?id=aafc9cd6aa47b01bc25a",
"/chunks/setup-wizard.js": "/chunks/setup-wizard.js?id=651d5accf401908724c5",
"/chunks/shared.js": "/chunks/shared.js?id=a140c15b483547b020e9",
"/chunks/shared-with-me.js": "/chunks/shared-with-me.js?id=e38098eca4e38683a83b",
"/chunks/shared-with-me~chunks/team-folders.js": "/chunks/shared-with-me~chunks/team-folders.js?id=abf65131397ea2b12355",
"/chunks/shared/authenticate.js": "/chunks/shared/authenticate.js?id=09f54f209289c79ccc33",
"/chunks/shared/files.js": "/chunks/shared/files.js?id=84377b3190940b5196f6",
"/chunks/shared/single-file.js": "/chunks/shared/single-file.js?id=1abb5dd58d0ed626cd6e",
"/chunks/sign-in.js": "/chunks/sign-in.js?id=e716349738364703249e",
"/chunks/sign-up.js": "/chunks/sign-up.js?id=fad3661258b19f8fafbb",
"/chunks/status-check.js": "/chunks/status-check.js?id=6e73b0735b7d7c45f712",
"/chunks/stripe-credentials.js": "/chunks/stripe-credentials.js?id=a91cba41a099c8ecad24",
"/chunks/subscription-plans.js": "/chunks/subscription-plans.js?id=5238c711e2b9af197b22",
"/chunks/subscription-service.js": "/chunks/subscription-service.js?id=3fffee3b8bab3e23ba18",
"/chunks/subscriptions.js": "/chunks/subscriptions.js?id=35bad12ad938c334ce10",
"/chunks/team-folders.js": "/chunks/team-folders.js?id=d0b1bb2f9e63fa36dd50",
"/chunks/temporary-unavailable.js": "/chunks/temporary-unavailable.js?id=145f1b0766214eee1aad",
"/chunks/trash.js": "/chunks/trash.js?id=1f5f349fb9ec23ba2e93",
"/chunks/user.js": "/chunks/user.js?id=d47acfdc8985d8823872",
"/chunks/user-create.js": "/chunks/user-create.js?id=ec5e0749e0fc93be4664",
"/chunks/user-delete.js": "/chunks/user-delete.js?id=d748d3ec3e036c247583",
"/chunks/user-detail.js": "/chunks/user-detail.js?id=1639da11ff1a649d6dbf",
"/chunks/user-password.js": "/chunks/user-password.js?id=979fd45e82e25a8445b4",
"/chunks/user-storage.js": "/chunks/user-storage.js?id=e6ccfc8aa085e00af593",
"/chunks/user-subscription.js": "/chunks/user-subscription.js?id=ab860189f1c734dc042c",
"/chunks/users.js": "/chunks/users.js?id=cafd1ff7bc92dfe45f69",
"/chunks/admin.js": "/chunks/admin.js?id=f402d7f3da8459515bc4",
"/chunks/admin-account.js": "/chunks/admin-account.js?id=195a8983e558e1612b3a",
"/chunks/admin-account~chunks/app-appearance~chunks/app-email~chunks/app-index~chunks/app-others~chunk~9f5cf693.js": "/chunks/admin-account~chunks/app-appearance~chunks/app-email~chunks/app-index~chunks/app-others~chunk~9f5cf693.js?id=3fe1881b0b08b773acd1",
"/chunks/admin-account~chunks/app-setup~chunks/billings-detail~chunks/create-new-password~chunks/datab~a2d1c36e.js": "/chunks/admin-account~chunks/app-setup~chunks/billings-detail~chunks/create-new-password~chunks/datab~a2d1c36e.js?id=363a519bdd61deb55f48",
"/chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-email~chunks/app-index~chunks/app~f4e3acb1.js": "/chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-email~chunks/app-index~chunks/app~f4e3acb1.js?id=2e6a154eecbbb6b5bc35",
"/chunks/admin~chunks/app-language~chunks/files~chunks/my-shared-items~chunks/pages~chunks/plans~chunk~31d2e0e5.js": "/chunks/admin~chunks/app-language~chunks/files~chunks/my-shared-items~chunks/pages~chunks/plans~chunk~31d2e0e5.js?id=1fa44105c96d57f7aa7c",
"/chunks/admin~chunks/files~chunks/invitation~chunks/my-shared-items~chunks/platform~chunks/recent-upl~dfa67595.js": "/chunks/admin~chunks/files~chunks/invitation~chunks/my-shared-items~chunks/platform~chunks/recent-upl~dfa67595.js?id=303c87bfefb5f03141d8",
"/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/settin~673d1ac3.js": "/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/settin~673d1ac3.js?id=bbd5d35ea9bf47fed1c7",
"/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/settin~97130d1f.js": "/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/settin~97130d1f.js?id=e39cf325833e87e416ed",
"/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/shared~1bec6fe4.js": "/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/shared~1bec6fe4.js?id=9e375c8fcaec14b10a00",
"/chunks/admin~chunks/platform.js": "/chunks/admin~chunks/platform.js?id=3b2fed1501fc820649fc",
"/chunks/admin~chunks/platform~chunks/settings.js": "/chunks/admin~chunks/platform~chunks/settings.js?id=3bfa406354af87101728",
"/chunks/admin~chunks/platform~chunks/settings~chunks/shared.js": "/chunks/admin~chunks/platform~chunks/settings~chunks/shared.js?id=a26505370c645bd9db7c",
"/chunks/admin~chunks/platform~chunks/shared.js": "/chunks/admin~chunks/platform~chunks/shared.js?id=d5b15d31f284a79bddc9",
"/chunks/app-appearance.js": "/chunks/app-appearance.js?id=cbf768725addfa84fd27",
"/chunks/app-appearance~chunks/app-email~chunks/app-index~chunks/app-others~chunks/payments/billings~c~dd421a96.js": "/chunks/app-appearance~chunks/app-email~chunks/app-index~chunks/app-others~chunks/payments/billings~c~dd421a96.js?id=72906c610ee341a0d055",
"/chunks/app-email.js": "/chunks/app-email.js?id=5b203b214fc6c5f620ce",
"/chunks/app-index.js": "/chunks/app-index.js?id=8b5d623094ae55c2ae02",
"/chunks/app-language.js": "/chunks/app-language.js?id=bb0dc312d7f38ec6b943",
"/chunks/app-language~chunks/page-edit~chunks/pages~chunks/plan-create/fixed~chunks/plan-create/metere~daa2a968.js": "/chunks/app-language~chunks/page-edit~chunks/pages~chunks/plan-create/fixed~chunks/plan-create/metere~daa2a968.js?id=4ca66687104a5aa85c03",
"/chunks/app-others.js": "/chunks/app-others.js?id=db3bd4e0601a06fb2ef8",
"/chunks/app-others~chunks/payments/settings.js": "/chunks/app-others~chunks/payments/settings.js?id=123943b20249e0c4346c",
"/chunks/app-settings.js": "/chunks/app-settings.js?id=5a9d4a1966fb819f0948",
"/chunks/app-setup.js": "/chunks/app-setup.js?id=4f0526b564e9cc875d70",
"/chunks/billing.js": "/chunks/billing.js?id=5e33b7fd9585a844b324",
"/chunks/billings-detail.js": "/chunks/billings-detail.js?id=399166fa105ac176eb83",
"/chunks/billing~chunks/dashboard~chunks/invoices~chunks/pages~chunks/payments/settings~chunks/plan-su~cdf8788b.js": "/chunks/billing~chunks/dashboard~chunks/invoices~chunks/pages~chunks/payments/settings~chunks/plan-su~cdf8788b.js?id=b66a4e0a0d4ad67ea563",
"/chunks/billing~chunks/settings-storage~chunks/user-storage~chunks/user-subscription.js": "/chunks/billing~chunks/settings-storage~chunks/user-storage~chunks/user-subscription.js?id=2d94000fb9899898ed37",
"/chunks/contact-us.js": "/chunks/contact-us.js?id=2ce4da753c4ecfa31bf2",
"/chunks/contact-us~chunks/dynamic-page~chunks/homepage.js": "/chunks/contact-us~chunks/dynamic-page~chunks/homepage.js?id=4747de0a6153cd8fd6d5",
"/chunks/create-new-password.js": "/chunks/create-new-password.js?id=ad9d961a4b9013b5da8a",
"/chunks/dashboard.js": "/chunks/dashboard.js?id=0c8a4ec6d09109d047ba",
"/chunks/dashboard~chunks/plan-subscribers~chunks/users.js": "/chunks/dashboard~chunks/plan-subscribers~chunks/users.js?id=411ffe0c8df49f6ffe02",
"/chunks/database.js": "/chunks/database.js?id=c860335b4bf309560f19",
"/chunks/dynamic-page.js": "/chunks/dynamic-page.js?id=6ce67f774b65b500721d",
"/chunks/email-verified.js": "/chunks/email-verified.js?id=2150cb12e5814889c403",
"/chunks/environment-setup.js": "/chunks/environment-setup.js?id=46771d574714e60adeee",
"/chunks/files.js": "/chunks/files.js?id=a769f65d00b437dca2b0",
"/chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/shared~chunks/share~c7960950.js": "/chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/shared~chunks/share~c7960950.js?id=0b4ffd66aa6a0e651137",
"/chunks/files~chunks/my-shared-items~chunks/recent-uploads~chunks/shared-with-me~chunks/shared/files~~34b5eb22.js": "/chunks/files~chunks/my-shared-items~chunks/recent-uploads~chunks/shared-with-me~chunks/shared/files~~34b5eb22.js?id=82400440f0711d1b1bcd",
"/chunks/files~chunks/my-shared-items~chunks/recent-uploads~chunks/shared-with-me~chunks/shared/files~~bf3ddedc.js": "/chunks/files~chunks/my-shared-items~chunks/recent-uploads~chunks/shared-with-me~chunks/shared/files~~bf3ddedc.js?id=1cf9edf5755b54dc18e1",
"/chunks/files~chunks/platform~chunks/shared~chunks/shared-with-me~chunks/shared/files~chunks/team-folders.js": "/chunks/files~chunks/platform~chunks/shared~chunks/shared-with-me~chunks/shared/files~chunks/team-folders.js?id=40eae420d1f8b5b1e885",
"/chunks/forgotten-password.js": "/chunks/forgotten-password.js?id=4df333fc9f392368d294",
"/chunks/homepage.js": "/chunks/homepage.js?id=257fc9777b770f40b1da",
"/chunks/installation-disclaimer.js": "/chunks/installation-disclaimer.js?id=4cf7ee6239d3f8c73ccd",
"/chunks/invitation.js": "/chunks/invitation.js?id=a6f3e9d30da1d4d78a31",
"/chunks/invoices.js": "/chunks/invoices.js?id=6bee15f9305e2031f240",
"/chunks/my-shared-items.js": "/chunks/my-shared-items.js?id=163e26fcb27b6b53f290",
"/chunks/not-found.js": "/chunks/not-found.js?id=7e3edd7e259e917223b6",
"/chunks/page-edit.js": "/chunks/page-edit.js?id=0c0558b2797262896c90",
"/chunks/pages.js": "/chunks/pages.js?id=84bf4feeb4d08bab9d86",
"/chunks/payments.js": "/chunks/payments.js?id=e98b388a9437b6c02534",
"/chunks/payments/billings.js": "/chunks/payments/billings.js?id=17ae17cca63104e07f13",
"/chunks/payments/settings.js": "/chunks/payments/settings.js?id=a5713497ccd6bbc35c7f",
"/chunks/plan.js": "/chunks/plan.js?id=6da7363ea270938af803",
"/chunks/plan-create/fixed.js": "/chunks/plan-create/fixed.js?id=41af62191493431d01b4",
"/chunks/plan-create/metered.js": "/chunks/plan-create/metered.js?id=2bae0c8763d5afea4b4e",
"/chunks/plan-delete.js": "/chunks/plan-delete.js?id=3c1754cbb055b9721304",
"/chunks/plan-settings.js": "/chunks/plan-settings.js?id=0958a54803dee3b05ec2",
"/chunks/plan-subscribers.js": "/chunks/plan-subscribers.js?id=ac7360e89c09b3357288",
"/chunks/plans.js": "/chunks/plans.js?id=014f3cf4501b851e116a",
"/chunks/platform.js": "/chunks/platform.js?id=1bf2c945fc6c35f60caa",
"/chunks/platform~chunks/shared.js": "/chunks/platform~chunks/shared.js?id=c591d64e7678aa789476",
"/chunks/platform~chunks/shared~chunks/shared-with-me~chunks/team-folders.js": "/chunks/platform~chunks/shared~chunks/shared-with-me~chunks/team-folders.js?id=a1049626cd9960bb3053",
"/chunks/profile.js": "/chunks/profile.js?id=a4a4367ee503e9f27b8a",
"/chunks/purchase-code.js": "/chunks/purchase-code.js?id=bc09d0416b6888d92b50",
"/chunks/recent-uploads.js": "/chunks/recent-uploads.js?id=abc7d016ba8b676327b2",
"/chunks/settings.js": "/chunks/settings.js?id=49e9cb2d2d5d7272d20e",
"/chunks/settings-password.js": "/chunks/settings-password.js?id=dd17676d321b00d101c6",
"/chunks/settings-storage.js": "/chunks/settings-storage.js?id=bc7de99dc8e0b0c1157e",
"/chunks/settings~chunks/settings-password.js": "/chunks/settings~chunks/settings-password.js?id=2bad11bb511160fbb1dd",
"/chunks/setup-wizard.js": "/chunks/setup-wizard.js?id=8e52cc8d41e535d2f467",
"/chunks/shared.js": "/chunks/shared.js?id=9c5edf6b014a57a4241c",
"/chunks/shared-with-me.js": "/chunks/shared-with-me.js?id=3d709eca42cd73a0474a",
"/chunks/shared-with-me~chunks/team-folders.js": "/chunks/shared-with-me~chunks/team-folders.js?id=8256c585f8adc7f51773",
"/chunks/shared/authenticate.js": "/chunks/shared/authenticate.js?id=4c4455872ee87b07b3b1",
"/chunks/shared/files.js": "/chunks/shared/files.js?id=5f5aa3c043a2033c92ea",
"/chunks/shared/single-file.js": "/chunks/shared/single-file.js?id=21b781acdbe2875fbd88",
"/chunks/sign-in.js": "/chunks/sign-in.js?id=8b0ab0994b3328ea00a4",
"/chunks/sign-up.js": "/chunks/sign-up.js?id=bd3671893a4b1a81e6f9",
"/chunks/status-check.js": "/chunks/status-check.js?id=857b2daf6c5e04d7fd01",
"/chunks/stripe-credentials.js": "/chunks/stripe-credentials.js?id=bd1461afd27672ef6906",
"/chunks/subscription-plans.js": "/chunks/subscription-plans.js?id=d414d8b45792f592d33e",
"/chunks/subscription-service.js": "/chunks/subscription-service.js?id=debaafa74d8526ef978b",
"/chunks/subscriptions.js": "/chunks/subscriptions.js?id=7a42e7023e524fd5338d",
"/chunks/team-folders.js": "/chunks/team-folders.js?id=66c18c9fd3a988bf0e49",
"/chunks/temporary-unavailable.js": "/chunks/temporary-unavailable.js?id=e6c60b0bbe93607b0b58",
"/chunks/trash.js": "/chunks/trash.js?id=9b7a6c372c50e2633536",
"/chunks/user.js": "/chunks/user.js?id=0d836c4dd2a4c9cc2c6c",
"/chunks/user-create.js": "/chunks/user-create.js?id=4c9957986afd7114e3c8",
"/chunks/user-delete.js": "/chunks/user-delete.js?id=dc77f53a78df19330b7c",
"/chunks/user-detail.js": "/chunks/user-detail.js?id=a1f3c8d869da0398fc57",
"/chunks/user-password.js": "/chunks/user-password.js?id=1de529e509a52123efbd",
"/chunks/user-storage.js": "/chunks/user-storage.js?id=db3c23f77b5ebef67ef4",
"/chunks/user-subscription.js": "/chunks/user-subscription.js?id=c309a6438193a39c240b",
"/chunks/users.js": "/chunks/users.js?id=5eb57fc2a86499c824d8",
"/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-email~chunks/app-index~ch~9be62a3c.js": "/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-email~chunks/app-index~ch~9be62a3c.js?id=f6dd33e4294d33d5e335",
"/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-email~chunks/app-index~ch~d86004d6.js": "/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-email~chunks/app-index~ch~d86004d6.js?id=b40f5f673ec2ab7de20b",
"/vendors~chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunk~40ccbae3.js": "/vendors~chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunk~40ccbae3.js?id=ab29ab0a0c2d5a40b39d",
"/vendors~chunks/admin~chunks/platform~chunks/settings~chunks/shared.js": "/vendors~chunks/admin~chunks/platform~chunks/settings~chunks/shared.js?id=a0fa80db175709ba340a",
"/vendors~chunks/settings.js": "/vendors~chunks/settings.js?id=14f4e0c3881d22ad60af",
"/chunks/billing.c9ad68778c4b99cb8b84.hot-update.js": "/chunks/billing.c9ad68778c4b99cb8b84.hot-update.js",
"/chunks/dashboard~chunks/plan-subscribers~chunks/users.c9ad68778c4b99cb8b84.hot-update.js": "/chunks/dashboard~chunks/plan-subscribers~chunks/users.c9ad68778c4b99cb8b84.hot-update.js",
"/chunks/invoices.c9ad68778c4b99cb8b84.hot-update.js": "/chunks/invoices.c9ad68778c4b99cb8b84.hot-update.js",
"/chunks/pages.c9ad68778c4b99cb8b84.hot-update.js": "/chunks/pages.c9ad68778c4b99cb8b84.hot-update.js",
"/chunks/plans.c9ad68778c4b99cb8b84.hot-update.js": "/chunks/plans.c9ad68778c4b99cb8b84.hot-update.js",
"/chunks/settings.c9ad68778c4b99cb8b84.hot-update.js": "/chunks/settings.c9ad68778c4b99cb8b84.hot-update.js",
"/chunks/subscriptions.c9ad68778c4b99cb8b84.hot-update.js": "/chunks/subscriptions.c9ad68778c4b99cb8b84.hot-update.js",
"/chunks/user.c9ad68778c4b99cb8b84.hot-update.js": "/chunks/user.c9ad68778c4b99cb8b84.hot-update.js",
"/chunks/user-subscription.c9ad68778c4b99cb8b84.hot-update.js": "/chunks/user-subscription.c9ad68778c4b99cb8b84.hot-update.js",
"/chunks/platform~chunks/shared.578d256faad046db2506.hot-update.js": "/chunks/platform~chunks/shared.578d256faad046db2506.hot-update.js",
"/chunks/files~chunks/platform~chunks/shared~chunks/shared-with-me~chunks/shared/files~chunks/team-folders.c8f44a037fa4a287995d.hot-update.js": "/chunks/files~chunks/platform~chunks/shared~chunks/shared-with-me~chunks/shared/files~chunks/team-folders.c8f44a037fa4a287995d.hot-update.js",
"/js/main.d3f10d5bd164a2ac29f3.hot-update.js": "/js/main.d3f10d5bd164a2ac29f3.hot-update.js",
"/js/main.92eb5a6c3e493a12a30e.hot-update.js": "/js/main.92eb5a6c3e493a12a30e.hot-update.js",
"/js/main.a7ead845b6477829fd4f.hot-update.js": "/js/main.a7ead845b6477829fd4f.hot-update.js",
"/js/main.efb804bdb14333e22d28.hot-update.js": "/js/main.efb804bdb14333e22d28.hot-update.js",
"/js/main.77770ba868c4b3608fe1.hot-update.js": "/js/main.77770ba868c4b3608fe1.hot-update.js",
"/js/main.6e6f1da160336d3eb6f6.hot-update.js": "/js/main.6e6f1da160336d3eb6f6.hot-update.js",
"/js/main.70bbce9abf6056ef2a4e.hot-update.js": "/js/main.70bbce9abf6056ef2a4e.hot-update.js",
"/js/main.8457a80ccd430aae41d3.hot-update.js": "/js/main.8457a80ccd430aae41d3.hot-update.js",
"/js/main.d25de52c520148531ac2.hot-update.js": "/js/main.d25de52c520148531ac2.hot-update.js",
"/js/main.6d42fe0ac7da26120b79.hot-update.js": "/js/main.6d42fe0ac7da26120b79.hot-update.js",
"/js/main.9454760be21de12d83d1.hot-update.js": "/js/main.9454760be21de12d83d1.hot-update.js",
"/js/main.0044f318c1b8ce31b297.hot-update.js": "/js/main.0044f318c1b8ce31b297.hot-update.js",
"/js/main.8991975ceba117ae57f1.hot-update.js": "/js/main.8991975ceba117ae57f1.hot-update.js",
"/js/main.64274f4f0fe48d3147f2.hot-update.js": "/js/main.64274f4f0fe48d3147f2.hot-update.js",
"/js/main.3374a65da71319e6a575.hot-update.js": "/js/main.3374a65da71319e6a575.hot-update.js",
"/js/main.844e62da81c4f8d6861d.hot-update.js": "/js/main.844e62da81c4f8d6861d.hot-update.js",
"/js/main.8b4c6ec9b91a0a6e6dda.hot-update.js": "/js/main.8b4c6ec9b91a0a6e6dda.hot-update.js",
"/chunks/team-folders.9358cbe2ed288ae71d16.hot-update.js": "/chunks/team-folders.9358cbe2ed288ae71d16.hot-update.js",
"/chunks/files.c5f3cf6c3c8fb6224f15.hot-update.js": "/chunks/files.c5f3cf6c3c8fb6224f15.hot-update.js",
"/chunks/shared-with-me.c5f3cf6c3c8fb6224f15.hot-update.js": "/chunks/shared-with-me.c5f3cf6c3c8fb6224f15.hot-update.js",
"/chunks/shared/files.c5f3cf6c3c8fb6224f15.hot-update.js": "/chunks/shared/files.c5f3cf6c3c8fb6224f15.hot-update.js",
"/chunks/files.757ae164d013511f98ca.hot-update.js": "/chunks/files.757ae164d013511f98ca.hot-update.js",
"/chunks/team-folders.3ca4b57973557c860e87.hot-update.js": "/chunks/team-folders.3ca4b57973557c860e87.hot-update.js",
"/chunks/admin~chunks/platform.1ceb1013a7cdfe69714a.hot-update.js": "/chunks/admin~chunks/platform.1ceb1013a7cdfe69714a.hot-update.js",
"/chunks/files.1ceb1013a7cdfe69714a.hot-update.js": "/chunks/files.1ceb1013a7cdfe69714a.hot-update.js",
"/chunks/platform.1ceb1013a7cdfe69714a.hot-update.js": "/chunks/platform.1ceb1013a7cdfe69714a.hot-update.js",
"/chunks/shared-with-me.1ceb1013a7cdfe69714a.hot-update.js": "/chunks/shared-with-me.1ceb1013a7cdfe69714a.hot-update.js",
"/chunks/shared/files.1ceb1013a7cdfe69714a.hot-update.js": "/chunks/shared/files.1ceb1013a7cdfe69714a.hot-update.js",
"/chunks/team-folders.1ceb1013a7cdfe69714a.hot-update.js": "/chunks/team-folders.1ceb1013a7cdfe69714a.hot-update.js",
"/js/main.bb3b5823197e4d826a04.hot-update.js": "/js/main.bb3b5823197e4d826a04.hot-update.js",
"/js/main.7ec463185df154c6765a.hot-update.js": "/js/main.7ec463185df154c6765a.hot-update.js",
"/js/main.d6cc91ca3ca36210c750.hot-update.js": "/js/main.d6cc91ca3ca36210c750.hot-update.js",
"/js/main.73c12b2472efda107a1a.hot-update.js": "/js/main.73c12b2472efda107a1a.hot-update.js",
"/js/main.bafc73e54b9d47e972ef.hot-update.js": "/js/main.bafc73e54b9d47e972ef.hot-update.js",
"/js/main.3ff40bc89566efb16fbe.hot-update.js": "/js/main.3ff40bc89566efb16fbe.hot-update.js",
"/js/main.5d31cceb42ba6cef914d.hot-update.js": "/js/main.5d31cceb42ba6cef914d.hot-update.js",
"/js/main.ad54630ae5ca4f766bd2.hot-update.js": "/js/main.ad54630ae5ca4f766bd2.hot-update.js",
"/js/main.6f86ea97ffc75935dbe5.hot-update.js": "/js/main.6f86ea97ffc75935dbe5.hot-update.js",
"/js/main.441bd7768be25261d03a.hot-update.js": "/js/main.441bd7768be25261d03a.hot-update.js",
"/js/main.cbddf57fc0c1fd9416b3.hot-update.js": "/js/main.cbddf57fc0c1fd9416b3.hot-update.js",
"/js/main.ac9786974c1d778c9da2.hot-update.js": "/js/main.ac9786974c1d778c9da2.hot-update.js",
"/js/main.09631dab8941a3f90ad3.hot-update.js": "/js/main.09631dab8941a3f90ad3.hot-update.js",
"/js/main.16991895d34210d26516.hot-update.js": "/js/main.16991895d34210d26516.hot-update.js",
"/js/main.57be6e0b39f0688d6ab6.hot-update.js": "/js/main.57be6e0b39f0688d6ab6.hot-update.js",
"/js/main.07e8496a8807f79c9935.hot-update.js": "/js/main.07e8496a8807f79c9935.hot-update.js",
"/js/main.2d74a3c10669ea9a5d67.hot-update.js": "/js/main.2d74a3c10669ea9a5d67.hot-update.js",
"/js/main.24516007923af0acc93f.hot-update.js": "/js/main.24516007923af0acc93f.hot-update.js",
"/js/main.3153d7944037905243e1.hot-update.js": "/js/main.3153d7944037905243e1.hot-update.js",
"/js/main.dcd4c14b96fced7d43dc.hot-update.js": "/js/main.dcd4c14b96fced7d43dc.hot-update.js",
"/js/main.08cc4828988b3049149a.hot-update.js": "/js/main.08cc4828988b3049149a.hot-update.js",
"/js/main.8ddf469456398b3b09a9.hot-update.js": "/js/main.8ddf469456398b3b09a9.hot-update.js",
"/js/main.7149d3c7f9dc2295dde2.hot-update.js": "/js/main.7149d3c7f9dc2295dde2.hot-update.js",
"/js/main.7da8f08b5985f2cb1e52.hot-update.js": "/js/main.7da8f08b5985f2cb1e52.hot-update.js",
"/js/main.a7c264d42ac3970793b6.hot-update.js": "/js/main.a7c264d42ac3970793b6.hot-update.js",
"/js/main.e0400bbdadc0d63c2f01.hot-update.js": "/js/main.e0400bbdadc0d63c2f01.hot-update.js",
"/chunks/files.4ef10c89ddef7d89aae8.hot-update.js": "/chunks/files.4ef10c89ddef7d89aae8.hot-update.js"
"/chunks/platform~chunks/shared.1767e6626e2e417bf7c6.hot-update.js": "/chunks/platform~chunks/shared.1767e6626e2e417bf7c6.hot-update.js",
"/chunks/platform~chunks/shared.2c0bbe6b6d648c07f5f5.hot-update.js": "/chunks/platform~chunks/shared.2c0bbe6b6d648c07f5f5.hot-update.js",
"/chunks/platform~chunks/shared.1dee777dc366da93e4d5.hot-update.js": "/chunks/platform~chunks/shared.1dee777dc366da93e4d5.hot-update.js",
"/chunks/platform~chunks/shared.5589da50214e32f01b37.hot-update.js": "/chunks/platform~chunks/shared.5589da50214e32f01b37.hot-update.js",
"/chunks/platform~chunks/shared.e57d10a437e00206ce14.hot-update.js": "/chunks/platform~chunks/shared.e57d10a437e00206ce14.hot-update.js",
"/chunks/platform~chunks/shared.00ef145b7df84d1fae81.hot-update.js": "/chunks/platform~chunks/shared.00ef145b7df84d1fae81.hot-update.js",
"/chunks/platform~chunks/shared.9f9a4a410abd1d6b81e1.hot-update.js": "/chunks/platform~chunks/shared.9f9a4a410abd1d6b81e1.hot-update.js",
"/chunks/platform~chunks/shared.d83124a9f6877c82e9bb.hot-update.js": "/chunks/platform~chunks/shared.d83124a9f6877c82e9bb.hot-update.js"
}

View File

@@ -1,109 +1,95 @@
<template>
<div>
<ul class="meta-data-list">
<li v-if="clipboard.metadata.DateTimeOriginal">
<li v-if="clipboard.date_time_original">
<span>{{ $t('file_detail_meta.time_data') }}</span>
<b>{{ clipboard.metadata.DateTimeOriginal }}</b>
<b>{{ clipboard.date_time_original }}</b>
</li>
<li v-if="clipboard.metadata.Artist">
<li v-if="clipboard.artist">
<span>{{ $t('file_detail_meta.author') }}</span>
<b>{{ clipboard.metadata.Artist }}</b>
<b>{{ clipboard.artist }}</b>
</li>
<li v-if="clipboard.metadata.ExifImageWidth && clipboard.metadata.ExifImageLength">
<li v-if="clipboard.width && clipboard.height">
<span>{{ $t('file_detail_meta.dimension') }}</span>
<b>{{ clipboard.metadata.ExifImageWidth }}x{{ clipboard.metadata.ExifImageLength }}</b>
<b>{{ clipboard.width }}x{{ clipboard.height }}</b>
</li>
<li v-if="clipboard.metadata.XResolution && clipboard.metadata.YResolution">
<li v-if="clipboard.x_resolution && clipboard.y_resolution">
<span>{{ $t('file_detail_meta.resolution') }}</span>
<b>{{ clipboard.metadata.XResolution }}x{{ clipboard.metadata.YResolution }}</b>
<b>{{ clipboard.x_resolution }}x{{ clipboard.y_resolution }}</b>
</li>
<li v-if="clipboard.metadata.ColorSpace">
<li v-if="clipboard.color_space">
<span> {{ $t('file_detail_meta.color_space') }}</span>
<b>{{ clipboard.metadata.ColorSpace }}</b>
<b>{{ clipboard.color_space }}</b>
</li>
<!--TODO: Colour profile:sRGB IEC61966-2.1-->
<li v-if="clipboard.metadata.Make">
<li v-if="clipboard.make">
<span>{{ $t('file_detail_meta.make') }}</span>
<b>{{ clipboard.metadata.Make }}</b>
<b>{{ clipboard.make }}</b>
</li>
<li v-if="clipboard.metadata.Model">
<li v-if="clipboard.model">
<span>{{ $t('file_detail_meta.model') }}</span>
<b>{{ clipboard.metadata.Model }}</b>
<b>{{ clipboard.model }}</b>
</li>
<li v-if="clipboard.metadata.ApertureValue">
<li v-if="clipboard.aperture_value">
<span>{{ $t('file_detail_meta.aperture_value') }}</span>
<b v-html="parseInt(clipboard.metadata.ApertureValue) / 100"></b>
<b> {{ clipboard.aperture_value }} </b>
</li>
<li v-if="clipboard.metadata.ExposureTime">
<li v-if="clipboard.exposure_time">
<span>{{ $t('file_detail_meta.exposure') }}</span>
<b>{{ clipboard.metadata.ExposureTime }}</b>
<b>{{ clipboard.exposure_time }}</b>
</li>
<li v-if="clipboard.metadata.FocalLength">
<li v-if="clipboard.focal_length">
<span>{{ $t('file_detail_meta.focal') }}</span>
<b>{{ clipboard.metadata.FocalLength }}</b>
<b>{{ clipboard.focal_length }}</b>
</li>
<li v-if="clipboard.metadata.ISOSpeedRatings">
<li v-if="clipboard.iso">
<span>{{ $t('file_detail_meta.iso') }}</span>
<b>{{ clipboard.metadata.ISOSpeedRatings }}</b>
<b>{{ clipboard.iso }}</b>
</li>
<li v-if="clipboard.metadata.COMPUTED.ApertureFNumber">
<li v-if="clipboard.aperture_f_number">
<span>{{ $t('file_detail_meta.aperature') }}</span>
<b>{{ clipboard.metadata.COMPUTED.ApertureFNumber }}</b>
<b>{{ clipboard.aperture_f_number }}</b>
</li>
<li v-if="clipboard.metadata.COMPUTED.CCDWidth">
<li v-if="clipboard.ccd_width">
<span>{{ $t('file_detail_meta.camera_lens') }}</span>
<b>{{ clipboard.metadata.COMPUTED.CCDWidth }}</b>
<b>{{ clipboard.ccd_width }}</b>
</li>
<li v-if="clipboard.metadata.GPSLongitude">
<li v-if="clipboard.longitude">
<span>{{ $t('file_detail_meta.longitude') }}</span>
<b>{{ formatGps(clipboard.metadata.GPSLongitude, clipboard.metadata.GPSLongitudeRef) }}</b>
<b>{{ clipboard.longitude }}</b>
</li>
<li v-if="clipboard.metadata.GPSLatitude">
<li v-if="clipboard.latitude">
<span>{{ $t('file_detail_meta.latitude') }}</span>
<b>{{ formatGps(clipboard.metadata.GPSLatitude, clipboard.metadata.GPSLatitudeRef) }}</b>
<b>{{ clipboard.latitude }}</b>
</li>
</ul>
</div>
</template>
<script>
import {mapGetters} from 'vuex'
import {split} from 'lodash'
export default {
name: 'ImageMetaData',
computed: {
clipboard() {
return this.$store.getters.clipboard[0].data.relationships
return this.$store.getters.clipboard[0].data.relationships.metadata
},
},
methods: {
formatGps(location, ref) {
let data = []
location.forEach(location => {
data.push(split(location, '/', 2)[0])
})
return `${data[0]}° ${data[1]}' ${data[2].substr(0, 4) / 100}" ${ref} `
}
},
}
</script>

View File

@@ -151,7 +151,7 @@
return this.clipboard[0]
},
canShowMetaData() {
return this.clipboard[0].data.attributes.metadata && this.clipboard[0].data.attributes.metadata.ExifImageWidth
return this.clipboard[0].data.relationships.metadata
},
isLocked() {
return this.clipboard[0].data.relationships.shared.protected

View File

@@ -108,6 +108,8 @@ class UserSetting extends Model
static::creating(function ($user) {
$user->id = Str::uuid();
$user->color = config('vuefilemanager.colors')[rand(0, 5)];
$user->emoji_type = 'twemoji';
$user->theme_mode = 'system';
});
}
}

View File

@@ -0,0 +1,41 @@
<?php
namespace Domain\Files\Actions;
class StoreFileExifMetadataAction
{
public function __invoke($item, $file)
{
// Get exif metadata
$exif_data = get_image_meta_data($file);
if($exif_data) {
// Conver array to collection
$data = json_decode(json_encode($exif_data)) ;
$item->exif()->create([
'date_time_original' => $data->DateTimeOriginal ?? null,
'artist' => $data->OwnerName ?? null,
'width' => $data->COMPUTED->Width ?? null,
'height' => $data->COMPUTED->Height ?? null,
'x_resolution' => $data->XResolution ?? null,
'y_resolution' => $data->YResolution ?? null,
'color_space' => $data->ColorSpace ?? null,
'camera' => $data->Make ?? null,
'model' => $data->Model ?? null,
'aperture_value' => $data->ApertureValue ?? null,
'exposure_time' => $data->ExposureTime ?? null,
'focal_length' => $data->FocalLength ?? null,
'iso' => $data->ISOSpeedRatings ?? null,
'aperture_f_number' => $data->COMPUTED->ApertureFNumber ?? null,
'ccd_width' => $data->COMPUTED->CCDWidth ?? null,
'longitude' => $data->GPSLongitude ?? null,
'latitude' => $data->GPSLatitude ?? null,
'longitude_ref' => $data->GPSLongitudeRef ?? null,
'latitude_ref' => $data->GPSLatitudeRef ?? null
]);
}
}
}

View File

@@ -11,6 +11,7 @@ use Domain\Files\Models\File as UserFile;
use Domain\Traffic\Actions\RecordUploadAction;
use App\Users\Exceptions\InvalidUserActionException;
use Illuminate\Contracts\Filesystem\FileNotFoundException;
use Domain\Files\Actions\StoreFileExifMetadataAction;
class UploadFileAction
{
@@ -19,6 +20,7 @@ class UploadFileAction
public ProcessImageThumbnailAction $createImageThumbnail,
public GetFileParentId $getFileParentId,
public MoveFileToExternalStorageAction $moveFileToExternalStorage,
public StoreFileExifMetadataAction $storeExifMetadata,
) {
}
@@ -57,8 +59,6 @@ class UploadFileAction
// If last then process file
if ($request->boolean('is_last')) {
$metadata = get_image_meta_data($file);
$disk_local = Storage::disk('local');
// Get user data
@@ -90,18 +90,23 @@ class UploadFileAction
// Store user upload size
($this->recordUpload)($fileSize, $user->id);
// Return new file
return UserFile::create([
// Create new file
$item = UserFile::create([
'mimetype' => get_file_type_from_mimetype($file_mimetype),
'type' => get_file_type($file_mimetype),
'parent_id' => ($this->getFileParentId)($request, $user->id),
'metadata' => $metadata,
'name' => $request->input('filename'),
'basename' => $fileName,
'author' => $shared ? 'visitor' : 'user',
'filesize' => $fileSize,
'user_id' => $user->id,
]);
// Store exif metadata for files
($this->storeExifMetadata)($item, $file);
// Return new file
return $item;
}
}
}

View File

@@ -0,0 +1,44 @@
<?php
namespace Domain\Files\Models;
use Illuminate\Support\Str;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Relations\HasOne;
class Exif extends Model
{
use HasFactory;
protected $guarded = ['id'];
public $timestamps = false;
public $incrementing = false;
protected $keyType = 'string';
protected $casts = [
'longitude' => 'array',
'latitude' => 'array',
];
/**
* Get parent
*/
public function file(): HasOne
{
return $this->HasOne(File::class, 'id', 'file_id');
}
public static function boot()
{
parent::boot();
static::creating(function ($model) {
$model->id = (string) Str::uuid();
});
}
}

View File

@@ -27,7 +27,6 @@ use Illuminate\Database\Eloquent\Factories\HasFactory;
* @property string thumbnail
* @property string filesize
* @property string type
* @property array metadata
* @property string basename
* @property string name
* @property string mimetype
@@ -54,10 +53,6 @@ class File extends Model
'file_url',
];
protected $casts = [
'metadata' => 'array',
];
public array $sortable = [
'name',
'created_at',
@@ -178,6 +173,11 @@ class File extends Model
return $this->hasOne(User::class, 'id', 'user_id');
}
public function exif(): HasOne
{
return $this->hasOne(Exif::class);
}
public function toSearchableArray(): array
{
$name = mb_convert_encoding(
@@ -202,5 +202,11 @@ class File extends Model
static::creating(function ($file) {
$file->id = (string) Str::uuid();
});
static::deleting(function($file) {
if($file->isForceDeleting()) {
$file->exif()->forceDelete();
};
});
}
}

View File

@@ -31,7 +31,6 @@ class FileResource extends JsonResource
'mimetype' => $this->mimetype,
'file_url' => $this->file_url,
'thumbnail' => $this->thumbnail,
'metadata' => $this->metadata,
'parent_id' => $this->parent_id,
'updated_at' => $this->updated_at,
'created_at' => Carbon::parse($this->created_at)->diffForHumans(),
@@ -71,6 +70,27 @@ class FileResource extends JsonResource
],
],
]),
$this->mergeWhen($this->exif, fn() => [
'metadata' => [
'date_time_original' => format_date($this->exif->date_time_original) ,
'artist' => $this->exif->artist ,
'height' => $this->exif->height,
'width' => $this->exif->width,
'x_resolution' => substr($this->exif->x_resolution, 0, strrpos( $this->exif->x_resolution, '/')),
'y_resolution' => substr($this->exif->y_resolution, 0, strrpos( $this->exif->y_resolution, '/')) ,
'color_space' => $this->exif->color_space ,
'camera' => $this->exif->camera,
'model' => $this->exif->model ,
'aperture_value' => intval($this->exif->aperture_value) / 100 ,
'exposure_time' => $this->exif->exposure_time ,
'focal_length' => $this->exif->focal_length ,
'iso' => $this->exif->iso ,
'aperture_f_number' => $this->exif->aperture_f_number ,
'ccd_width' => $this->exif->ccd_width ,
'longitude' => format_gps_coordinates($this->exif->longitude, $this->exif->longitude_ref) ,
'latitude' => format_gps_coordinates($this->exif->latitude, $this->exif->latitude_ref) ,
]
])
],
],
];

View File

@@ -1068,4 +1068,21 @@ if (! function_exists('replace_occurrence')) {
});
}
}
if(! function_exists('format_gps_coordinates')) {
/**
* Format GPS coordinates
*/
function format_gps_coordinates($coordinates, $ref)
{
if($coordinates && $ref) {
return
explode('/',$coordinates[0])[0] . '°' .
explode('/', $coordinates[1])[0] . "'" .
substr(explode(',', $coordinates[2])[0], 0, 5) / 1000 . '"' .
$ref;
}
};
}
}