Compare commits

..

3 Commits

Author SHA1 Message Date
arifal
4d32d4a110 fix button and fix service sync simbg 2025-02-14 00:23:50 +07:00
arifal
ac2f37d549 add js builk create 2025-02-13 01:50:14 +07:00
arifal
a9afb47f08 change filter year on dashboard to dropdown 2025-02-13 01:17:22 +07:00
19 changed files with 391 additions and 276 deletions

View File

@@ -42,8 +42,14 @@ class ServiceClient
} }
$response = $this->client->request($method, $this->baseUrl . $url, $options); $response = $this->client->request($method, $this->baseUrl . $url, $options);
$responseBody = (string) $response->getBody();
$resultResponse = json_decode($response->getBody(), true); if (!str_contains($response->getHeaderLine('Content-Type'), 'application/json')) {
\Log::error('Unexpected response format: ' . $responseBody);
return $this->resError('API response is not JSON');
}
$resultResponse = json_decode($responseBody, true, 512, JSON_THROW_ON_ERROR);
return $this->resSuccess($resultResponse); return $this->resSuccess($resultResponse);
} catch (Exception $e) { } catch (Exception $e) {
\Log::error('error from client service'. $e->getMessage()); \Log::error('error from client service'. $e->getMessage());

View File

@@ -37,6 +37,7 @@ class ServiceSIMBG
} }
public function getToken(){ public function getToken(){
try{
$url = "/api/user/v1/auth/login/"; $url = "/api/user/v1/auth/login/";
$body = [ $body = [
'email' => $this->email, 'email' => $this->email,
@@ -46,13 +47,18 @@ class ServiceSIMBG
$res = $this->service_client->post($url, $body); $res = $this->service_client->post($url, $body);
if(!$res->original['success']){ if(!$res->original['success']){
Log::error("Token not retrieved ", ['response' => $res]); Log::error("Token not retrieved ", ['response' => $res]);
return null; throw new Exception("Token not retrieved.");
} }
return $res; return $res;
}catch(Exception $e){
Log::error("Error on method get token ", ['response' => $e->getMessage()]);
throw $e;
}
} }
public function syncIndexIntegration($uuid, $token) public function syncIndexIntegration($uuid, $token)
{ {
try{
$url = "/api/pbg/v1/detail/" . $uuid . "/retribution/indeks-terintegrasi/"; $url = "/api/pbg/v1/detail/" . $uuid . "/retribution/indeks-terintegrasi/";
$headers = [ $headers = [
@@ -86,14 +92,11 @@ class ServiceSIMBG
] ]
); );
// Log success
if ($resultData->wasRecentlyCreated) {
Log::info("integration created successfully", ['uuid' => $uuid]);
} else {
Log::info("integration updated successfully", ['uuid' => $uuid]);
}
return true; return true;
}catch (Exception $e){
Log::error('error when sync index integration ', ['index integration'=> $e->getMessage()]);
throw $e;
}
} }
public function syncTaskList() public function syncTaskList()
@@ -182,21 +185,9 @@ class ServiceSIMBG
'created_at' => now(), 'created_at' => now(),
]; ];
$save_integration = $this->syncIndexIntegration($item['uid'], $token); $this->syncIndexIntegration($item['uid'], $token);
if (!$save_integration) {
$importDatasource->update([
'status' => ImportDatasourceStatus::Failed->value,
'message' => "Successfully processed: $savedCount, Failed: $failedCount"
]);
}
$save_detail = $this->syncTaskDetailSubmit($item['uid'], $token); $this->syncTaskDetailSubmit($item['uid'], $token);
if( !$save_detail ) {
$importDatasource->update([
'status' => ImportDatasourceStatus::Failed->value,
'message' => "Successfully processed: $savedCount, Failed: $failedCount"
]);
}
$savedCount++; $savedCount++;
} catch (Exception $e) { } catch (Exception $e) {
@@ -236,6 +227,7 @@ class ServiceSIMBG
public function syncTaskDetailSubmit($uuid, $token) public function syncTaskDetailSubmit($uuid, $token)
{ {
try{
$url = "/api/pbg/v1/detail/" . $uuid . "/retribution/submit/"; $url = "/api/pbg/v1/detail/" . $uuid . "/retribution/submit/";
$headers = [ $headers = [
'Authorization' => "Bearer " . $token, 'Authorization' => "Bearer " . $token,
@@ -306,9 +298,12 @@ class ServiceSIMBG
// Use bulk insert or upsert for faster database operation // Use bulk insert or upsert for faster database operation
PbgTaskPrasarana::upsert($insertData, ['prasarana_id']); PbgTaskPrasarana::upsert($insertData, ['prasarana_id']);
} }
Log::info("retribution and prasarana successfully", ['uuid' => $uuid]);
return true; return true;
}catch(Exception $e){
Log::error("Failed to sync task detail submit", ['error' => $e->getMessage(), 'uuid' => $uuid]);
throw $e;
}
} }
} }

View File

@@ -8,10 +8,10 @@ class BigData {
try { try {
this.filterYear = new Date().getFullYear(); // Set initial year this.filterYear = new Date().getFullYear(); // Set initial year
let yearInput = document.querySelector("#yearPicker"); let yearSelect = document.querySelector("#yearPicker");
let filterButton = document.querySelector("#btnFilterYear"); let filterButton = document.querySelector("#btnFilterYear");
if (!yearInput || !filterButton) { if (!yearSelect || !filterButton) {
console.error( console.error(
"Element #yearPicker or #btnFilterYear not found." "Element #yearPicker or #btnFilterYear not found."
); );
@@ -19,18 +19,15 @@ class BigData {
} }
// Set default value for input // Set default value for input
yearInput.value = this.filterYear; yearSelect.value = this.filterYear;
// Handle manual input (pressing Enter) yearSelect.addEventListener("change", () => {
yearInput.addEventListener("keypress", (event) => { this.updateYear(yearSelect.value);
if (event.key === "Enter") {
this.updateYear(yearInput.value);
}
}); });
// Handle button click // Handle button click
filterButton.addEventListener("click", () => { filterButton.addEventListener("click", () => {
this.updateYear(yearInput.value); this.updateYear(yearSelect.value);
}); });
console.log("init filter this year", this.filterYear); console.log("init filter this year", this.filterYear);
@@ -594,32 +591,55 @@ document.addEventListener("DOMContentLoaded", async function (e) {
await new BigData().init(); await new BigData().init();
}); });
// function resizeDashboard() {
// //Target Width
// let targetElement = document.getElementById("dashboard-fixed-wrapper");
// let targetWidth = targetElement.offsetWidth;
// //console.log("TARGET ",targetWidth);
// //Real Object Width
// let dashboardElement = document.getElementById("dashboard-fixed-container");
// let dashboardWidth = 1110; //dashboardElement.offsetWidth;
// //console.log("CURRENT ",dashboardWidth);
// if (targetWidth > dashboardWidth) {
// targetWidth = dashboardWidth;
// }
// dashboardElement.style.transformOrigin = "left top";
// dashboardElement.style.transition = "transform 0.2s ease-in-out";
// dashboardElement.style.transform =
// "scale(" + (targetWidth / dashboardWidth).toFixed(2) + ")";
// //console.log("SCALE ", (targetWidth/dashboardWidth).toFixed(2));
// }
// window.addEventListener("load", function () {
// resizeDashboard();
// });
// window.addEventListener("resize", function () {
// resizeDashboard();
// });
function resizeDashboard() { function resizeDashboard() {
//Target Width
let targetElement = document.getElementById("dashboard-fixed-wrapper"); let targetElement = document.getElementById("dashboard-fixed-wrapper");
let targetWidth = targetElement.offsetWidth;
//console.log("TARGET ",targetWidth);
//Real Object Width
let dashboardElement = document.getElementById("dashboard-fixed-container"); let dashboardElement = document.getElementById("dashboard-fixed-container");
let dashboardWidth = 1110; //dashboardElement.offsetWidth;
//console.log("CURRENT ",dashboardWidth);
if (targetWidth > dashboardWidth) { let targetWidth = targetElement.offsetWidth;
targetWidth = dashboardWidth; let dashboardWidth = 1110;
}
let scaleFactor = (targetWidth / dashboardWidth).toFixed(2);
// Prevent scaling beyond 1 (100%) to avoid overflow
scaleFactor = Math.min(scaleFactor, 1);
dashboardElement.style.transformOrigin = "left top"; dashboardElement.style.transformOrigin = "left top";
dashboardElement.style.transition = "transform 0.2s ease-in-out"; dashboardElement.style.transition = "transform 0.2s ease-in-out";
dashboardElement.style.transform = dashboardElement.style.transform = `scale(${scaleFactor})`;
"scale(" + (targetWidth / dashboardWidth).toFixed(2) + ")";
//console.log("SCALE ", (targetWidth/dashboardWidth).toFixed(2)); // Ensure horizontal scrolling is allowed if necessary
document.body.style.overflowX = "auto";
} }
window.addEventListener("load", function () { window.addEventListener("load", resizeDashboard);
resizeDashboard(); window.addEventListener("resize", resizeDashboard);
});
window.addEventListener("resize", function () {
resizeDashboard();
});

View File

@@ -52,11 +52,14 @@ class DataSettings {
name: "Actions", name: "Actions",
width: "120px", width: "120px",
formatter: function (cell) { formatter: function (cell) {
console.log("cell data", cell);
return gridjs.html(` return gridjs.html(`
<div class="d-flex justify-items-end gap-10"> <div class="d-flex justify-content-center gap-2">
<a href="/data-settings/${cell}/edit" class="btn btn-yellow me-2">Update</a> <a href="/data-settings/${cell}/edit" class="btn btn-yellow btn-sm d-inline-flex align-items-center justify-content-center">
<button class="btn btn-red btn-delete btn-delete-data-settings" data-id="${cell}">Delete</button> <i class='bx bx-edit'></i>
</a>
<button class="btn btn-sm btn-red d-inline-flex align-items-center justify-content-centerbtn-delete-data-settings" data-id="${cell}">
<i class='bx bxs-trash' ></i>
</button>
</div> </div>
`); `);
}, },

View File

@@ -22,8 +22,11 @@ class UsersTable {
name: "Action", name: "Action",
formatter: (cell) => formatter: (cell) =>
gridjs.html(` gridjs.html(`
<div class="d-flex justify-content-end gap-x-2"> <div class="d-flex justify-content-center">
<a href="/master/users/${cell}/edit" class="btn btn-yellow me-2">Update</a> <a href="/master/users/${cell}/edit" class="btn btn-yellow btn-sm d-inline-flex align-items-center justify-content-center">
<i class='bx bx-edit'></i>
</a>
</div>
`), `),
}, },
], ],

View File

@@ -56,9 +56,14 @@ class Menus {
name: "Action", name: "Action",
formatter: (cell) => formatter: (cell) =>
gridjs.html(` gridjs.html(`
<div class="d-flex justify-content-end gap-x-2"> <div class="d-flex justify-content-center align-items-center gap-2">
<a href="/menus/${cell}/edit" class="btn btn-yellow me-2">Update</a> <a href="/menus/${cell}/edit" class="btn btn-yellow btn-sm d-inline-flex align-items-center justify-content-center">
<button class="btn btn-red btn-delete btn-delete-menu" data-id="${cell}">Delete</button> <i class='bx bx-edit'></i>
</a>
<button data-id="${cell}" class="btn btn-red btn-sm btn-delete-menu d-inline-flex align-items-center justify-content-center">
<i class='bx bxs-trash' ></i>
</button>
</div>
`), `),
}, },
], ],

View File

@@ -25,8 +25,8 @@ class PbgTasks {
name: "Action", name: "Action",
formatter: function (cell) { formatter: function (cell) {
return gridjs.html(` return gridjs.html(`
<div class="d-flex justify-items-end gap-10"> <div class="d-flex justify-content-center align-items-center gap-2">
<a href="/pbg-task/${cell}" class="btn btn-yellow">Detail</a <a href="/pbg-task/${cell}" class="btn btn-yellow btn-sm d-inline-flex align-items-center justify-content-center">Detail</a
</div> </div>
`); `);
}, },

View File

@@ -52,10 +52,16 @@ class Roles {
name: "Action", name: "Action",
formatter: (cell) => formatter: (cell) =>
gridjs.html(` gridjs.html(`
<div class="d-flex justify-content-end gap-x-2"> <div class="d-flex justify-content-center gap-2">
<a href="/roles/${cell}/edit" class="btn btn-yellow me-2">Update</a> <a href="/roles/${cell}/edit" class="btn btn-yellow btn-sm d-inline-flex align-items-center justify-content-center">
<a href="/roles/role-menu/${cell}" class="btn btn-yellow me-2">Role Menu</a> <i class='bx bx-edit'></i>
<button class="btn btn-red btn-delete-role" data-id="${cell}">Delete</button> </a>
<a href="/roles/role-menu/${cell}" class="btn btn-primary btn-sm d-inline-flex align-items-center justify-content-center">
Role Menu
</a>
<button data-id="${cell}" class="btn btn-sm btn-red btn-delete-role d-inline-flex align-items-center justify-content-center">
<i class='bx bxs-trash' ></i>
</button>
</div> </div>
`), `),
}, },

View File

@@ -10,6 +10,7 @@
width: 200px; /* Ukuran lingkaran */ width: 200px; /* Ukuran lingkaran */
height: 200px; height: 200px;
display: flex; display: flex;
text-align: center;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
background-color: var(--circle-color); /* Warna lingkaran utama */ background-color: var(--circle-color); /* Warna lingkaran utama */
@@ -17,6 +18,7 @@
border: 6px solid white; /* Border putih */ border: 6px solid white; /* Border putih */
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); /* Efek bayangan */ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); /* Efek bayangan */
position: absolute; position: absolute;
// overflow: hidden;
.circle-content { .circle-content {
width: 180px; /* Ukuran lingkaran dalam */ width: 180px; /* Ukuran lingkaran dalam */
@@ -39,6 +41,12 @@
font-weight: bold; font-weight: bold;
margin: 0 5px; margin: 0 5px;
line-height: 1.5; line-height: 1.5;
word-wrap: break-word; /* Break words if too long */
white-space: normal; /* Allow multi-line text */
text-align: center; /* Center text inside the circle */
overflow-wrap: break-word; /* Ensures breaking in modern browsers */
display: block; /* Ensures it respects container size */
max-width: 100%; /* Prevents exceeding the circle size */
} }
.circle-content .document-total { .circle-content .document-total {
@@ -64,8 +72,8 @@
.small-circle-container { .small-circle-container {
position: absolute; position: absolute;
bottom: 0; bottom: -10px;
right: 0; right: -10px;
width: 50px; /* Ukuran lingkaran kecil */ width: 50px; /* Ukuran lingkaran kecil */
height: 50px; height: 50px;
background-color: #2d4f90; /* Warna lingkaran kecil */ background-color: #2d4f90; /* Warna lingkaran kecil */
@@ -75,6 +83,7 @@
align-items: center; align-items: center;
justify-content: center; justify-content: center;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); /* Efek bayangan */ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); /* Efek bayangan */
z-index: 10;
.small-circle-content { .small-circle-content {
width: 45px; width: 45px;

View File

@@ -0,0 +1,78 @@
//
// bigdata.scss
//
.square {
height: 100px;
width: 100px;
position: absolute;
z-index: -1;
}
.dia-top-left-bottom-right:after {
content: "";
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
background: linear-gradient(
to top right,
transparent calc(50% - 2px),
black,
transparent calc(50% + 2px)
);
}
.dia-top-right-bottom-left:after {
content: "";
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
background: linear-gradient(
to top left,
transparent calc(50% - 2px),
black,
transparent calc(50% + 2px)
);
}
#dashboard-fixed-wrapper {
background-image: url("../../../public/images/bg-dashboard.jpg");
background-size: cover;
background-position: center;
}
#dashboard-fixed-wrapper::before {
content: "";
position: absolute;
pointer-events: none; /* Prevents the overlay from blocking interaction */
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(
255,
255,
255,
0.7
); /* Black overlay with 50% opacity */
}
#dashboard-fixed-wrapper {
max-width: 100vw; /* Ensures it doesn't exceed viewport */
}
#dashboard-fixed-container {
min-width: 1110px;
max-width: unset; /* Allow it to grow if needed */
}
@media (max-width: 768px) {
#dashboard-fixed-container {
transform: scale(0.8); /* Adjust the scale as needed */
}
}

View File

@@ -59,3 +59,5 @@
// Pages // Pages
@import "pages/icon-demo"; @import "pages/icon-demo";
@import "pages/authentication"; @import "pages/authentication";
@import "dashboards/bigdata";

View File

@@ -1,66 +1,36 @@
@extends('layouts.vertical', ['subtitle' => 'Dashboards']) @extends('layouts.vertical', ['subtitle' => 'Dashboards'])
@section('css')
@vite(['resources/scss/dashboards/_bigdata.scss'])
@endsection
@section('content') @section('content')
@include('layouts.partials/page-title', ['title' => 'Dashboards', 'subtitle' => 'Dashboard Pimpinan']) @include('layouts.partials/page-title', ['title' => 'Dashboards', 'subtitle' => 'Dashboard Pimpinan'])
<style>
.square{
height: 100px;
width: 100px;
position: absolute;
z-index:-1;
}
.dia-top-left-bottom-right:after {
content: "";
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
background: linear-gradient(to top right, transparent calc(50% - 2px), black, transparent calc(50% + 2px));
}
.dia-top-right-bottom-left:after {
content: "";
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
background: linear-gradient(to top left, transparent calc(50% - 2px), black, transparent calc(50% + 2px));
}
#dashboard-fixed-wrapper {
background-image:url('/images/bg-dashboard.jpg');background-size: cover;background-position: center;
}
#dashboard-fixed-wrapper::before {
content: "";
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(255, 255, 255, 0.7); /* Black overlay with 50% opacity */
}
</style>
<div id="dashboard-fixed-wrapper" class="row"> <div id="dashboard-fixed-wrapper" class="row">
<h2 style="margin-top:30px;margin-left:15px;color:#911701"> <div class="col-12">
<span style="float:right;font-size:14px;margin-right:25px;color:black">Terakhir di update - {{$latest_created}}</span> <h2 class="mt-3 ms-2 text-danger">
<span class="float-end fs-6 me-3 text-black d-block d-sm-inline text-end">Terakhir di update - {{$latest_created}}</span>
ANALISA BIG DATA PROSES PBG <br> ANALISA BIG DATA PROSES PBG <br>
MELALUI APLIKASI SIBEDAS PBG MELALUI APLIKASI SIBEDAS PBG
</h2> </h2>
<div class="d-flex justify-content-end">
<input type="number" class="me-3" id="yearPicker" name="year">
<button class="btn btn-sm btn-primary" id="btnFilterYear">filter</button>
</div> </div>
<div id="dashboard-fixed-container" style="width:1110px;height:770px;position:relative;margin:auto;">
<div class="row d-flex justify-content-end">
<div class="col-12 col-sm-6 col-md-3">
<div class="d-flex flex-sm-nowrap flex-wrap justify-content-end gap-2">
<select class="form-select w-auto" id="yearPicker" name="year" style="min-width: 100px;">
@for ($i = date('Y'); $i > date('Y') - 5; $i--)
<option value="{{ $i }}" {{ $i == date('Y') ? 'selected' : '' }}>{{ $i }}</option>
@endfor
</select>
<button class="btn btn-sm btn-primary" id="btnFilterYear">Filter</button>
</div>
</div>
</div>
<div id="dashboard-fixed-container" class="row" style="width:1110px;height:770px;position:relative;margin:auto;">
@component('components.circle', [ @component('components.circle', [
'document_title' => 'Kekurangan Potensi', 'document_title' => 'Kekurangan Potensi',
'document_color' => '#911701', 'document_color' => '#911701',

View File

@@ -10,16 +10,19 @@
<x-toast-notification /> <x-toast-notification />
<x-modal-confirmation buttonText="Delete" confirmationMessage="Are you sure you want to delete this?" /> <x-modal-confirmation buttonText="Delete" confirmationMessage="Are you sure you want to delete this?" />
<div class="row"> <div class="row">
<div class="card w-full"> <div class="col-12">
<div class="card w-100">
<div class="card-body"> <div class="card-body">
<div class="d-flex justify-content-end pb-3"> <div class="d-flex flex-wrap justify-content-end align-items-center mb-2">
<a href="{{ route('data-settings.create')}}" class="btn btn-success width-lg">Create</a> <a href="{{ route('data-settings.create')}}" class="btn btn-success btn-sm d-block d-sm-inline w-auto">Create</a>
</div> </div>
<div id="table-data-settings"></div> <div id="table-data-settings"></div>
</div> </div>
</div> </div>
</div> </div>
</div>
@endsection @endsection

View File

@@ -9,15 +9,19 @@
@include('layouts.partials/page-title', ['title' => 'Master', 'subtitle' => 'Users']) @include('layouts.partials/page-title', ['title' => 'Master', 'subtitle' => 'Users'])
<div class="row"> <div class="row">
<div class="card w-full"> <div class="col-12">
<div class="card w-100">
<div class="card-body"> <div class="card-body">
<div class="d-flex justify-content-end pb-3"> <div class="d-flex flex-wrap justify-content-end align-items-center mb-2">
<a href="{{ route('users.create')}}" class="btn btn-success width-lg">Create</a> <a href="{{ route('users.create') }}" class="btn btn-success btn-sm d-block d-sm-inline w-auto">
Create
</a>
</div> </div>
<div id="table-users"></div> <div id="table-users"></div>
</div> </div>
</div> </div>
</div> </div>
</div>
@endsection @endsection

View File

@@ -10,11 +10,13 @@
<x-toast-notification /> <x-toast-notification />
<x-modal-confirmation buttonText="Delete" confirmationMessage="Are you sure you want to delete this?" /> <x-modal-confirmation buttonText="Delete" confirmationMessage="Are you sure you want to delete this?" />
<div class="row"> <div class="row">
<div class="card w-full"> <div class="col-12">
<div class="card w-100">
<div class="card-body"> <div class="card-body">
<div class="d-flex justify-content-end pb-3"> <div class="d-flex flex-wrap justify-content-end align-items-center mb-2">
<a href="{{ route('menus.create')}}" class="btn btn-success width-lg">Create</a> <a href="{{ route('menus.create')}}" class="btn btn-success btn-sm d-block d-sm-inline w-auto">Create</a>
</div> </div>
<div> <div>
<div id="table-menus"></div> <div id="table-menus"></div>
@@ -22,6 +24,7 @@
</div> </div>
</div> </div>
</div> </div>
</div>
@endsection @endsection

View File

@@ -9,15 +9,17 @@
@include('layouts.partials/page-title', ['title' => 'Data', 'subtitle' => 'PBG']) @include('layouts.partials/page-title', ['title' => 'Data', 'subtitle' => 'PBG'])
<div class="row"> <div class="row">
<div class="card w-full"> <div class="col-12">
<div class="card w-100">
<div class="card-body"> <div class="card-body">
<div class="d-flex justify-content-end pb-3"> <div class="d-flex flex-wrap justify-content-end">
<a href="{{ route('pbg-task.create')}}" class="btn btn-success width-lg">Create</a> <a href="{{ route('pbg-task.create')}}" class="btn btn-success btn-sm d-block d-sm-inline w-auto">Create</a>
</div> </div>
<div id="table-pbg-tasks"></div> <div id="table-pbg-tasks"></div>
</div> </div>
</div> </div>
</div> </div>
</div>
@endsection @endsection

View File

@@ -12,15 +12,17 @@
<x-modal-confirmation buttonText="Delete" confirmationMessage="Are you sure you want to delete this?" /> <x-modal-confirmation buttonText="Delete" confirmationMessage="Are you sure you want to delete this?" />
<div class="row"> <div class="row">
<div class="card w-full"> <div class="col-12">
<div class="card w-100">
<div class="card-body"> <div class="card-body">
<div class="d-flex justify-content-end pb-3"> <div class="d-flex flex-wrap justify-content-end align-items-center mb-2">
<a href="{{ route('roles.create')}}" class="btn btn-success width-lg">Create</a> <a href="{{ route('roles.create')}}" class="btn btn-success btn-sm d-block d-sm-inline w-auto">Create</a>
</div> </div>
<div id="table-roles"></div> <div id="table-roles"></div>
</div> </div>
</div> </div>
</div> </div>
</div>
@endsection @endsection

View File

@@ -9,11 +9,12 @@
@include('layouts.partials/page-title', ['title' => 'Settings', 'subtitle' => 'Syncronize']) @include('layouts.partials/page-title', ['title' => 'Settings', 'subtitle' => 'Syncronize'])
<div class="row"> <div class="row">
<div class="card w-full"> <div class="col-12">
<div class="card w-100">
<div class="card-body"> <div class="card-body">
<div class="col-md-12 col-xl-12 d-flex justify-content-end"> <div class="d-flex flex-wrap justify-content-end gap-2">
<button type="button" class="btn btn-success" style="margin-right: 20px;" id="btn-sync-submit-google-sheet">Sync Google Sheet</button> <button type="button" class="btn btn-success btn-sm d-block d-sm-inline w-auto" id="btn-sync-submit-google-sheet">Sync Google Sheet</button>
<button type="button" class="btn btn-success" id="btn-sync-submit">Sync SIMBG</button> <button type="button" class="btn btn-success btn-sm d-block d-sm-inline w-auto" id="btn-sync-submit">Sync SIMBG</button>
</div> </div>
<div> <div>
<div id="table-import-datasources"></div> <div id="table-import-datasources"></div>
@@ -21,6 +22,7 @@
</div> </div>
</div> </div>
</div> </div>
</div>
@endsection @endsection

View File

@@ -19,6 +19,7 @@ export default defineConfig({
"resources/scss/icons.scss", "resources/scss/icons.scss",
"resources/scss/style.scss", "resources/scss/style.scss",
"resources/scss/components/_circle.scss", "resources/scss/components/_circle.scss",
"resources/scss/dashboards/_bigdata.scss",
"node_modules/quill/dist/quill.snow.css", "node_modules/quill/dist/quill.snow.css",
"node_modules/quill/dist/quill.bubble.css", "node_modules/quill/dist/quill.bubble.css",
@@ -45,6 +46,7 @@ export default defineConfig({
"resources/js/pages/maps-canada.js", "resources/js/pages/maps-canada.js",
"resources/js/data/advertisements/data-advertisements.js", "resources/js/data/advertisements/data-advertisements.js",
"resources/js/data/advertisements/form-create-update.js", "resources/js/data/advertisements/form-create-update.js",
"resources/js/data/advertisements/form-upload.js",
//js-additional //js-additional
"resources/js/dashboards/bigdata.js", "resources/js/dashboards/bigdata.js",