From f9c6cec070d5a00a4f729636365660d30801a737 Mon Sep 17 00:00:00 2001 From: ygbanzato Date: Mon, 18 Sep 2023 14:39:48 +0100 Subject: [PATCH] final implementation of the further tasks in the system and creation of qrcodes in the works prepared for printing both individually and en masse. --- .../Controllers/CreateProjectController.php | 8 +- .../Controllers/PreparedProjectController.php | 3 +- .../Controllers/ProjectoDatacontroller.php | 43 +- .../Execução/StepByStepEquipmentTasks.php | 30 + .../ShowQrcodeAndDetallsEquipment.php | 23 + app/Models/ControlEquipmentWorkstation.php | 7 + app/Models/FurtherTasks.php | 10 + app/Models/WorkstationsAssociationTasks.php | 5 + public/assets/dist/css/adminlte.css | 238 +++++- public/assets/dist/js/qrcode.js | 614 ++++++++++++++ public/img/ispt/4.0/galpLogo1.png | Bin 0 -> 18012 bytes public/img/ispt/4.0/ispt.jpeg | Bin 0 -> 4896 bytes public/img/ispt/4.0/isptLogoVertical.png | Bin 0 -> 48616 bytes resources/views/Admin/index.blade.php | 1 + ...t-elemental-tasks-in-wonkstation.blade.php | 2 +- .../step-by-step-equipment-tasks.blade.php | 26 + ...how-qrcode-and-detalls-equipment.blade.php | 90 ++ .../executionProject.blade.php | 88 +- .../projectsClients/preparedProject.blade.php | 781 +++++++++++------- .../projectsClients/workStation_3.blade.php | 333 +------- 20 files changed, 1619 insertions(+), 683 deletions(-) create mode 100644 app/Livewire/Execução/StepByStepEquipmentTasks.php create mode 100644 app/Livewire/Preparadas/ShowQrcodeAndDetallsEquipment.php create mode 100644 public/assets/dist/js/qrcode.js create mode 100644 public/img/ispt/4.0/galpLogo1.png create mode 100644 public/img/ispt/4.0/ispt.jpeg create mode 100644 public/img/ispt/4.0/isptLogoVertical.png create mode 100644 resources/views/livewire/execução/step-by-step-equipment-tasks.blade.php create mode 100644 resources/views/livewire/preparadas/show-qrcode-and-detalls-equipment.blade.php diff --git a/app/Http/Controllers/CreateProjectController.php b/app/Http/Controllers/CreateProjectController.php index b776311b..0fc3f53b 100755 --- a/app/Http/Controllers/CreateProjectController.php +++ b/app/Http/Controllers/CreateProjectController.php @@ -260,9 +260,10 @@ public function finishCreatingProject($numberProject) 'further' => $missingFurtherTasksDetails, 'workstation' => $missingWorkstations ]; + // Verificar se todos os arrays internos estão vazios + $isEmpty = empty($allMissingTasks['elemental']) && empty($allMissingTasks['further']) && empty($allMissingTasks['workstation']); - - if (!empty($allMissingTasks)) { + if (!$isEmpty) { return redirect()->back()->with('errors', $allMissingTasks); } else { $project = CompanyProject::find($numberProject); @@ -951,7 +952,8 @@ public function processStep2(Request $request) $JoinsEquipmentsWithTasks->execution_order = $execution_order++; $JoinsEquipmentsWithTasks->elemental_tasks_id = $TasksAssociationAmbit->elemental_tasks_id; $JoinsEquipmentsWithTasks->further_tasks_id = null; - $JoinsEquipmentsWithTasks->inspection = 'Nao'; + // 2 vai significar 'nao' e 1 'sim' + $JoinsEquipmentsWithTasks->inspection = 2; $JoinsEquipmentsWithTasks->save(); } diff --git a/app/Http/Controllers/PreparedProjectController.php b/app/Http/Controllers/PreparedProjectController.php index 9b650100..13990910 100755 --- a/app/Http/Controllers/PreparedProjectController.php +++ b/app/Http/Controllers/PreparedProjectController.php @@ -37,7 +37,8 @@ public function PreparedProject($ProjectId) // ->with('equipmentsProjects', $equipmentsProjects) ->with('equipmentsTypes', $equipmentsTypes) ->with('units', $checkUnits) - ->with('numberProject', $numberProject); + ->with('numberProject', $numberProject) + ->with('equipmentsProjects', $equipmentsProjects); } public function getAmbits($equipmentType) diff --git a/app/Http/Controllers/ProjectoDatacontroller.php b/app/Http/Controllers/ProjectoDatacontroller.php index a77fd08d..f320ded9 100755 --- a/app/Http/Controllers/ProjectoDatacontroller.php +++ b/app/Http/Controllers/ProjectoDatacontroller.php @@ -20,13 +20,13 @@ class ProjectoDatacontroller extends Controller { - public function receivePlants($clientId){ - if($clientId == 'all'){ + public function receivePlants($clientId) + { + if ($clientId == 'all') { $allPlants = Plant::all(); return response()->json($allPlants); } dd($clientId); - } @@ -100,7 +100,7 @@ public function ManageAssets() $allEquipmentType = EquipmentType::all(); $allClients = User::where('type_users', 3)->get(); - return view('Admin/DataManagement/manageassets', compact('units', 'equipments','allEquipmentType','allClients')); + return view('Admin/DataManagement/manageassets', compact('units', 'equipments', 'allEquipmentType', 'allClients')); } public function showUnit($id) @@ -110,7 +110,7 @@ public function showUnit($id) return view('Admin/DataManagement/showEquipament', compact('equipaments')); } - + @@ -118,10 +118,8 @@ public function receiveEquipmentsProject($receiveNumberProject) { // Recebe os dados vindos da funcao 'data' criada na view $equipment_type_id = request('equipment_type_id'); - $ambits_id = request('ambits_id'); - //Recebe sempre apenas os equipamentos relacionados a obra - // $model = Equipment::where('company_projects_id', $receiveNumberProject); + $ambits_id = request('ambits_id'); // Caso 'equipment_type_id' seja '#', mostra todos os equipamentos if ($equipment_type_id == '#') { @@ -153,16 +151,30 @@ public function receiveEquipmentsProject($receiveNumberProject) ->addColumn('Ambits', function ($row) { return $row->equipmentAssociationAmbit->ambitsEquipment->ambits_description; }) + // Este 2 em especial, tem a condicao se a tarefa elementar estiver a null ele deve pegar a valor do campo ao lado ou seja da further task. ->addColumn('order_tasks', function ($row) { - return $row->orderEquipmentTasks->map(function ($task) { - return $task->elementalTask->elemental_tasks_code; + return $row->orderEquipmentTasks->sortBy('execution_order')->map(function ($task) { + // Se elementalTask não for null, retorna elemental_tasks_code + if (!is_null($task->elementalTask)) { + return $task->elementalTask->elemental_tasks_code; + } + // Caso contrário, retorna further_tasks_name + return $task->furtherTasks->further_tasks_name; })->implode(' ||'); }) ->addColumn('current_task', function ($row) { return $row->controlEquipmentWorkstation->map(function ($task) { - return $task->elementalTask->elemental_tasks_code; + // Se elementalTask não for null, retorna elemental_tasks_code + if (!is_null($task->elementalTask)) { + return $task->elementalTask->elemental_tasks_code; + } + // Caso contrário, retorna further_tasks_name + return $task->furtherTasks->further_tasks_name; })->implode(' ||'); }) + + + ->addColumn('Inspec', function ($row) { return $row->hasInspectionYes() ? 'Sim' : 'Nao'; }) @@ -189,13 +201,18 @@ public function receiveWorkstationProject($receiveNumberProject) { $model = ConstructionWorkstation::where('company_projects_id', $receiveNumberProject)->with('workstationsAssociationTasks'); + // Se ao varificar na tabela 'workstationsAssociationTasks' a coluna elementalTask estiver a null, significa que e uma further task, sendo assim ele busca o campo ao lado. return DataTables::of($model) ->addColumn('workstations_Association_Tasks', function ($row) { return $row->workstationsAssociationTasks->map(function ($task) { - return $task->elementalTask->elemental_tasks_code; + // Se elementalTask não for null, retorna elemental_tasks_code + if (!is_null($task->elementalTask)) { + return $task->elementalTask->elemental_tasks_code; + } + // Caso contrário, retorna further_tasks_name + return $task->furtherTask->further_tasks_name; })->implode(' ||'); }) - ->toJson(); } } diff --git a/app/Livewire/Execução/StepByStepEquipmentTasks.php b/app/Livewire/Execução/StepByStepEquipmentTasks.php new file mode 100644 index 00000000..4f473a17 --- /dev/null +++ b/app/Livewire/Execução/StepByStepEquipmentTasks.php @@ -0,0 +1,30 @@ +equipmentId = $equipmentId; + // $this->dispatchBrowserEvent('openModalEvent'); // Emitindo o evento + // } + + public function loadDetails($equipmentId) + { + $this->equipmentId = $equipmentId; + $this->emit('openModalEvent'); + } + + public function render() + { + return view('livewire.execução.step-by-step-equipment-tasks'); + } +} diff --git a/app/Livewire/Preparadas/ShowQrcodeAndDetallsEquipment.php b/app/Livewire/Preparadas/ShowQrcodeAndDetallsEquipment.php new file mode 100644 index 00000000..710ed231 --- /dev/null +++ b/app/Livewire/Preparadas/ShowQrcodeAndDetallsEquipment.php @@ -0,0 +1,23 @@ +equipment = $equipment; + } + + public function render() + { + // $this->equipment = Equipment::find($this->equipment->id); + return view('livewire.preparadas.show-qrcode-and-detalls-equipment'); + } + +} diff --git a/app/Models/ControlEquipmentWorkstation.php b/app/Models/ControlEquipmentWorkstation.php index 8e935ee1..9e8e076a 100755 --- a/app/Models/ControlEquipmentWorkstation.php +++ b/app/Models/ControlEquipmentWorkstation.php @@ -24,4 +24,11 @@ public function elementalTask() { return $this->belongsTo(ElementalTasks::class,'elemental_tasks_id','elemental_tasks_id'); } + + public function furtherTasks() + { + return $this->belongsTo(FurtherTasks::class,'further_tasks_id','further_tasks_id'); + } + + } diff --git a/app/Models/FurtherTasks.php b/app/Models/FurtherTasks.php index 71e8f356..4e735fc6 100755 --- a/app/Models/FurtherTasks.php +++ b/app/Models/FurtherTasks.php @@ -19,4 +19,14 @@ public function orderEquipmentTasks() { return $this->hasMany(OrderEquipmentTasks::class,'further_tasks_id','further_tasks_id'); } + + public function workstationsAssociationTasks() + { + return $this->hasMany(WorkstationsAssociationTasks::class,'further_tasks_id','further_tasks_id'); + } + + public function controlEquipmentWorkstation() + { + return $this->hasMany(ControlEquipmentWorkstation::class, 'further_tasks_id', 'further_tasks_id'); + } } diff --git a/app/Models/WorkstationsAssociationTasks.php b/app/Models/WorkstationsAssociationTasks.php index 4a9ef160..acebf92a 100755 --- a/app/Models/WorkstationsAssociationTasks.php +++ b/app/Models/WorkstationsAssociationTasks.php @@ -22,4 +22,9 @@ public function elementalTask() { return $this->belongsTo(ElementalTasks::class,'elemental_tasks_id','elemental_tasks_id'); } + + public function furtherTask() + { + return $this->belongsTo(FurtherTasks::class,'further_tasks_id','further_tasks_id'); + } } diff --git a/public/assets/dist/css/adminlte.css b/public/assets/dist/css/adminlte.css index 466c03d7..3cf80e7c 100644 --- a/public/assets/dist/css/adminlte.css +++ b/public/assets/dist/css/adminlte.css @@ -55,7 +55,8 @@ :root { } .scrollable-list { - max-height: calc(1.5em + .75rem + 2px + 2px + 1.5em + .75rem + 2px + 2px + 1.5em + .75rem + 2px + 2px + 1.5em + .75rem + 2px); /* Altura de 4 itens de lista */ + max-height: calc(1.5em + .75rem + 2px + 2px + 1.5em + .75rem + 2px + 2px + 1.5em + .75rem + 2px + 2px + 1.5em + .75rem + 2px); + /* Altura de 4 itens de lista */ overflow-y: auto; } @@ -75,6 +76,159 @@ @font-face { /*Substitua pelo caminho para o arquivo da fonte que você extraiu */ } + + + + +/* Estilo para dimencionar o cartao do qrcode */ +.modal-content-center { + display: flex; + justify-content: center; + align-items: center; + height: 100%; + /* Isso garante que o container ocupe toda a altura da modal */ +} + +.card-to-print { + width: 45mm; + height: 95mm; + max-width: 45mm; + max-height: 95mm; + border: 1px solid #09255C; + box-sizing: border-box; + transform-origin: top left; +} + +.custom-row { + display: flex; + flex-direction: row; + flex-wrap: nowrap; + /* Isso garante que os itens não sejam quebrados em várias linhas */ + justify-content: space-between; + /* Isso espaça os itens uniformemente na linha */ + align-items: center; + /* Isso centraliza os itens verticalmente */ + margin-left: 0; + /* Remove a margem negativa padrão da classe row do Bootstrap */ + margin-right: 0; + /* Remove a margem negativa padrão da classe row do Bootstrap */ +} + + +.top { + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; +} + +.card-to-print .row { + margin: 0; + /* Remove a margem negativa */ +} + +.print-container { + display: none; + position: relative; + overflow: hidden; + width: 45mm; + height: 95mm; + border: 1px solid #09255C; + box-sizing: border-box; +} + +.card-to-printAll { + width: 100%; + height: 100%; + box-sizing: border-box; + overflow: hidden; +} + +.custom-rowAll { + display: flex; + flex-wrap: nowrap; + width: 100%; + box-sizing: border-box; +} + +/* Estilos para impressão */ +@media print { + + body * { + visibility: hidden; + } + /* body, + html { + margin: 0; + padding: 0; + } */ + + .print-container, + .print-container * { + visibility: visible !important; + + } + + .print-container { + display: inline-block; + margin-right: 2mm; + margin-bottom: 3mm; + width: 45mm; + height: 95mm; + border: 1px solid #09255C; + box-sizing: border-box; + page-break-inside: avoid; + } + + .card-to-print, + .card-to-print * { + visibility: visible; + } + + .card-to-print { + position: absolute; + left: 0; + top: 0; + } +} + + +#circulo { + background: white; + border-radius: 50%; + width: 20px; + height: 20px; + border: 1px solid black; + flex-shrink: 0; +} + +/* Escala o cartão proporcionalmente com base na largura da janela */ +@media (max-width: 500px) { + + .card-to-print, + .card-to-printAll { + transform: scale(0.8); + } +} + +@media (max-width: 400px) { + + .card-to-print, + .card-to-printAll { + transform: scale(0.7); + } +} + +@media (max-width: 300px) { + + .card-to-print, + .card-to-printAll { + transform: scale(0.6); + } +} + + + *, *::before, *::after { @@ -140,43 +294,51 @@ p { /* STYLES TABLE*/ - .dt-buttons > button, .dt-buttons > .btn-group > button { - background-color: #00B0EA; - color:white; - letter-spacing: 1px; - border: 1px solid #00B0EA; - } - - .dt-buttons > button:hover, .dt-buttons > .btn-group > button:hover { - background-color: #00B0EA; - color: #09255C; - border: 1px solid #09255C; - } - - .dt-button-collection > .dropdown-menu > .dt-button.active{ - background-color: #00B0EA; - color: #09255C; - } - .dt-button-collection > .dropdown-menu > .dt-button.active:hover{ - background-color: #00B0EA; - color: white; - } - - div.dataTables_wrapper div.dataTables_filter label { - font-weight: normal; - white-space: nowrap; - text-align: left; - color: #09255C; - } - - table.dataTable>thead .sorting,table.dataTable>thead .sorting_asc,table.dataTable>thead .sorting_desc,table.dataTable>thead .sorting_asc_disabled,table.dataTable>thead .sorting_desc_disabled { - cursor: pointer; - position: relative; - background-color: #00B0EA; - color: #fff; +.dt-buttons>button, +.dt-buttons>.btn-group>button { + background-color: #00B0EA; + color: white; + letter-spacing: 1px; + border: 1px solid #00B0EA; } -thead > tr, thead > tr > th { +.dt-buttons>button:hover, +.dt-buttons>.btn-group>button:hover { + background-color: #00B0EA; + color: #09255C; + border: 1px solid #09255C; +} + +.dt-button-collection>.dropdown-menu>.dt-button.active { + background-color: #00B0EA; + color: #09255C; +} + +.dt-button-collection>.dropdown-menu>.dt-button.active:hover { + background-color: #00B0EA; + color: white; +} + +div.dataTables_wrapper div.dataTables_filter label { + font-weight: normal; + white-space: nowrap; + text-align: left; + color: #09255C; +} + +table.dataTable>thead .sorting, +table.dataTable>thead .sorting_asc, +table.dataTable>thead .sorting_desc, +table.dataTable>thead .sorting_asc_disabled, +table.dataTable>thead .sorting_desc_disabled { + cursor: pointer; + position: relative; + background-color: #00B0EA; + color: #fff; +} + +thead>tr, +thead>tr>th { padding: 0.75rem; vertical-align: top; border-top: 1px solid #dee2e6; @@ -259,7 +421,7 @@ a { background-color: transparent; } -a:focus{ +a:focus { color: #00B0EA; text-decoration: none; } @@ -4215,7 +4377,7 @@ .input-group-append { display: flex; } -.input-group-prepend{ +.input-group-prepend { width: 100%; } diff --git a/public/assets/dist/js/qrcode.js b/public/assets/dist/js/qrcode.js new file mode 100644 index 00000000..5507c154 --- /dev/null +++ b/public/assets/dist/js/qrcode.js @@ -0,0 +1,614 @@ +/** + * @fileoverview + * - Using the 'QRCode for Javascript library' + * - Fixed dataset of 'QRCode for Javascript library' for support full-spec. + * - this library has no dependencies. + * + * @author davidshimjs + * @see http://www.d-project.com/ + * @see http://jeromeetienne.github.com/jquery-qrcode/ + */ +var QRCode; + +(function () { + //--------------------------------------------------------------------- + // QRCode for JavaScript + // + // Copyright (c) 2009 Kazuhiko Arase + // + // URL: http://www.d-project.com/ + // + // Licensed under the MIT license: + // http://www.opensource.org/licenses/mit-license.php + // + // The word "QR Code" is registered trademark of + // DENSO WAVE INCORPORATED + // http://www.denso-wave.com/qrcode/faqpatent-e.html + // + //--------------------------------------------------------------------- + function QR8bitByte(data) { + this.mode = QRMode.MODE_8BIT_BYTE; + this.data = data; + this.parsedData = []; + + // Added to support UTF-8 Characters + for (var i = 0, l = this.data.length; i < l; i++) { + var byteArray = []; + var code = this.data.charCodeAt(i); + + if (code > 0x10000) { + byteArray[0] = 0xF0 | ((code & 0x1C0000) >>> 18); + byteArray[1] = 0x80 | ((code & 0x3F000) >>> 12); + byteArray[2] = 0x80 | ((code & 0xFC0) >>> 6); + byteArray[3] = 0x80 | (code & 0x3F); + } else if (code > 0x800) { + byteArray[0] = 0xE0 | ((code & 0xF000) >>> 12); + byteArray[1] = 0x80 | ((code & 0xFC0) >>> 6); + byteArray[2] = 0x80 | (code & 0x3F); + } else if (code > 0x80) { + byteArray[0] = 0xC0 | ((code & 0x7C0) >>> 6); + byteArray[1] = 0x80 | (code & 0x3F); + } else { + byteArray[0] = code; + } + + this.parsedData.push(byteArray); + } + + this.parsedData = Array.prototype.concat.apply([], this.parsedData); + + if (this.parsedData.length != this.data.length) { + this.parsedData.unshift(191); + this.parsedData.unshift(187); + this.parsedData.unshift(239); + } + } + + QR8bitByte.prototype = { + getLength: function (buffer) { + return this.parsedData.length; + }, + write: function (buffer) { + for (var i = 0, l = this.parsedData.length; i < l; i++) { + buffer.put(this.parsedData[i], 8); + } + } + }; + + function QRCodeModel(typeNumber, errorCorrectLevel) { + this.typeNumber = typeNumber; + this.errorCorrectLevel = errorCorrectLevel; + this.modules = null; + this.moduleCount = 0; + this.dataCache = null; + this.dataList = []; + } + + QRCodeModel.prototype={addData:function(data){var newData=new QR8bitByte(data);this.dataList.push(newData);this.dataCache=null;},isDark:function(row,col){if(row<0||this.moduleCount<=row||col<0||this.moduleCount<=col){throw new Error(row+","+col);} + return this.modules[row][col];},getModuleCount:function(){return this.moduleCount;},make:function(){this.makeImpl(false,this.getBestMaskPattern());},makeImpl:function(test,maskPattern){this.moduleCount=this.typeNumber*4+17;this.modules=new Array(this.moduleCount);for(var row=0;row=7){this.setupTypeNumber(test);} + if(this.dataCache==null){this.dataCache=QRCodeModel.createData(this.typeNumber,this.errorCorrectLevel,this.dataList);} + this.mapData(this.dataCache,maskPattern);},setupPositionProbePattern:function(row,col){for(var r=-1;r<=7;r++){if(row+r<=-1||this.moduleCount<=row+r)continue;for(var c=-1;c<=7;c++){if(col+c<=-1||this.moduleCount<=col+c)continue;if((0<=r&&r<=6&&(c==0||c==6))||(0<=c&&c<=6&&(r==0||r==6))||(2<=r&&r<=4&&2<=c&&c<=4)){this.modules[row+r][col+c]=true;}else{this.modules[row+r][col+c]=false;}}}},getBestMaskPattern:function(){var minLostPoint=0;var pattern=0;for(var i=0;i<8;i++){this.makeImpl(true,i);var lostPoint=QRUtil.getLostPoint(this);if(i==0||minLostPoint>lostPoint){minLostPoint=lostPoint;pattern=i;}} + return pattern;},createMovieClip:function(target_mc,instance_name,depth){var qr_mc=target_mc.createEmptyMovieClip(instance_name,depth);var cs=1;this.make();for(var row=0;row>i)&1)==1);this.modules[Math.floor(i/3)][i%3+this.moduleCount-8-3]=mod;} + for(var i=0;i<18;i++){var mod=(!test&&((bits>>i)&1)==1);this.modules[i%3+this.moduleCount-8-3][Math.floor(i/3)]=mod;}},setupTypeInfo:function(test,maskPattern){var data=(this.errorCorrectLevel<<3)|maskPattern;var bits=QRUtil.getBCHTypeInfo(data);for(var i=0;i<15;i++){var mod=(!test&&((bits>>i)&1)==1);if(i<6){this.modules[i][8]=mod;}else if(i<8){this.modules[i+1][8]=mod;}else{this.modules[this.moduleCount-15+i][8]=mod;}} + for(var i=0;i<15;i++){var mod=(!test&&((bits>>i)&1)==1);if(i<8){this.modules[8][this.moduleCount-i-1]=mod;}else if(i<9){this.modules[8][15-i-1+1]=mod;}else{this.modules[8][15-i-1]=mod;}} + this.modules[this.moduleCount-8][8]=(!test);},mapData:function(data,maskPattern){var inc=-1;var row=this.moduleCount-1;var bitIndex=7;var byteIndex=0;for(var col=this.moduleCount-1;col>0;col-=2){if(col==6)col--;while(true){for(var c=0;c<2;c++){if(this.modules[row][col-c]==null){var dark=false;if(byteIndex>>bitIndex)&1)==1);} + var mask=QRUtil.getMask(maskPattern,row,col-c);if(mask){dark=!dark;} + this.modules[row][col-c]=dark;bitIndex--;if(bitIndex==-1){byteIndex++;bitIndex=7;}}} + row+=inc;if(row<0||this.moduleCount<=row){row-=inc;inc=-inc;break;}}}}};QRCodeModel.PAD0=0xEC;QRCodeModel.PAD1=0x11;QRCodeModel.createData=function(typeNumber,errorCorrectLevel,dataList){var rsBlocks=QRRSBlock.getRSBlocks(typeNumber,errorCorrectLevel);var buffer=new QRBitBuffer();for(var i=0;itotalDataCount*8){throw new Error("code length overflow. (" + +buffer.getLengthInBits() + +">" + +totalDataCount*8 + +")");} + if(buffer.getLengthInBits()+4<=totalDataCount*8){buffer.put(0,4);} + while(buffer.getLengthInBits()%8!=0){buffer.putBit(false);} + while(true){if(buffer.getLengthInBits()>=totalDataCount*8){break;} + buffer.put(QRCodeModel.PAD0,8);if(buffer.getLengthInBits()>=totalDataCount*8){break;} + buffer.put(QRCodeModel.PAD1,8);} + return QRCodeModel.createBytes(buffer,rsBlocks);};QRCodeModel.createBytes=function(buffer,rsBlocks){var offset=0;var maxDcCount=0;var maxEcCount=0;var dcdata=new Array(rsBlocks.length);var ecdata=new Array(rsBlocks.length);for(var r=0;r=0)?modPoly.get(modIndex):0;}} + var totalCodeCount=0;for(var i=0;i=0){d^=(QRUtil.G15<<(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G15)));} + return((data<<10)|d)^QRUtil.G15_MASK;},getBCHTypeNumber:function(data){var d=data<<12;while(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G18)>=0){d^=(QRUtil.G18<<(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G18)));} + return(data<<12)|d;},getBCHDigit:function(data){var digit=0;while(data!=0){digit++;data>>>=1;} + return digit;},getPatternPosition:function(typeNumber){return QRUtil.PATTERN_POSITION_TABLE[typeNumber-1];},getMask:function(maskPattern,i,j){switch(maskPattern){case QRMaskPattern.PATTERN000:return(i+j)%2==0;case QRMaskPattern.PATTERN001:return i%2==0;case QRMaskPattern.PATTERN010:return j%3==0;case QRMaskPattern.PATTERN011:return(i+j)%3==0;case QRMaskPattern.PATTERN100:return(Math.floor(i/2)+Math.floor(j/3))%2==0;case QRMaskPattern.PATTERN101:return(i*j)%2+(i*j)%3==0;case QRMaskPattern.PATTERN110:return((i*j)%2+(i*j)%3)%2==0;case QRMaskPattern.PATTERN111:return((i*j)%3+(i+j)%2)%2==0;default:throw new Error("bad maskPattern:"+maskPattern);}},getErrorCorrectPolynomial:function(errorCorrectLength){var a=new QRPolynomial([1],0);for(var i=0;i5){lostPoint+=(3+sameCount-5);}}} + for(var row=0;row=256){n-=255;} + return QRMath.EXP_TABLE[n];},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)};for(var i=0;i<8;i++){QRMath.EXP_TABLE[i]=1<>>(7-index%8))&1)==1;},put:function(num,length){for(var i=0;i>>(length-i-1))&1)==1);}},getLengthInBits:function(){return this.length;},putBit:function(bit){var bufIndex=Math.floor(this.length/8);if(this.buffer.length<=bufIndex){this.buffer.push(0);} + if(bit){this.buffer[bufIndex]|=(0x80>>>(this.length%8));} + this.length++;}};var QRCodeLimitLength=[[17,14,11,7],[32,26,20,14],[53,42,32,24],[78,62,46,34],[106,84,60,44],[134,106,74,58],[154,122,86,64],[192,152,108,84],[230,180,130,98],[271,213,151,119],[321,251,177,137],[367,287,203,155],[425,331,241,177],[458,362,258,194],[520,412,292,220],[586,450,322,250],[644,504,364,280],[718,560,394,310],[792,624,442,338],[858,666,482,382],[929,711,509,403],[1003,779,565,439],[1091,857,611,461],[1171,911,661,511],[1273,997,715,535],[1367,1059,751,593],[1465,1125,805,625],[1528,1190,868,658],[1628,1264,908,698],[1732,1370,982,742],[1840,1452,1030,790],[1952,1538,1112,842],[2068,1628,1168,898],[2188,1722,1228,958],[2303,1809,1283,983],[2431,1911,1351,1051],[2563,1989,1423,1093],[2699,2099,1499,1139],[2809,2213,1579,1219],[2953,2331,1663,1273]]; + + function _isSupportCanvas() { + return typeof CanvasRenderingContext2D != "undefined"; + } + + // android 2.x doesn't support Data-URI spec + function _getAndroid() { + var android = false; + var sAgent = navigator.userAgent; + + if (/android/i.test(sAgent)) { // android + android = true; + var aMat = sAgent.toString().match(/android ([0-9]\.[0-9])/i); + + if (aMat && aMat[1]) { + android = parseFloat(aMat[1]); + } + } + + return android; + } + + var svgDrawer = (function() { + + var Drawing = function (el, htOption) { + this._el = el; + this._htOption = htOption; + }; + + Drawing.prototype.draw = function (oQRCode) { + var _htOption = this._htOption; + var _el = this._el; + var nCount = oQRCode.getModuleCount(); + var nWidth = Math.floor(_htOption.width / nCount); + var nHeight = Math.floor(_htOption.height / nCount); + + this.clear(); + + function makeSVG(tag, attrs) { + var el = document.createElementNS('http://www.w3.org/2000/svg', tag); + for (var k in attrs) + if (attrs.hasOwnProperty(k)) el.setAttribute(k, attrs[k]); + return el; + } + + var svg = makeSVG("svg" , {'viewBox': '0 0 ' + String(nCount) + " " + String(nCount), 'width': '100%', 'height': '100%', 'fill': _htOption.colorLight}); + svg.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:xlink", "http://www.w3.org/1999/xlink"); + _el.appendChild(svg); + + svg.appendChild(makeSVG("rect", {"fill": _htOption.colorLight, "width": "100%", "height": "100%"})); + svg.appendChild(makeSVG("rect", {"fill": _htOption.colorDark, "width": "1", "height": "1", "id": "template"})); + + for (var row = 0; row < nCount; row++) { + for (var col = 0; col < nCount; col++) { + if (oQRCode.isDark(row, col)) { + var child = makeSVG("use", {"x": String(col), "y": String(row)}); + child.setAttributeNS("http://www.w3.org/1999/xlink", "href", "#template") + svg.appendChild(child); + } + } + } + }; + Drawing.prototype.clear = function () { + while (this._el.hasChildNodes()) + this._el.removeChild(this._el.lastChild); + }; + return Drawing; + })(); + + var useSVG = document.documentElement.tagName.toLowerCase() === "svg"; + + // Drawing in DOM by using Table tag + var Drawing = useSVG ? svgDrawer : !_isSupportCanvas() ? (function () { + var Drawing = function (el, htOption) { + this._el = el; + this._htOption = htOption; + }; + + /** + * Draw the QRCode + * + * @param {QRCode} oQRCode + */ + Drawing.prototype.draw = function (oQRCode) { + var _htOption = this._htOption; + var _el = this._el; + var nCount = oQRCode.getModuleCount(); + var nWidth = Math.floor(_htOption.width / nCount); + var nHeight = Math.floor(_htOption.height / nCount); + var aHTML = ['']; + + for (var row = 0; row < nCount; row++) { + aHTML.push(''); + + for (var col = 0; col < nCount; col++) { + aHTML.push(''); + } + + aHTML.push(''); + } + + aHTML.push('
'); + _el.innerHTML = aHTML.join(''); + + // Fix the margin values as real size. + var elTable = _el.childNodes[0]; + var nLeftMarginTable = (_htOption.width - elTable.offsetWidth) / 2; + var nTopMarginTable = (_htOption.height - elTable.offsetHeight) / 2; + + if (nLeftMarginTable > 0 && nTopMarginTable > 0) { + elTable.style.margin = nTopMarginTable + "px " + nLeftMarginTable + "px"; + } + }; + + /** + * Clear the QRCode + */ + Drawing.prototype.clear = function () { + this._el.innerHTML = ''; + }; + + return Drawing; + })() : (function () { // Drawing in Canvas + function _onMakeImage() { + this._elImage.src = this._elCanvas.toDataURL("image/png"); + this._elImage.style.display = "block"; + this._elCanvas.style.display = "none"; + } + + // Android 2.1 bug workaround + // http://code.google.com/p/android/issues/detail?id=5141 + if (this._android && this._android <= 2.1) { + var factor = 1 / window.devicePixelRatio; + var drawImage = CanvasRenderingContext2D.prototype.drawImage; + CanvasRenderingContext2D.prototype.drawImage = function (image, sx, sy, sw, sh, dx, dy, dw, dh) { + if (("nodeName" in image) && /img/i.test(image.nodeName)) { + for (var i = arguments.length - 1; i >= 1; i--) { + arguments[i] = arguments[i] * factor; + } + } else if (typeof dw == "undefined") { + arguments[1] *= factor; + arguments[2] *= factor; + arguments[3] *= factor; + arguments[4] *= factor; + } + + drawImage.apply(this, arguments); + }; + } + + /** + * Check whether the user's browser supports Data URI or not + * + * @private + * @param {Function} fSuccess Occurs if it supports Data URI + * @param {Function} fFail Occurs if it doesn't support Data URI + */ + function _safeSetDataURI(fSuccess, fFail) { + var self = this; + self._fFail = fFail; + self._fSuccess = fSuccess; + + // Check it just once + if (self._bSupportDataURI === null) { + var el = document.createElement("img"); + var fOnError = function() { + self._bSupportDataURI = false; + + if (self._fFail) { + self._fFail.call(self); + } + }; + var fOnSuccess = function() { + self._bSupportDataURI = true; + + if (self._fSuccess) { + self._fSuccess.call(self); + } + }; + + el.onabort = fOnError; + el.onerror = fOnError; + el.onload = fOnSuccess; + el.src = "data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=="; // the Image contains 1px data. + return; + } else if (self._bSupportDataURI === true && self._fSuccess) { + self._fSuccess.call(self); + } else if (self._bSupportDataURI === false && self._fFail) { + self._fFail.call(self); + } + }; + + /** + * Drawing QRCode by using canvas + * + * @constructor + * @param {HTMLElement} el + * @param {Object} htOption QRCode Options + */ + var Drawing = function (el, htOption) { + this._bIsPainted = false; + this._android = _getAndroid(); + + this._htOption = htOption; + this._elCanvas = document.createElement("canvas"); + this._elCanvas.width = htOption.width; + this._elCanvas.height = htOption.height; + el.appendChild(this._elCanvas); + this._el = el; + this._oContext = this._elCanvas.getContext("2d"); + this._bIsPainted = false; + this._elImage = document.createElement("img"); + this._elImage.alt = "Scan me!"; + this._elImage.style.display = "none"; + this._el.appendChild(this._elImage); + this._bSupportDataURI = null; + }; + + /** + * Draw the QRCode + * + * @param {QRCode} oQRCode + */ + Drawing.prototype.draw = function (oQRCode) { + var _elImage = this._elImage; + var _oContext = this._oContext; + var _htOption = this._htOption; + + var nCount = oQRCode.getModuleCount(); + var nWidth = _htOption.width / nCount; + var nHeight = _htOption.height / nCount; + var nRoundedWidth = Math.round(nWidth); + var nRoundedHeight = Math.round(nHeight); + + _elImage.style.display = "none"; + this.clear(); + + for (var row = 0; row < nCount; row++) { + for (var col = 0; col < nCount; col++) { + var bIsDark = oQRCode.isDark(row, col); + var nLeft = col * nWidth; + var nTop = row * nHeight; + _oContext.strokeStyle = bIsDark ? _htOption.colorDark : _htOption.colorLight; + _oContext.lineWidth = 1; + _oContext.fillStyle = bIsDark ? _htOption.colorDark : _htOption.colorLight; + _oContext.fillRect(nLeft, nTop, nWidth, nHeight); + + // 안티 앨리어싱 방지 처리 + _oContext.strokeRect( + Math.floor(nLeft) + 0.5, + Math.floor(nTop) + 0.5, + nRoundedWidth, + nRoundedHeight + ); + + _oContext.strokeRect( + Math.ceil(nLeft) - 0.5, + Math.ceil(nTop) - 0.5, + nRoundedWidth, + nRoundedHeight + ); + } + } + + this._bIsPainted = true; + }; + + /** + * Make the image from Canvas if the browser supports Data URI. + */ + Drawing.prototype.makeImage = function () { + if (this._bIsPainted) { + _safeSetDataURI.call(this, _onMakeImage); + } + }; + + /** + * Return whether the QRCode is painted or not + * + * @return {Boolean} + */ + Drawing.prototype.isPainted = function () { + return this._bIsPainted; + }; + + /** + * Clear the QRCode + */ + Drawing.prototype.clear = function () { + this._oContext.clearRect(0, 0, this._elCanvas.width, this._elCanvas.height); + this._bIsPainted = false; + }; + + /** + * @private + * @param {Number} nNumber + */ + Drawing.prototype.round = function (nNumber) { + if (!nNumber) { + return nNumber; + } + + return Math.floor(nNumber * 1000) / 1000; + }; + + return Drawing; + })(); + + /** + * Get the type by string length + * + * @private + * @param {String} sText + * @param {Number} nCorrectLevel + * @return {Number} type + */ + function _getTypeNumber(sText, nCorrectLevel) { + var nType = 1; + var length = _getUTF8Length(sText); + + for (var i = 0, len = QRCodeLimitLength.length; i <= len; i++) { + var nLimit = 0; + + switch (nCorrectLevel) { + case QRErrorCorrectLevel.L : + nLimit = QRCodeLimitLength[i][0]; + break; + case QRErrorCorrectLevel.M : + nLimit = QRCodeLimitLength[i][1]; + break; + case QRErrorCorrectLevel.Q : + nLimit = QRCodeLimitLength[i][2]; + break; + case QRErrorCorrectLevel.H : + nLimit = QRCodeLimitLength[i][3]; + break; + } + + if (length <= nLimit) { + break; + } else { + nType++; + } + } + + if (nType > QRCodeLimitLength.length) { + throw new Error("Too long data"); + } + + return nType; + } + + function _getUTF8Length(sText) { + var replacedText = encodeURI(sText).toString().replace(/\%[0-9a-fA-F]{2}/g, 'a'); + return replacedText.length + (replacedText.length != sText ? 3 : 0); + } + + /** + * @class QRCode + * @constructor + * @example + * new QRCode(document.getElementById("test"), "http://jindo.dev.naver.com/collie"); + * + * @example + * var oQRCode = new QRCode("test", { + * text : "http://naver.com", + * width : 128, + * height : 128 + * }); + * + * oQRCode.clear(); // Clear the QRCode. + * oQRCode.makeCode("http://map.naver.com"); // Re-create the QRCode. + * + * @param {HTMLElement|String} el target element or 'id' attribute of element. + * @param {Object|String} vOption + * @param {String} vOption.text QRCode link data + * @param {Number} [vOption.width=256] + * @param {Number} [vOption.height=256] + * @param {String} [vOption.colorDark="#000000"] + * @param {String} [vOption.colorLight="#ffffff"] + * @param {QRCode.CorrectLevel} [vOption.correctLevel=QRCode.CorrectLevel.H] [L|M|Q|H] + */ + QRCode = function (el, vOption) { + this._htOption = { + width : 256, + height : 256, + typeNumber : 4, + colorDark : "#000000", + colorLight : "#ffffff", + correctLevel : QRErrorCorrectLevel.H + }; + + if (typeof vOption === 'string') { + vOption = { + text : vOption + }; + } + + // Overwrites options + if (vOption) { + for (var i in vOption) { + this._htOption[i] = vOption[i]; + } + } + + if (typeof el == "string") { + el = document.getElementById(el); + } + + if (this._htOption.useSVG) { + Drawing = svgDrawer; + } + + this._android = _getAndroid(); + this._el = el; + this._oQRCode = null; + this._oDrawing = new Drawing(this._el, this._htOption); + + if (this._htOption.text) { + this.makeCode(this._htOption.text); + } + }; + + /** + * Make the QRCode + * + * @param {String} sText link data + */ + QRCode.prototype.makeCode = function (sText) { + this._oQRCode = new QRCodeModel(_getTypeNumber(sText, this._htOption.correctLevel), this._htOption.correctLevel); + this._oQRCode.addData(sText); + this._oQRCode.make(); + this._el.title = sText; + this._oDrawing.draw(this._oQRCode); + this.makeImage(); + }; + + /** + * Make the Image from Canvas element + * - It occurs automatically + * - Android below 3 doesn't support Data-URI spec. + * + * @private + */ + QRCode.prototype.makeImage = function () { + if (typeof this._oDrawing.makeImage == "function" && (!this._android || this._android >= 3)) { + this._oDrawing.makeImage(); + } + }; + + /** + * Clear the QRCode + */ + QRCode.prototype.clear = function () { + this._oDrawing.clear(); + }; + + /** + * @name QRCode.CorrectLevel + */ + QRCode.CorrectLevel = QRErrorCorrectLevel; +})(); diff --git a/public/img/ispt/4.0/galpLogo1.png b/public/img/ispt/4.0/galpLogo1.png new file mode 100644 index 0000000000000000000000000000000000000000..1cfda59018838ef85113fcbbb6ef462a066d6c5f GIT binary patch literal 18012 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 F{XY(Cwsrsj literal 0 HcmV?d00001 diff --git a/resources/views/Admin/index.blade.php b/resources/views/Admin/index.blade.php index f1b5984f..4ac45c15 100755 --- a/resources/views/Admin/index.blade.php +++ b/resources/views/Admin/index.blade.php @@ -1,3 +1,4 @@ + @extends('Templates/templateAdmin') @section('Main-content') diff --git a/resources/views/livewire/articulado/select-elemental-tasks-in-wonkstation.blade.php b/resources/views/livewire/articulado/select-elemental-tasks-in-wonkstation.blade.php index 6a47cebc..2bbc7766 100644 --- a/resources/views/livewire/articulado/select-elemental-tasks-in-wonkstation.blade.php +++ b/resources/views/livewire/articulado/select-elemental-tasks-in-wonkstation.blade.php @@ -181,7 +181,7 @@ {{-- Modal-body --}} diff --git a/resources/views/livewire/execução/step-by-step-equipment-tasks.blade.php b/resources/views/livewire/execução/step-by-step-equipment-tasks.blade.php new file mode 100644 index 00000000..d7222929 --- /dev/null +++ b/resources/views/livewire/execução/step-by-step-equipment-tasks.blade.php @@ -0,0 +1,26 @@ + + + + + diff --git a/resources/views/livewire/preparadas/show-qrcode-and-detalls-equipment.blade.php b/resources/views/livewire/preparadas/show-qrcode-and-detalls-equipment.blade.php new file mode 100644 index 00000000..15e76e98 --- /dev/null +++ b/resources/views/livewire/preparadas/show-qrcode-and-detalls-equipment.blade.php @@ -0,0 +1,90 @@ +{{-- --}} + +
+ + + + + + +
diff --git a/resources/views/projectsClients/executionProject.blade.php b/resources/views/projectsClients/executionProject.blade.php index 8a28c30d..4ae067e6 100755 --- a/resources/views/projectsClients/executionProject.blade.php +++ b/resources/views/projectsClients/executionProject.blade.php @@ -114,8 +114,8 @@ class="btn btn-block bg-gradient-primary btn-lg">Articulado

Articulado

+ class="fas fa-plus"> + -->
@@ -209,8 +209,8 @@ class="table table-bordered table-striped">
+ + -->
@@ -285,7 +285,7 @@ class="table table-bordered table-striped"> {{-- Modal-showProgressEquipment --}} - - - - - - - {{-- card-body --}} - - - - - - - - -
-
-
-

Postos de Trabalho

- -
- -
- -
- -
- - -
- - -
-
-
-
-
- - -
-
- - + {{-- Por enquanto nao vamos ter o botao imprimir apenas um Qrcode, e ja imprimimos todos de uma vez --}} +
+
- + + + + + - - - -
Postos de TrabalhoTagTipo EquipamentoFabricaÂmbitoAcao
+ + @foreach ($equipmentsProjects as $equipment) + + {{ $equipment->equipment_tag }} + {{ $equipment->equipment_type_id }} + {{ $equipment->unit->unit_name }} + {{ $equipment->equipmentAssociationAmbit->ambitsEquipment->ambits_description }} + + {{-- + --}} + + @livewire('preparadas.show-qrcode-and-detalls-equipment', ['equipment' => $equipment], key($equipment->equipment_id)) + + {{-- Por algum motivo se tirar esta modal, ele nao encontra o qrcode do componente ?????????????? WHY????????? --}} + + @endforeach
+ + + + + + + {{-- --}} + + + + + + + + + + + + +
+
- - +
- -
-
-

Listas de Postos de Obra

+ + + {{-- card-body --}} - + + + + + + + + +
+
+

Postos de Trabalho

+ +
+ +
+ +
+ +
+ + +
+ + +
+
+
+
+
+ + +
+
+ +
- - + + +
Postos de TrabalhoTarefas ElementaresTarefas Complementares
-
- - + +
+
+

Listas de Postos de Obra

+
+
+
+ + + + + + + + + +
Postos de TrabalhoTarefas ElementaresTarefas Complementares
+
+ +
+ + +
+ + + +
+ +
+ @@ -518,6 +701,25 @@ class="checkboxChoseTasksOficesCV" + + + {{-- Modal onde vai ficar os QRCODE --}} + @endsection @@ -559,32 +761,33 @@ class="checkboxChoseTasksOficesCV" + $('#TablePreparedProjectWorkstation').DataTable({ + autoWidth: false, + processing: true, + serverSide: true, + ajax: { + url: '/api/receiveWorkstationProject/' + $('#receiveNumberProject').val() + }, + columns: [{ + data: 'name_workstations', + name: 'name_workstations' + }, + { + data: 'nomenclature_workstation', + name: 'nomenclature_workstation' + }, + { + data: 'workstations_Association_Tasks', + name: 'workstations_Association_Tasks' + } + ] + }) + }) + + - --}} + +