Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
f15552d
premier commit farah
jamoussifarah Jun 4, 2025
c74f2d3
Update README.md
jamoussifarah Jun 4, 2025
5fb59e0
ajout des produits et avis
jamoussifarah Jun 5, 2025
da1a393
ajout pop up pays
jamoussifarah Jun 5, 2025
5a2aed4
Ajout du carousel et refactorisation du header
jamoussifarah Jun 9, 2025
ea57786
ajout des clients
jamoussifarah Jun 10, 2025
3e7c840
ajout de la page signIn/signUp
jamoussifarah Jun 11, 2025
622cccf
correction navBar
jamoussifarah Jun 11, 2025
19545ed
Page About_us
jamoussifarah Jun 12, 2025
c703b2e
contact page + some modifications
jamoussifarah Jun 16, 2025
23cde06
ajout caroussel,blogs et emailjs
jamoussifarah Jun 16, 2025
481d39a
dashboard-products
jamoussifarah Jun 17, 2025
f0fb097
dashboard final
jamoussifarah Jun 18, 2025
8d550b9
last commit
sarrabouraoui21 Jun 18, 2025
337af6c
Merge pull request #1 from jamoussifarah/products
jamoussifarah Jun 18, 2025
0fd60af
Merge branch 'master' into vitrine
jamoussifarah Jun 18, 2025
2a9192f
Merge pull request #2 from jamoussifarah/vitrine
jamoussifarah Jun 18, 2025
70fe25a
fix merge issue
jamoussifarah Jun 18, 2025
1e3b263
Merge pull request #3 from jamoussifarah/test
jamoussifarah Jun 18, 2025
c4f7e04
ajout blog users
jamoussifarah Jun 27, 2025
bbc7861
chatbot
jamoussifarah Jul 2, 2025
60c74ab
many adds
sarrabouraoui21 Jul 2, 2025
4726c94
Merge branch 'master' of https://github.com/jamoussifarah/Tunav_frontend
sarrabouraoui21 Jul 2, 2025
b1bcc35
carousselEquipeTunav
jamoussifarah Jul 2, 2025
50fb059
Merge pull request #4 from jamoussifarah/CarousselEquipeTunav
jamoussifarah Jul 2, 2025
35bf005
traduction
jamoussifarah Jul 3, 2025
672a96d
Merge branch 'master' into devis
jamoussifarah Jul 3, 2025
15d226b
Merge pull request #5 from jamoussifarah/devis
jamoussifarah Jul 3, 2025
20232f7
about-us-traduction
jamoussifarah Jul 3, 2025
c05d6c1
Merge pull request #6 from jamoussifarah/about-us-traduction
jamoussifarah Jul 3, 2025
f1c3715
products_getAll
sarrabouraoui21 Jul 3, 2025
089447a
Merge branch 'master' into version-fix
jamoussifarah Jul 3, 2025
e6b255d
Merge pull request #7 from jamoussifarah/version-fix
jamoussifarah Jul 3, 2025
0b9e7a0
devis-details
jamoussifarah Jul 4, 2025
3df43af
Merge pull request #8 from jamoussifarah/devis-dashboard
jamoussifarah Jul 4, 2025
9a5105f
token-fixed
jamoussifarah Jul 5, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"git.mergeEditor": true,
"merge-conflict.autoNavigateNextConflict.enabled": true
}
177 changes: 0 additions & 177 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,178 +1 @@
# [Light Bootstrap Dashboard Angular](https://demos.creative-tim.com/light-bootstrap-dashboard-angular2/dashboard)
[![version][version-badge]][CHANGELOG] ![license][license-badge]

![alt text](src/assets/img/opt_lbd_angular_thumbnail.jpg)

**[Light Bootstrap Dashboard Angular](https://demos.creative-tim.com/light-bootstrap-dashboard-angular2/dashboard)** is an admin dashboard template designed to be beautiful and simple. It is built on top of Bootstrap 3, using [Light Bootstrap Dashboard](https://www.creative-tim.com/product/light-bootstrap-dashboard) and it is fully responsive. It comes with a big collections of elements that will offer you multiple possibilities to create the app that best fits your needs. It can be used to create admin panels, project management systems, web applications backend, CMS or CRM.

The product represents a big suite of front-end developer tools that can help you jump start your project. We have created it thinking about things you actually need in a dashboard. Light Bootstrap Dashboard Angular 2 contains multiple handpicked and optimized plugins. Everything is designed to fit with one another. As you will be able to see, the dashboard you can access on Creative Tim is a customization of this product.

It comes with 6 filter colors for the sidebar (“black”, “azure”,”green”,”orange”,”red”,”purple”) and an option to have a background image.

Special thanks go to: Robert McIntosh for the notification system Chartist for the wonderful charts We are very excited to share this dashboard with you and we look forward to hearing your feedback!

## Links:

+ [Live Preview](https://demos.creative-tim.com/light-bootstrap-dashboard-angular2/dashboard)
+ [Light Bootstrap Dashboard PRO Angular](https://www.creative-tim.com/product/light-bootstrap-dashboard-pro-angular2/?ref=lbd-angular-github) ($49)

## Quick Start:

Quick start options:

+ [Download from Github](https://github.com/creativetimofficial/light-bootstrap-dashboard-angular2/archive/master.zip).
+ [Download from Creative Tim](https://www.creative-tim.com/product/light-bootstrap-dashboard-angular2).
+ Clone the repo: `git clone https://github.com/creativetimofficial/light-bootstrap-dashboard-angular2.git`.

## Deploy

:rocket: You can deploy your own version of the template to Genezio with one click:

[![Deploy to Genezio](https://raw.githubusercontent.com/Genez-io/graphics/main/svg/deploy-button.svg)](https://app.genez.io/start/deploy?repository=https://github.com/creativetimofficial/light-bootstrap-dashboard-angular2&utm_source=github&utm_medium=referral&utm_campaign=github-creativetim&utm_term=deploy-project&utm_content=button-head)

## Terminal Commands

1. Install NodeJs from [NodeJs Official Page](https://nodejs.org/en).
2. Open Terminal
3. Go to your file project
4. Run in terminal: ```npm install -g @angular/cli```
5. Then: ```npm install```
6. And: ```ng serve```
7. Navigate to `http://localhost:4200/`

### What's included

Within the download you'll find the following directories and files:
```
light-bootstrap-dashboard-angular
├── CHANGELOG.md
├── LICENSE.md
├── README.md
├── angular.json
├── documentation
│   ├── css
│   └── tutorial-lbd-angular2.html
├── e2e
├── karma.conf.js
├── package-lock.json
├── package.json
├── protractor.conf.js
├── src
│   ├── app
│   │   ├── app.component.css
│   │   ├── app.component.html
│   │   ├── app.component.spec.ts
│   │   ├── app.component.ts
│   │   ├── app.module.ts
│   │   ├── app.routing.ts
│   │   ├── home
│   │   │   ├── home.component.css
│   │   │   ├── home.component.html
│   │   │   ├── home.component.spec.ts
│   │   │   └── home.component.ts
│   │   ├── icons
│   │   │   ├── icons.component.css
│   │   │   ├── icons.component.html
│   │   │   ├── icons.component.spec.ts
│   │   │   └── icons.component.ts
│   │   ├── layouts
│   │   │   └── admin-layout
│   │   │   ├── admin-layout.component.html
│   │   │   ├── admin-layout.component.scss
│   │   │   ├── admin-layout.component.spec.ts
│   │   │   ├── admin-layout.component.ts
│   │   │   ├── admin-layout.module.ts
│   │   │   └── admin-layout.routing.ts
│   │   ├── lbd
│   │   │   ├── lbd-chart
│   │   │   │   ├── lbd-chart.component.html
│   │   │   │   └── lbd-chart.component.ts
│   │   │   └── lbd.module.ts
│   │   ├── maps
│   │   │   ├── maps.component.css
│   │   │   ├── maps.component.html
│   │   │   ├── maps.component.spec.ts
│   │   │   └── maps.component.ts
│   │   ├── notifications
│   │   │   ├── notifications.component.css
│   │   │   ├── notifications.component.html
│   │   │   ├── notifications.component.spec.ts
│   │   │   └── notifications.component.ts
│   │   ├── shared
│   │   │   ├── footer
│   │   │   │   ├── footer.component.html
│   │   │   │   ├── footer.component.ts
│   │   │   │   └── footer.module.ts
│   │   │   └── navbar
│   │   │   ├── navbar.component.html
│   │   │   ├── navbar.component.ts
│   │   │   └── navbar.module.ts
│   │   ├── sidebar
│   │   │   ├── sidebar.component.html
│   │   │   ├── sidebar.component.ts
│   │   │   └── sidebar.module.ts
│   │   ├── tables
│   │   │   ├── tables.component.css
│   │   │   ├── tables.component.html
│   │   │   ├── tables.component.spec.ts
│   │   │   └── tables.component.ts
│   │   ├── typography
│   │   │   ├── typography.component.css
│   │   │   ├── typography.component.html
│   │   │   ├── typography.component.spec.ts
│   │   │   └── typography.component.ts
│   │   ├── upgrade
│   │   │   ├── upgrade.component.css
│   │   │   ├── upgrade.component.html
│   │   │   ├── upgrade.component.spec.ts
│   │   │   └── upgrade.component.ts
│   │   └── user
│   │   ├── user.component.css
│   │   ├── user.component.html
│   │   ├── user.component.spec.ts
│   │   └── user.component.ts
│   ├── assets
│   │   ├── css
│   │   ├── fonts
│   │   ├── img
│   │   └── sass
│   │   ├── lbd
│   │   └── light-bootstrap-dashboard.scss
│   ├── environments
│   ├── favicon.ico
│   ├── index.html
│   ├── main.ts
│   ├── polyfills.ts
│   ├── styles.css
│   ├── test.ts
│   └── tsconfig.json
├── tslint.json
└── typings.json

```
## Useful Links

More products from Creative Tim: <https://www.creative-tim.com/bootstrap-themes>

Tutorials: <https://www.youtube.com/channel/UCVyTG4sCw-rOvB9oHkzZD1w>

Freebies: <https://www.creative-tim.com/products>

Affiliate Program (earn money): <https://www.creative-tim.com/affiliates/new>

Social Media:

Twitter: <https://twitter.com/CreativeTim>

Facebook: <https://www.facebook.com/CreativeTim>

Dribbble: <https://dribbble.com/creativetim>

Google+: <https://plus.google.com/+CreativetimPage>

Instagram: <https://instagram.com/creativetimofficial>

[CHANGELOG]: ./CHANGELOG.md

[version-badge]: https://img.shields.io/badge/version-1.9.0-blue.svg
[license-badge]: https://img.shields.io/badge/license-MIT-blue.svg
26 changes: 21 additions & 5 deletions angular.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,21 +19,37 @@
"assets": [
"src/assets",
"src/favicon.ico"

],
"styles": [
"node_modules/perfect-scrollbar/css/perfect-scrollbar.css",
"node_modules/animate.css/animate.min.css",
"node_modules/bootstrap/dist/css/bootstrap.min.css",
"src/assets/sass/light-bootstrap-dashboard.scss",
"src/assets/css/demo.css"
"src/assets/css/demo.css",
"src/styles.css",
"src/assets/css/bootstrap.min.css",
"src/assets/css/tooplate-infinite-loop.css",
"src/assets/fontawesome-5.5/css/all.min.css",
"src/assets/magnific-popup/magnific-popup.css",
"src/assets/slick/slick.css",
"src/assets/slick/slick-theme.css",
"node_modules/intl-tel-input/build/css/intlTelInput.css"
],
"scripts": [
"node_modules/jquery/dist/jquery.js",
"node_modules/bootstrap/dist/js/bootstrap.js",
"node_modules/bootstrap-notify/bootstrap-notify.js",
"node_modules/chartist/dist/chartist.js"
]
},
"node_modules/chartist/dist/chartist.js",
"src/assets/js/jquery-1.9.1.min.js",
"src/assets/slick/slick.min.js",
"src/assets/magnific-popup/jquery.magnific-popup.min.js",
"src/assets/js/easing.min.js",
"src/assets/js/jquery.singlePageNav.min.js",
"src/assets/js/bootstrap.min.js",
"node_modules/html2pdf.js/dist/html2pdf.bundle.min.js",
"node_modules/intl-tel-input/build/js/intlTelInput.min.js"
] },
"configurations": {
"production": {
"optimization": true,
Expand Down Expand Up @@ -62,7 +78,7 @@
"minify": false,
"inlineCritical": true
},
"fonts": true
"fonts": false
},
"outputHashing": "all"
}
Expand Down
40 changes: 27 additions & 13 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,41 +24,55 @@
"@angular/material": "^14.2.0",
"@angular/platform-browser": "^14.2.0",
"@angular/platform-browser-dynamic": "^14.2.0",
"@angular/router": "^14.2.0",
"@angular/router": "^14.3.0",
"@ngui/map": "0.30.3",
"@ngx-translate/core": "^14.0.0",
"@ngx-translate/http-loader": "^7.0.0",
"@popperjs/core": "^2.11.8",
"@types/googlemaps": "3.43.3",
"animate.css": "4.1.1",
"arrive": "2.4.1",
"bootstrap": "3.3.7",
"bootstrap": "^5.3.6",
"bootstrap-notify": "3.1.3",
"chartist": "0.11.4",
"emailjs-com": "^3.2.0",
"googleapis": "66.0.0",
"jquery": "3.5.1",
"html2pdf.js": "^0.10.3",
"intl-tel-input": "^25.3.1",



"jquery": "^3.7.1",
"ngx-slickjs": "^1.5.2",

"perfect-scrollbar": "1.5.0",
"rxjs": "~7.5.0",
"slick-carousel": "^1.8.1",
"sweetalert2": "^11.22.0",
"tslib": "^2.3.0",
"zone.js": "~0.11.4"
},
"devDependencies": {
"@angular-devkit/build-angular": "^14.2.3",
"@angular-devkit/build-angular": "^14.2.0",
"@angular/cli": "~14.2.3",
"@angular/compiler-cli": "^14.2.0",
"@types/chartist": "0.11.0",
"@types/intl-tel-input": "^18.1.4",
"@types/jasmine": "~5.1.4",
"@types/jasminewd2": "~2.0.13",
"@types/jquery": "3.5.30",
"@types/node": "20.14.11",
"codelyzer": "^0.0.28",
"cross-env": "^7.0.3",
"jasmine-core": "~4.3.0",
"jasmine-spec-reporter": "~7.0.0",
"karma": "~6.4.0",
"karma-chrome-launcher": "~3.1.0",
"karma-coverage": "~2.2.0",
"karma-jasmine": "~5.1.0",
"karma-jasmine-html-reporter": "~2.0.0",
"typescript": "~4.7.2",
"@types/jasminewd2": "~2.0.13",
"@types/chartist": "0.11.0",
"@types/jquery": "3.5.30",
"@types/node": "20.14.11",
"codelyzer": "6.0.2",
"jasmine-spec-reporter": "~7.0.0",
"protractor": "7.0.0",
"protractor": "^7.0.0",
"ts-node": "~10.7.0",
"cross-env": "^7.0.3"
"typescript": "~4.7.2"
}
}
73 changes: 73 additions & 0 deletions src/app/Services/BlogService.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
import { Injectable } from '@angular/core';
import { HttpClient, HttpParams } from '@angular/common/http';
import { Observable } from 'rxjs';
import { environment } from 'environments/environment';
import { Blog } from 'app/blogslist/blogslist.component';

export interface BlogCreateRequest {
titre: string;
contenu: string;
userId: number;
tags: string[];
image: File | null;
}

export interface BlogUpdateRequest {
titre: string;
contenu: string;
newImage?: File;
tags: string[];
}
@Injectable({
providedIn: 'root'
})
export class BlogService {
private apiUrl = environment.apiUrl + '/blog';

constructor(private http: HttpClient) { }

getAllBlogs(): Observable<Blog[]> {
return this.http.get<Blog[]>(this.apiUrl);
}

createBlog(request: BlogCreateRequest): Observable<Blog> {
const formData = new FormData();

formData.append('Titre', request.titre);
formData.append('Contenu', request.contenu);
formData.append('UserId', request.userId.toString());
request.tags.forEach(tag => formData.append('Tags', tag));

if (request.image) {
formData.append('Image', request.image, request.image.name);
}

return this.http.post<Blog>(this.apiUrl, formData);
}
updateBlog(id: number, request: BlogUpdateRequest): Observable<any> {
const formData = new FormData();
formData.append('Titre', request.titre);
formData.append('Contenu', request.contenu);

if (request.newImage) {
formData.append('NewImage', request.newImage, request.newImage.name);
}

request.tags.forEach(tag => {
formData.append('Tags', tag);
});

return this.http.put(`${this.apiUrl}/${id}`, formData);
}



getBlogById(id: number) {
return this.http.get<Blog>(`${this.apiUrl}/${id}`);
}

deleteBlog(id: number) {
return this.http.delete(`${this.apiUrl}/${id}`);
}

}
Loading