This commit is contained in:
Martin Folkerts 2023-10-24 17:08:04 +02:00
parent 77b30e4950
commit 4c730c0167
44 changed files with 996 additions and 969 deletions

8
.idea/.gitignore vendored Normal file
View file

@ -0,0 +1,8 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

127
.idea/blade.xml Normal file
View file

@ -0,0 +1,127 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="BladeInjectionConfiguration" default="false">
<directives>
<data directive="@append" />
<data directive="@auth" injection="true" prefix="&lt;?php&#10;if(auth()-&gt;guard(" suffix=")-&gt;check()): ?&gt;" />
<data directive="@aware" injection="true" prefix="&lt;?php $attributes = $attributes-&gt;exceptProps(" suffix="); ?&gt;" />
<data directive="@break" injection="true" prefix="&lt;?php&#10;if(" suffix=") break; ?&gt;" />
<data directive="@can" injection="true" prefix="&lt;?php&#10;if (app(\Illuminate\Contracts\Auth\Access\Gate::class)-&gt;check(" suffix=")): ?&gt;" />
<data directive="@canany" injection="true" prefix="&lt;?php&#10;if (app(\Illuminate\Contracts\Auth\Access\Gate::class)-&gt;any(" suffix=")): ?&gt;" />
<data directive="@cannot" injection="true" prefix="&lt;?php&#10;if (app(\Illuminate\Contracts\Auth\Access\Gate::class)-&gt;denies(" suffix=")): ?&gt;" />
<data directive="@case" injection="true" prefix="&lt;?php&#10;case (" suffix="): ?&gt;" />
<data directive="@checked" injection="true" prefix="&lt;?php if(" suffix=") {echo 'checked';}?&gt;" />
<data directive="@choice" injection="true" prefix="&lt;?php&#10;echo app('translator')-&gt;choice(" suffix="); ?&gt;" />
<data directive="@class" injection="true" prefix="class=&quot;&lt;?php echo \Illuminate\Support\Arr::toCssClasses(" suffix=")?&gt;&quot;" />
<data directive="@component" injection="true" prefix="&lt;?php&#10;$__env-&gt;startComponent(" suffix="); ?&gt;" />
<data directive="@componentfirst" injection="true" prefix="&lt;?php&#10;$__env-&gt;startComponentFirst(" suffix="); ?&gt;" />
<data directive="@continue" injection="true" prefix="&lt;?php&#10;if(" suffix=") continue; ?&gt;" />
<data directive="@csrf" />
<data directive="@dd" injection="true" prefix="&lt;?php&#10;dd(" suffix="); ?&gt;" />
<data directive="@default" />
<data directive="@disabled" injection="true" prefix="&lt;?php if(" suffix=") {echo 'disabled';}?&gt;" />
<data directive="@dump" injection="true" prefix="&lt;?php&#10;dump(" suffix="); ?&gt;" />
<data directive="@each" injection="true" prefix="&lt;?php&#10;echo $__env-&gt;renderEach(" suffix="); ?&gt;" />
<data directive="@else" />
<data directive="@elseauth" injection="true" prefix="&lt;?php&#10;elseif(auth()-&gt;guard(" suffix=")-&gt;check()): ?&gt;" />
<data directive="@elsecan" injection="true" prefix="&lt;?php&#10;elseif (app(\Illuminate\Contracts\Auth\Access\Gate::class)-&gt;check(" suffix=")): ?&gt;" />
<data directive="@elsecanany" injection="true" prefix="&lt;?php&#10;elseif (app(\Illuminate\Contracts\Auth\Access\Gate::class)-&gt;any(" suffix=")): ?&gt;" />
<data directive="@elsecannot" injection="true" prefix="&lt;?php&#10;elseif (app(\Illuminate\Contracts\Auth\Access\Gate::class)-&gt;denies(" suffix=")): ?&gt;" />
<data directive="@elseguest" injection="true" prefix="&lt;?php&#10;elseif(auth()-&gt;guard(" suffix=")-&gt;guest()): ?&gt;" />
<data directive="@elseif" injection="true" prefix="&lt;?php&#10;elseif(" suffix="): ?&gt;" />
<data directive="@empty" injection="true" prefix="&lt;?php&#10;if(empty(" suffix=")): ?&gt;" />
<data directive="@endauth" />
<data directive="@endcan" />
<data directive="@endcanany" />
<data directive="@endcannot" />
<data directive="@endcomponent" />
<data directive="@endcomponentClass" />
<data directive="@endcomponentfirst" />
<data directive="@endempty" />
<data directive="@endenv" />
<data directive="@enderror" />
<data directive="@endfor" />
<data directive="@endforeach" />
<data directive="@endforelse" />
<data directive="@endfragment" />
<data directive="@endguest" />
<data directive="@endif" />
<data directive="@endisset" />
<data directive="@endlang" />
<data directive="@endonce" />
<data directive="@endpersist" />
<data directive="@endphp" />
<data directive="@endprepend" />
<data directive="@endprependonce" />
<data directive="@endproduction" />
<data directive="@endpush" />
<data directive="@endpushif" />
<data directive="@endpushonce" />
<data directive="@endsection" />
<data directive="@endslot" />
<data directive="@endswitch" />
<data directive="@endteleport" />
<data directive="@endunless" />
<data directive="@endverbatim" />
<data directive="@endwhile" />
<data directive="@entangle" injection="true" prefix="&lt;?php \print_r(" suffix="); ?&gt;" />
<data directive="@env" injection="true" prefix="&lt;?php&#10;if(app()-&gt;environment(" suffix=")): ?&gt;" />
<data directive="@error" injection="true" prefix="&lt;?php&#10;$__errorArgs = [" suffix="];&#10;$__bag = $errors-&gt;getBag($__errorArgs[1] ?? 'default');&#10;if ($__bag-&gt;has($__errorArgs[0])) :&#10;if (isset($message)) { $__messageOriginal = $message; }&#10;$message = $__bag-&gt;first($__errorArgs[0]); ?&gt;" />
<data directive="@extends" injection="true" prefix="&lt;?php&#10;echo $__env-&gt;make(" suffix=", \Illuminate\Support\Arr::except(get_defined_vars(), ['__data', '__path']))-&gt;render(); ?&gt;" />
<data directive="@extendsfirst" injection="true" prefix="&lt;?php&#10;echo $__env-&gt;first(" suffix=", \Illuminate\Support\Arr::except(get_defined_vars(), ['__data', '__path']))-&gt;render(); ?&gt;" />
<data directive="@for" injection="true" prefix="&lt;?php&#10;for(" suffix="): ?&gt;" />
<data directive="@foreach" injection="true" prefix="&lt;?php&#10;foreach(" suffix="): ?&gt;" />
<data directive="@forelse" injection="true" prefix="&lt;?php&#10;foreach(" suffix="): ?&gt;" />
<data directive="@fragment" injection="true" prefix="&lt;?php&#10;$__env-&gt;startFragment(" suffix="); ?&gt;" />
<data directive="@guest" injection="true" prefix="&lt;?php&#10;if(auth()-&gt;guard(" suffix=")-&gt;guest()): ?&gt;" />
<data directive="@hasSection" injection="true" prefix="&lt;?php&#10;if (! empty(trim($__env-&gt;yieldContent(" suffix=")))): ?&gt;" />
<data directive="@if" injection="true" prefix="&lt;?php&#10;if(" suffix="): ?&gt;" />
<data directive="@include" injection="true" prefix="&lt;?php&#10;echo $__env-&gt;make(" suffix=", \Illuminate\Support\Arr::except(get_defined_vars(), ['__data', '__path']))-&gt;render(); ?&gt;" />
<data directive="@includeFirst" injection="true" prefix="&lt;?php&#10;echo $__env-&gt;first(" suffix=", \Illuminate\Support\Arr::except(get_defined_vars(), ['__data', '__path']))-&gt;render(); ?&gt;" />
<data directive="@includeUnless" injection="true" prefix="&lt;?php&#10;echo $__env-&gt;renderUnless(" suffix=", \Illuminate\Support\Arr::except(get_defined_vars(), ['__data', '__path'])); ?&gt;" />
<data directive="@includeWhen" injection="true" prefix="&lt;?php&#10;echo $__env-&gt;renderWhen(" suffix=", \Illuminate\Support\Arr::except(get_defined_vars(), ['__data', '__path'])); ?&gt;" />
<data directive="@isset" injection="true" prefix="&lt;?php&#10;if(isset(" suffix=")): ?&gt;" />
<data directive="@js" injection="true" prefix="&lt;?php _bladeDirective(" suffix="); ?&gt;" />
<data directive="@json" injection="true" prefix="&lt;?php&#10;echo json_encode(" suffix=") ?&gt;" />
<data directive="@lang" injection="true" prefix="&lt;?php&#10;echo app('translator')-&gt;get(" suffix="); ?&gt;" />
<data directive="@livewire" injection="true" prefix="&lt;?php \Livewire\Livewire::mount(" suffix="); ?&gt;" />
<data directive="@livewireScriptConfig" />
<data directive="@livewireScripts" />
<data directive="@livewireStyles" />
<data directive="@method" injection="true" prefix="&lt;?php&#10;echo method_field(" suffix="); ?&gt;" />
<data directive="@once" />
<data directive="@overwrite" />
<data directive="@parent" />
<data directive="@persist" injection="true" prefix="&lt;?php echo e(" suffix="); ?&gt;" />
<data directive="@php" injection="true" prefix="&lt;?php&#10;(" suffix="); ?&gt;" />
<data directive="@prepend" injection="true" prefix="&lt;?php&#10;$__env-&gt;startPrepend(" suffix="); ?&gt;" />
<data directive="@prependonce" injection="true" prefix="&lt;?php&#10;$___phpstorm_prepend_once_params = [" suffix="]; if (! $__env-&gt;hasRenderedOnce($___phpstorm_prepend_once_params[1])): $__env-&gt;markAsRenderedOnce($___phpstorm_prepend_once_params); $__env-&gt;startPrepend($___phpstorm_prepend_once_params[0]); ?&gt;" />
<data directive="@production" />
<data directive="@props" injection="true" prefix="&lt;?php $attributes = $attributes-&gt;exceptProps(" suffix="); ?&gt;" />
<data directive="@push" injection="true" prefix="&lt;?php&#10;$__env-&gt;startPush(" suffix="); ?&gt;" />
<data directive="@pushif" injection="true" prefix="&lt;?php&#10;$__pushif_args = explode(','," suffix=", 2); if({$__pushif_args[0]}): $__env-&gt;startPush({$__pushif_args[1]}); ?&gt;" />
<data directive="@pushonce" injection="true" prefix="&lt;?php&#10;$__php_storm_push_once_params = [" suffix="]; if (!$__env-&gt;hasRenderedOnce($__php_storm_push_once_params[1])): $__env-&gt;markAsRenderedOnce($__php_storm_push_once_params[1]); $__env-&gt;startPush($__php_storm_push_once_params[0]); ?&gt;" />
<data directive="@readonly" injection="true" prefix="&lt;?php&#10;if(" suffix="): echo 'readonly'; endif; ?&gt;" />
<data directive="@required" injection="true" prefix="&lt;?php&#10;if(" suffix="): echo 'required'; endif; ?&gt;" />
<data directive="@section" injection="true" prefix="&lt;?php&#10;$__env-&gt;startSection(" suffix="); ?&gt;" />
<data directive="@sectionMissing" injection="true" prefix="&lt;?php&#10;if (empty(trim($__env-&gt;yieldContent(" suffix=")))): ?&gt;" />
<data directive="@selected" injection="true" prefix="&lt;?php if(" suffix=") {echo 'selected';}?&gt;" />
<data directive="@show" />
<data directive="@slot" injection="true" prefix="&lt;?php&#10;$__env-&gt;slot(" suffix="); ?&gt;" />
<data directive="@stack" injection="true" prefix="&lt;?php&#10;echo $__env-&gt;yieldPushContent(" suffix="); ?&gt;" />
<data directive="@stop" />
<data directive="@style" injection="true" prefix="class=&quot;&lt;?php echo \Illuminate\Support\Arr::toCssStyles(" suffix=")?&gt;&quot;" />
<data directive="@switch" injection="true" prefix="&lt;?php&#10;switch(" suffix="): ?&gt;" />
<data directive="@teleport" injection="true" prefix="&lt;?php echo e(" suffix="); ?&gt;" />
<data directive="@this" />
<data directive="@unless" injection="true" prefix="&lt;?php&#10;if (! (" suffix=")): ?&gt;" />
<data directive="@unset" injection="true" prefix="&lt;?php&#10;unset(" suffix="); ?&gt;" />
<data directive="@verbatim" />
<data directive="@vite" injection="true" prefix="&lt;?php echo app('\\Illuminate\\Foundation\\Vite')(" suffix="); ?&gt;" />
<data directive="@viteReactRefresh" />
<data directive="@vitereactrefresh" />
<data directive="@while" injection="true" prefix="&lt;?php&#10;while(" suffix="): ?&gt;" />
<data directive="@yield" injection="true" prefix="&lt;?php&#10;echo $__env-&gt;yieldContent(" suffix="); ?&gt;" />
</directives>
</component>
</project>

View file

@ -0,0 +1,14 @@
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="PyPep8Inspection" enabled="true" level="WEAK WARNING" enabled_by_default="true">
<option name="ignoredErrors">
<list>
<option value="W29" />
<option value="E501" />
</list>
</option>
</inspection_tool>
</profile>
</component>

20
.idea/laravel-idea.xml Normal file
View file

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="LaravelIdeaMainSettings">
<option name="codeGeneration">
<LaravelCodeGeneration>
<option name="generationStringSettings">
<map>
<entry key="createEloquentScope:inModuleNamespace" value="Models\Scopes" />
<entry key="createEloquentScope:namespace" value="Models\Scopes" />
<entry key="createModel:inModuleNamespace" value="Models" />
<entry key="createModel:namespace" value="Models" />
</map>
</option>
</LaravelCodeGeneration>
</option>
<option name="frameworkFound" value="true" />
<option name="laravelBasePath" value="laravel_app" />
<option name="userClassName" value="\AppModels\User" />
</component>
</project>

4
.idea/misc.xml Normal file
View file

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.9 (smartCane)" project-jdk-type="Python SDK" />
</project>

8
.idea/modules.xml Normal file
View file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/smartCane.iml" filepath="$PROJECT_DIR$/.idea/smartCane.iml" />
</modules>
</component>
</project>

151
.idea/php.xml Normal file
View file

@ -0,0 +1,151 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="MessDetectorOptionsConfiguration">
<option name="transferred" value="true" />
</component>
<component name="PHPCSFixerOptionsConfiguration">
<option name="transferred" value="true" />
</component>
<component name="PHPCodeSnifferOptionsConfiguration">
<option name="highlightLevel" value="WARNING" />
<option name="transferred" value="true" />
</component>
<component name="PhpIncludePathManager">
<include_path>
<path value="$PROJECT_DIR$/laravel_app/vendor/jaybizzle/crawler-detect" />
<path value="$PROJECT_DIR$/laravel_app/vendor/psr/event-dispatcher" />
<path value="$PROJECT_DIR$/laravel_app/vendor/psr/http-message" />
<path value="$PROJECT_DIR$/laravel_app/vendor/psr/log" />
<path value="$PROJECT_DIR$/laravel_app/vendor/psr/simple-cache" />
<path value="$PROJECT_DIR$/laravel_app/vendor/psr/container" />
<path value="$PROJECT_DIR$/laravel_app/vendor/psr/http-client" />
<path value="$PROJECT_DIR$/laravel_app/vendor/psr/clock" />
<path value="$PROJECT_DIR$/laravel_app/vendor/psr/http-factory" />
<path value="$PROJECT_DIR$/laravel_app/vendor/nette/utils" />
<path value="$PROJECT_DIR$/laravel_app/vendor/nette/schema" />
<path value="$PROJECT_DIR$/laravel_app/vendor/voku/portable-ascii" />
<path value="$PROJECT_DIR$/laravel_app/vendor/brick/math" />
<path value="$PROJECT_DIR$/laravel_app/vendor/league/flysystem-local" />
<path value="$PROJECT_DIR$/laravel_app/vendor/league/config" />
<path value="$PROJECT_DIR$/laravel_app/vendor/nikic/php-parser" />
<path value="$PROJECT_DIR$/laravel_app/vendor/league/mime-type-detection" />
<path value="$PROJECT_DIR$/laravel_app/vendor/nesbot/carbon" />
<path value="$PROJECT_DIR$/laravel_app/vendor/ramsey/collection" />
<path value="$PROJECT_DIR$/laravel_app/vendor/league/flysystem" />
<path value="$PROJECT_DIR$/laravel_app/vendor/league/commonmark" />
<path value="$PROJECT_DIR$/laravel_app/vendor/jenssegers/agent" />
<path value="$PROJECT_DIR$/laravel_app/vendor/ramsey/uuid" />
<path value="$PROJECT_DIR$/laravel_app/vendor/dflydev/dot-access-data" />
<path value="$PROJECT_DIR$/laravel_app/vendor/pragmarx/google2fa" />
<path value="$PROJECT_DIR$/laravel_app/vendor/egulias/email-validator" />
<path value="$PROJECT_DIR$/laravel_app/vendor/vlucas/phpdotenv" />
<path value="$PROJECT_DIR$/laravel_app/vendor/laravel/serializable-closure" />
<path value="$PROJECT_DIR$/laravel_app/vendor/laravel/prompts" />
<path value="$PROJECT_DIR$/laravel_app/vendor/mockery/mockery" />
<path value="$PROJECT_DIR$/laravel_app/vendor/phar-io/manifest" />
<path value="$PROJECT_DIR$/laravel_app/vendor/phar-io/version" />
<path value="$PROJECT_DIR$/laravel_app/vendor/monolog/monolog" />
<path value="$PROJECT_DIR$/laravel_app/vendor/myclabs/deep-copy" />
<path value="$PROJECT_DIR$/laravel_app/vendor/phpunit/php-text-template" />
<path value="$PROJECT_DIR$/laravel_app/vendor/phpunit/php-code-coverage" />
<path value="$PROJECT_DIR$/laravel_app/vendor/phpunit/php-timer" />
<path value="$PROJECT_DIR$/laravel_app/vendor/phpunit/phpunit" />
<path value="$PROJECT_DIR$/laravel_app/vendor/symfony/polyfill-php80" />
<path value="$PROJECT_DIR$/laravel_app/vendor/symfony/polyfill-ctype" />
<path value="$PROJECT_DIR$/laravel_app/vendor/phpunit/php-invoker" />
<path value="$PROJECT_DIR$/laravel_app/vendor/phpunit/php-file-iterator" />
<path value="$PROJECT_DIR$/laravel_app/vendor/symfony/translation-contracts" />
<path value="$PROJECT_DIR$/laravel_app/vendor/symfony/uid" />
<path value="$PROJECT_DIR$/laravel_app/vendor/symfony/polyfill-php72" />
<path value="$PROJECT_DIR$/laravel_app/vendor/symfony/translation" />
<path value="$PROJECT_DIR$/laravel_app/vendor/paragonie/constant_time_encoding" />
<path value="$PROJECT_DIR$/laravel_app/vendor/symfony/mailer" />
<path value="$PROJECT_DIR$/laravel_app/vendor/symfony/polyfill-intl-idn" />
<path value="$PROJECT_DIR$/laravel_app/vendor/symfony/event-dispatcher" />
<path value="$PROJECT_DIR$/laravel_app/vendor/symfony/var-dumper" />
<path value="$PROJECT_DIR$/laravel_app/vendor/symfony/css-selector" />
<path value="$PROJECT_DIR$/laravel_app/vendor/symfony/event-dispatcher-contracts" />
<path value="$PROJECT_DIR$/laravel_app/vendor/symfony/polyfill-uuid" />
<path value="$PROJECT_DIR$/laravel_app/vendor/symfony/polyfill-intl-normalizer" />
<path value="$PROJECT_DIR$/laravel_app/vendor/symfony/http-kernel" />
<path value="$PROJECT_DIR$/laravel_app/vendor/symfony/finder" />
<path value="$PROJECT_DIR$/laravel_app/vendor/symfony/polyfill-php83" />
<path value="$PROJECT_DIR$/laravel_app/vendor/symfony/deprecation-contracts" />
<path value="$PROJECT_DIR$/laravel_app/vendor/symfony/routing" />
<path value="$PROJECT_DIR$/laravel_app/vendor/symfony/mime" />
<path value="$PROJECT_DIR$/laravel_app/vendor/bacon/bacon-qr-code" />
<path value="$PROJECT_DIR$/laravel_app/vendor/symfony/string" />
<path value="$PROJECT_DIR$/laravel_app/vendor/symfony/error-handler" />
<path value="$PROJECT_DIR$/laravel_app/vendor/symfony/process" />
<path value="$PROJECT_DIR$/laravel_app/vendor/symfony/service-contracts" />
<path value="$PROJECT_DIR$/laravel_app/vendor/symfony/http-foundation" />
<path value="$PROJECT_DIR$/laravel_app/vendor/symfony/polyfill-intl-grapheme" />
<path value="$PROJECT_DIR$/laravel_app/vendor/theseer/tokenizer" />
<path value="$PROJECT_DIR$/laravel_app/vendor/symfony/console" />
<path value="$PROJECT_DIR$/laravel_app/vendor/symfony/polyfill-mbstring" />
<path value="$PROJECT_DIR$/laravel_app/vendor/fakerphp/faker" />
<path value="$PROJECT_DIR$/laravel_app/vendor/hamcrest/hamcrest-php" />
<path value="$PROJECT_DIR$/laravel_app/vendor/doctrine/lexer" />
<path value="$PROJECT_DIR$/laravel_app/vendor/doctrine/inflector" />
<path value="$PROJECT_DIR$/laravel_app/vendor/phpoption/phpoption" />
<path value="$PROJECT_DIR$/laravel_app/vendor/ralouphie/getallheaders" />
<path value="$PROJECT_DIR$/laravel_app/vendor/fruitcake/php-cors" />
<path value="$PROJECT_DIR$/laravel_app/vendor/sebastian/object-enumerator" />
<path value="$PROJECT_DIR$/laravel_app/vendor/symfony/yaml" />
<path value="$PROJECT_DIR$/laravel_app/vendor/sebastian/object-reflector" />
<path value="$PROJECT_DIR$/laravel_app/vendor/sebastian/comparator" />
<path value="$PROJECT_DIR$/laravel_app/vendor/sebastian/global-state" />
<path value="$PROJECT_DIR$/laravel_app/vendor/sebastian/diff" />
<path value="$PROJECT_DIR$/laravel_app/vendor/sebastian/recursion-context" />
<path value="$PROJECT_DIR$/laravel_app/vendor/sebastian/complexity" />
<path value="$PROJECT_DIR$/laravel_app/vendor/sebastian/code-unit-reverse-lookup" />
<path value="$PROJECT_DIR$/laravel_app/vendor/sebastian/version" />
<path value="$PROJECT_DIR$/laravel_app/vendor/sebastian/cli-parser" />
<path value="$PROJECT_DIR$/laravel_app/vendor/sebastian/lines-of-code" />
<path value="$PROJECT_DIR$/laravel_app/vendor/sebastian/type" />
<path value="$PROJECT_DIR$/laravel_app/vendor/sebastian/exporter" />
<path value="$PROJECT_DIR$/laravel_app/vendor/webmozart/assert" />
<path value="$PROJECT_DIR$/laravel_app/vendor/sebastian/code-unit" />
<path value="$PROJECT_DIR$/laravel_app/vendor/filp/whoops" />
<path value="$PROJECT_DIR$/laravel_app/vendor/sebastian/environment" />
<path value="$PROJECT_DIR$/laravel_app/vendor/guzzlehttp/psr7" />
<path value="$PROJECT_DIR$/laravel_app/vendor/guzzlehttp/guzzle" />
<path value="$PROJECT_DIR$/laravel_app/vendor/guzzlehttp/uri-template" />
<path value="$PROJECT_DIR$/laravel_app/vendor/guzzlehttp/promises" />
<path value="$PROJECT_DIR$/laravel_app/vendor/tijsverkoyen/css-to-inline-styles" />
<path value="$PROJECT_DIR$/laravel_app/vendor/dragonmantank/cron-expression" />
<path value="$PROJECT_DIR$/laravel_app/vendor/nunomaduro/termwind" />
<path value="$PROJECT_DIR$/laravel_app/vendor/graham-campbell/result-type" />
<path value="$PROJECT_DIR$/laravel_app/vendor/psy/psysh" />
<path value="$PROJECT_DIR$/laravel_app/vendor/laravel/sail" />
<path value="$PROJECT_DIR$/laravel_app/vendor/laravel/sanctum" />
<path value="$PROJECT_DIR$/laravel_app/vendor/laravel/tinker" />
<path value="$PROJECT_DIR$/laravel_app/vendor/laravel/framework" />
<path value="$PROJECT_DIR$/laravel_app/vendor/laravel/pint" />
<path value="$PROJECT_DIR$/laravel_app/vendor/mobiledetect/mobiledetectlib" />
<path value="$PROJECT_DIR$/laravel_app/vendor/spatie/ignition" />
<path value="$PROJECT_DIR$/laravel_app/vendor/spatie/laravel-ignition" />
<path value="$PROJECT_DIR$/laravel_app/vendor/spatie/flare-client-php" />
<path value="$PROJECT_DIR$/laravel_app/vendor/spatie/backtrace" />
<path value="$PROJECT_DIR$/laravel_app/vendor/livewire/livewire" />
<path value="$PROJECT_DIR$/laravel_app/vendor/nunomaduro/collision" />
<path value="$PROJECT_DIR$/laravel_app/vendor/laravel/fortify" />
<path value="$PROJECT_DIR$/laravel_app/vendor/laravel/jetstream" />
<path value="$PROJECT_DIR$/laravel_app/vendor/composer" />
<path value="$PROJECT_DIR$/laravel_app/vendor/dasprid/enum" />
<path value="$PROJECT_DIR$/laravel_app/vendor/_laravel_idea" />
</include_path>
</component>
<component name="PhpProjectSharedConfiguration" php_language_level="8.1" />
<component name="PhpStanOptionsConfiguration">
<option name="transferred" value="true" />
</component>
<component name="PhpUnit">
<phpunit_settings>
<PhpUnitSettings configuration_file_path="$PROJECT_DIR$/laravel_app/phpunit.xml" custom_loader_path="$PROJECT_DIR$/laravel_app/vendor/autoload.php" use_configuration_file="true" />
</phpunit_settings>
</component>
<component name="PsalmOptionsConfiguration">
<option name="transferred" value="true" />
</component>
</project>

10
.idea/phpunit.xml Normal file
View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="PHPUnit">
<option name="directories">
<list>
<option value="$PROJECT_DIR$/laravel_app/tests" />
</list>
</option>
</component>
</project>

138
.idea/smartCane.iml Normal file
View file

@ -0,0 +1,138 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/laravel_app/app" isTestSource="false" packagePrefix="App\" />
<sourceFolder url="file://$MODULE_DIR$/laravel_app/database/factories" isTestSource="false" packagePrefix="Database\Factories\" />
<sourceFolder url="file://$MODULE_DIR$/laravel_app/database/seeders" isTestSource="false" packagePrefix="Database\Seeders\" />
<sourceFolder url="file://$MODULE_DIR$/laravel_app/tests" isTestSource="true" packagePrefix="Tests\" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/bacon/bacon-qr-code" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/brick/math" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/composer" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/dasprid/enum" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/dflydev/dot-access-data" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/doctrine/inflector" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/doctrine/lexer" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/dragonmantank/cron-expression" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/egulias/email-validator" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/fakerphp/faker" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/filp/whoops" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/fruitcake/php-cors" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/graham-campbell/result-type" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/guzzlehttp/guzzle" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/guzzlehttp/promises" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/guzzlehttp/psr7" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/guzzlehttp/uri-template" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/hamcrest/hamcrest-php" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/jaybizzle/crawler-detect" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/jenssegers/agent" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/laravel/fortify" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/laravel/framework" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/laravel/jetstream" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/laravel/pint" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/laravel/prompts" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/laravel/sail" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/laravel/sanctum" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/laravel/serializable-closure" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/laravel/tinker" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/league/commonmark" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/league/config" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/league/flysystem" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/league/flysystem-local" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/league/mime-type-detection" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/livewire/livewire" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/mobiledetect/mobiledetectlib" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/mockery/mockery" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/monolog/monolog" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/myclabs/deep-copy" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/nesbot/carbon" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/nette/schema" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/nette/utils" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/nikic/php-parser" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/nunomaduro/collision" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/nunomaduro/termwind" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/paragonie/constant_time_encoding" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/phar-io/manifest" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/phar-io/version" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/phpoption/phpoption" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/phpunit/php-code-coverage" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/phpunit/php-file-iterator" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/phpunit/php-invoker" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/phpunit/php-text-template" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/phpunit/php-timer" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/phpunit/phpunit" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/pragmarx/google2fa" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/psr/clock" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/psr/container" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/psr/event-dispatcher" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/psr/http-client" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/psr/http-factory" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/psr/http-message" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/psr/log" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/psr/simple-cache" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/psy/psysh" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/ralouphie/getallheaders" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/ramsey/collection" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/ramsey/uuid" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/sebastian/cli-parser" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/sebastian/code-unit" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/sebastian/code-unit-reverse-lookup" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/sebastian/comparator" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/sebastian/complexity" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/sebastian/diff" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/sebastian/environment" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/sebastian/exporter" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/sebastian/global-state" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/sebastian/lines-of-code" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/sebastian/object-enumerator" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/sebastian/object-reflector" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/sebastian/recursion-context" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/sebastian/type" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/sebastian/version" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/spatie/backtrace" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/spatie/flare-client-php" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/spatie/ignition" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/spatie/laravel-ignition" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/symfony/console" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/symfony/css-selector" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/symfony/deprecation-contracts" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/symfony/error-handler" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/symfony/event-dispatcher" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/symfony/event-dispatcher-contracts" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/symfony/finder" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/symfony/http-foundation" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/symfony/http-kernel" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/symfony/mailer" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/symfony/mime" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/symfony/polyfill-ctype" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/symfony/polyfill-intl-grapheme" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/symfony/polyfill-intl-idn" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/symfony/polyfill-intl-normalizer" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/symfony/polyfill-mbstring" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/symfony/polyfill-php72" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/symfony/polyfill-php80" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/symfony/polyfill-php83" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/symfony/polyfill-uuid" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/symfony/process" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/symfony/routing" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/symfony/service-contracts" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/symfony/string" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/symfony/translation" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/symfony/translation-contracts" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/symfony/uid" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/symfony/var-dumper" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/symfony/yaml" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/theseer/tokenizer" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/tijsverkoyen/css-to-inline-styles" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/vlucas/phpdotenv" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/voku/portable-ascii" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/webmozart/assert" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/storage/app" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/storage/framework" />
<excludeFolder url="file://$MODULE_DIR$/venv" />
<excludeFolder url="file://$MODULE_DIR$/laravel_app/vendor/_laravel_idea" />
</content>
<orderEntry type="jdk" jdkName="Python 3.9 (smartCane)" jdkType="Python SDK" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

6
.idea/vcs.xml Normal file
View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>

7
build_report.sh Executable file
View file

@ -0,0 +1,7 @@
#!/bin/bash
## Runnen van Rmd bestand
# -e betekent "evalueren" en -i specificeert de input file
pwd
script_dir="$(dirname "$0")"
echo $script_dir;
Rscript -e "rmarkdown::render('${script_dir}/r_app/CI_Report_dashboard_planet.Rmd', 'all')"

View file

@ -0,0 +1,13 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class DownloadController extends Controller
{
public function show() {
return view('download.show');
}
//
}

View file

@ -0,0 +1,15 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ReportController extends Controller
{
public function index()
{
return view('reports.index');
}
}

View file

@ -1,18 +1,19 @@
<?php <?php
namespace App\Livewire; namespace App\Livewire\Download;
use Livewire\Component; use Livewire\Component;
use Symfony\Component\Process\Process; use Symfony\Component\Process\Process;
class DownloadForm extends Component class DownloadForm extends Component
{ {
public $output='start me'; public $output='';
public $days = 7;
public $buttonText = 'Start'; public $buttonText = 'Start';
public function mount() { public function mount() {
auth()->loginUsingId(1);
$this->buttonText = __('Start'); $this->buttonText = __('Start');
} }
@ -24,7 +25,8 @@ public function start()
$projectFolder = base_path('../'); $projectFolder = base_path('../');
$command = [ $command = [
sprintf('%srunpython.sh', $projectFolder ), sprintf('%srunpython.sh', $projectFolder),
sprintf('--days=%d', $this->days),
]; ];
// Convert commands array to a single string // Convert commands array to a single string
@ -54,6 +56,6 @@ public function start()
public function render() public function render()
{ {
return view('livewire.download-form'); return view('livewire.download.download-form');
} }
} }

View file

@ -0,0 +1,28 @@
<?php
namespace App\Livewire\Download;
use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\Storage;
use Livewire\Component;
class DownloadGrid extends Component
{
public $directories;
public function mount()
{
$this->directories = collect(Storage::directories('chemba/single_images'))
->map(function ($directory) {
$parts = explode('/', $directory);
return Carbon::parse(end($parts));
})->sortByDesc(function ($date, $key) {
return $date;
})->values();
}
public function render()
{
return view('livewire.download.download-grid')->with(['directories', $this->directories]);
}
}

View file

@ -0,0 +1,135 @@
<?php
namespace App\Livewire\Reports;
use App\Models\Report;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Validator;
use Laravel\Jetstream\Jetstream;
use Livewire\Component;
use Symfony\Component\Process\Process;
class ReportManager extends Component
{
/**
* The create API token form state.
*
* @var array
*/
public $createReportForm = [
'name' => '',
'path' => '',
];
public $processOutput = '';
public $confirmingReportDeletion = false;
/**
* The ID of the API token being deleted.
*
* @var int
*/
public $reportIdBeingDeleted;
/**
* Mount the component.
*
* @return void
*/
public function mount()
{
}
/**
* Create a new API token.
*
* @return void
*/
public function createReport()
{
$this->resetErrorBag();
Validator::make([
'name' => $this->createReportForm['name'],
], [
'name' => ['required', 'string', 'max:255'],
])->validateWithBag('createReport');
$projectFolder = base_path('../');
$command = [
sprintf('%sbuild_report.sh', $projectFolder),
sprintf('--filename=%s', $this->createReportForm['name']),
];
// Convert commands array to a single string
$process = new Process($command);
$process->setTimeout(3600); // stel een geschikte timeout in
$process->start();
try {
$myOutput = [];
$process->wait(function ($type, $buffer) use (&$myOutput){
$this->stream(to: 'processOutput', content: $buffer);
$myOutput[] = $buffer;
});
$this->processOutput = collect($myOutput)->join('\n');
} catch (ProcessFailedException $exception) {
echo $exception->getMessage();
}
Report::create(
$this->createReportForm
);
$this->createReportForm['name'] = '';
$this->dispatch('created');
}
/**
* Confirm that the given API token should be deleted.
*
* @param int $tokenId
* @return void
*/
public function confirmReportDeletion($reportId)
{
$this->confirmingReportDeletion = true;
$this->reportIdBeingDeleted = $reportId;
}
/**
* Delete the API token.
*
* @return void
*/
public function deleteReport()
{
Report::whereId($this->reportIdBeingDeleted)->first()->delete();
$this->confirmingReportDeletion = false;
}
/**
* Get the current user of the application.
*
* @return mixed
*/
public function getReportsProperty()
{
return Report::all();
}
public function render()
{
return view('livewire.reports.report-manager');
}
}

View file

@ -0,0 +1,11 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Report extends Model
{
protected $fillable = ['name', 'path'];
}

View file

@ -0,0 +1,29 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('reports', function (Blueprint $table) {
$table->id();
$table->string('path');
$table->string('name');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('reports');
}
};

View file

@ -0,0 +1,20 @@
<x-app-layout>
<x-slot name="header">
<h2 class="font-semibold text-xl text-gray-800 leading-tight">
{{ __('Download') }}
</h2>
</x-slot>
<div>
<div class="max-w-7xl mx-auto py-10 sm:px-6 lg:px-8">
<div class="mt-10 sm:mt-0">
@livewire('download.download-grid')
</div>
<x-section-border />
<div class="mt-10 sm:mt-0">
@livewire('download.download-form')
</div>
</div>
</div>
</x-app-layout>

View file

@ -1,40 +0,0 @@
<x-action-section>
<x-slot name="title">
{{ __('Two Factor Authentication') }}
</x-slot>
<x-slot name="description">
{{ __('Add additional security to your account using two factor authentication.') }}
</x-slot>
<x-slot name="content">
<h3 class="text-lg font-medium text-gray-900">
{{ __('Finish enabling two factor authentication.') }}
</h3>
<div class="mt-3 max-w-xl text-sm text-gray-600">
<p>
{{ __('When two factor authentication is enabled, you will be prompted for a secure, random token during authentication. You may retrieve this token from your phone\'s Google Authenticator application.') }}
</p>
</div>
<div class="mt-4 max-w-xl text-sm text-gray-600">
<p class="font-semibold">
{{ __('some text') }}
</p>
</div>
<div class="grid gap-1 max-w-xl mt-4 px-4 py-4 font-mono text-sm bg-gray-100 rounded-lg"
wire:stream="output">{{ $output }}
</div>
<div class="mt-5">
<x-secondary-button class="mr-3" wire:click="start">
{{ $buttonText }}
</x-secondary-button>
</div>
</x-slot>
</x-action-section>

View file

@ -0,0 +1,47 @@
<x-action-section>
<x-slot name="title">
{{ __('Satellite data') }}
</x-slot>
<x-slot name="description">
{{ __('Add additional satellite data to your account.') }}
</x-slot>
<x-slot name="content">
<h3 class="text-lg font-medium text-gray-900">
{{ __('Download satellite data') }}
</h3>
<div class="mt-3 max-w-xl text-sm text-gray-600">
<p>
{{ __('Vul een aantal dagen in en druk op start om de betreffende sateliet data te downloaden') }}
<x-input type="text" wire:model="days" class="mt-1 block w-full"/>
</p>
</div>
<div class="mt-4 max-w-xl text-sm text-gray-600">
<p class="font-semibold">
{{ __('') }}
</p>
</div>
@if ($this->output)
<div
class="grid gap-1 mt-4 px-4 py-4 font-mono overflow-hidden break-words text-sm bg-gray-100 rounded-lg"
wire:stream="output">{{ $output }}
</div>
@endif
<div class="mt-5">
<x-secondary-button class="mr-3"
wire:click="start"
wire:target="start"
wire:loading.attr="disabled"
>
{{ $buttonText }}
</x-secondary-button>
</div>
</x-slot>
</x-action-section>

View file

@ -0,0 +1,24 @@
<div class="mt-10 sm:mt-0">
<x-action-section>
<x-slot name="title">
{{ __('Available Satellite data') }}
</x-slot>
<x-slot name="description">
{{ __('The grid has a date for every date the data has already been downloaded.') }}
</x-slot>
<!-- API Token List -->
<x-slot name="content">
<div class="space-y-6">
@foreach ($directories as $directory)
<div class="flex items-center justify-between">
<div class="break-all">
{!! Illuminate\Support\Carbon::parse($directory)->format('Y-m-d') !!}
</div>
</div>
@endforeach
</div>
</x-slot>
</x-action-section>
</div>

View file

@ -0,0 +1,94 @@
<div>
<!-- Generate API Token -->
<x-form-section submit="createReport">
<x-slot name="title">
{{ __('Create report') }}
</x-slot>
<x-slot name="description">
{{ __('Report generator for generating reports') }}
</x-slot>
<x-slot name="form">
<!-- Token Name -->
<div class="col-span-6 sm:col-span-4">
<x-label for="name" value="{{ __('Name') }}" />
<x-input id="name" type="text" class="mt-1 block w-full" wire:model="createReportForm.name" autofocus />
<x-input-error for="name" class="mt-2" />
</div>
<div
class="col-span-6 sm:col-span-4 mt-4 px-4 py-4 font-mono overflow-hidden break-words text-sm bg-gray-100 rounded-lg"
wire:stream="processOutput">{{ $processOutput }}
</div>
</x-slot>
<x-slot name="actions">
<x-action-message class="mr-3" on="created">
{{ __('Created.') }}
</x-action-message>
<x-button>
{{ __('Create') }}
</x-button>
</x-slot>
</x-form-section>
<x-section-border />
<!-- Manage API Tokens -->
<div class="mt-10 sm:mt-0">
<x-action-section>
<x-slot name="title">
{{ __('Manage reports') }}
</x-slot>
<x-slot name="description">
{{ __('You may delete any of your reports if they are no longer needed.') }}
</x-slot>
<!-- API Token List -->
<x-slot name="content">
<div class="space-y-6">
@foreach ($this->reports->sortBy('name') as $report)
<div class="flex items-center justify-between">
<div class="break-all">
{{ $report->name }}
</div>
<div class="flex items-center ml-2">
<button class="cursor-pointer ml-6 text-sm text-red-500" wire:click="confirmReportDeletion({{ $report->id }})">
{{ __('Delete') }}
</button>
</div>
</div>
@endforeach
</div>
</x-slot>
</x-action-section>
</div>
<!-- Delete Token Report Modal -->
<x-confirmation-modal wire:model.live="confirmingReportDeletion">
<x-slot name="title">
{{ __('Delete Report') }}
</x-slot>
<x-slot name="content">
{{ __('Are you sure you would like to delete this Report?') }}
</x-slot>
<x-slot name="footer">
<x-secondary-button wire:click="$toggle('confirmingReportDeletion')" wire:loading.attr="disabled">
{{ __('Cancel') }}
</x-secondary-button>
<x-danger-button class="ml-3" wire:click="deleteReport" wire:loading.attr="disabled">
{{ __('Delete') }}
</x-danger-button>
</x-slot>
</x-confirmation-modal>
</div>

View file

@ -15,6 +15,12 @@
<x-nav-link href="{{ route('dashboard') }}" :active="request()->routeIs('dashboard')"> <x-nav-link href="{{ route('dashboard') }}" :active="request()->routeIs('dashboard')">
{{ __('Dashboard') }} {{ __('Dashboard') }}
</x-nav-link> </x-nav-link>
<x-nav-link href="{{ route('download') }}" :active="request()->routeIs('download')">
{{ __('Download') }}
</x-nav-link>
<x-nav-link href="{{ route('report') }}" :active="request()->routeIs('report')">
{{ __('Report') }}
</x-nav-link>
</div> </div>
</div> </div>

View file

@ -0,0 +1,16 @@
<x-app-layout>
<x-slot name="header">
<h2 class="font-semibold text-xl text-gray-800 leading-tight">
{{ __('Reports') }}
</h2>
</x-slot>
<div>
<div class="max-w-7xl mx-auto py-10 sm:px-6 lg:px-8">
<div class="mt-10 sm:mt-0">
@livewire('reports.report-manager')
</div>
</div>
</div>
</x-app-layout>

View file

@ -13,7 +13,6 @@
| |
*/ */
Route::get('/streamer', \App\Livewire\DownloadForm::class );
Route::get('/', function () { Route::get('/', function () {
return view('welcome'); return view('welcome');
}); });
@ -26,4 +25,7 @@
Route::get('/dashboard', function () { Route::get('/dashboard', function () {
return view('dashboard'); return view('dashboard');
})->name('dashboard'); })->name('dashboard');
Route::get('/download', [\App\Http\Controllers\DownloadController::class, 'show'])->name('download');
Route::get('/report', [\App\Http\Controllers\ReportController::class, 'index'])->name('report');
}); });

View file

@ -14,4 +14,7 @@ export default defineConfig({
], ],
}), }),
], ],
server: {
host: 'smartcane.test',
}
}); });

View file

@ -283,7 +283,8 @@
"source": [ "source": [
"#end = datetime.date(2022, 8, 4)\n", "#end = datetime.date(2022, 8, 4)\n",
"#start = datetime.date(2023, 3, 1)\n", "#start = datetime.date(2023, 3, 1)\n",
"days_needed = 6\n", "days_needed = int(os.environ.get(\"DAYS\", 6))\n",
"print(\"Days needed:\", days_needed)\n",
"\n", "\n",
"end = datetime.date.today() - datetime.timedelta(days=days_needed - 1)\n", "end = datetime.date.today() - datetime.timedelta(days=days_needed - 1)\n",
"start = end - datetime.timedelta(days=1)\n", "start = end - datetime.timedelta(days=1)\n",

View file

@ -1,65 +0,0 @@
{
"request": {
"headers": {
"accept": "image/tiff",
"content-type": "application/json"
},
"payload": {
"evalscript": "\n //VERSION=3\n\n function setup() {\n return {\n input: [{\n bands: [\"Blue\", \"Green\", \"Red\", \"NIR\", \"UDM\"]\n }],\n output: {\n bands: 5\n }\n };\n }\n\n function evaluatePixel(sample) {\n return [2.5 * sample.Blue / 10000, 2.5 * sample.Green / 10000, 2.5 * sample.Red / 10000, 2.5 * sample.NIR / 10000, sample.UDM];\n }\n",
"input": {
"bounds": {
"bbox": [
34.946,
-17.35,
34.9839,
-17.311
],
"properties": {
"crs": "http://www.opengis.net/def/crs/EPSG/0/4326"
}
},
"data": [
{
"dataFilter": {
"timeRange": {
"from": "2023-10-04T00:00:00Z",
"to": "2023-10-04T23:59:59Z"
}
},
"type": "byoc-c691479f-358c-46b1-b0f0-e12b70a9856c"
}
]
},
"output": {
"height": 1425,
"responses": [
{
"format": {
"type": "image/tiff"
},
"identifier": "default"
}
],
"width": 1358
}
},
"timestamp": "2023-10-10T11:45:04.511299",
"url": "https://services.sentinel-hub.com/api/v1/process"
},
"response": {
"elapsed": 3.275736,
"headers": {
"Connection": "keep-alive",
"Content-Type": "image/tiff",
"Date": "Tue, 10 Oct 2023 09:45:04 GMT",
"Transfer-Encoding": "chunked",
"access-control-allow-credentials": "true",
"access-control-allow-headers": "origin,content-type,accept,accept-crs,authorization,cache-control",
"access-control-allow-methods": "GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH",
"access-control-allow-origin": "*",
"access-control-max-age": "3600",
"x-processingunits-spent": "12.303352062622253"
},
"status_code": 200
}
}

View file

@ -1,65 +0,0 @@
{
"request": {
"headers": {
"accept": "image/tiff",
"content-type": "application/json"
},
"payload": {
"evalscript": "\n //VERSION=3\n\n function setup() {\n return {\n input: [{\n bands: [\"Blue\", \"Green\", \"Red\", \"NIR\", \"UDM\"]\n }],\n output: {\n bands: 5\n }\n };\n }\n\n function evaluatePixel(sample) {\n return [2.5 * sample.Blue / 10000, 2.5 * sample.Green / 10000, 2.5 * sample.Red / 10000, 2.5 * sample.NIR / 10000, sample.UDM];\n }\n",
"input": {
"bounds": {
"bbox": [
34.883,
-17.3516,
34.938,
-17.2917
],
"properties": {
"crs": "http://www.opengis.net/def/crs/EPSG/0/4326"
}
},
"data": [
{
"dataFilter": {
"timeRange": {
"from": "2023-10-04T00:00:00Z",
"to": "2023-10-04T23:59:59Z"
}
},
"type": "byoc-c691479f-358c-46b1-b0f0-e12b70a9856c"
}
]
},
"output": {
"height": 2191,
"responses": [
{
"format": {
"type": "image/tiff"
},
"identifier": "default"
}
],
"width": 1971
}
},
"timestamp": "2023-10-10T11:45:01.042605",
"url": "https://services.sentinel-hub.com/api/v1/process"
},
"response": {
"elapsed": 5.668425,
"headers": {
"Connection": "keep-alive",
"Content-Type": "image/tiff",
"Date": "Tue, 10 Oct 2023 09:45:00 GMT",
"Transfer-Encoding": "chunked",
"access-control-allow-credentials": "true",
"access-control-allow-headers": "origin,content-type,accept,accept-crs,authorization,cache-control",
"access-control-allow-methods": "GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH",
"access-control-allow-origin": "*",
"access-control-max-age": "3600",
"x-processingunits-spent": "27.456034959410772"
},
"status_code": 200
}
}

View file

@ -1,65 +0,0 @@
{
"request": {
"headers": {
"accept": "image/tiff",
"content-type": "application/json"
},
"payload": {
"evalscript": "\n //VERSION=3\n\n function setup() {\n return {\n input: [{\n bands: [\"Blue\", \"Green\", \"Red\", \"NIR\", \"UDM\"]\n }],\n output: {\n bands: 5\n }\n };\n }\n\n function evaluatePixel(sample) {\n return [2.5 * sample.Blue / 10000, 2.5 * sample.Green / 10000, 2.5 * sample.Red / 10000, 2.5 * sample.NIR / 10000, sample.UDM];\n }\n",
"input": {
"bounds": {
"bbox": [
34.946,
-17.35,
34.9839,
-17.311
],
"properties": {
"crs": "http://www.opengis.net/def/crs/EPSG/0/4326"
}
},
"data": [
{
"dataFilter": {
"timeRange": {
"from": "2023-10-05T00:00:00Z",
"to": "2023-10-05T23:59:59Z"
}
},
"type": "byoc-c691479f-358c-46b1-b0f0-e12b70a9856c"
}
]
},
"output": {
"height": 1425,
"responses": [
{
"format": {
"type": "image/tiff"
},
"identifier": "default"
}
],
"width": 1358
}
},
"timestamp": "2023-10-10T11:45:13.161955",
"url": "https://services.sentinel-hub.com/api/v1/process"
},
"response": {
"elapsed": 2.723803,
"headers": {
"Connection": "keep-alive",
"Content-Type": "image/tiff",
"Date": "Tue, 10 Oct 2023 09:45:13 GMT",
"Transfer-Encoding": "chunked",
"access-control-allow-credentials": "true",
"access-control-allow-headers": "origin,content-type,accept,accept-crs,authorization,cache-control",
"access-control-allow-methods": "GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH",
"access-control-allow-origin": "*",
"access-control-max-age": "3600",
"x-processingunits-spent": "12.303352062622253"
},
"status_code": 200
}
}

View file

@ -1,65 +0,0 @@
{
"request": {
"headers": {
"accept": "image/tiff",
"content-type": "application/json"
},
"payload": {
"evalscript": "\n //VERSION=3\n\n function setup() {\n return {\n input: [{\n bands: [\"Blue\", \"Green\", \"Red\", \"NIR\", \"UDM\"]\n }],\n output: {\n bands: 5\n }\n };\n }\n\n function evaluatePixel(sample) {\n return [2.5 * sample.Blue / 10000, 2.5 * sample.Green / 10000, 2.5 * sample.Red / 10000, 2.5 * sample.NIR / 10000, sample.UDM];\n }\n",
"input": {
"bounds": {
"bbox": [
34.883,
-17.3516,
34.938,
-17.2917
],
"properties": {
"crs": "http://www.opengis.net/def/crs/EPSG/0/4326"
}
},
"data": [
{
"dataFilter": {
"timeRange": {
"from": "2023-10-05T00:00:00Z",
"to": "2023-10-05T23:59:59Z"
}
},
"type": "byoc-c691479f-358c-46b1-b0f0-e12b70a9856c"
}
]
},
"output": {
"height": 2191,
"responses": [
{
"format": {
"type": "image/tiff"
},
"identifier": "default"
}
],
"width": 1971
}
},
"timestamp": "2023-10-10T11:45:10.248784",
"url": "https://services.sentinel-hub.com/api/v1/process"
},
"response": {
"elapsed": 5.010186,
"headers": {
"Connection": "keep-alive",
"Content-Type": "image/tiff",
"Date": "Tue, 10 Oct 2023 09:45:10 GMT",
"Transfer-Encoding": "chunked",
"access-control-allow-credentials": "true",
"access-control-allow-headers": "origin,content-type,accept,accept-crs,authorization,cache-control",
"access-control-allow-methods": "GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH",
"access-control-allow-origin": "*",
"access-control-max-age": "3600",
"x-processingunits-spent": "27.456034959410772"
},
"status_code": 200
}
}

View file

@ -1,65 +0,0 @@
{
"request": {
"headers": {
"accept": "image/tiff",
"content-type": "application/json"
},
"payload": {
"evalscript": "\n //VERSION=3\n\n function setup() {\n return {\n input: [{\n bands: [\"Blue\", \"Green\", \"Red\", \"NIR\", \"UDM\"]\n }],\n output: {\n bands: 5\n }\n };\n }\n\n function evaluatePixel(sample) {\n return [2.5 * sample.Blue / 10000, 2.5 * sample.Green / 10000, 2.5 * sample.Red / 10000, 2.5 * sample.NIR / 10000, sample.UDM];\n }\n",
"input": {
"bounds": {
"bbox": [
34.946,
-17.35,
34.9839,
-17.311
],
"properties": {
"crs": "http://www.opengis.net/def/crs/EPSG/0/4326"
}
},
"data": [
{
"dataFilter": {
"timeRange": {
"from": "2023-10-06T00:00:00Z",
"to": "2023-10-06T23:59:59Z"
}
},
"type": "byoc-c691479f-358c-46b1-b0f0-e12b70a9856c"
}
]
},
"output": {
"height": 1425,
"responses": [
{
"format": {
"type": "image/tiff"
},
"identifier": "default"
}
],
"width": 1358
}
},
"timestamp": "2023-10-10T11:45:22.861847",
"url": "https://services.sentinel-hub.com/api/v1/process"
},
"response": {
"elapsed": 3.398991,
"headers": {
"Connection": "keep-alive",
"Content-Type": "image/tiff",
"Date": "Tue, 10 Oct 2023 09:45:22 GMT",
"Transfer-Encoding": "chunked",
"access-control-allow-credentials": "true",
"access-control-allow-headers": "origin,content-type,accept,accept-crs,authorization,cache-control",
"access-control-allow-methods": "GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH",
"access-control-allow-origin": "*",
"access-control-max-age": "3600",
"x-processingunits-spent": "12.303352062622253"
},
"status_code": 200
}
}

View file

@ -1,65 +0,0 @@
{
"request": {
"headers": {
"accept": "image/tiff",
"content-type": "application/json"
},
"payload": {
"evalscript": "\n //VERSION=3\n\n function setup() {\n return {\n input: [{\n bands: [\"Blue\", \"Green\", \"Red\", \"NIR\", \"UDM\"]\n }],\n output: {\n bands: 5\n }\n };\n }\n\n function evaluatePixel(sample) {\n return [2.5 * sample.Blue / 10000, 2.5 * sample.Green / 10000, 2.5 * sample.Red / 10000, 2.5 * sample.NIR / 10000, sample.UDM];\n }\n",
"input": {
"bounds": {
"bbox": [
34.883,
-17.3516,
34.938,
-17.2917
],
"properties": {
"crs": "http://www.opengis.net/def/crs/EPSG/0/4326"
}
},
"data": [
{
"dataFilter": {
"timeRange": {
"from": "2023-10-06T00:00:00Z",
"to": "2023-10-06T23:59:59Z"
}
},
"type": "byoc-c691479f-358c-46b1-b0f0-e12b70a9856c"
}
]
},
"output": {
"height": 2191,
"responses": [
{
"format": {
"type": "image/tiff"
},
"identifier": "default"
}
],
"width": 1971
}
},
"timestamp": "2023-10-10T11:45:19.247047",
"url": "https://services.sentinel-hub.com/api/v1/process"
},
"response": {
"elapsed": 5.512139,
"headers": {
"Connection": "keep-alive",
"Content-Type": "image/tiff",
"Date": "Tue, 10 Oct 2023 09:45:19 GMT",
"Transfer-Encoding": "chunked",
"access-control-allow-credentials": "true",
"access-control-allow-headers": "origin,content-type,accept,accept-crs,authorization,cache-control",
"access-control-allow-methods": "GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH",
"access-control-allow-origin": "*",
"access-control-max-age": "3600",
"x-processingunits-spent": "27.456034959410772"
},
"status_code": 200
}
}

View file

@ -1,65 +0,0 @@
{
"request": {
"headers": {
"accept": "image/tiff",
"content-type": "application/json"
},
"payload": {
"evalscript": "\n //VERSION=3\n\n function setup() {\n return {\n input: [{\n bands: [\"Blue\", \"Green\", \"Red\", \"NIR\", \"UDM\"]\n }],\n output: {\n bands: 5\n }\n };\n }\n\n function evaluatePixel(sample) {\n return [2.5 * sample.Blue / 10000, 2.5 * sample.Green / 10000, 2.5 * sample.Red / 10000, 2.5 * sample.NIR / 10000, sample.UDM];\n }\n",
"input": {
"bounds": {
"bbox": [
34.946,
-17.35,
34.9839,
-17.311
],
"properties": {
"crs": "http://www.opengis.net/def/crs/EPSG/0/4326"
}
},
"data": [
{
"dataFilter": {
"timeRange": {
"from": "2023-10-07T00:00:00Z",
"to": "2023-10-07T23:59:59Z"
}
},
"type": "byoc-c691479f-358c-46b1-b0f0-e12b70a9856c"
}
]
},
"output": {
"height": 1425,
"responses": [
{
"format": {
"type": "image/tiff"
},
"identifier": "default"
}
],
"width": 1358
}
},
"timestamp": "2023-10-10T11:45:28.996066",
"url": "https://services.sentinel-hub.com/api/v1/process"
},
"response": {
"elapsed": 1.55439,
"headers": {
"Connection": "keep-alive",
"Content-Type": "image/tiff",
"Date": "Tue, 10 Oct 2023 09:45:29 GMT",
"Transfer-Encoding": "chunked",
"access-control-allow-credentials": "true",
"access-control-allow-headers": "origin,content-type,accept,accept-crs,authorization,cache-control",
"access-control-allow-methods": "GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH",
"access-control-allow-origin": "*",
"access-control-max-age": "3600",
"x-processingunits-spent": "12.303352062622253"
},
"status_code": 200
}
}

View file

@ -1,65 +0,0 @@
{
"request": {
"headers": {
"accept": "image/tiff",
"content-type": "application/json"
},
"payload": {
"evalscript": "\n //VERSION=3\n\n function setup() {\n return {\n input: [{\n bands: [\"Blue\", \"Green\", \"Red\", \"NIR\", \"UDM\"]\n }],\n output: {\n bands: 5\n }\n };\n }\n\n function evaluatePixel(sample) {\n return [2.5 * sample.Blue / 10000, 2.5 * sample.Green / 10000, 2.5 * sample.Red / 10000, 2.5 * sample.NIR / 10000, sample.UDM];\n }\n",
"input": {
"bounds": {
"bbox": [
34.883,
-17.3516,
34.938,
-17.2917
],
"properties": {
"crs": "http://www.opengis.net/def/crs/EPSG/0/4326"
}
},
"data": [
{
"dataFilter": {
"timeRange": {
"from": "2023-10-07T00:00:00Z",
"to": "2023-10-07T23:59:59Z"
}
},
"type": "byoc-c691479f-358c-46b1-b0f0-e12b70a9856c"
}
]
},
"output": {
"height": 2191,
"responses": [
{
"format": {
"type": "image/tiff"
},
"identifier": "default"
}
],
"width": 1971
}
},
"timestamp": "2023-10-10T11:45:27.401614",
"url": "https://services.sentinel-hub.com/api/v1/process"
},
"response": {
"elapsed": 4.002806,
"headers": {
"Connection": "keep-alive",
"Content-Type": "image/tiff",
"Date": "Tue, 10 Oct 2023 09:45:27 GMT",
"Transfer-Encoding": "chunked",
"access-control-allow-credentials": "true",
"access-control-allow-headers": "origin,content-type,accept,accept-crs,authorization,cache-control",
"access-control-allow-methods": "GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH",
"access-control-allow-origin": "*",
"access-control-max-age": "3600",
"x-processingunits-spent": "27.456034959410772"
},
"status_code": 200
}
}

View file

@ -1,65 +0,0 @@
{
"request": {
"headers": {
"accept": "image/tiff",
"content-type": "application/json"
},
"payload": {
"evalscript": "\n //VERSION=3\n\n function setup() {\n return {\n input: [{\n bands: [\"Blue\", \"Green\", \"Red\", \"NIR\", \"UDM\"]\n }],\n output: {\n bands: 5\n }\n };\n }\n\n function evaluatePixel(sample) {\n return [2.5 * sample.Blue / 10000, 2.5 * sample.Green / 10000, 2.5 * sample.Red / 10000, 2.5 * sample.NIR / 10000, sample.UDM];\n }\n",
"input": {
"bounds": {
"bbox": [
34.946,
-17.35,
34.9839,
-17.311
],
"properties": {
"crs": "http://www.opengis.net/def/crs/EPSG/0/4326"
}
},
"data": [
{
"dataFilter": {
"timeRange": {
"from": "2023-10-08T00:00:00Z",
"to": "2023-10-08T23:59:59Z"
}
},
"type": "byoc-c691479f-358c-46b1-b0f0-e12b70a9856c"
}
]
},
"output": {
"height": 1425,
"responses": [
{
"format": {
"type": "image/tiff"
},
"identifier": "default"
}
],
"width": 1358
}
},
"timestamp": "2023-10-10T11:45:36.491864",
"url": "https://services.sentinel-hub.com/api/v1/process"
},
"response": {
"elapsed": 3.551305,
"headers": {
"Connection": "keep-alive",
"Content-Type": "image/tiff",
"Date": "Tue, 10 Oct 2023 09:45:36 GMT",
"Transfer-Encoding": "chunked",
"access-control-allow-credentials": "true",
"access-control-allow-headers": "origin,content-type,accept,accept-crs,authorization,cache-control",
"access-control-allow-methods": "GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH",
"access-control-allow-origin": "*",
"access-control-max-age": "3600",
"x-processingunits-spent": "12.303352062622253"
},
"status_code": 200
}
}

View file

@ -1,65 +0,0 @@
{
"request": {
"headers": {
"accept": "image/tiff",
"content-type": "application/json"
},
"payload": {
"evalscript": "\n //VERSION=3\n\n function setup() {\n return {\n input: [{\n bands: [\"Blue\", \"Green\", \"Red\", \"NIR\", \"UDM\"]\n }],\n output: {\n bands: 5\n }\n };\n }\n\n function evaluatePixel(sample) {\n return [2.5 * sample.Blue / 10000, 2.5 * sample.Green / 10000, 2.5 * sample.Red / 10000, 2.5 * sample.NIR / 10000, sample.UDM];\n }\n",
"input": {
"bounds": {
"bbox": [
34.883,
-17.3516,
34.938,
-17.2917
],
"properties": {
"crs": "http://www.opengis.net/def/crs/EPSG/0/4326"
}
},
"data": [
{
"dataFilter": {
"timeRange": {
"from": "2023-10-08T00:00:00Z",
"to": "2023-10-08T23:59:59Z"
}
},
"type": "byoc-c691479f-358c-46b1-b0f0-e12b70a9856c"
}
]
},
"output": {
"height": 2191,
"responses": [
{
"format": {
"type": "image/tiff"
},
"identifier": "default"
}
],
"width": 1971
}
},
"timestamp": "2023-10-10T11:45:32.725291",
"url": "https://services.sentinel-hub.com/api/v1/process"
},
"response": {
"elapsed": 3.128947,
"headers": {
"Connection": "keep-alive",
"Content-Type": "image/tiff",
"Date": "Tue, 10 Oct 2023 09:45:32 GMT",
"Transfer-Encoding": "chunked",
"access-control-allow-credentials": "true",
"access-control-allow-headers": "origin,content-type,accept,accept-crs,authorization,cache-control",
"access-control-allow-methods": "GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH",
"access-control-allow-origin": "*",
"access-control-max-age": "3600",
"x-processingunits-spent": "27.456034959410772"
},
"status_code": 200
}
}

View file

@ -1,65 +0,0 @@
{
"request": {
"headers": {
"accept": "image/tiff",
"content-type": "application/json"
},
"payload": {
"evalscript": "\n //VERSION=3\n\n function setup() {\n return {\n input: [{\n bands: [\"Blue\", \"Green\", \"Red\", \"NIR\", \"UDM\"]\n }],\n output: {\n bands: 5\n }\n };\n }\n\n function evaluatePixel(sample) {\n return [2.5 * sample.Blue / 10000, 2.5 * sample.Green / 10000, 2.5 * sample.Red / 10000, 2.5 * sample.NIR / 10000, sample.UDM];\n }\n",
"input": {
"bounds": {
"bbox": [
34.946,
-17.35,
34.9839,
-17.311
],
"properties": {
"crs": "http://www.opengis.net/def/crs/EPSG/0/4326"
}
},
"data": [
{
"dataFilter": {
"timeRange": {
"from": "2023-10-09T00:00:00Z",
"to": "2023-10-09T23:59:59Z"
}
},
"type": "byoc-c691479f-358c-46b1-b0f0-e12b70a9856c"
}
]
},
"output": {
"height": 1425,
"responses": [
{
"format": {
"type": "image/tiff"
},
"identifier": "default"
}
],
"width": 1358
}
},
"timestamp": "2023-10-10T11:45:46.392453",
"url": "https://services.sentinel-hub.com/api/v1/process"
},
"response": {
"elapsed": 3.275898,
"headers": {
"Connection": "keep-alive",
"Content-Type": "image/tiff",
"Date": "Tue, 10 Oct 2023 09:45:46 GMT",
"Transfer-Encoding": "chunked",
"access-control-allow-credentials": "true",
"access-control-allow-headers": "origin,content-type,accept,accept-crs,authorization,cache-control",
"access-control-allow-methods": "GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH",
"access-control-allow-origin": "*",
"access-control-max-age": "3600",
"x-processingunits-spent": "12.303352062622253"
},
"status_code": 200
}
}

View file

@ -1,65 +0,0 @@
{
"request": {
"headers": {
"accept": "image/tiff",
"content-type": "application/json"
},
"payload": {
"evalscript": "\n //VERSION=3\n\n function setup() {\n return {\n input: [{\n bands: [\"Blue\", \"Green\", \"Red\", \"NIR\", \"UDM\"]\n }],\n output: {\n bands: 5\n }\n };\n }\n\n function evaluatePixel(sample) {\n return [2.5 * sample.Blue / 10000, 2.5 * sample.Green / 10000, 2.5 * sample.Red / 10000, 2.5 * sample.NIR / 10000, sample.UDM];\n }\n",
"input": {
"bounds": {
"bbox": [
34.883,
-17.3516,
34.938,
-17.2917
],
"properties": {
"crs": "http://www.opengis.net/def/crs/EPSG/0/4326"
}
},
"data": [
{
"dataFilter": {
"timeRange": {
"from": "2023-10-09T00:00:00Z",
"to": "2023-10-09T23:59:59Z"
}
},
"type": "byoc-c691479f-358c-46b1-b0f0-e12b70a9856c"
}
]
},
"output": {
"height": 2191,
"responses": [
{
"format": {
"type": "image/tiff"
},
"identifier": "default"
}
],
"width": 1971
}
},
"timestamp": "2023-10-10T11:45:42.824171",
"url": "https://services.sentinel-hub.com/api/v1/process"
},
"response": {
"elapsed": 5.59089,
"headers": {
"Connection": "keep-alive",
"Content-Type": "image/tiff",
"Date": "Tue, 10 Oct 2023 09:45:42 GMT",
"Transfer-Encoding": "chunked",
"access-control-allow-credentials": "true",
"access-control-allow-headers": "origin,content-type,accept,accept-crs,authorization,cache-control",
"access-control-allow-methods": "GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH",
"access-control-allow-origin": "*",
"access-control-max-age": "3600",
"x-processingunits-spent": "27.456034959410772"
},
"status_code": 200
}
}

View file

@ -1,65 +0,0 @@
{
"request": {
"headers": {
"accept": "image/tiff",
"content-type": "application/json"
},
"payload": {
"evalscript": "\n //VERSION=3\n\n function setup() {\n return {\n input: [{\n bands: [\"Blue\", \"Green\", \"Red\", \"NIR\", \"UDM\"]\n }],\n output: {\n bands: 5\n }\n };\n }\n\n function evaluatePixel(sample) {\n return [2.5 * sample.Blue / 10000, 2.5 * sample.Green / 10000, 2.5 * sample.Red / 10000, 2.5 * sample.NIR / 10000, sample.UDM];\n }\n",
"input": {
"bounds": {
"bbox": [
34.946,
-17.35,
34.9839,
-17.311
],
"properties": {
"crs": "http://www.opengis.net/def/crs/EPSG/0/4326"
}
},
"data": [
{
"dataFilter": {
"timeRange": {
"from": "2023-10-10T00:00:00Z",
"to": "2023-10-10T23:59:59Z"
}
},
"type": "byoc-c691479f-358c-46b1-b0f0-e12b70a9856c"
}
]
},
"output": {
"height": 1425,
"responses": [
{
"format": {
"type": "image/tiff"
},
"identifier": "default"
}
],
"width": 1358
}
},
"timestamp": "2023-10-10T11:45:51.259003",
"url": "https://services.sentinel-hub.com/api/v1/process"
},
"response": {
"elapsed": 1.552932,
"headers": {
"Connection": "keep-alive",
"Content-Type": "image/tiff",
"Date": "Tue, 10 Oct 2023 09:45:51 GMT",
"Transfer-Encoding": "chunked",
"access-control-allow-credentials": "true",
"access-control-allow-headers": "origin,content-type,accept,accept-crs,authorization,cache-control",
"access-control-allow-methods": "GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH",
"access-control-allow-origin": "*",
"access-control-max-age": "3600",
"x-processingunits-spent": "12.303352062622253"
},
"status_code": 200
}
}

View file

@ -1,65 +0,0 @@
{
"request": {
"headers": {
"accept": "image/tiff",
"content-type": "application/json"
},
"payload": {
"evalscript": "\n //VERSION=3\n\n function setup() {\n return {\n input: [{\n bands: [\"Blue\", \"Green\", \"Red\", \"NIR\", \"UDM\"]\n }],\n output: {\n bands: 5\n }\n };\n }\n\n function evaluatePixel(sample) {\n return [2.5 * sample.Blue / 10000, 2.5 * sample.Green / 10000, 2.5 * sample.Red / 10000, 2.5 * sample.NIR / 10000, sample.UDM];\n }\n",
"input": {
"bounds": {
"bbox": [
34.883,
-17.3516,
34.938,
-17.2917
],
"properties": {
"crs": "http://www.opengis.net/def/crs/EPSG/0/4326"
}
},
"data": [
{
"dataFilter": {
"timeRange": {
"from": "2023-10-10T00:00:00Z",
"to": "2023-10-10T23:59:59Z"
}
},
"type": "byoc-c691479f-358c-46b1-b0f0-e12b70a9856c"
}
]
},
"output": {
"height": 2191,
"responses": [
{
"format": {
"type": "image/tiff"
},
"identifier": "default"
}
],
"width": 1971
}
},
"timestamp": "2023-10-10T11:45:49.667010",
"url": "https://services.sentinel-hub.com/api/v1/process"
},
"response": {
"elapsed": 2.734391,
"headers": {
"Connection": "keep-alive",
"Content-Type": "image/tiff",
"Date": "Tue, 10 Oct 2023 09:45:49 GMT",
"Transfer-Encoding": "chunked",
"access-control-allow-credentials": "true",
"access-control-allow-headers": "origin,content-type,accept,accept-crs,authorization,cache-control",
"access-control-allow-methods": "GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH",
"access-control-allow-origin": "*",
"access-control-max-age": "3600",
"x-processingunits-spent": "27.456034959410772"
},
"status_code": 200
}
}

34
runpython.sh Executable file
View file

@ -0,0 +1,34 @@
#!/bin/bash
# Standaardwaarde voor days
days=7
# Loop door alle argumenten
for arg in "$@"
do
case $arg in
--days=*)
days="${arg#*=}"
shift # Verwijder --days=5 van $@
;;
*)
# Andere argumenten die je wilt verwerken
shift
;;
esac
done
# Gebruik de variabele in je script
echo "Aantal dagen: $days"
# Activeer de virtuele omgeving
script_dir="$(dirname "$0")"
source "$script_dir/python_app/myenv/bin/activate"
export DAYS=$days
# Hier kan je verdere stappen toevoegen, zoals het uitvoeren van je Python-script of Jupyter Notebook
jupyter nbconvert --execute --to script --stdout "$script_dir/python_app/Chemba_download.ipynb"
# Deactiveer de virtuele omgeving (optioneel)
deactivate

View file

@ -3,23 +3,24 @@
# Definieer de directories die aangemaakt moeten worden # Definieer de directories die aangemaakt moeten worden
declare -a dirs=( declare -a dirs=(
"laravel_app/storage/app/extracted_ci/cumulative_vals" "./laravel_app/storage/app/extracted_ci/cumulative_vals"
"laravel_app/storage/app/chemba/merged_tif" "./laravel_app/storage/app/chemba/merged_tif"
"laravel_app/storage/app/chemba/merged_virtual" "./laravel_app/storage/app/chemba/merged_virtual"
"laravel_app/storage/app/chemba/single_images" "./laravel_app/storage/app/chemba/single_images"
) )
# #
## Loop door de directories en maak ze aan als ze nog niet bestaan, ## Loop door de directories en maak ze aan als ze nog niet bestaan,
## of maak ze leeg als ze al bestaan ## of maak ze leeg als ze al bestaan
for dir in "${dirs[@]}"; do for dir in "${dirs[@]}"; do
if [ ! -d "$dir" ]; then if [ ! file -d "$dir" ]; then
mkdir -p "$dir" mkdir -p "$dir"
chmod -R 775 "$dir" chmod -R 775 "$dir"
echo "Directory $dir is aangemaakt en bijgewerkt." echo "Directory $dir is aangemaakt en bijgewerkt."
else else
# Verwijder alle inhoud binnen de bestaande directory # Verwijder alle inhoud binnen de bestaande directory
find "$dir" -mindepth 1 -delete # find "$dir" -mindepth 1 -delete
echo "Inhoud van directory $dir is verwijderd." #echo "Inhoud van directory $dir is verwijderd."
echo "Directory $dir bestaat al."
fi fi
done done
## Runnen van Jupyter Notebook ## Runnen van Jupyter Notebook
@ -38,13 +39,16 @@ fi
source "$VENV_DIR/bin/activate" source "$VENV_DIR/bin/activate"
# Installeer of update de benodigde pakketten # Installeer of update de benodigde pakketten
if [ -f "python_app/requirements.txt" ]; then OS=$(uname | tr '[:upper:]' '[:lower:]') # Dit zet de uitvoer om naar lowercase
echo "Requirements aan het installeren of bijwerken..." REQUIREMENTS_PATH="python_app/requirements_${OS}.txt"
pip install --upgrade -r python_app/requirements.txt
else if [[ ! -f $REQUIREMENTS_PATH ]]; then
echo "Geen requirements.txt bestand gevonden." echo "Requirements bestand niet gevonden voor besturingssysteem: $OS"
exit 1
fi fi
pip install --upgrade -r $REQUIREMENTS_PATH
# Hier kan je verdere stappen toevoegen, zoals het uitvoeren van je Python-script of Jupyter Notebook # Hier kan je verdere stappen toevoegen, zoals het uitvoeren van je Python-script of Jupyter Notebook
# Deactiveer de virtuele omgeving (optioneel) # Deactiveer de virtuele omgeving (optioneel)
deactivate deactivate