creation of structure and implementation of dynamic and responsive graphics for the project in progress
This commit is contained in:
parent
2ddc55eeed
commit
4f0b53a49d
|
|
@ -26,7 +26,7 @@ public function receiveExecutionProject($ProjectId)
|
||||||
$equipmentsTypes = EquipmentType::all();
|
$equipmentsTypes = EquipmentType::all();
|
||||||
|
|
||||||
// return view('projectsClients/executionProject')
|
// return view('projectsClients/executionProject')
|
||||||
return view('projectsClients/executionProject')
|
return view('projectsClients/executionProjectNew')
|
||||||
->with('DatasProject', $DatasProject)
|
->with('DatasProject', $DatasProject)
|
||||||
->with('equipmentsTypes', $equipmentsTypes);
|
->with('equipmentsTypes', $equipmentsTypes);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,9 @@
|
||||||
use App\Models\TasksAssociationAmbits;
|
use App\Models\TasksAssociationAmbits;
|
||||||
use App\Models\FurtherTasks;
|
use App\Models\FurtherTasks;
|
||||||
|
|
||||||
|
// Chama o Repositorio para amazenar as variaveis e depois conseguir chamar facilmente sem precisar de sessao.
|
||||||
|
use App\Repositories\ReceiveTasksRepository;
|
||||||
|
|
||||||
class SelectElementalTasksInWonkstation extends Component
|
class SelectElementalTasksInWonkstation extends Component
|
||||||
{
|
{
|
||||||
public $workstation;
|
public $workstation;
|
||||||
|
|
@ -104,6 +107,11 @@ public function mount($workstation)
|
||||||
'receiveAllFurtherTasks' => $this->receiveAllFurtherTasks,
|
'receiveAllFurtherTasks' => $this->receiveAllFurtherTasks,
|
||||||
'receiveElementalTasks' => $this->receiveElementalTasks,
|
'receiveElementalTasks' => $this->receiveElementalTasks,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
$receiveTasksRepository = app(ReceiveTasksRepository::class);
|
||||||
|
// Chama a variavel do Repositorio para amazenar a variavel e depois conseguir chamar facilmente.
|
||||||
|
$receiveTasksRepository->setElementalTasks($this->receiveElementalTasks);
|
||||||
|
$receiveTasksRepository->setFurtherTasks($this->receiveAllFurtherTasks);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function render()
|
public function render()
|
||||||
|
|
|
||||||
143
app/Livewire/Execução/EquipmentsDashboard.php
Normal file
143
app/Livewire/Execução/EquipmentsDashboard.php
Normal file
|
|
@ -0,0 +1,143 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Livewire\Execução;
|
||||||
|
|
||||||
|
use Livewire\Component;
|
||||||
|
use Livewire\Exceptions\PublicPropertyNotFoundException;
|
||||||
|
use App\Models\Equipment;
|
||||||
|
use App\Models\GeneralAttributesEquipment;
|
||||||
|
use App\Models\OrderEquipmentTasks;
|
||||||
|
use App\Models\ControlEquipmentWorkstation;
|
||||||
|
|
||||||
|
use Spatie\LaravelIgnition\Recorders\DumpRecorder\Dump;
|
||||||
|
|
||||||
|
class EquipmentsDashboard extends Component
|
||||||
|
{
|
||||||
|
public $totalEquipmentsCount;
|
||||||
|
public $unstarted;
|
||||||
|
public $inProgress;
|
||||||
|
public $completed;
|
||||||
|
|
||||||
|
public $totalEquivalentEquipment;
|
||||||
|
public $equivalentUnstarted;
|
||||||
|
public $equivalentInProgress;
|
||||||
|
public $equivalentCompleted;
|
||||||
|
|
||||||
|
public $datasProject;
|
||||||
|
public $lastUpdated;
|
||||||
|
|
||||||
|
|
||||||
|
public function mount($datasProject)
|
||||||
|
{
|
||||||
|
$this->datasProject = $datasProject;
|
||||||
|
|
||||||
|
$this->lastUpdated = now()->format('Y-m-d H:i');
|
||||||
|
|
||||||
|
|
||||||
|
// chama a funcao e envia a variavel datasProject recebido da view principal
|
||||||
|
$this->refreshDataEquipments($datasProject);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function updateTimeGrafics()
|
||||||
|
{
|
||||||
|
// $this->lastUpdated = now()->toDateTimeString();
|
||||||
|
$this->lastUpdated = now()->format('Y-m-d H:i');
|
||||||
|
|
||||||
|
|
||||||
|
// Chame o método para atualizar os dados dos gráficos
|
||||||
|
$this->refreshDataEquipments($this->datasProject);
|
||||||
|
|
||||||
|
// Disparar um evento com os dados atualizados
|
||||||
|
$this->dispatch('refreshData', [
|
||||||
|
'totalEquipmentsCount' => $this->totalEquipmentsCount,
|
||||||
|
'unstarted' => $this->unstarted,
|
||||||
|
'inProgress' => $this->inProgress,
|
||||||
|
'completed' => $this->completed,
|
||||||
|
'totalEquivalentEquipment' => $this->totalEquivalentEquipment,
|
||||||
|
'equivalentUnstarted' => $this->equivalentUnstarted,
|
||||||
|
'equivalentInProgress' => $this->equivalentInProgress,
|
||||||
|
'equivalentCompleted' => $this->equivalentCompleted,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Por tipo de equipamento,
|
||||||
|
|
||||||
|
// Por Fabrica
|
||||||
|
|
||||||
|
//Porcentagem
|
||||||
|
public function showPercentageEquipments()
|
||||||
|
{
|
||||||
|
// Disparar um evento com os dados atualizados
|
||||||
|
$this->dispatch('refreshPercentageEquipments', [
|
||||||
|
'totalEquipmentsCount' => $this->totalEquipmentsCount,
|
||||||
|
'unstarted' => $this->unstarted,
|
||||||
|
'inProgress' => $this->inProgress,
|
||||||
|
'completed' => $this->completed,
|
||||||
|
'totalEquivalentEquipment' => $this->totalEquivalentEquipment,
|
||||||
|
'equivalentUnstarted' => $this->equivalentUnstarted,
|
||||||
|
'equivalentInProgress' => $this->equivalentInProgress,
|
||||||
|
'equivalentCompleted' => $this->equivalentCompleted,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function refreshDataEquipments($datasProject)
|
||||||
|
{
|
||||||
|
|
||||||
|
// Inicializa a zero o contador para toda a vez que atualizar.
|
||||||
|
$this->completed = 0;
|
||||||
|
$this->inProgress = 0;
|
||||||
|
$this->unstarted = 0;
|
||||||
|
$this->equivalentCompleted = 0;
|
||||||
|
$this->equivalentInProgress = 0;
|
||||||
|
$this->equivalentUnstarted = 0;
|
||||||
|
|
||||||
|
|
||||||
|
$totalEquipments = Equipment::where('company_projects_id', $datasProject->company_projects_id)->get();
|
||||||
|
// Busca o valor total de todos os equipamentos encontrados
|
||||||
|
$this->totalEquipmentsCount = $totalEquipments->count();
|
||||||
|
|
||||||
|
$equipmentCounts = [];
|
||||||
|
|
||||||
|
foreach ($totalEquipments as $equipment) {
|
||||||
|
|
||||||
|
// Conta quantas vezes o equipamento aparece em OrderEquipmentTasks
|
||||||
|
$tasksCount = OrderEquipmentTasks::where('equipment_id', $equipment->equipment_id)->count();
|
||||||
|
|
||||||
|
// ira receber varios dados para o array sendo array[key:equipment_id,valor:quantidade de vezes que o equipment_id se repete na tabela 'OrderEquipmentTasks']
|
||||||
|
$equipmentCounts[$equipment->equipment_id] = $tasksCount;
|
||||||
|
|
||||||
|
// Verifica quantos dados tem para o mesmo equipamento, resumindo quantas tarefas ja vez e seu circuito ao longo de seu Ambito
|
||||||
|
$controlCount = ControlEquipmentWorkstation::where('equipment_id', $equipment->equipment_id)->count();
|
||||||
|
|
||||||
|
// Verifica inicialmente se a quantido de vezes que tal equipamento apacere na ControlEquipmentWorkstation e o mesmo numero de vezes que aparece na tabela : OrderEquipmentTasks
|
||||||
|
// Isto para ver se o ciclo foi correto sem retornos se os 2 valores forem iguais significa que o equipamento foi concluido.
|
||||||
|
if (
|
||||||
|
$controlCount >= $tasksCount && ControlEquipmentWorkstation::where('equipment_id', $equipment->equipment_id)
|
||||||
|
|
||||||
|
// apos receber ambos os numeros se as colunas 'entry_date' e 'departure_date' forem diferente de Null significa que o equipamento foi concluido
|
||||||
|
->whereNotNull('entry_date')
|
||||||
|
->whereNotNull('departure_date')
|
||||||
|
->count() >= $tasksCount
|
||||||
|
) {
|
||||||
|
// se o equipamento foi considerado concluido, conta +1 para o completed e o equivalentCompleted busca no array equipmentCounts, quando a key for igual ao equipment_id atual e conta com + os valores da key encontrada
|
||||||
|
$this->completed++;
|
||||||
|
$this->equivalentCompleted += $equipmentCounts[$equipment->equipment_id];
|
||||||
|
} elseif (ControlEquipmentWorkstation::where('equipment_id', $equipment->equipment_id)->exists()) {
|
||||||
|
$this->inProgress++;
|
||||||
|
$this->equivalentInProgress += $equipmentCounts[$equipment->equipment_id];
|
||||||
|
} else {
|
||||||
|
$this->unstarted++;
|
||||||
|
$this->equivalentUnstarted += $equipmentCounts[$equipment->equipment_id];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Busca o valor total de todas as ocorrências criadas na variavel equipmentCounts
|
||||||
|
$this->totalEquivalentEquipment = array_sum($equipmentCounts);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function render()
|
||||||
|
{
|
||||||
|
return view('livewire.execução.equipments-dashboard');
|
||||||
|
}
|
||||||
|
}
|
||||||
142
app/Livewire/Execução/TasksDashboard.php
Normal file
142
app/Livewire/Execução/TasksDashboard.php
Normal file
|
|
@ -0,0 +1,142 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Livewire\Execução;
|
||||||
|
|
||||||
|
use App\Models\Equipment;
|
||||||
|
use App\Models\OrderEquipmentTasks;
|
||||||
|
use App\Models\ControlEquipmentWorkstation;
|
||||||
|
use App\Models\ElementalTasks;
|
||||||
|
|
||||||
|
use Livewire\Component;
|
||||||
|
|
||||||
|
use App\Repositories\ReceiveTasksRepository;
|
||||||
|
|
||||||
|
class TasksDashboard extends Component
|
||||||
|
{
|
||||||
|
public $datasProject;
|
||||||
|
// protected $receiveTasksRepository;
|
||||||
|
|
||||||
|
public $receiveElementalTasks; // Recebe todas as acoes ja feitas atualmente por tarefa
|
||||||
|
public $receiveElementalTasksAll;// Recebe o total de tarefas que vamos fazer
|
||||||
|
|
||||||
|
|
||||||
|
// Por enquanto nao ira usar, vamos deixar
|
||||||
|
// public $receiveAllFurtherTasks;
|
||||||
|
|
||||||
|
public $lastUpdated;
|
||||||
|
|
||||||
|
// Deveria funcionar para receber o Repositorio.
|
||||||
|
// public function initialize()
|
||||||
|
// {
|
||||||
|
// // Injetar o repositório
|
||||||
|
// $this->receiveTasksRepository = app(ReceiveTasksRepository::class);
|
||||||
|
|
||||||
|
// // Agora você pode usar o repositório
|
||||||
|
// $this->receiveElementalTasks = $this->receiveTasksRepository->getElementalTasks();
|
||||||
|
// $this->receiveAllFurtherTasks = $this->receiveTasksRepository->getFurtherTasks();
|
||||||
|
// }
|
||||||
|
|
||||||
|
public function updateTimeGrafics()
|
||||||
|
{
|
||||||
|
// Data atual
|
||||||
|
$this->lastUpdated = now()->toDateTimeString();
|
||||||
|
|
||||||
|
// Chame o método para atualizar os dados dos gráficos
|
||||||
|
$this->refreshDataEquipments($this->datasProject);
|
||||||
|
|
||||||
|
// Disparar um evento com os dados atualizados
|
||||||
|
$this->dispatch('refreshData', [
|
||||||
|
'receiveElementalTasks' => $this->receiveElementalTasks,
|
||||||
|
'receiveElementalTasksAll' => $this->receiveElementalTasksAll,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Graficos de porcentagem entre o valor atual de finalizadas com valor final de quantas faltam
|
||||||
|
public function showPercentageElementalTasks()
|
||||||
|
{
|
||||||
|
// Disparar um evento com os dados atualizados
|
||||||
|
$this->dispatch('refreshPercentageElementalTasks', [
|
||||||
|
'receiveElementalTasks' => $this->receiveElementalTasks,
|
||||||
|
'receiveElementalTasksAll' => $this->receiveElementalTasksAll,
|
||||||
|
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public function mount($datasProject)
|
||||||
|
{
|
||||||
|
$this->datasProject = $datasProject;
|
||||||
|
|
||||||
|
// Obter todos os equipamentos relacionados ao projeto
|
||||||
|
$receiveEquipmentsProject = Equipment::where('company_projects_id', $datasProject->company_projects_id)->get();
|
||||||
|
|
||||||
|
$elementalTasks = collect();
|
||||||
|
$furtherTasks = collect();
|
||||||
|
|
||||||
|
// Total de tarefas na Obra.
|
||||||
|
$elementalTasksCountsAll = [];
|
||||||
|
|
||||||
|
foreach ($receiveEquipmentsProject as $equipment) {
|
||||||
|
// Obter todas as OrderEquipmentTasks relacionadas a este equipamento
|
||||||
|
$relatedTasks = OrderEquipmentTasks::where('equipment_id', $equipment->equipment_id)->get();
|
||||||
|
|
||||||
|
// Filtrar e armazenar os IDs únicos de elemental_tasks_id e further_tasks_id
|
||||||
|
$elementalTasks = $elementalTasks->merge($relatedTasks->whereNotNull('elemental_tasks_id')->pluck('elemental_tasks_id'))->unique();
|
||||||
|
$furtherTasks = $furtherTasks->merge($relatedTasks->whereNotNull('further_tasks_id')->pluck('further_tasks_id'))->unique();
|
||||||
|
|
||||||
|
// Agrupar as tasks relacionadas por elemental_tasks_id e contar o número de ocorrências
|
||||||
|
$groupedTasks = $relatedTasks->whereNotNull('elemental_tasks_id')->groupBy('elemental_tasks_id');
|
||||||
|
|
||||||
|
foreach ($groupedTasks as $taskId => $tasksGroup) {
|
||||||
|
if (isset($elementalTasksCountsAll[$taskId])) {
|
||||||
|
$elementalTasksCountsAll[$taskId] += count($tasksGroup);
|
||||||
|
} else {
|
||||||
|
$elementalTasksCountsAll[$taskId] = count($tasksGroup);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$this->receiveElementalTasksAll = $elementalTasksCountsAll;
|
||||||
|
|
||||||
|
// Contar o número de ocorrências de cada ID na tabela ControlEquipmentWorkstation
|
||||||
|
$elementalTasksCount1 = ControlEquipmentWorkstation::whereIn('elemental_tasks_id', $elementalTasks)->get()->countBy('elemental_tasks_id');
|
||||||
|
$furtherTasksCount1 = ControlEquipmentWorkstation::whereIn('further_tasks_id', $furtherTasks)->get()->countBy('further_tasks_id');
|
||||||
|
|
||||||
|
$newArray = [];
|
||||||
|
|
||||||
|
foreach ($elementalTasksCount1 as $taskId => $count) {
|
||||||
|
$task = ElementalTasks::find($taskId);
|
||||||
|
if ($task) {
|
||||||
|
$newArray[$task->elemental_tasks_code] = $count;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->receiveElementalTasks = $newArray;
|
||||||
|
|
||||||
|
$newArray1 = [];
|
||||||
|
|
||||||
|
foreach ($this->receiveElementalTasksAll as $taskId1 => $count) {
|
||||||
|
$task1 = ElementalTasks::find($taskId1);
|
||||||
|
if ($task1) {
|
||||||
|
$newArray1[$task1->elemental_tasks_code] = $count;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Agora, $newArray contém a contagem de tasks por elemental_tasks_code
|
||||||
|
$this->receiveElementalTasksAll = $newArray1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public function refreshDataEquipments($datasProject)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public function render()
|
||||||
|
{
|
||||||
|
return view('livewire.execução.tasks-dashboard');
|
||||||
|
}
|
||||||
|
}
|
||||||
80
app/Livewire/Execução/WorkstationDashboard.php
Normal file
80
app/Livewire/Execução/WorkstationDashboard.php
Normal file
|
|
@ -0,0 +1,80 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Livewire\Execução;
|
||||||
|
|
||||||
|
use Livewire\Component;
|
||||||
|
use App\Models\ControlEquipmentWorkstation;
|
||||||
|
use App\Models\ConstructionWorkstation;
|
||||||
|
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
|
||||||
|
class WorkstationDashboard extends Component
|
||||||
|
{
|
||||||
|
public $receivefnishTasksInWorkstation;
|
||||||
|
|
||||||
|
public $test = 'batata';
|
||||||
|
|
||||||
|
public function mount()
|
||||||
|
{
|
||||||
|
// Obtendo todos os registros onde entry_date e departure_date não são nulos
|
||||||
|
$validWorkstations = ControlEquipmentWorkstation::whereNotNull('entry_date')
|
||||||
|
->whereNotNull('departure_date')
|
||||||
|
->get();
|
||||||
|
|
||||||
|
// Inicializando um array para armazenar a contagem
|
||||||
|
// $workstationCounts = [];
|
||||||
|
|
||||||
|
// // Iterando sobre os registros válidos
|
||||||
|
// foreach ($validWorkstations as $workstation) {
|
||||||
|
// // Obtendo o id_workstations do registro atual
|
||||||
|
// $workstationId = $workstation->id_workstations;
|
||||||
|
|
||||||
|
// // Se o id_workstations já existe no array, incrementa o contador, senão, inicializa com 1
|
||||||
|
// if (isset($workstationCounts[$workstationId])) {
|
||||||
|
// $workstationCounts[$workstationId]++;
|
||||||
|
// } else {
|
||||||
|
// $workstationCounts[$workstationId] = 1;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// dump($workstationCounts);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
$workstationCounts = ControlEquipmentWorkstation::select('id_workstations', DB::raw('count(*) as count'))
|
||||||
|
->whereNotNull('id_workstations')
|
||||||
|
->whereNotNull('entry_date')
|
||||||
|
->whereNotNull('departure_date')
|
||||||
|
->groupBy('id_workstations')
|
||||||
|
->get()
|
||||||
|
->pluck('count', 'id_workstations')
|
||||||
|
->toArray();
|
||||||
|
|
||||||
|
$receiveNameWK = [];
|
||||||
|
|
||||||
|
foreach ($workstationCounts as $wkId1 => $count) {
|
||||||
|
$wkId1 = ConstructionWorkstation::find($wkId1);
|
||||||
|
if ($wkId1) {
|
||||||
|
$receiveNameWK[$wkId1->nomenclature_workstation] = $count;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->receivefnishTasksInWorkstation = $receiveNameWK;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function updateData()
|
||||||
|
{
|
||||||
|
// Atualize a variável com os novos dados
|
||||||
|
$this->receivefnishTasksInWorkstation = [1, 2, 3];
|
||||||
|
|
||||||
|
$this->test = 'FUncionaa';
|
||||||
|
|
||||||
|
// Emita um evento com os novos dados
|
||||||
|
$this->dispatch('updateChart', $this->receivefnishTasksInWorkstation);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function render()
|
||||||
|
{
|
||||||
|
return view('livewire.execução.workstation-dashboard');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -4,6 +4,8 @@
|
||||||
|
|
||||||
use Illuminate\Support\ServiceProvider;
|
use Illuminate\Support\ServiceProvider;
|
||||||
|
|
||||||
|
use App\Repositories\ReceiveTasksRepository;
|
||||||
|
|
||||||
class AppServiceProvider extends ServiceProvider
|
class AppServiceProvider extends ServiceProvider
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
|
@ -11,7 +13,9 @@ class AppServiceProvider extends ServiceProvider
|
||||||
*/
|
*/
|
||||||
public function register(): void
|
public function register(): void
|
||||||
{
|
{
|
||||||
//
|
$this->app->singleton(ReceiveTasksRepository::class, function ($app) {
|
||||||
|
return new ReceiveTasksRepository();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
33
app/Repositories/ReceiveTasksRepository.php
Normal file
33
app/Repositories/ReceiveTasksRepository.php
Normal file
|
|
@ -0,0 +1,33 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Repositories;
|
||||||
|
|
||||||
|
use Illuminate\Support\Collection;
|
||||||
|
|
||||||
|
use Illuminate\Support\Facades\Log;
|
||||||
|
|
||||||
|
class ReceiveTasksRepository
|
||||||
|
{
|
||||||
|
protected $elementalTasks = [];
|
||||||
|
protected $furtherTasks = [];
|
||||||
|
|
||||||
|
public function setElementalTasks(array $tasks)
|
||||||
|
{
|
||||||
|
$this->elementalTasks = $tasks;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getElementalTasks(): array
|
||||||
|
{
|
||||||
|
return $this->elementalTasks;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setFurtherTasks(Collection $tasks)
|
||||||
|
{
|
||||||
|
$this->furtherTasks = $tasks;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getFurtherTasks(): Collection
|
||||||
|
{
|
||||||
|
return $this->furtherTasks;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
@extends('Templates/templateAdmin')
|
@extends('Templates/templateAdmin')
|
||||||
|
|
||||||
@section('Main-content')
|
@section('Main-content')
|
||||||
|
|
@ -34,11 +33,8 @@
|
||||||
<span class="info-box-icon"><i class="fas fa-file-edit"></i></span>
|
<span class="info-box-icon"><i class="fas fa-file-edit"></i></span>
|
||||||
<div class="info-box-content">
|
<div class="info-box-content">
|
||||||
<span class="info-box-text">Em planeamento</span>
|
<span class="info-box-text">Em planeamento</span>
|
||||||
<span class="info-box-number">{{ count($CompanyProject) }}</span>
|
<span
|
||||||
|
class="info-box-number">{{ $CompanyProject->where('order_project', 1)->count() }}</span>
|
||||||
<div class="progress">
|
|
||||||
<div class="progress-bar" style="width: 100%"></div>
|
|
||||||
</div>
|
|
||||||
<span class="progress-description">
|
<span class="progress-description">
|
||||||
Em planeamento de 2023
|
Em planeamento de 2023
|
||||||
</span>
|
</span>
|
||||||
|
|
@ -76,13 +72,11 @@ class="btn btn-tool">
|
||||||
|
|
||||||
<div class="info-box-content">
|
<div class="info-box-content">
|
||||||
<span class="info-box-text">Preparadas</span>
|
<span class="info-box-text">Preparadas</span>
|
||||||
<span class="info-box-number">4</span>
|
<span
|
||||||
|
class="info-box-number">{{ $CompanyProject->where('order_project', 2)->count() }}</span>
|
||||||
|
|
||||||
<div class="progress">
|
|
||||||
<div class="progress-bar" style="width: 75%"></div>
|
|
||||||
</div>
|
|
||||||
<span class="progress-description">
|
<span class="progress-description">
|
||||||
75% adicionadas nos últimos 30
|
Aguardam o início da obra.
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<!-- /.info-box-content -->
|
<!-- /.info-box-content -->
|
||||||
|
|
@ -92,16 +86,6 @@ class="btn btn-tool">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
@foreach ($CompanyProject as $project)
|
@foreach ($CompanyProject as $project)
|
||||||
@if ($project->order_project == 2)
|
@if ($project->order_project == 2)
|
||||||
{{-- <div class="card card-primary card-outline">
|
|
||||||
<div class="card-header">
|
|
||||||
<h5 class="card-title">Paragem Cliente 2 OUT2022</h5>
|
|
||||||
<div class="card-tools">
|
|
||||||
<a href="{{route('preparedProject', ['ProjectId'=>$project->company_projects_id])}}" class="btn btn-tool">
|
|
||||||
<i class="fa-solid fa-eye" style="color:rgb(62, 62, 62)"></i>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div> --}}
|
|
||||||
<div class="card card-secondary card-outline">
|
<div class="card card-secondary card-outline">
|
||||||
<div class="card-header">
|
<div class="card-header">
|
||||||
<h5 class="card-title">{{ $project->company_project_description }}</h5>
|
<h5 class="card-title">{{ $project->company_project_description }}</h5>
|
||||||
|
|
@ -128,13 +112,10 @@ class="btn btn-tool">
|
||||||
|
|
||||||
<div class="info-box-content">
|
<div class="info-box-content">
|
||||||
<span class="info-box-text">Em execução</span>
|
<span class="info-box-text">Em execução</span>
|
||||||
<span class="info-box-number">2</span>
|
<span
|
||||||
|
class="info-box-number">{{ $CompanyProject->where('order_project', 3)->count() }}</span>
|
||||||
<div class="progress">
|
|
||||||
<div class="progress-bar" style="width: 100%"></div>
|
|
||||||
</div>
|
|
||||||
<span class="progress-description">
|
<span class="progress-description">
|
||||||
100% em execução à 30 dias
|
Obras em curso.
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<!-- /.info-box-content -->
|
<!-- /.info-box-content -->
|
||||||
|
|
@ -144,16 +125,6 @@ class="btn btn-tool">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
@foreach ($CompanyProject as $project)
|
@foreach ($CompanyProject as $project)
|
||||||
@if ($project->order_project == 3)
|
@if ($project->order_project == 3)
|
||||||
{{-- <div class="card card-warning card-outline">
|
|
||||||
<div class="card-header">
|
|
||||||
<h5 class="card-title">Paragem Cliente 1 JUN2022</h5>
|
|
||||||
<div class="card-tools">
|
|
||||||
<a href="#" class="btn btn-tool">
|
|
||||||
<i class="fas fa-eye"></i>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div> --}}
|
|
||||||
<div class="card card-secondary card-outline">
|
<div class="card card-secondary card-outline">
|
||||||
<div class="card-header">
|
<div class="card-header">
|
||||||
<h5 class="card-title">{{ $project->company_project_description }}</h5>
|
<h5 class="card-title">{{ $project->company_project_description }}</h5>
|
||||||
|
|
@ -180,13 +151,10 @@ class="btn btn-tool">
|
||||||
|
|
||||||
<div class="info-box-content">
|
<div class="info-box-content">
|
||||||
<span class="info-box-text">Concluídas</span>
|
<span class="info-box-text">Concluídas</span>
|
||||||
<span class="info-box-number">3</span>
|
<span
|
||||||
|
class="info-box-number">{{ $CompanyProject->where('order_project', 4)->count() }}</span>
|
||||||
<div class="progress">
|
|
||||||
<div class="progress-bar" style="width: 100%"></div>
|
|
||||||
</div>
|
|
||||||
<span class="progress-description">
|
<span class="progress-description">
|
||||||
Últimas obras de 2022
|
Últimas obras de 2023
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<!-- /.info-box-content -->
|
<!-- /.info-box-content -->
|
||||||
|
|
@ -195,17 +163,7 @@ class="btn btn-tool">
|
||||||
<!-- /.Card header-->
|
<!-- /.Card header-->
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
@foreach ($CompanyProject as $project)
|
@foreach ($CompanyProject as $project)
|
||||||
@if ($project->order_project == 3)
|
@if ($project->order_project == 4)
|
||||||
<div class="card card-success card-outline">
|
|
||||||
<div class="card-header">
|
|
||||||
<h5 class="card-title">Paragem Cliente 2 JAN2022</h5>
|
|
||||||
<div class="card-tools">
|
|
||||||
<a href="#" class="btn btn-tool">
|
|
||||||
<i class="fas fa-eye"></i>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
@endif
|
@endif
|
||||||
@endforeach
|
@endforeach
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@
|
||||||
<img src="{{ asset('/img/avatar5.png') }}" class="img-circle elevation-2 imgProfile"
|
<img src="{{ asset('/img/avatar5.png') }}" class="img-circle elevation-2 imgProfile"
|
||||||
alt="User Image">
|
alt="User Image">
|
||||||
<h2>{{ $user->user_name }}</h2>
|
<h2>{{ $user->user_name }}</h2>
|
||||||
<h3>{{ $user->userType->type_user_id }}</h3>
|
<h3>{{ $user->userType->type_user}}</h3>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,8 @@
|
||||||
<!-- DataTables -->
|
<!-- DataTables -->
|
||||||
<link rel="stylesheet" href="{{ asset('assets/plugins/datatables-bs4/css/dataTables.bootstrap4.min.css') }}">
|
<link rel="stylesheet" href="{{ asset('assets/plugins/datatables-bs4/css/dataTables.bootstrap4.min.css') }}">
|
||||||
|
|
||||||
<link rel="stylesheet" href="{{ asset('assets/plugins/datatables-responsive/css/responsive.bootstrap4.min.css') }}">
|
<link rel="stylesheet"
|
||||||
|
href="{{ asset('assets/plugins/datatables-responsive/css/responsive.bootstrap4.min.css') }}">
|
||||||
|
|
||||||
<link rel="stylesheet" href="{{ asset('assets/plugins/datatables-buttons/css/buttons.bootstrap4.min.css') }}">
|
<link rel="stylesheet" href="{{ asset('assets/plugins/datatables-buttons/css/buttons.bootstrap4.min.css') }}">
|
||||||
|
|
||||||
|
|
@ -59,6 +60,14 @@
|
||||||
<!-- DataTables Buttons JavaScript -->
|
<!-- DataTables Buttons JavaScript -->
|
||||||
<script src="https://cdn.datatables.net/buttons/1.7.1/js/dataTables.buttons.min.js"></script>
|
<script src="https://cdn.datatables.net/buttons/1.7.1/js/dataTables.buttons.min.js"></script>
|
||||||
|
|
||||||
|
|
||||||
|
{{-- Graficos para gestao com chart.js --}}
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
|
||||||
|
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/chartjs-plugin-datalabels"></script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
.spin {
|
.spin {
|
||||||
animation: spin 1s infinite linear;
|
animation: spin 1s infinite linear;
|
||||||
|
|
|
||||||
300
resources/views/livewire/execução/equipments-dashboard.blade.php
Normal file
300
resources/views/livewire/execução/equipments-dashboard.blade.php
Normal file
|
|
@ -0,0 +1,300 @@
|
||||||
|
<div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm d-flex justify-content-end">
|
||||||
|
<button class="btn btn-primary mr-2 mb-2" wire:click="showPercentageEquipments">
|
||||||
|
<i class="fa-solid fa-percent"></i>
|
||||||
|
</button>
|
||||||
|
<button class="btn btn-primary mr-2 mb-2" wire:click="updateTimeGrafics">
|
||||||
|
<i class="fa-solid fa-chart-pie"></i>
|
||||||
|
</button>
|
||||||
|
<button class="btn btn-primary mb-2" wire:click="updateTimeGrafics">
|
||||||
|
<i class="fa-solid fa-arrows-rotate"></i>
|
||||||
|
</button>
|
||||||
|
<div style="font-size: 15px; color:#09255C; margin-left:4px; display: flex; align-items: center; justify-content: center; height: 50px;">
|
||||||
|
{{ $lastUpdated }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row text-center">
|
||||||
|
<div class="col-sm">
|
||||||
|
<h6>Equipamentos da Obra</h6>
|
||||||
|
<p style="color:gray; font-size:13px">Total de ações para concluir todos os equipamentos da obra.</p>
|
||||||
|
<canvas id="myPieChart"></canvas>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm">
|
||||||
|
<h6>Equivalente de equipamentos da Obra</h6>
|
||||||
|
<p style="color:gray; font-size:13px">Total de equipamentos e os seus estados actuais.</p>
|
||||||
|
<canvas id="myPieChart1"></canvas>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
// O code em si e refeito pois o code inicial busca valores do componente livewire apos atualizar ele vem como data, posteriormente atualizar esta parte para nao repetir code.
|
||||||
|
window.addEventListener('refreshData', event => {
|
||||||
|
// Obter dados do evento
|
||||||
|
var data = event.detail[0];
|
||||||
|
|
||||||
|
if (myPieChart) {
|
||||||
|
myPieChart.destroy(); // Destrua o gráfico antigo antes de criar um novo
|
||||||
|
}
|
||||||
|
|
||||||
|
var equipmentGraph = document.getElementById('myPieChart').getContext('2d');
|
||||||
|
|
||||||
|
var myPieChart = new Chart(equipmentGraph, {
|
||||||
|
type: 'doughnut',
|
||||||
|
data: {
|
||||||
|
labels: [
|
||||||
|
'Total: ' + data.totalEquipmentsCount,
|
||||||
|
'Por Iniciar: ' + data.unstarted,
|
||||||
|
'Em Curso: ' + data.inProgress,
|
||||||
|
'Concluídos: ' + data.completed
|
||||||
|
],
|
||||||
|
datasets: [{
|
||||||
|
data: [null, data.unstarted, data.inProgress, data.completed],
|
||||||
|
backgroundColor: [
|
||||||
|
'rgba(0,80,0,0.5)', //green color
|
||||||
|
'rgb(9, 37, 92)', //Azul escuro ISPT
|
||||||
|
'rgb(0, 176, 234)', // Azull Claro ISPT
|
||||||
|
'rgb(5, 107, 163)', // Azul parecido
|
||||||
|
],
|
||||||
|
// borderColor: [
|
||||||
|
// '#FFFFFF', // Cor branca para o total (não será visível)
|
||||||
|
// 'rgba(255, 99, 132, 1)',
|
||||||
|
// 'rgba(54, 162, 235, 1)',
|
||||||
|
// 'rgba(255, 206, 86, 1)'
|
||||||
|
// ],
|
||||||
|
borderWidth: 1
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
options: {
|
||||||
|
events: [],
|
||||||
|
// responsive: true,
|
||||||
|
// maintainAspectRatio: false // Isso permite que você defina o tamanho do gráfico via CSS
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if (myPieChart1) {
|
||||||
|
myPieChart1.destroy(); // Destrua o gráfico antigo antes de criar um novo
|
||||||
|
}
|
||||||
|
|
||||||
|
var grafico2 = document.getElementById('myPieChart1').getContext('2d');
|
||||||
|
|
||||||
|
var myPieChart1 = new Chart(grafico2, {
|
||||||
|
type: 'doughnut',
|
||||||
|
data: {
|
||||||
|
labels: [
|
||||||
|
'Total: ' + data.totalEquivalentEquipment,
|
||||||
|
'Por Iniciar: ' + data.equivalentUnstarted,
|
||||||
|
'Em Curso: ' + data.equivalentInProgress,
|
||||||
|
'Concluídos: ' + data.equivalentCompleted
|
||||||
|
],
|
||||||
|
datasets: [{
|
||||||
|
data: [null, data.equivalentUnstarted, data.equivalentInProgress, data
|
||||||
|
.equivalentCompleted
|
||||||
|
],
|
||||||
|
backgroundColor: [
|
||||||
|
'rgba(0,80,0,0.5)', //green color
|
||||||
|
'rgb(9, 37, 92)', //Azul escuro ISPT
|
||||||
|
'rgb(0, 176, 234)', // Azull Claro ISPT
|
||||||
|
'rgb(5, 107, 163)', // Azul parecido
|
||||||
|
],
|
||||||
|
// borderColor: [
|
||||||
|
// 'rgba(0,80,0,0.5)',
|
||||||
|
// 'rgba(255, 99, 132, 1)',
|
||||||
|
// 'rgba(54, 162, 235, 1)',
|
||||||
|
// 'rgba(255, 206, 86, 1)'
|
||||||
|
// ],
|
||||||
|
borderWidth: 1.
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
options: {
|
||||||
|
events: [],
|
||||||
|
// responsive: true,
|
||||||
|
// maintainAspectRatio: false // Isso permite que você defina o tamanho do gráfico via CSS
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// Obtenha o contexto do elemento canvas
|
||||||
|
var equipmentGraph = document.getElementById('myPieChart').getContext('2d');
|
||||||
|
|
||||||
|
// Dados do componente Livewire
|
||||||
|
var totalEquipmentsCount = {{ $totalEquipmentsCount }};
|
||||||
|
var unstarted = {{ $unstarted }};
|
||||||
|
var inProgress = {{ $inProgress }};
|
||||||
|
var completed = {{ $completed }};
|
||||||
|
|
||||||
|
|
||||||
|
// Crie um novo gráfico circular
|
||||||
|
var myPieChart = new Chart(equipmentGraph, {
|
||||||
|
type: 'doughnut',
|
||||||
|
data: {
|
||||||
|
labels: [
|
||||||
|
'Total: ' + totalEquipmentsCount,
|
||||||
|
'Por Iniciar: ' + unstarted,
|
||||||
|
'Em Curso: ' + inProgress,
|
||||||
|
'Concluídos: ' + completed
|
||||||
|
],
|
||||||
|
datasets: [{
|
||||||
|
data: [null, unstarted, inProgress, completed],
|
||||||
|
backgroundColor: [
|
||||||
|
'rgba(0,80,0,0.5)', //green color
|
||||||
|
'rgb(9, 37, 92)', //Azul escuro ISPT
|
||||||
|
'rgb(0, 176, 234)', // Azull Claro ISPT
|
||||||
|
'rgb(5, 107, 163)', // Azul parecido
|
||||||
|
],
|
||||||
|
// borderColor: [
|
||||||
|
// '#FFFFFF', // Cor branca para o total (não será visível)
|
||||||
|
// 'rgba(255, 99, 132, 1)',
|
||||||
|
// 'rgba(54, 162, 235, 1)',
|
||||||
|
// 'rgba(255, 206, 86, 1)'
|
||||||
|
// ],
|
||||||
|
borderWidth: 1
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
options: {
|
||||||
|
events: [],
|
||||||
|
// responsive: true,
|
||||||
|
// maintainAspectRatio: false // Isso permite que você defina o tamanho do gráfico via CSS
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
var grafico2 = document.getElementById('myPieChart1').getContext('2d');
|
||||||
|
|
||||||
|
// Dados do componente Livewire
|
||||||
|
var totalEquivalentEquipment = {{ $totalEquivalentEquipment }}
|
||||||
|
var equivalentUnstarted = {{ $equivalentUnstarted }}
|
||||||
|
var equivalentInProgress = {{ $equivalentInProgress }}
|
||||||
|
var equivalentCompleted = {{ $equivalentCompleted }}
|
||||||
|
|
||||||
|
var myPieChart1 = new Chart(grafico2, {
|
||||||
|
type: 'doughnut',
|
||||||
|
data: {
|
||||||
|
labels: [
|
||||||
|
'Total: ' + totalEquivalentEquipment,
|
||||||
|
'Por Iniciar: ' + equivalentUnstarted,
|
||||||
|
'Em Curso: ' + equivalentInProgress,
|
||||||
|
'Concluídos: ' + equivalentCompleted
|
||||||
|
],
|
||||||
|
datasets: [{
|
||||||
|
data: [null, equivalentUnstarted, equivalentInProgress,
|
||||||
|
equivalentCompleted
|
||||||
|
], // Dados do componente Livewire
|
||||||
|
backgroundColor: [
|
||||||
|
'rgba(0,80,0,0.5)', //green color
|
||||||
|
'rgb(9, 37, 92)', //Azul escuro ISPT
|
||||||
|
'rgb(0, 176, 234)', // Azull Claro ISPT
|
||||||
|
'rgb(5, 107, 163)', // Azul parecido
|
||||||
|
],
|
||||||
|
// borderColor: [
|
||||||
|
// 'rgba(0,80,0,0.5)',
|
||||||
|
// 'rgba(255, 99, 132, 1)',
|
||||||
|
// 'rgba(54, 162, 235, 1)',
|
||||||
|
// 'rgba(255, 206, 86, 1)'
|
||||||
|
// ],
|
||||||
|
borderWidth: 1
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
options: {
|
||||||
|
events: []
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
window.addEventListener('refreshPercentageEquipments', event => {
|
||||||
|
// Obter dados do evento
|
||||||
|
var data = event.detail[0];
|
||||||
|
|
||||||
|
// Calcular porcentagens
|
||||||
|
var unstartedPercentage = ((data.unstarted / data.totalEquipmentsCount) * 100).toFixed(2);
|
||||||
|
var inProgressPercentage = ((data.inProgress / data.totalEquipmentsCount) * 100).toFixed(2);
|
||||||
|
var completedPercentage = ((data.completed / data.totalEquipmentsCount) * 100).toFixed(2);
|
||||||
|
|
||||||
|
|
||||||
|
var totalEquivalentEquipmentPercentage = ((data.equivalentUnstarted / data.totalEquivalentEquipment) *
|
||||||
|
100).toFixed(
|
||||||
|
2);
|
||||||
|
var equivalentInProgressPercentage = ((data.equivalentInProgress / data.totalEquivalentEquipment) * 100)
|
||||||
|
.toFixed(2);
|
||||||
|
var equivalentCompletedPercentage = ((data.equivalentCompleted / data.totalEquivalentEquipment) * 100)
|
||||||
|
.toFixed(2);
|
||||||
|
|
||||||
|
|
||||||
|
if (myPieChart) {
|
||||||
|
myPieChart.destroy(); // Destrua o gráfico antigo antes de criar um novo
|
||||||
|
}
|
||||||
|
|
||||||
|
var equipmentGraph = document.getElementById('myPieChart').getContext('2d');
|
||||||
|
|
||||||
|
var myPieChart = new Chart(equipmentGraph, {
|
||||||
|
type: 'pie',
|
||||||
|
data: {
|
||||||
|
labels: [
|
||||||
|
'Total: ' + data.totalEquipmentsCount,
|
||||||
|
'Por Iniciar: ' + unstartedPercentage + '%',
|
||||||
|
'Em Curso: ' + inProgressPercentage + '%',
|
||||||
|
'Concluídos: ' + completedPercentage + '%'
|
||||||
|
],
|
||||||
|
datasets: [{
|
||||||
|
data: [null, data.unstarted, data.inProgress, data.completed],
|
||||||
|
backgroundColor: [
|
||||||
|
'rgba(0,80,0,0.5)', //green color
|
||||||
|
'rgb(9, 37, 92)', //Azul escuro ISPT
|
||||||
|
'rgb(0, 176, 234)', // Azull Claro ISPT
|
||||||
|
'rgb(5, 107, 163)', // Azul parecido
|
||||||
|
],
|
||||||
|
borderWidth: 1
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
options: {
|
||||||
|
events: [],
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (myPieChart1) {
|
||||||
|
myPieChart1.destroy(); // Destrua o gráfico antigo antes de criar um novo
|
||||||
|
}
|
||||||
|
|
||||||
|
var grafico2 = document.getElementById('myPieChart1').getContext('2d');
|
||||||
|
|
||||||
|
var myPieChart1 = new Chart(grafico2, {
|
||||||
|
type: 'pie',
|
||||||
|
data: {
|
||||||
|
labels: [
|
||||||
|
'Total: ' + data.totalEquivalentEquipment,
|
||||||
|
'Por Iniciar: ' + totalEquivalentEquipmentPercentage + '%',
|
||||||
|
'Em Curso: ' + equivalentInProgressPercentage + '%',
|
||||||
|
'Concluídos: ' + equivalentCompletedPercentage + '%'
|
||||||
|
],
|
||||||
|
datasets: [{
|
||||||
|
data: [null, data.equivalentUnstarted, data.equivalentInProgress, data
|
||||||
|
.equivalentCompleted
|
||||||
|
],
|
||||||
|
backgroundColor: [
|
||||||
|
'rgba(0,80,0,0.5)', //green color
|
||||||
|
'rgb(9, 37, 92)', //Azul escuro ISPT
|
||||||
|
'rgb(0, 176, 234)', // Azull Claro ISPT
|
||||||
|
'rgb(5, 107, 163)', // Azul parecido
|
||||||
|
],
|
||||||
|
// borderColor: [
|
||||||
|
// 'rgba(0,80,0,0.5)',
|
||||||
|
// 'rgba(255, 99, 132, 1)',
|
||||||
|
// 'rgba(54, 162, 235, 1)',
|
||||||
|
// 'rgba(255, 206, 86, 1)'
|
||||||
|
// ],
|
||||||
|
borderWidth: 1.
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
options: {
|
||||||
|
events: [],
|
||||||
|
// responsive: true,
|
||||||
|
// maintainAspectRatio: false // Isso permite que você defina o tamanho do gráfico via CSS
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
</script>
|
||||||
192
resources/views/livewire/execução/tasks-dashboard.blade.php
Normal file
192
resources/views/livewire/execução/tasks-dashboard.blade.php
Normal file
|
|
@ -0,0 +1,192 @@
|
||||||
|
<div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm">
|
||||||
|
<button wire:click="showPercentageElementalTasks">Grafico em porcentagem</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row text-center">
|
||||||
|
<div class="col-sm">
|
||||||
|
<h6>Quantidade Tarefas Concluidas</h6>
|
||||||
|
<p style="color:gray; font-size:13px"> Total de acções a serem realizadas por tarefa.</p>
|
||||||
|
<canvas id="myPieChart2" width="50" height="50"></canvas>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm">
|
||||||
|
<h6>Quantidade tarefas Acumuladas</h6>
|
||||||
|
<p style="color:gray; font-size:13px">Total de acções já realizadas de acordo com a tarefa.</p>
|
||||||
|
<canvas id="myPieChart3" width="50" height="50"></canvas>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{{ $lastUpdated }}
|
||||||
|
<button wire:click="updateTimeGrafics">Atualizar Gráfico</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
var elementalTasksCount = @json($receiveElementalTasks);
|
||||||
|
|
||||||
|
var grafico2 = document.getElementById('myPieChart2').getContext('2d');
|
||||||
|
|
||||||
|
var labels = Object.keys(elementalTasksCount);
|
||||||
|
var data = Object.values(elementalTasksCount);
|
||||||
|
|
||||||
|
var myPieChart2 = new Chart(grafico2, {
|
||||||
|
type: 'bar',
|
||||||
|
data: {
|
||||||
|
labels: labels.map(label => label),
|
||||||
|
datasets: [{
|
||||||
|
data: data,
|
||||||
|
backgroundColor: [
|
||||||
|
'rgba(0,80,0,0.5)', //green color
|
||||||
|
'rgb(9, 37, 92)', //Azul escuro ISPT
|
||||||
|
'rgb(0, 176, 234)', // Azull Claro ISPT
|
||||||
|
'rgb(5, 107, 163)', // Azul parecido
|
||||||
|
],
|
||||||
|
borderColor: [
|
||||||
|
'rgba(0,80,0,0.5)',
|
||||||
|
'rgba(255, 99, 132, 1)',
|
||||||
|
'rgba(54, 162, 235, 1)',
|
||||||
|
'rgba(255, 206, 86, 1)'
|
||||||
|
// ... (adicionar mais cores se necessário)
|
||||||
|
],
|
||||||
|
borderWidth: 1
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
options: {
|
||||||
|
animation: false,
|
||||||
|
plugins: {
|
||||||
|
legend: {
|
||||||
|
display: false
|
||||||
|
},
|
||||||
|
tooltip: {
|
||||||
|
enabled: false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
// Grafico de Script 2
|
||||||
|
var elementalTasksCountAll = @json($receiveElementalTasksAll);
|
||||||
|
|
||||||
|
var grafico3 = document.getElementById('myPieChart3').getContext('2d');
|
||||||
|
|
||||||
|
var labels = Object.keys(elementalTasksCountAll);
|
||||||
|
var data = Object.values(elementalTasksCountAll);
|
||||||
|
|
||||||
|
var myPieChart3 = new Chart(grafico3, {
|
||||||
|
type: 'bar',
|
||||||
|
data: {
|
||||||
|
labels: labels.map(label => label),
|
||||||
|
datasets: [{
|
||||||
|
label: 'Total de Acções da Obra"',
|
||||||
|
data: data,
|
||||||
|
backgroundColor: [
|
||||||
|
'rgb(117,210,240)', //green color
|
||||||
|
'rgb(9, 37, 92)', //Azul escuro ISPT
|
||||||
|
'rgb(0, 176, 234)', // Azull Claro ISPT
|
||||||
|
'rgb(5, 107, 163)', // Azul parecido
|
||||||
|
],
|
||||||
|
borderColor: [
|
||||||
|
'rgba(0,80,0,0.5)',
|
||||||
|
'rgba(255, 99, 132, 1)',
|
||||||
|
'rgba(54, 162, 235, 1)',
|
||||||
|
'rgba(255, 206, 86, 1)'
|
||||||
|
// ... (adicionar mais cores se necessário)
|
||||||
|
],
|
||||||
|
borderWidth: 1
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
options: {
|
||||||
|
animation: false,
|
||||||
|
plugins: {
|
||||||
|
legend: {
|
||||||
|
display: false
|
||||||
|
},
|
||||||
|
tooltip: {
|
||||||
|
enabled: false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
{{-- Scrip de atualizacao da tabela --}}
|
||||||
|
<script>
|
||||||
|
window.addEventListener('refreshData', event => {
|
||||||
|
|
||||||
|
var data = event.detail[0];
|
||||||
|
var elementalTasksCount = data.receiveElementalTasks;
|
||||||
|
|
||||||
|
var labels = Object.keys(elementalTasksCount);
|
||||||
|
var dataValues = Object.values(elementalTasksCount);
|
||||||
|
|
||||||
|
var baseColors = [
|
||||||
|
'rgb(117,210,240)', //green color
|
||||||
|
'rgb(9, 37, 92)', //Azul escuro ISPT
|
||||||
|
'rgb(0, 176, 234)', // Azull Claro ISPT
|
||||||
|
'rgb(5, 107, 163)', // Azul parecido
|
||||||
|
];
|
||||||
|
|
||||||
|
// Atribuir cores aos dados de forma cíclica
|
||||||
|
var backgroundColors = dataValues.map((_, index) => baseColors[index % baseColors.length]);
|
||||||
|
|
||||||
|
var grafico2 = document.getElementById('myPieChart2').getContext('2d');
|
||||||
|
|
||||||
|
window.myPieChart2 = new Chart(grafico2, {
|
||||||
|
type: 'bar',
|
||||||
|
data: {
|
||||||
|
labels: labels,
|
||||||
|
datasets: [{
|
||||||
|
data: dataValues,
|
||||||
|
backgroundColor: backgroundColors, // Usar o array de cores gerado
|
||||||
|
borderColor: backgroundColors.map(color => color.replace('0.5',
|
||||||
|
'1')), // Ajustar a opacidade para as bordas
|
||||||
|
borderWidth: 1
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
options: {
|
||||||
|
events: [], // Desativa todos os eventos
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
var elementalTasksCountAll = data.receiveElementalTasksAll;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
var labelsTasksCountAll = Object.keys(elementalTasksCountAll);
|
||||||
|
var dataValuesTasksCountAll = Object.values(elementalTasksCountAll);
|
||||||
|
|
||||||
|
var grafico3 = document.getElementById('myPieChart3').getContext('2d');
|
||||||
|
|
||||||
|
window.myPieChart3 = new Chart(grafico3, {
|
||||||
|
type: 'bar',
|
||||||
|
data: {
|
||||||
|
labels: labelsTasksCountAll,
|
||||||
|
datasets: [{
|
||||||
|
data: dataValuesTasksCountAll,
|
||||||
|
backgroundColor: backgroundColors, // Usar o array de cores gerado
|
||||||
|
borderColor: backgroundColors.map(color => color.replace('0.5',
|
||||||
|
'1')), // Ajustar a opacidade para as bordas
|
||||||
|
borderWidth: 1
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
options: {
|
||||||
|
events: [], // Desativa todos os eventos
|
||||||
|
title: {
|
||||||
|
display: true, // Ativa a exibição do título
|
||||||
|
text: 'Total', // Define o texto do título
|
||||||
|
position: 'top' // Define a posição do título
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
{{-- Script de Gradico em porcentagem --}}
|
||||||
|
<script>
|
||||||
|
window.addEventListener('refreshPercentageElementalTasks', event => {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
@ -0,0 +1,43 @@
|
||||||
|
<div>
|
||||||
|
|
||||||
|
<button wire:click="updateData">Atualizar Gráfico</button>
|
||||||
|
|
||||||
|
<canvas id="myPieChart5" width="50" height="50"></canvas>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
var receivefnishTasksInWorkstation = @json($receivefnishTasksInWorkstation);
|
||||||
|
|
||||||
|
var grafico5 = document.getElementById('myPieChart5').getContext('2d');
|
||||||
|
var labels = Object.keys(receivefnishTasksInWorkstation);
|
||||||
|
var data = Object.values(receivefnishTasksInWorkstation);
|
||||||
|
|
||||||
|
var myPieChart5 = new Chart(grafico5, {
|
||||||
|
type: 'bar',
|
||||||
|
data: {
|
||||||
|
labels: labels.map(label => label),
|
||||||
|
datasets: [{
|
||||||
|
data: data,
|
||||||
|
backgroundColor: [
|
||||||
|
'rgb(117,210,240)', //green color
|
||||||
|
'rgb(9, 37, 92)', //Azul escuro ISPT
|
||||||
|
'rgb(0, 176, 234)', // Azull Claro ISPT
|
||||||
|
'rgb(5, 107, 163)', // Azul parecido
|
||||||
|
],
|
||||||
|
|
||||||
|
borderColor: [
|
||||||
|
'rgba(0,80,0,0.5)',
|
||||||
|
'rgba(255, 99, 132, 1)',
|
||||||
|
'rgba(54, 162, 235, 1)',
|
||||||
|
'rgba(255, 206, 86, 1)'
|
||||||
|
// ... (adicionar mais cores se necessário)
|
||||||
|
],
|
||||||
|
borderWidth: 1
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
options: {
|
||||||
|
events: [], // Desativa todos os eventos
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
@ -32,7 +32,7 @@
|
||||||
<form>
|
<form>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-6" id="BotaoDetalhesObra">
|
<div class="col-sm-6" id="BotaoDetalhesObra">
|
||||||
<a href="#" type="button" class="btn btn-block bg-gradient-primary btn-lg">
|
<a href="#" type="button" class="btn btn-block bg-gradient-primary btn-lg" >
|
||||||
Detalhes da Obra</a>
|
Detalhes da Obra</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-6" id="BotaoArticulado">
|
<div class="col-sm-6" id="BotaoArticulado">
|
||||||
|
|
@ -40,7 +40,7 @@
|
||||||
class="btn btn-block bg-gradient-primary btn-lg">Articulado</a>
|
class="btn btn-block bg-gradient-primary btn-lg">Articulado</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-6" id="BotaoPostosDeTrabalho">
|
<div class="col-sm-6" id="BotaoPostosDeTrabalho">
|
||||||
<a href="#" type="button" class="btn btn-block bg-gradient-primary btn-lg">Postos de
|
<a href="#" type="button" class="btn btn-block bg-gradient-primary btn-lg" >Postos de
|
||||||
Trabalho</a>
|
Trabalho</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -682,6 +682,7 @@ function createListItems(task_codes) {
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
{{-- Inicialmente nao devemos utilizar --}}
|
||||||
<script>
|
<script>
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
var steps = ['.res-step-one', '.res-step-two', '.res-step-three', '.res-step-four'];
|
var steps = ['.res-step-one', '.res-step-two', '.res-step-three', '.res-step-four'];
|
||||||
|
|
|
||||||
134
resources/views/projectsClients/executionProjectNew.blade.php
Normal file
134
resources/views/projectsClients/executionProjectNew.blade.php
Normal file
|
|
@ -0,0 +1,134 @@
|
||||||
|
@extends('Templates/templateAdmin')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@section('Main-content')
|
||||||
|
<!-- Content Header (Page header) -->
|
||||||
|
<section class="content-header">
|
||||||
|
<div class="container-fluid">
|
||||||
|
<div class="row mb-2">
|
||||||
|
<div class="col-sm-6">
|
||||||
|
<h1>{{ $DatasProject->company_project_description }}</h1>
|
||||||
|
<input type="hidden" value="{{ $DatasProject->company_projects_id }}" id="receiveNumberProject">
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-6">
|
||||||
|
<ol class="breadcrumb float-sm-right">
|
||||||
|
<li class="breadcrumb-item"><a href="{{ route('home') }}">Dashboard</a></li>
|
||||||
|
<li class="breadcrumb-item"><a href="./preparadas.html">Em Execucao</a></li>
|
||||||
|
<li class="breadcrumb-item active">{{ $DatasProject->company_project_description }}</li>
|
||||||
|
</ol>
|
||||||
|
</div><!-- /.col -->
|
||||||
|
</div>
|
||||||
|
</div><!-- /.container-fluid -->
|
||||||
|
</section>
|
||||||
|
<!-- /.content-header -->
|
||||||
|
|
||||||
|
<!-- Main content -->
|
||||||
|
<section class="content">
|
||||||
|
<div class="container-fluid">
|
||||||
|
<div class="row justify-content-center">
|
||||||
|
<div class="col-md-12">
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm" id="ViewEquipmentsButton">
|
||||||
|
<a href="#" type="button" class="btn btn-block bg-gradient-primary btn-lg"
|
||||||
|
style="margin-bottom: 2%;"> Equipamentos</a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm" id="ViewTasksButton">
|
||||||
|
<a href="#" type="button" class="btn btn-block bg-gradient-primary btn-lg"
|
||||||
|
style="margin-bottom: 2%;">Tarefas</a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm" id="ViewWorkstationButton">
|
||||||
|
<a href="#" type="button" class="btn btn-block bg-gradient-primary btn-lg"
|
||||||
|
style="margin-bottom: 2%;">Postos de Trabalho</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card card-primary" id="CardViewEquipments">
|
||||||
|
<div class="card-header">
|
||||||
|
<h3 class="card-title">Equipamentos</h3>
|
||||||
|
<div class="card-tools">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card-body">
|
||||||
|
@livewire('execução.equipments-dashboard', ['datasProject' => $DatasProject], key($DatasProject->company_projects_id))
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card card-primary" id="CardViewTasks">
|
||||||
|
<div class="card-header">
|
||||||
|
<h3 class="card-title">Tarefas</h3>
|
||||||
|
<div class="card-tools">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card-body">
|
||||||
|
@livewire('execução.tasks-dashboard', ['datasProject' => $DatasProject], key($DatasProject->company_projects_id))
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card card-primary" id="CardViewWorkstations">
|
||||||
|
<div class="card-header">
|
||||||
|
<h3 class="card-title">Postos de Trabalho</h3>
|
||||||
|
<div class="card-tools">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card-body">
|
||||||
|
@livewire('execução.workstation-dashboard', ['datasProject' => $DatasProject], key($DatasProject->company_projects_id))
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
@endsection
|
||||||
|
|
||||||
|
@section('scriptsTemplateAdmin')
|
||||||
|
<script>
|
||||||
|
$(document).ready(function() {
|
||||||
|
// Ja vai ser inicializado no card Equipamentos.
|
||||||
|
$("#ViewEquipmentsButton").hide();
|
||||||
|
$("#CardViewTasks").hide();
|
||||||
|
$("#CardViewWorkstations").hide();
|
||||||
|
|
||||||
|
//Visualizacao das Tarefas
|
||||||
|
$("#ViewTasksButton").on('click', function() {
|
||||||
|
|
||||||
|
$("#CardViewTasks").show();
|
||||||
|
$("#ViewEquipmentsButton").show();
|
||||||
|
$("#ViewWorkstationButton").show();
|
||||||
|
|
||||||
|
$("#CardViewEquipments").hide();
|
||||||
|
$("#CardViewWorkstations").hide();
|
||||||
|
$("#ViewTasksButton").hide();
|
||||||
|
})
|
||||||
|
|
||||||
|
//Visualizacao dos Equipamentos
|
||||||
|
$("#ViewEquipmentsButton").on('click', function() {
|
||||||
|
|
||||||
|
$("#CardViewEquipments").show();
|
||||||
|
$("#ViewTasksButton").show();
|
||||||
|
$("#ViewWorkstationButton").show();
|
||||||
|
|
||||||
|
$("#CardViewTasks").hide();
|
||||||
|
$("#CardViewWorkstations").hide();
|
||||||
|
$("#ViewEquipmentsButton").hide();
|
||||||
|
})
|
||||||
|
|
||||||
|
//Visualizacao das Workstatios
|
||||||
|
$("#ViewWorkstationButton").on('click', function() {
|
||||||
|
|
||||||
|
$("#CardViewWorkstations").show();
|
||||||
|
$("#ViewEquipmentsButton").show();
|
||||||
|
$("#ViewTasksButton").show();
|
||||||
|
|
||||||
|
$("#CardViewEquipments").hide();
|
||||||
|
$("#CardViewTasks").hide();
|
||||||
|
$("#ViewWorkstationButton").hide();
|
||||||
|
})
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
@endsection
|
||||||
|
|
@ -12,271 +12,305 @@
|
||||||
|
|
||||||
<section class="section profile">
|
<section class="section profile">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-xl-8">
|
<div class="col-xl-8">
|
||||||
|
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-body pt-3">
|
<div class="card-body pt-3">
|
||||||
<!-- Bordered Tabs -->
|
<!-- Bordered Tabs -->
|
||||||
<ul class="nav nav-tabs nav-tabs-bordered">
|
<ul class="nav nav-tabs nav-tabs-bordered">
|
||||||
|
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<button class="nav-link active" data-bs-toggle="tab" data-bs-target="#profile-overview">Overview</button>
|
<button class="nav-link active" data-bs-toggle="tab"
|
||||||
</li>
|
data-bs-target="#profile-overview">Overview</button>
|
||||||
|
</li>
|
||||||
<li class="nav-item">
|
|
||||||
<button class="nav-link" data-bs-toggle="tab" data-bs-target="#profile-edit">Edit Profile</button>
|
<li class="nav-item">
|
||||||
</li>
|
<button class="nav-link" data-bs-toggle="tab" data-bs-target="#profile-edit">Edit
|
||||||
|
Profile</button>
|
||||||
<li class="nav-item">
|
</li>
|
||||||
<button class="nav-link" data-bs-toggle="tab" data-bs-target="#profile-settings">Settings</button>
|
|
||||||
</li>
|
<li class="nav-item">
|
||||||
|
<button class="nav-link" data-bs-toggle="tab"
|
||||||
<li class="nav-item">
|
data-bs-target="#profile-settings">Settings</button>
|
||||||
<button class="nav-link" data-bs-toggle="tab" data-bs-target="#profile-change-password">Change Password</button>
|
</li>
|
||||||
</li>
|
|
||||||
|
<li class="nav-item">
|
||||||
</ul>
|
<button class="nav-link" data-bs-toggle="tab"
|
||||||
<div class="tab-content pt-2">
|
data-bs-target="#profile-change-password">Change Password</button>
|
||||||
|
</li>
|
||||||
<div class="tab-pane fade show active profile-overview" id="profile-overview">
|
|
||||||
<h5 class="card-title">About</h5>
|
</ul>
|
||||||
<p class="small fst-italic">Sunt est soluta temporibus accusantium neque nam maiores cumque temporibus. Tempora libero non est unde veniam est qui dolor. Ut sunt iure rerum quae quisquam autem eveniet perspiciatis odit. Fuga sequi sed ea saepe at unde.</p>
|
<div class="tab-content pt-2">
|
||||||
|
|
||||||
<h5 class="card-title">Profile Details</h5>
|
<div class="tab-pane fade show active profile-overview" id="profile-overview">
|
||||||
|
<h5 class="card-title">About</h5>
|
||||||
<div class="row">
|
<p class="small fst-italic">Sunt est soluta temporibus accusantium neque nam maiores
|
||||||
<div class="col-lg-3 col-md-4 label ">Full Name</div>
|
cumque temporibus. Tempora libero non est unde veniam est qui dolor. Ut sunt iure
|
||||||
<div class="col-lg-9 col-md-8">Kevin Anderson</div>
|
rerum quae quisquam autem eveniet perspiciatis odit. Fuga sequi sed ea saepe at
|
||||||
|
unde.</p>
|
||||||
|
|
||||||
|
<h5 class="card-title">Profile Details</h5>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-3 col-md-4 label ">Full Name</div>
|
||||||
|
<div class="col-lg-9 col-md-8">Kevin Anderson</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-3 col-md-4 label">Company</div>
|
||||||
|
<div class="col-lg-9 col-md-8">Lueilwitz, Wisoky and Leuschke</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-3 col-md-4 label">Job</div>
|
||||||
|
<div class="col-lg-9 col-md-8">Web Designer</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-3 col-md-4 label">Country</div>
|
||||||
|
<div class="col-lg-9 col-md-8">USA</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-3 col-md-4 label">Address</div>
|
||||||
|
<div class="col-lg-9 col-md-8">A108 Adam Street, New York, NY 535022</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-3 col-md-4 label">Phone</div>
|
||||||
|
<div class="col-lg-9 col-md-8">(436) 486-3538 x29071</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-3 col-md-4 label">Email</div>
|
||||||
|
<div class="col-lg-9 col-md-8">k.anderson@example.com</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="tab-pane fade profile-edit pt-3" id="profile-edit">
|
||||||
|
|
||||||
|
<!-- Profile Edit Form -->
|
||||||
|
<form>
|
||||||
|
<div class="row mb-3">
|
||||||
|
<label for="profileImage" class="col-md-4 col-lg-3 col-form-label">Profile
|
||||||
|
Image</label>
|
||||||
|
<div class="col-md-8 col-lg-9">
|
||||||
|
<img src="assets/img/profile-img.jpg" alt="Profile">
|
||||||
|
<div class="pt-2">
|
||||||
|
<a href="#" class="btn btn-primary btn-sm"
|
||||||
|
title="Upload new profile image"><i class="bi bi-upload"></i></a>
|
||||||
|
<a href="#" class="btn btn-danger btn-sm"
|
||||||
|
title="Remove my profile image"><i class="bi bi-trash"></i></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row mb-3">
|
||||||
|
<label for="fullName" class="col-md-4 col-lg-3 col-form-label">Full Name</label>
|
||||||
|
<div class="col-md-8 col-lg-9">
|
||||||
|
<input name="fullName" type="text" class="form-control" id="fullName"
|
||||||
|
value="Kevin Anderson">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row mb-3">
|
||||||
|
<label for="about" class="col-md-4 col-lg-3 col-form-label">About</label>
|
||||||
|
<div class="col-md-8 col-lg-9">
|
||||||
|
<textarea name="about" class="form-control" id="about" style="height: 100px">Sunt est soluta temporibus accusantium neque nam maiores cumque temporibus. Tempora libero non est unde veniam est qui dolor. Ut sunt iure rerum quae quisquam autem eveniet perspiciatis odit. Fuga sequi sed ea saepe at unde.</textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row mb-3">
|
||||||
|
<label for="company" class="col-md-4 col-lg-3 col-form-label">Company</label>
|
||||||
|
<div class="col-md-8 col-lg-9">
|
||||||
|
<input name="company" type="text" class="form-control" id="company"
|
||||||
|
value="Lueilwitz, Wisoky and Leuschke">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row mb-3">
|
||||||
|
<label for="Job" class="col-md-4 col-lg-3 col-form-label">Job</label>
|
||||||
|
<div class="col-md-8 col-lg-9">
|
||||||
|
<input name="job" type="text" class="form-control" id="Job"
|
||||||
|
value="Web Designer">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row mb-3">
|
||||||
|
<label for="Country" class="col-md-4 col-lg-3 col-form-label">Country</label>
|
||||||
|
<div class="col-md-8 col-lg-9">
|
||||||
|
<input name="country" type="text" class="form-control" id="Country"
|
||||||
|
value="USA">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row mb-3">
|
||||||
|
<label for="Address" class="col-md-4 col-lg-3 col-form-label">Address</label>
|
||||||
|
<div class="col-md-8 col-lg-9">
|
||||||
|
<input name="address" type="text" class="form-control" id="Address"
|
||||||
|
value="A108 Adam Street, New York, NY 535022">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row mb-3">
|
||||||
|
<label for="Phone" class="col-md-4 col-lg-3 col-form-label">Phone</label>
|
||||||
|
<div class="col-md-8 col-lg-9">
|
||||||
|
<input name="phone" type="text" class="form-control" id="Phone"
|
||||||
|
value="(436) 486-3538 x29071">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row mb-3">
|
||||||
|
<label for="Email" class="col-md-4 col-lg-3 col-form-label">Email</label>
|
||||||
|
<div class="col-md-8 col-lg-9">
|
||||||
|
<input name="email" type="email" class="form-control" id="Email"
|
||||||
|
value="k.anderson@example.com">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row mb-3">
|
||||||
|
<label for="Twitter" class="col-md-4 col-lg-3 col-form-label">Twitter
|
||||||
|
Profile</label>
|
||||||
|
<div class="col-md-8 col-lg-9">
|
||||||
|
<input name="twitter" type="text" class="form-control" id="Twitter"
|
||||||
|
value="https://twitter.com/#">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row mb-3">
|
||||||
|
<label for="Facebook" class="col-md-4 col-lg-3 col-form-label">Facebook
|
||||||
|
Profile</label>
|
||||||
|
<div class="col-md-8 col-lg-9">
|
||||||
|
<input name="facebook" type="text" class="form-control"
|
||||||
|
id="Facebook" value="https://facebook.com/#">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row mb-3">
|
||||||
|
<label for="Instagram" class="col-md-4 col-lg-3 col-form-label">Instagram
|
||||||
|
Profile</label>
|
||||||
|
<div class="col-md-8 col-lg-9">
|
||||||
|
<input name="instagram" type="text" class="form-control"
|
||||||
|
id="Instagram" value="https://instagram.com/#">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row mb-3">
|
||||||
|
<label for="Linkedin" class="col-md-4 col-lg-3 col-form-label">Linkedin
|
||||||
|
Profile</label>
|
||||||
|
<div class="col-md-8 col-lg-9">
|
||||||
|
<input name="linkedin" type="text" class="form-control"
|
||||||
|
id="Linkedin" value="https://linkedin.com/#">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="text-center">
|
||||||
|
<button type="submit" class="btn btn-primary">Save Changes</button>
|
||||||
|
</div>
|
||||||
|
</form><!-- End Profile Edit Form -->
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="tab-pane fade pt-3" id="profile-settings">
|
||||||
|
|
||||||
|
<!-- Settings Form -->
|
||||||
|
<form>
|
||||||
|
|
||||||
|
<div class="row mb-3">
|
||||||
|
<label for="fullName" class="col-md-4 col-lg-3 col-form-label">Email
|
||||||
|
Notifications</label>
|
||||||
|
<div class="col-md-8 col-lg-9">
|
||||||
|
<div class="form-check">
|
||||||
|
<input class="form-check-input" type="checkbox" id="changesMade"
|
||||||
|
checked>
|
||||||
|
<label class="form-check-label" for="changesMade">
|
||||||
|
Changes made to your account
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div class="form-check">
|
||||||
|
<input class="form-check-input" type="checkbox" id="newProducts"
|
||||||
|
checked>
|
||||||
|
<label class="form-check-label" for="newProducts">
|
||||||
|
Information on new products and services
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div class="form-check">
|
||||||
|
<input class="form-check-input" type="checkbox" id="proOffers">
|
||||||
|
<label class="form-check-label" for="proOffers">
|
||||||
|
Marketing and promo offers
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div class="form-check">
|
||||||
|
<input class="form-check-input" type="checkbox" id="securityNotify"
|
||||||
|
checked disabled>
|
||||||
|
<label class="form-check-label" for="securityNotify">
|
||||||
|
Security alerts
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="text-center">
|
||||||
|
<button type="submit" class="btn btn-primary">Save Changes</button>
|
||||||
|
</div>
|
||||||
|
</form><!-- End settings Form -->
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="tab-pane fade pt-3" id="profile-change-password">
|
||||||
|
<!-- Change Password Form -->
|
||||||
|
<form>
|
||||||
|
|
||||||
|
<div class="row mb-3">
|
||||||
|
<label for="currentPassword" class="col-md-4 col-lg-3 col-form-label">Current
|
||||||
|
Password</label>
|
||||||
|
<div class="col-md-8 col-lg-9">
|
||||||
|
<input name="password" type="password" class="form-control"
|
||||||
|
id="currentPassword">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row mb-3">
|
||||||
|
<label for="newPassword" class="col-md-4 col-lg-3 col-form-label">New
|
||||||
|
Password</label>
|
||||||
|
<div class="col-md-8 col-lg-9">
|
||||||
|
<input name="newpassword" type="password" class="form-control"
|
||||||
|
id="newPassword">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row mb-3">
|
||||||
|
<label for="renewPassword" class="col-md-4 col-lg-3 col-form-label">Re-enter
|
||||||
|
New Password</label>
|
||||||
|
<div class="col-md-8 col-lg-9">
|
||||||
|
<input name="renewpassword" type="password" class="form-control"
|
||||||
|
id="renewPassword">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="text-center">
|
||||||
|
<button type="submit" class="btn btn-primary">Change Password</button>
|
||||||
|
</div>
|
||||||
|
</form><!-- End Change Password Form -->
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div><!-- End Bordered Tabs -->
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-3 col-md-4 label">Company</div>
|
|
||||||
<div class="col-lg-9 col-md-8">Lueilwitz, Wisoky and Leuschke</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-3 col-md-4 label">Job</div>
|
|
||||||
<div class="col-lg-9 col-md-8">Web Designer</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-3 col-md-4 label">Country</div>
|
|
||||||
<div class="col-lg-9 col-md-8">USA</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-3 col-md-4 label">Address</div>
|
|
||||||
<div class="col-lg-9 col-md-8">A108 Adam Street, New York, NY 535022</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-3 col-md-4 label">Phone</div>
|
|
||||||
<div class="col-lg-9 col-md-8">(436) 486-3538 x29071</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-lg-3 col-md-4 label">Email</div>
|
|
||||||
<div class="col-lg-9 col-md-8">k.anderson@example.com</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="tab-pane fade profile-edit pt-3" id="profile-edit">
|
|
||||||
|
|
||||||
<!-- Profile Edit Form -->
|
|
||||||
<form>
|
|
||||||
<div class="row mb-3">
|
|
||||||
<label for="profileImage" class="col-md-4 col-lg-3 col-form-label">Profile Image</label>
|
|
||||||
<div class="col-md-8 col-lg-9">
|
|
||||||
<img src="assets/img/profile-img.jpg" alt="Profile">
|
|
||||||
<div class="pt-2">
|
|
||||||
<a href="#" class="btn btn-primary btn-sm" title="Upload new profile image"><i class="bi bi-upload"></i></a>
|
|
||||||
<a href="#" class="btn btn-danger btn-sm" title="Remove my profile image"><i class="bi bi-trash"></i></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row mb-3">
|
|
||||||
<label for="fullName" class="col-md-4 col-lg-3 col-form-label">Full Name</label>
|
|
||||||
<div class="col-md-8 col-lg-9">
|
|
||||||
<input name="fullName" type="text" class="form-control" id="fullName" value="Kevin Anderson">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row mb-3">
|
|
||||||
<label for="about" class="col-md-4 col-lg-3 col-form-label">About</label>
|
|
||||||
<div class="col-md-8 col-lg-9">
|
|
||||||
<textarea name="about" class="form-control" id="about" style="height: 100px">Sunt est soluta temporibus accusantium neque nam maiores cumque temporibus. Tempora libero non est unde veniam est qui dolor. Ut sunt iure rerum quae quisquam autem eveniet perspiciatis odit. Fuga sequi sed ea saepe at unde.</textarea>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row mb-3">
|
|
||||||
<label for="company" class="col-md-4 col-lg-3 col-form-label">Company</label>
|
|
||||||
<div class="col-md-8 col-lg-9">
|
|
||||||
<input name="company" type="text" class="form-control" id="company" value="Lueilwitz, Wisoky and Leuschke">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row mb-3">
|
|
||||||
<label for="Job" class="col-md-4 col-lg-3 col-form-label">Job</label>
|
|
||||||
<div class="col-md-8 col-lg-9">
|
|
||||||
<input name="job" type="text" class="form-control" id="Job" value="Web Designer">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row mb-3">
|
|
||||||
<label for="Country" class="col-md-4 col-lg-3 col-form-label">Country</label>
|
|
||||||
<div class="col-md-8 col-lg-9">
|
|
||||||
<input name="country" type="text" class="form-control" id="Country" value="USA">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row mb-3">
|
|
||||||
<label for="Address" class="col-md-4 col-lg-3 col-form-label">Address</label>
|
|
||||||
<div class="col-md-8 col-lg-9">
|
|
||||||
<input name="address" type="text" class="form-control" id="Address" value="A108 Adam Street, New York, NY 535022">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row mb-3">
|
|
||||||
<label for="Phone" class="col-md-4 col-lg-3 col-form-label">Phone</label>
|
|
||||||
<div class="col-md-8 col-lg-9">
|
|
||||||
<input name="phone" type="text" class="form-control" id="Phone" value="(436) 486-3538 x29071">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row mb-3">
|
|
||||||
<label for="Email" class="col-md-4 col-lg-3 col-form-label">Email</label>
|
|
||||||
<div class="col-md-8 col-lg-9">
|
|
||||||
<input name="email" type="email" class="form-control" id="Email" value="k.anderson@example.com">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row mb-3">
|
|
||||||
<label for="Twitter" class="col-md-4 col-lg-3 col-form-label">Twitter Profile</label>
|
|
||||||
<div class="col-md-8 col-lg-9">
|
|
||||||
<input name="twitter" type="text" class="form-control" id="Twitter" value="https://twitter.com/#">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row mb-3">
|
|
||||||
<label for="Facebook" class="col-md-4 col-lg-3 col-form-label">Facebook Profile</label>
|
|
||||||
<div class="col-md-8 col-lg-9">
|
|
||||||
<input name="facebook" type="text" class="form-control" id="Facebook" value="https://facebook.com/#">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row mb-3">
|
|
||||||
<label for="Instagram" class="col-md-4 col-lg-3 col-form-label">Instagram Profile</label>
|
|
||||||
<div class="col-md-8 col-lg-9">
|
|
||||||
<input name="instagram" type="text" class="form-control" id="Instagram" value="https://instagram.com/#">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row mb-3">
|
|
||||||
<label for="Linkedin" class="col-md-4 col-lg-3 col-form-label">Linkedin Profile</label>
|
|
||||||
<div class="col-md-8 col-lg-9">
|
|
||||||
<input name="linkedin" type="text" class="form-control" id="Linkedin" value="https://linkedin.com/#">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="text-center">
|
|
||||||
<button type="submit" class="btn btn-primary">Save Changes</button>
|
|
||||||
</div>
|
|
||||||
</form><!-- End Profile Edit Form -->
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="tab-pane fade pt-3" id="profile-settings">
|
|
||||||
|
|
||||||
<!-- Settings Form -->
|
|
||||||
<form>
|
|
||||||
|
|
||||||
<div class="row mb-3">
|
|
||||||
<label for="fullName" class="col-md-4 col-lg-3 col-form-label">Email Notifications</label>
|
|
||||||
<div class="col-md-8 col-lg-9">
|
|
||||||
<div class="form-check">
|
|
||||||
<input class="form-check-input" type="checkbox" id="changesMade" checked>
|
|
||||||
<label class="form-check-label" for="changesMade">
|
|
||||||
Changes made to your account
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
<div class="form-check">
|
|
||||||
<input class="form-check-input" type="checkbox" id="newProducts" checked>
|
|
||||||
<label class="form-check-label" for="newProducts">
|
|
||||||
Information on new products and services
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
<div class="form-check">
|
|
||||||
<input class="form-check-input" type="checkbox" id="proOffers">
|
|
||||||
<label class="form-check-label" for="proOffers">
|
|
||||||
Marketing and promo offers
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
<div class="form-check">
|
|
||||||
<input class="form-check-input" type="checkbox" id="securityNotify" checked disabled>
|
|
||||||
<label class="form-check-label" for="securityNotify">
|
|
||||||
Security alerts
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="text-center">
|
|
||||||
<button type="submit" class="btn btn-primary">Save Changes</button>
|
|
||||||
</div>
|
|
||||||
</form><!-- End settings Form -->
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="tab-pane fade pt-3" id="profile-change-password">
|
|
||||||
<!-- Change Password Form -->
|
|
||||||
<form>
|
|
||||||
|
|
||||||
<div class="row mb-3">
|
|
||||||
<label for="currentPassword" class="col-md-4 col-lg-3 col-form-label">Current Password</label>
|
|
||||||
<div class="col-md-8 col-lg-9">
|
|
||||||
<input name="password" type="password" class="form-control" id="currentPassword">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row mb-3">
|
|
||||||
<label for="newPassword" class="col-md-4 col-lg-3 col-form-label">New Password</label>
|
|
||||||
<div class="col-md-8 col-lg-9">
|
|
||||||
<input name="newpassword" type="password" class="form-control" id="newPassword">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row mb-3">
|
|
||||||
<label for="renewPassword" class="col-md-4 col-lg-3 col-form-label">Re-enter New Password</label>
|
|
||||||
<div class="col-md-8 col-lg-9">
|
|
||||||
<input name="renewpassword" type="password" class="form-control" id="renewPassword">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="text-center">
|
|
||||||
<button type="submit" class="btn btn-primary">Change Password</button>
|
|
||||||
</div>
|
|
||||||
</form><!-- End Change Password Form -->
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div><!-- End Bordered Tabs -->
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<script src="{{ asset('assets/dist/js/bootstrap.bundle.min.js') }}"></script>
|
|
||||||
{{-- <script src="{{ asset('assets/plugins/bootstrap/js/bootstrap.bundle.min.js') }}"></script> --}}
|
|
||||||
|
|
||||||
|
{{-- <script src="{{ asset('assets/dist/js/bootstrap.bundle.min.js') }}"></script> --}}
|
||||||
|
<script src="{{ asset('assets/plugins/bootstrap/js/bootstrap.bundle.min.js') }}"></script>
|
||||||
|
|
||||||
|
|
||||||
@livewire('management-dashboard.work-management')
|
@livewire('management-dashboard.work-management')
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
|
|
|
||||||
|
|
@ -41,11 +41,6 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Route::get('user-data', [PreparedProjectController::class, 'getData1'])->name('getData');
|
Route::get('user-data', [PreparedProjectController::class, 'getData1'])->name('getData');
|
||||||
Route::get('preparedProject/{ProjectId}', [PreparedProjectController::class, 'PreparedProject'])->name('preparedProject');
|
Route::get('preparedProject/{ProjectId}', [PreparedProjectController::class, 'PreparedProject'])->name('preparedProject');
|
||||||
Route::get('EditProjectForArticulated', [PreparedProjectController::class, 'editProjectForArticulated'])->name('EditProjectForArticulated');
|
Route::get('EditProjectForArticulated', [PreparedProjectController::class, 'editProjectForArticulated'])->name('EditProjectForArticulated');
|
||||||
|
|
@ -115,6 +110,7 @@
|
||||||
|however the Admin will not have access to the data of the SupersAdmins only.
|
|however the Admin will not have access to the data of the SupersAdmins only.
|
||||||
|
|
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
Route::controller(userController::class)
|
Route::controller(userController::class)
|
||||||
->group(function () {
|
->group(function () {
|
||||||
|
|
||||||
|
|
@ -127,8 +123,41 @@
|
||||||
Route::put('editProfile/{id}', 'EditProfile')->name('editProfile');
|
Route::put('editProfile/{id}', 'EditProfile')->name('editProfile');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Route::controller(CreateProjectController::class)
|
||||||
|
->group(function () {
|
||||||
|
// indication of progress bar to projects that are in 'Planning'
|
||||||
|
Route::get('test1/{id}', 'showStep1')->name('test1');
|
||||||
|
Route::get('test2/{id}', 'showStep2')->name('test2');
|
||||||
|
Route::get('test3/{id}', 'showStep3')->name('test3');
|
||||||
|
|
||||||
|
// Para adicionar uma tarefa Complementar
|
||||||
|
Route::post('addFurtherTasks', 'addFurtherTasks')->name('addFurtherTasks');
|
||||||
|
Route::post('deleteFurtherTasks', 'deleteFurtherTasks')->name('deleteFurtherTasks');
|
||||||
|
|
||||||
|
Route::get('createProject', 'createProjectForStep1')->name('createProject');
|
||||||
|
|
||||||
|
|
||||||
|
Route::post('receiveEquipmentToAssociateTasks', 'receiveEquipmentToAssociateTasks')->name('receiveEquipmentToAssociateTasks');
|
||||||
|
Route::get('finishCreatingProject/{numberProject}', 'finishCreatingProject')->name('finishCreatingProject');
|
||||||
|
Route::get('testDataTables', 'testDataTables')->name('testDataTables');
|
||||||
|
Route::get('workstationsAssociationTasks', 'workstationsAssociationTasks')->name('workstationsAssociationTasks');
|
||||||
|
Route::get('AddNomenclatureWorkstation', 'AddNomenclatureWorkstation')->name('AddNomenclatureWorkstation');
|
||||||
|
Route::get('removeProjectEquipment', 'removeProjectEquipment')->name('removeProjectEquipment');
|
||||||
|
Route::delete('deleteWorkstation/{name}', 'deleteWorkstation')->name('deleteWorkstation');
|
||||||
|
Route::post('EditEquipmentsProjects', 'EditEquipmentsProjects')->name('EditEquipmentsProjects');
|
||||||
|
Route::post('newProject1', 'processStep1')->name('processStep1');
|
||||||
|
Route::post('createWorkStations', 'createWorkStations')->name('createWorkStations');
|
||||||
|
|
||||||
|
Route::post('test1', 'EditprocessStep1')->name('EditprocessStep1');
|
||||||
|
Route::post('test2', 'processStep2')->name('processStep2');
|
||||||
|
Route::post('test2CreateEquipment', 'createEquipmentManual')->name('test2CreateEquipment');
|
||||||
|
Route::post('test3', 'processStep3');
|
||||||
|
Route::delete('removeEquipment/{id}', 'removePendingEquipment')->name('removeEquipment');
|
||||||
|
Route::post('CreateNewEquipmentFromPendingEquipment/{id}', 'CreateNewEquipmentFromPendingEquipment')->name('CreateNewEquipmentFromPendingEquipment');
|
||||||
|
Route::get('template1/{numberProject}', 'receiveUnitsForExcelTemplate')->name('download');
|
||||||
|
Route::post('create-equipament-project', 'createEquipamentProject')->name('createEquipamentProject');
|
||||||
|
Route::get('equipments/{id}/attributes', 'getAttributes');
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -143,6 +172,8 @@
|
||||||
| be assigned to the "web" middleware group. Make something great!
|
| be assigned to the "web" middleware group. Make something great!
|
||||||
|
|
|
|
||||||
*/
|
*/
|
||||||
|
Route::get('manageAssets', [ProjectoDatacontroller::class, 'ManageAssets'])->name('manageAssets');
|
||||||
|
|
||||||
Route::middleware(['auth', 'checkUserType'])->group(function () {
|
Route::middleware(['auth', 'checkUserType'])->group(function () {
|
||||||
|
|
||||||
// Rotas protegidas que exigem verificação de e-mail
|
// Rotas protegidas que exigem verificação de e-mail
|
||||||
|
|
@ -155,43 +186,6 @@
|
||||||
|Crud model for the application's projects, where both their creation and the indication of project statuses are handled.
|
|Crud model for the application's projects, where both their creation and the indication of project statuses are handled.
|
||||||
|
|
|
|
||||||
*/
|
*/
|
||||||
Route::controller(CreateProjectController::class)
|
|
||||||
->group(function () {
|
|
||||||
// indication of progress bar to projects that are in 'Planning'
|
|
||||||
Route::get('test1/{id}', 'showStep1')->name('test1');
|
|
||||||
Route::get('test2/{id}', 'showStep2')->name('test2');
|
|
||||||
Route::get('test3/{id}', 'showStep3')->name('test3');
|
|
||||||
|
|
||||||
// Para adicionar uma tarefa Complementar
|
|
||||||
Route::post('addFurtherTasks', 'addFurtherTasks')->name('addFurtherTasks');
|
|
||||||
Route::post('deleteFurtherTasks', 'deleteFurtherTasks')->name('deleteFurtherTasks');
|
|
||||||
|
|
||||||
Route::get('createProject', 'createProjectForStep1')->name('createProject');
|
|
||||||
|
|
||||||
|
|
||||||
Route::post('receiveEquipmentToAssociateTasks', 'receiveEquipmentToAssociateTasks')->name('receiveEquipmentToAssociateTasks');
|
|
||||||
Route::get('finishCreatingProject/{numberProject}', 'finishCreatingProject')->name('finishCreatingProject');
|
|
||||||
Route::get('testDataTables', 'testDataTables')->name('testDataTables');
|
|
||||||
Route::get('workstationsAssociationTasks', 'workstationsAssociationTasks')->name('workstationsAssociationTasks');
|
|
||||||
Route::get('AddNomenclatureWorkstation', 'AddNomenclatureWorkstation')->name('AddNomenclatureWorkstation');
|
|
||||||
Route::get('removeProjectEquipment', 'removeProjectEquipment')->name('removeProjectEquipment');
|
|
||||||
Route::delete('deleteWorkstation/{name}', 'deleteWorkstation')->name('deleteWorkstation');
|
|
||||||
Route::post('EditEquipmentsProjects', 'EditEquipmentsProjects')->name('EditEquipmentsProjects');
|
|
||||||
Route::post('newProject1', 'processStep1')->name('processStep1');
|
|
||||||
Route::post('createWorkStations', 'createWorkStations')->name('createWorkStations');
|
|
||||||
|
|
||||||
Route::post('test1', 'EditprocessStep1')->name('EditprocessStep1');
|
|
||||||
Route::post('test2', 'processStep2')->name('processStep2');
|
|
||||||
Route::post('test2CreateEquipment', 'createEquipmentManual')->name('test2CreateEquipment');
|
|
||||||
Route::post('test3', 'processStep3');
|
|
||||||
Route::delete('removeEquipment/{id}', 'removePendingEquipment')->name('removeEquipment');
|
|
||||||
Route::post('CreateNewEquipmentFromPendingEquipment/{id}', 'CreateNewEquipmentFromPendingEquipment')->name('CreateNewEquipmentFromPendingEquipment');
|
|
||||||
Route::get('template1/{numberProject}', 'receiveUnitsForExcelTemplate')->name('download');
|
|
||||||
Route::post('create-equipament-project', 'createEquipamentProject')->name('createEquipamentProject');
|
|
||||||
Route::get('equipments/{id}/attributes', 'getAttributes');
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
Route::get('/CreateUsers', [Pending_UserController::class, 'ListPendingUsers'])->name('CreateUsers');
|
Route::get('/CreateUsers', [Pending_UserController::class, 'ListPendingUsers'])->name('CreateUsers');
|
||||||
Route::get('/CreateUsers/{id}', [Pending_UserController::class, 'ShowFormUser'])->name('ShowPendingUser');
|
Route::get('/CreateUsers/{id}', [Pending_UserController::class, 'ShowFormUser'])->name('ShowPendingUser');
|
||||||
Route::post('formulario/receive', [Pending_UserController::class, 'store'])->name('criarUser');
|
Route::post('formulario/receive', [Pending_UserController::class, 'store'])->name('criarUser');
|
||||||
|
|
@ -218,7 +212,6 @@
|
||||||
| be assigned to the "web" middleware group. Make something great!
|
| be assigned to the "web" middleware group. Make something great!
|
||||||
|
|
|
|
||||||
*/
|
*/
|
||||||
Route::get('manageAssets', [ProjectoDatacontroller::class, 'ManageAssets'])->name('manageAssets');
|
|
||||||
|
|
||||||
// Mostrar Instalação click
|
// Mostrar Instalação click
|
||||||
Route::get('units/{id}', [ProjectoDatacontroller::class, 'showUnit'])->name('showUnit');
|
Route::get('units/{id}', [ProjectoDatacontroller::class, 'showUnit'])->name('showUnit');
|
||||||
|
|
|
||||||
10
vendor/composer/autoload_classmap.php
vendored
10
vendor/composer/autoload_classmap.php
vendored
|
|
@ -39,6 +39,14 @@
|
||||||
'App\\Http\\Middleware\\TrustProxies' => $baseDir . '/app/Http/Middleware/TrustProxies.php',
|
'App\\Http\\Middleware\\TrustProxies' => $baseDir . '/app/Http/Middleware/TrustProxies.php',
|
||||||
'App\\Http\\Middleware\\ValidateSignature' => $baseDir . '/app/Http/Middleware/ValidateSignature.php',
|
'App\\Http\\Middleware\\ValidateSignature' => $baseDir . '/app/Http/Middleware/ValidateSignature.php',
|
||||||
'App\\Http\\Middleware\\VerifyCsrfToken' => $baseDir . '/app/Http/Middleware/VerifyCsrfToken.php',
|
'App\\Http\\Middleware\\VerifyCsrfToken' => $baseDir . '/app/Http/Middleware/VerifyCsrfToken.php',
|
||||||
|
'App\\Livewire\\Articulado\\AdditonalTask' => $baseDir . '/app/Livewire/Articulado/AdditonalTask.php',
|
||||||
|
'App\\Livewire\\Articulado\\SelectElementalTasksInWonkstation' => $baseDir . '/app/Livewire/Articulado/SelectElementalTasksInWonkstation.php',
|
||||||
|
'App\\Livewire\\Execução\\EquipmentsDashboard' => $baseDir . '/app/Livewire/Execução/EquipmentsDashboard.php',
|
||||||
|
'App\\Livewire\\Execução\\StepByStepEquipmentTasks' => $baseDir . '/app/Livewire/Execução/StepByStepEquipmentTasks.php',
|
||||||
|
'App\\Livewire\\Execução\\TasksDashboard' => $baseDir . '/app/Livewire/Execução/TasksDashboard.php',
|
||||||
|
'App\\Livewire\\Execução\\WorkstationDashboard' => $baseDir . '/app/Livewire/Execução/WorkstationDashboard.php',
|
||||||
|
'App\\Livewire\\ManagementDashboard\\WorkManagement' => $baseDir . '/app/Livewire/ManagementDashboard/WorkManagement.php',
|
||||||
|
'App\\Livewire\\Preparadas\\ShowQrcodeAndDetallsEquipment' => $baseDir . '/app/Livewire/Preparadas/ShowQrcodeAndDetallsEquipment.php',
|
||||||
'App\\Mail\\NewUserNotification' => $baseDir . '/app/Mail/NewUserNotification.php',
|
'App\\Mail\\NewUserNotification' => $baseDir . '/app/Mail/NewUserNotification.php',
|
||||||
'App\\Models\\AmbitsEquipment' => $baseDir . '/app/Models/AmbitsEquipment.php',
|
'App\\Models\\AmbitsEquipment' => $baseDir . '/app/Models/AmbitsEquipment.php',
|
||||||
'App\\Models\\CompanyProject' => $baseDir . '/app/Models/CompanyProject.php',
|
'App\\Models\\CompanyProject' => $baseDir . '/app/Models/CompanyProject.php',
|
||||||
|
|
@ -55,6 +63,7 @@
|
||||||
'App\\Models\\PendingEquipment' => $baseDir . '/app/Models/PendingEquipment.php',
|
'App\\Models\\PendingEquipment' => $baseDir . '/app/Models/PendingEquipment.php',
|
||||||
'App\\Models\\PendingUser' => $baseDir . '/app/Models/PendingUser.php',
|
'App\\Models\\PendingUser' => $baseDir . '/app/Models/PendingUser.php',
|
||||||
'App\\Models\\Plant' => $baseDir . '/app/Models/Plant.php',
|
'App\\Models\\Plant' => $baseDir . '/app/Models/Plant.php',
|
||||||
|
'App\\Models\\QrcodesAssociatedEquipment' => $baseDir . '/app/Models/QrcodesAssociatedEquipment.php',
|
||||||
'App\\Models\\SpecificAttributesEquipmentType' => $baseDir . '/app/Models/SpecificAttributesEquipmentType.php',
|
'App\\Models\\SpecificAttributesEquipmentType' => $baseDir . '/app/Models/SpecificAttributesEquipmentType.php',
|
||||||
'App\\Models\\TasksAssociationAmbits' => $baseDir . '/app/Models/TasksAssociationAmbits.php',
|
'App\\Models\\TasksAssociationAmbits' => $baseDir . '/app/Models/TasksAssociationAmbits.php',
|
||||||
'App\\Models\\TypeUser' => $baseDir . '/app/Models/TypeUser.php',
|
'App\\Models\\TypeUser' => $baseDir . '/app/Models/TypeUser.php',
|
||||||
|
|
@ -67,6 +76,7 @@
|
||||||
'App\\Providers\\EventServiceProvider' => $baseDir . '/app/Providers/EventServiceProvider.php',
|
'App\\Providers\\EventServiceProvider' => $baseDir . '/app/Providers/EventServiceProvider.php',
|
||||||
'App\\Providers\\FortifyServiceProvider' => $baseDir . '/app/Providers/FortifyServiceProvider.php',
|
'App\\Providers\\FortifyServiceProvider' => $baseDir . '/app/Providers/FortifyServiceProvider.php',
|
||||||
'App\\Providers\\RouteServiceProvider' => $baseDir . '/app/Providers/RouteServiceProvider.php',
|
'App\\Providers\\RouteServiceProvider' => $baseDir . '/app/Providers/RouteServiceProvider.php',
|
||||||
|
'App\\Repositories\\ReceiveTasksRepository' => $baseDir . '/app/Repositories/ReceiveTasksRepository.php',
|
||||||
'Attribute' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Attribute.php',
|
'Attribute' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Attribute.php',
|
||||||
'BaconQrCode\\Common\\BitArray' => $vendorDir . '/bacon/bacon-qr-code/src/Common/BitArray.php',
|
'BaconQrCode\\Common\\BitArray' => $vendorDir . '/bacon/bacon-qr-code/src/Common/BitArray.php',
|
||||||
'BaconQrCode\\Common\\BitMatrix' => $vendorDir . '/bacon/bacon-qr-code/src/Common/BitMatrix.php',
|
'BaconQrCode\\Common\\BitMatrix' => $vendorDir . '/bacon/bacon-qr-code/src/Common/BitMatrix.php',
|
||||||
|
|
|
||||||
10
vendor/composer/autoload_static.php
vendored
10
vendor/composer/autoload_static.php
vendored
|
|
@ -629,6 +629,14 @@ class ComposerStaticInit4de2290df2a8c5142f72130885c7079d
|
||||||
'App\\Http\\Middleware\\TrustProxies' => __DIR__ . '/../..' . '/app/Http/Middleware/TrustProxies.php',
|
'App\\Http\\Middleware\\TrustProxies' => __DIR__ . '/../..' . '/app/Http/Middleware/TrustProxies.php',
|
||||||
'App\\Http\\Middleware\\ValidateSignature' => __DIR__ . '/../..' . '/app/Http/Middleware/ValidateSignature.php',
|
'App\\Http\\Middleware\\ValidateSignature' => __DIR__ . '/../..' . '/app/Http/Middleware/ValidateSignature.php',
|
||||||
'App\\Http\\Middleware\\VerifyCsrfToken' => __DIR__ . '/../..' . '/app/Http/Middleware/VerifyCsrfToken.php',
|
'App\\Http\\Middleware\\VerifyCsrfToken' => __DIR__ . '/../..' . '/app/Http/Middleware/VerifyCsrfToken.php',
|
||||||
|
'App\\Livewire\\Articulado\\AdditonalTask' => __DIR__ . '/../..' . '/app/Livewire/Articulado/AdditonalTask.php',
|
||||||
|
'App\\Livewire\\Articulado\\SelectElementalTasksInWonkstation' => __DIR__ . '/../..' . '/app/Livewire/Articulado/SelectElementalTasksInWonkstation.php',
|
||||||
|
'App\\Livewire\\Execução\\EquipmentsDashboard' => __DIR__ . '/../..' . '/app/Livewire/Execução/EquipmentsDashboard.php',
|
||||||
|
'App\\Livewire\\Execução\\StepByStepEquipmentTasks' => __DIR__ . '/../..' . '/app/Livewire/Execução/StepByStepEquipmentTasks.php',
|
||||||
|
'App\\Livewire\\Execução\\TasksDashboard' => __DIR__ . '/../..' . '/app/Livewire/Execução/TasksDashboard.php',
|
||||||
|
'App\\Livewire\\Execução\\WorkstationDashboard' => __DIR__ . '/../..' . '/app/Livewire/Execução/WorkstationDashboard.php',
|
||||||
|
'App\\Livewire\\ManagementDashboard\\WorkManagement' => __DIR__ . '/../..' . '/app/Livewire/ManagementDashboard/WorkManagement.php',
|
||||||
|
'App\\Livewire\\Preparadas\\ShowQrcodeAndDetallsEquipment' => __DIR__ . '/../..' . '/app/Livewire/Preparadas/ShowQrcodeAndDetallsEquipment.php',
|
||||||
'App\\Mail\\NewUserNotification' => __DIR__ . '/../..' . '/app/Mail/NewUserNotification.php',
|
'App\\Mail\\NewUserNotification' => __DIR__ . '/../..' . '/app/Mail/NewUserNotification.php',
|
||||||
'App\\Models\\AmbitsEquipment' => __DIR__ . '/../..' . '/app/Models/AmbitsEquipment.php',
|
'App\\Models\\AmbitsEquipment' => __DIR__ . '/../..' . '/app/Models/AmbitsEquipment.php',
|
||||||
'App\\Models\\CompanyProject' => __DIR__ . '/../..' . '/app/Models/CompanyProject.php',
|
'App\\Models\\CompanyProject' => __DIR__ . '/../..' . '/app/Models/CompanyProject.php',
|
||||||
|
|
@ -645,6 +653,7 @@ class ComposerStaticInit4de2290df2a8c5142f72130885c7079d
|
||||||
'App\\Models\\PendingEquipment' => __DIR__ . '/../..' . '/app/Models/PendingEquipment.php',
|
'App\\Models\\PendingEquipment' => __DIR__ . '/../..' . '/app/Models/PendingEquipment.php',
|
||||||
'App\\Models\\PendingUser' => __DIR__ . '/../..' . '/app/Models/PendingUser.php',
|
'App\\Models\\PendingUser' => __DIR__ . '/../..' . '/app/Models/PendingUser.php',
|
||||||
'App\\Models\\Plant' => __DIR__ . '/../..' . '/app/Models/Plant.php',
|
'App\\Models\\Plant' => __DIR__ . '/../..' . '/app/Models/Plant.php',
|
||||||
|
'App\\Models\\QrcodesAssociatedEquipment' => __DIR__ . '/../..' . '/app/Models/QrcodesAssociatedEquipment.php',
|
||||||
'App\\Models\\SpecificAttributesEquipmentType' => __DIR__ . '/../..' . '/app/Models/SpecificAttributesEquipmentType.php',
|
'App\\Models\\SpecificAttributesEquipmentType' => __DIR__ . '/../..' . '/app/Models/SpecificAttributesEquipmentType.php',
|
||||||
'App\\Models\\TasksAssociationAmbits' => __DIR__ . '/../..' . '/app/Models/TasksAssociationAmbits.php',
|
'App\\Models\\TasksAssociationAmbits' => __DIR__ . '/../..' . '/app/Models/TasksAssociationAmbits.php',
|
||||||
'App\\Models\\TypeUser' => __DIR__ . '/../..' . '/app/Models/TypeUser.php',
|
'App\\Models\\TypeUser' => __DIR__ . '/../..' . '/app/Models/TypeUser.php',
|
||||||
|
|
@ -657,6 +666,7 @@ class ComposerStaticInit4de2290df2a8c5142f72130885c7079d
|
||||||
'App\\Providers\\EventServiceProvider' => __DIR__ . '/../..' . '/app/Providers/EventServiceProvider.php',
|
'App\\Providers\\EventServiceProvider' => __DIR__ . '/../..' . '/app/Providers/EventServiceProvider.php',
|
||||||
'App\\Providers\\FortifyServiceProvider' => __DIR__ . '/../..' . '/app/Providers/FortifyServiceProvider.php',
|
'App\\Providers\\FortifyServiceProvider' => __DIR__ . '/../..' . '/app/Providers/FortifyServiceProvider.php',
|
||||||
'App\\Providers\\RouteServiceProvider' => __DIR__ . '/../..' . '/app/Providers/RouteServiceProvider.php',
|
'App\\Providers\\RouteServiceProvider' => __DIR__ . '/../..' . '/app/Providers/RouteServiceProvider.php',
|
||||||
|
'App\\Repositories\\ReceiveTasksRepository' => __DIR__ . '/../..' . '/app/Repositories/ReceiveTasksRepository.php',
|
||||||
'Attribute' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Attribute.php',
|
'Attribute' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Attribute.php',
|
||||||
'BaconQrCode\\Common\\BitArray' => __DIR__ . '/..' . '/bacon/bacon-qr-code/src/Common/BitArray.php',
|
'BaconQrCode\\Common\\BitArray' => __DIR__ . '/..' . '/bacon/bacon-qr-code/src/Common/BitArray.php',
|
||||||
'BaconQrCode\\Common\\BitMatrix' => __DIR__ . '/..' . '/bacon/bacon-qr-code/src/Common/BitMatrix.php',
|
'BaconQrCode\\Common\\BitMatrix' => __DIR__ . '/..' . '/bacon/bacon-qr-code/src/Common/BitMatrix.php',
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user