Compare commits
214 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 15d9ce3b77 | |||
| 86889f33ce | |||
| 58371d3b84 | |||
| 76e46da8f2 | |||
| 26e131ca22 | |||
| 556b49e002 | |||
| 0615cccc06 | |||
| 07011002f3 | |||
| b0f25625ee | |||
| 2efeb53cec | |||
| 1c4fb6d701 | |||
| 7dfc0064d1 | |||
| 80ca84804e | |||
| bb249c873a | |||
| 25212af64f | |||
| 98efbe2c2e | |||
| 86d72a507a | |||
| 240684b574 | |||
| 35c06a9c5e | |||
| a304f35be8 | |||
| 0e0d56de07 | |||
| d84f30287a | |||
| d22b219432 | |||
| e99eb82222 | |||
| c908a21433 | |||
| cc21ae1559 | |||
| 94027e396e | |||
| 0f28596721 | |||
| 47a85b66f4 | |||
| 123230b8c9 | |||
| 13144ca430 | |||
| afd6906667 | |||
| eceb08fb7f | |||
| 8f7ef2d2ba | |||
| d5ee75bcf7 | |||
| cdb85e6eb2 | |||
| 4f22d9da41 | |||
| cd8a69210d | |||
| 1fdd9bda91 | |||
| 35922aed85 | |||
| b3e733888b | |||
| ed897c728f | |||
| 4865576862 | |||
| c8883bda11 | |||
| 3c23bf36ea | |||
| 2305f4761e | |||
| 7afcb9b8b1 | |||
| e346440748 | |||
| 08ef4dcb07 | |||
| cc12a9baa3 | |||
| 9e0679d4c8 | |||
| 9bcd435f6c | |||
| c0f911efc2 | |||
| 175a53080a | |||
| 9532f09cdd | |||
| bb83650b92 | |||
| 398b5ab56b | |||
| 4a0810acb3 | |||
| 0f37a80263 | |||
| 049f06604a | |||
| 52b30b5660 | |||
| 8efd6589bc | |||
|
|
15dc6603ba | ||
|
|
cbcdd3e19f | ||
|
|
c74f60de09 | ||
| dfbc1ea083 | |||
| c0a7f5bd9b | |||
| 5e933151ed | |||
| 59d42f81ac | |||
|
|
0e77614b89 | ||
|
|
63105f5c67 | ||
|
|
2917fd4159 | ||
|
|
d47e2a2378 | ||
| 5b8c73caea | |||
|
|
9cd021f474 | ||
|
|
1d1b8b29a7 | ||
| a6eeb30b82 | |||
| 7a706ba9f2 | |||
|
|
c142e0ccb6 | ||
|
|
fe2c58f65f | ||
|
|
e83c5f2d53 | ||
|
|
839b913b02 | ||
|
|
f742176c1e | ||
| 31ed53f0f1 | |||
| 02fdd57538 | |||
|
|
7a436e2218 | ||
|
|
0161c72cd4 | ||
|
|
2dc9a019d5 | ||
|
|
560cd29f16 | ||
| 4f52ff8afe | |||
|
|
dc595b8f5d | ||
|
|
77054b62eb | ||
|
|
b612a7f135 | ||
|
|
90fa9af74a | ||
|
|
85c3bbaa5c | ||
|
|
485e0d3462 | ||
|
|
acdab93cba | ||
|
|
1777d2ac4f | ||
| 091b51e592 | |||
|
|
6ccf206c0c | ||
| 3cb7664a08 | |||
|
|
35def60078 | ||
|
|
a63855576b | ||
|
|
df8753b1b7 | ||
|
|
c7f30b1555 | ||
|
|
c87263d5a6 | ||
|
|
16af3ebb73 | ||
|
|
66766268a6 | ||
|
|
8dbdf19436 | ||
| 15031342e7 | |||
|
|
31a42c9bc5 | ||
|
|
ad9650098b | ||
|
|
4e3e2f9a36 | ||
|
|
6902e04e54 | ||
|
|
19cc99d7ff | ||
| 0601815ec0 | |||
| 1356fc2255 | |||
| 83860d3c21 | |||
| 39b2c03de9 | |||
| b2733270b2 | |||
| 9a7cad7c4d | |||
| b725b98e06 | |||
| 85e5b6b10f | |||
| cb3035d72c | |||
| 6ab266be48 | |||
| ff2c6375f2 | |||
| 2398c50437 | |||
| 71e2a1b55a | |||
| 48fe805295 | |||
| 7ba5cea241 | |||
| 6c74c73157 | |||
| 567e58a8b0 | |||
| 49de5aa0e9 | |||
| c410e1df05 | |||
| 47f03f78df | |||
| e8782369b1 | |||
| 9792dfcf28 | |||
| b434aada89 | |||
| 6212692b19 | |||
| 3915b0e59b | |||
| ed30afb3e7 | |||
| dc05f11d69 | |||
| 2e41da37c4 | |||
| db6cddb94e | |||
| d702ba570d | |||
| df58a1e84b | |||
| ef81220d85 | |||
| 6489954028 | |||
| c5875e52ee | |||
| ac3c7bfbc6 | |||
| af1d268bf3 | |||
| 793a62cc2d | |||
| af2315bad2 | |||
| b3fb088d9f | |||
| 9873197d42 | |||
| 28de1ce541 | |||
| 99d1c240d9 | |||
| 4af57cb876 | |||
| aaa80ff002 | |||
| 01b73cc1d4 | |||
| 0f3141c17c | |||
| 1e75053d49 | |||
| c538e387ca | |||
| ca04eb551b | |||
| 154264fbad | |||
| ef9e56a272 | |||
| 862d90657e | |||
| c743cce59a | |||
| 908e15a80f | |||
| 7840087bb0 | |||
| 879546e166 | |||
| ab0d4997eb | |||
| d03e90b7b8 | |||
| dab24387a2 | |||
| 6bc9d34fde | |||
| 71305e8002 | |||
| 50fea4710e | |||
| 9b6f016c32 | |||
| 9aa6c8985e | |||
| 500e07c810 | |||
| ec19e2db35 | |||
| 64b049251e | |||
| 189cd8fd78 | |||
| aae410f574 | |||
| 7d81e0be71 | |||
| aa298d613b | |||
| 534eb6bf15 | |||
| 6ab71bb412 | |||
| 74cd9bab55 | |||
| 6210b436b0 | |||
| 756fa75f4f | |||
| ae498a9bc4 | |||
| aa19d3f936 | |||
| ba89518ba2 | |||
| 00f7d289b2 | |||
| 677bda260b | |||
| a31d2241bc | |||
| 681c9ebfbd | |||
| 1de6184877 | |||
| 5088b9a1ff | |||
| 7a7a2e2cfa | |||
| 793cbc3206 | |||
| 78a8d46322 | |||
| 7c3e484bb0 | |||
| 13fdabaf86 | |||
| ae08fbfd0b | |||
| c62f1c85c6 | |||
| 9178682733 | |||
| 94fcaaa995 | |||
| 5ddbc49fec | |||
| bbd462cd54 | |||
| ee577697ce | |||
| 122710b3e4 | |||
| 2e0abbdff2 |
1
.gitignore
vendored
@@ -4,4 +4,3 @@
|
||||
*.pyc
|
||||
*.pid
|
||||
*.log
|
||||
|
||||
|
||||
BIN
.temp_TARIF AXA 2021-converti.xlsx
Normal file
35
.vscode/launch.json
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
{
|
||||
// Use IntelliSense to learn about possible attributes.
|
||||
// Hover to view descriptions of existing attributes.
|
||||
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
|
||||
{
|
||||
"type": "python",
|
||||
"request": "launch",
|
||||
"name": "Pserve",
|
||||
"python": "C:/pyramid10/Scripts/python.exe",
|
||||
"program": "/pyramid10/Scripts/pserve.exe",
|
||||
"args": [
|
||||
"-v",
|
||||
"development.ini",
|
||||
],
|
||||
"console": "integratedTerminal",
|
||||
"debugOptions": [
|
||||
"RedirectOutput",
|
||||
"WaitOnAbnormalExit",
|
||||
"WaitOnNormalExit"
|
||||
],
|
||||
"python.unitTest.promptToConfigure":false,
|
||||
"files.exclude": {
|
||||
"**/.git": true,
|
||||
"**/.svn": true,
|
||||
"**/.hg": true,
|
||||
"**/.DS_Store": true,
|
||||
".idea": true,
|
||||
"**/*.pyc": true,
|
||||
},
|
||||
}
|
||||
]
|
||||
}
|
||||
5
.vscode/settings.json
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"html.validate.scripts": false,
|
||||
"editor.minimap.enabled": false,
|
||||
"python.pythonPath": "C:\\pyramid10\\Scripts\\python.exe"
|
||||
}
|
||||
1
bitbucket app password.txt
Normal file
@@ -0,0 +1 @@
|
||||
9HMYPQ7Yz8emdBwGpbg3
|
||||
@@ -19,17 +19,26 @@ pyramid.includes =
|
||||
pyramid_tm
|
||||
|
||||
|
||||
# sqlalchemy.url = mysql://dumas_ro:dumas_RO!@localhost/bddevfac?charset=utf8
|
||||
sqlalchemy.url = mysql://phuoc:phuoc!@localhost/bddevfac?charset=utf8
|
||||
# sqlalchemy.url = mysql://root:cni/@srvbd/bddevfac?charset=utf8
|
||||
# sqlalchemy.url = mysql://phuoc:phuoc!@192.168.0.31/bddevfac?charset=utf8
|
||||
|
||||
mondumas.admin_email = cao.thien-phuoc@orange.fr
|
||||
mondumas.devfac_url = mondumas:static/DEVFAC/
|
||||
mondumas.admin_email = peinture-dumas@entreprise-dumas.com
|
||||
mondumas.devfac_url = mondumas:static/DEVFAC/DOCS_ATTACHES/
|
||||
mondumas.devfac_dir = /DEVFAC14/DOCS_ATTACHES
|
||||
|
||||
# Mailer configuration
|
||||
mail.host = smtp.orange.fr
|
||||
mail.port = 25
|
||||
mail.username = cao.thien-phuoc@orange.fr
|
||||
mail.host = smtp.office365.com
|
||||
mail.port = 587
|
||||
mail.tls = True
|
||||
mail.username = peinture-dumas@entreprise-dumas.com
|
||||
mail.password = Nar50611
|
||||
|
||||
# SMTP RELAY alinto
|
||||
# mail.host = gatewayxl.alinto.net
|
||||
# mail.port = 465
|
||||
# mail.ssl = True
|
||||
# mail.username = smtpsasdumas@entreprise-dumas.com
|
||||
|
||||
[server:main]
|
||||
use = egg:waitress#main
|
||||
|
||||
49
imap-over-tls-example.py
Normal file
@@ -0,0 +1,49 @@
|
||||
#!/usr/bin/env python3
|
||||
import imaplib
|
||||
import msal
|
||||
import pprint
|
||||
|
||||
conf = {
|
||||
"authority": "https://login.microsoftonline.com/47f02128-acf0-47a7-a3bf-27a3619d4a4f",
|
||||
"client_id": "4fdf2634-a260-4576-a442-684998f0187b", #AppID
|
||||
"scope": ['https://outlook.office365.com/.default'],
|
||||
"secret": "dZD8Q~GmG_PFi.t_uRiyBEzwLeMZeemQGHUFta~J", #Key-Value
|
||||
"secret-id": "5cae3249-0fc0-43e2-bc0e-d78f41964970", #Key-ID
|
||||
}
|
||||
|
||||
def generate_auth_string(user, token):
|
||||
return f"user={user}\x01auth=Bearer {token}\x01\x01"
|
||||
|
||||
if __name__ == "__main__":
|
||||
app = msal.ConfidentialClientApplication(conf['client_id'], authority=conf['authority'],
|
||||
client_credential=conf['secret'])
|
||||
|
||||
result = app.acquire_token_silent(conf['scope'], account=None)
|
||||
|
||||
if not result:
|
||||
print("No suitable token in cache. Get new one.")
|
||||
result = app.acquire_token_for_client(scopes=conf['scope'])
|
||||
|
||||
if "access_token" in result:
|
||||
print(result['token_type'])
|
||||
pprint.pprint(result)
|
||||
else:
|
||||
print(result.get("error"))
|
||||
print(result.get("error_description"))
|
||||
print(result.get("correlation_id"))
|
||||
|
||||
|
||||
# imap = imaplib.IMAP4('outlook.office365.com')
|
||||
# imap.starttls()
|
||||
imap = imaplib.IMAP4_SSL('outlook.office365.com', 993)
|
||||
imap.authenticate("XOAUTH2", lambda x: generate_auth_string("polynet-dumas@entreprise-dumas.com",
|
||||
result['access_token']).encode("utf-8"))
|
||||
|
||||
# Print list of mailboxes on server
|
||||
code, mailboxes = imap.list()
|
||||
for mailbox in mailboxes:
|
||||
print(mailbox.decode("utf-8"))
|
||||
# Select mailbox
|
||||
imap.select("INBOX")
|
||||
# Cleanup
|
||||
imap.close()
|
||||
@@ -2,37 +2,55 @@ Metadata-Version: 2.1
|
||||
Name: mondumas
|
||||
Version: 1.0
|
||||
Summary: mondumas
|
||||
Home-page: UNKNOWN
|
||||
Home-page:
|
||||
Author:
|
||||
Author-email:
|
||||
License: UNKNOWN
|
||||
Description: # README #
|
||||
|
||||
|
||||
Application web permettant aux personnels de l'entreprise Dumas d'accéder aux dossiers des clients
|
||||
|
||||
|
||||
|
||||
Développé avec :
|
||||
- Pyramid Framework
|
||||
- MySQL
|
||||
- Chameleon
|
||||
|
||||
* [Exemple d'une comptabilité simple] (http://perso.numericable.fr/assoc1901/droit/comptabilite1.htm)
|
||||
|
||||
* [Learn Markdown](https://bitbucket.org/tutorials/markdowndemo)
|
||||
|
||||
|
||||
|
||||
0.0
|
||||
---
|
||||
|
||||
- Initial version
|
||||
|
||||
Keywords: web wsgi bfg pylons pyramid
|
||||
Platform: UNKNOWN
|
||||
Classifier: Programming Language :: Python
|
||||
Classifier: Framework :: Pyramid
|
||||
Classifier: Topic :: Internet :: WWW/HTTP
|
||||
Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Application
|
||||
Provides-Extra: testing
|
||||
|
||||
# README #
|
||||
|
||||
Cette application web permet aux collaborateurs de l'entreprise Dumas :
|
||||
|
||||
- de consulter et de gérer les dossiers des clients depuis leur tablette
|
||||
- de créer un rapport de fuite et le faire signer par le client
|
||||
|
||||
Elle est développée avec les composants open source suivants :
|
||||
|
||||
## Backend
|
||||
|
||||
- [Python](https://www.python.org/downloads/) 3.7
|
||||
- [Pyramid web framework](https://trypyramid.com/) 1.10
|
||||
- [MySQL server](https://mysql.com/) 5.7 sur Windows Server 2008 R2 Standard
|
||||
- [Apache web server](https://apache.org/) 2.4 sur Debian GNU/Linux 9 (stretch)
|
||||
|
||||
## Frontend
|
||||
|
||||
- [Bootstrap framework](https://getbootstrap.com/) for CSS 3.3.7
|
||||
- [Jquery](https://jquery.com/download/) for JavaScript 3.2.1
|
||||
- Chameleon templates
|
||||
- [FormValidation](https://formvalidation.io/) form validator 0.7.0
|
||||
|
||||
## Jquery Plugins
|
||||
|
||||
- [DataTables](https://datatables.net/) 1.10.20
|
||||
- [Fullcalendar](https://fullcalendar.io/) 3.9.0
|
||||
- [fullcalendar Scheduler](https://fullcalendar.io/) 1.9.4
|
||||
- [Jquery-ui et jquery-ui-themes](https://jqueryui.com/) 1.12.1
|
||||
- [jSignature](https://willowsystems.github.io/jSignature)
|
||||
- [less.js](http://lesscss.org/) 3.11.1
|
||||
- [moment.js](https://momentjs.com/) with-locales.min.js
|
||||
|
||||
|
||||
[Learn Markdown](https://bitbucket.org/tutorials/markdowndemo)
|
||||
|
||||
|
||||
|
||||
0.0
|
||||
---
|
||||
|
||||
- Initial version
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
CHANGES.txt
|
||||
MANIFEST.in
|
||||
README.md
|
||||
bitbucket app password.txt
|
||||
development.ini
|
||||
production.ini
|
||||
pytest.ini
|
||||
@@ -21,12 +22,18 @@ mondumas.egg-info/top_level.txt
|
||||
mondumas/models/__init__.py
|
||||
mondumas/models/agenda.py
|
||||
mondumas/models/default.py
|
||||
mondumas/models/devis.py
|
||||
mondumas/models/dossier.py
|
||||
mondumas/models/parametres.py
|
||||
mondumas/models/stats.py
|
||||
mondumas/models/utils.py
|
||||
mondumas/scripts/__init__.py
|
||||
mondumas/views/__init__.py
|
||||
mondumas/views/agenda.py
|
||||
mondumas/views/default.py
|
||||
mondumas/views/devis.py
|
||||
mondumas/views/dossier.py
|
||||
mondumas/views/notfound.py
|
||||
mondumas/views/parametres.py
|
||||
mondumas/views/stats.py
|
||||
mondumas/views/utils.py
|
||||
@@ -1,4 +1,2 @@
|
||||
[paste.app_factory]
|
||||
main = mondumas:main
|
||||
[console_scripts]
|
||||
|
||||
[paste.app_factory]
|
||||
main = mondumas:main
|
||||
|
||||
@@ -1,18 +1,21 @@
|
||||
pyramid
|
||||
pyramid==1.10
|
||||
pyramid_chameleon
|
||||
pyramid_debugtoolbar
|
||||
pyramid_layout
|
||||
pyramid_mailer
|
||||
pyramid_tm
|
||||
SQLAlchemy
|
||||
SQLAlchemy==1.2.19
|
||||
transaction
|
||||
zope.sqlalchemy
|
||||
zope.sqlalchemy==1.1
|
||||
waitress
|
||||
mysqlclient
|
||||
mysqlclient==1.4
|
||||
docutils
|
||||
pdfkit
|
||||
python-dateutil
|
||||
docutils
|
||||
user-agents
|
||||
xlrd
|
||||
pdfminer3
|
||||
Pillow==6.1.0
|
||||
|
||||
[testing]
|
||||
WebTest>=1.3.1
|
||||
|
||||
@@ -9,7 +9,7 @@ from .views.default import (
|
||||
to_decz,
|
||||
)
|
||||
|
||||
@layout_config(template='templates/layouts/global_layout.pt')
|
||||
@layout_config(template='templates/global_layout.pt')
|
||||
class GlobalLayout(object):
|
||||
# page_title = "Pagode Tinh-Do"
|
||||
|
||||
@@ -33,6 +33,14 @@ class GlobalLayout(object):
|
||||
def to_percent(self, x):
|
||||
return to_percent(x)
|
||||
|
||||
def date2dmy(self, ddate):
|
||||
if ddate:
|
||||
# si date, convertir en dd-mm-yyyy
|
||||
madate = ddate.strftime('%d-%m-%Y')
|
||||
else:
|
||||
madate = ''
|
||||
return madate
|
||||
|
||||
def isAnonymous(self):
|
||||
user = self.request.authenticated_userid
|
||||
return user is None
|
||||
@@ -50,7 +58,7 @@ class GlobalLayout(object):
|
||||
def isWebPage(self):
|
||||
# test view name
|
||||
if self.request.matched_route:
|
||||
if self.request.matched_route.name == 'rdf_rapport':
|
||||
if self.request.matched_route.name in ['rdf_rapport', 'devis_preview']:
|
||||
# oui, page PDF
|
||||
return False
|
||||
else:
|
||||
@@ -59,3 +67,4 @@ class GlobalLayout(object):
|
||||
else:
|
||||
# non, page web
|
||||
return True
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ def execute_query(request, query, params):
|
||||
def get_users_agenda(request, user):
|
||||
if user == '':
|
||||
""" lire la liste des users ayant un agenda"""
|
||||
query = "SELECT * FROM p_users WHERE cd_uti != 'N' and cd_uti = agenda AND actif != 0 ORDER BY nom;"
|
||||
query = "SELECT * FROM p_users WHERE cd_uti = agenda AND actif != 0 ORDER BY nom;"
|
||||
results = request.dbsession.execute(query).fetchall()
|
||||
else:
|
||||
""" lire le user ayant un agenda"""
|
||||
|
||||
@@ -26,11 +26,6 @@ def get_userAccess(request, logged_in):
|
||||
else:
|
||||
return 0
|
||||
|
||||
def get_codespostaux(request, code):
|
||||
query = "SELECT * FROM p_codespostaux WHERE code_postal like :code;"
|
||||
results = request.dbsession.execute(query, {'code': code + "%"})
|
||||
return results.fetchall()
|
||||
|
||||
def get_member_by_mdp_oublie(request, lien):
|
||||
query = "SELECT * FROM p_users WHERE mdp_oublie=:lien;"
|
||||
results = request.dbsession.execute(query, {'lien':lien}).first()
|
||||
@@ -38,31 +33,29 @@ def get_member_by_mdp_oublie(request, lien):
|
||||
|
||||
def get_member_by_id(request, mbr_id):
|
||||
if mbr_id == '0':
|
||||
query = "SELECT * FROM p_users ORDER BY cd_uti"
|
||||
query = """SELECT p_users.*, p_acces.libelle FROM p_users
|
||||
INNER JOIN p_acces ON p_acces.code = p_users.access
|
||||
ORDER BY cd_uti"""
|
||||
results = request.dbsession.execute(query).fetchall()
|
||||
else:
|
||||
# lire le membres par son identifianr
|
||||
query = """SELECT * FROM p_users WHERE CD_UTI=:mbr_id;"""
|
||||
query = """SELECT p_users.*, p_acces.libelle FROM p_users
|
||||
INNER JOIN p_acces ON p_acces.code = p_users.access
|
||||
WHERE CD_UTI=:mbr_id;"""
|
||||
results = request.dbsession.execute(query, {'mbr_id': mbr_id}).first()
|
||||
return results
|
||||
|
||||
def get_member_info(request, logged_in):
|
||||
# lire le membres par son identifianr
|
||||
query = """SELECT nom, email, access, societe FROM p_users WHERE CD_UTI=:logged_in;"""
|
||||
query = """SELECT u.nom, u.email, u.access, u.societe, p_acces.libelle FROM p_users u
|
||||
INNER JOIN p_acces ON p_acces.code = u.access
|
||||
WHERE CD_UTI=:logged_in;"""
|
||||
results = request.dbsession.execute(query, {'logged_in': logged_in}).first()
|
||||
if results.access == 9:
|
||||
fonction = 'Administrateur'
|
||||
elif results.access == 8:
|
||||
fonction = 'Comptabilité'
|
||||
elif results.access == 5:
|
||||
fonction = 'Gestion'
|
||||
else:
|
||||
fonction = 'Commercial'
|
||||
|
||||
return {
|
||||
'nom': results.nom,
|
||||
'email': results.email,
|
||||
'fonction': fonction,
|
||||
'fonction': results.libelle,
|
||||
'societe': results.societe,
|
||||
}
|
||||
|
||||
@@ -93,9 +86,6 @@ def update_membre(request, cd_uti, new_values):
|
||||
for param in new_values.keys():
|
||||
if param == 'nom':
|
||||
new_values['nom'] = new_values['nom'].upper()
|
||||
if param == 'access':
|
||||
' ne prend que le 1er caractère'
|
||||
new_values['access'] = new_values['access'][0]
|
||||
|
||||
if s:
|
||||
s += ",%s=:%s" % (param, param)
|
||||
@@ -113,3 +103,57 @@ def delete_membre(request, cd_uti):
|
||||
query = "DELETE FROM p_users WHERE cd_uti = :cd_uti ;"
|
||||
execute_query(request, query, {'cd_uti': cd_uti})
|
||||
|
||||
def get_tarif_ajax(request, type, groupe, libelle):
|
||||
if type == 'LIB':
|
||||
if groupe == 'TEXTE':
|
||||
# lire tous les textes dont le libelle commençe par
|
||||
query = "SELECT * FROM tarifs WHERE groupe='TEXTE' and libelle like :libelle;"
|
||||
results = request.dbsession.execute(query, {'libelle': libelle + "%"}).fetchall()
|
||||
else:
|
||||
# lire tous les tarifs du grupe dont le ref commençe par libelle
|
||||
query = "SELECT * FROM tarifs WHERE groupe=:groupe and ref like :libelle;"
|
||||
results = request.dbsession.execute(query, {'groupe': groupe, 'libelle': libelle + "%"}).fetchall()
|
||||
else:
|
||||
# lire tous les tarif du grupe dont le ref est égale à
|
||||
query = "SELECT * FROM tarifs WHERE groupe=:groupe and ref = :libelle;"
|
||||
results = request.dbsession.execute(query, {'groupe': groupe, 'libelle': libelle}).first()
|
||||
return results
|
||||
|
||||
def get_codespostaux(request, codep):
|
||||
query = "SELECT * FROM p_codespostaux WHERE code_postal LIKE :code;"
|
||||
results = request.dbsession.execute(query, {'code': codep+"%"}).fetchall()
|
||||
return results
|
||||
|
||||
def get_dd_restant(request):
|
||||
query = """SELECT (SELECT count(*) FROM dem_devis WHERE societe='PE' AND STATUS=0) AS nb_PE,
|
||||
(SELECT count(*) FROM dem_devis WHERE societe='ME' AND STATUS=0) AS nb_ME,
|
||||
(SELECT count(*) FROM dem_devis WHERE societe='PL' AND STATUS=0) AS nb_PL;"""
|
||||
results = request.dbsession.execute(query).first()
|
||||
return results
|
||||
|
||||
def get_de_restant(request):
|
||||
# les suivis des attachés commerciaux dnas les 4 derniers jours
|
||||
query = """SELECT
|
||||
(SELECT count(*) FROM dem_lig WHERE societe='PE' AND DATEDIFF(CURDATE(), date) <= 7 AND usermaj in ('CG','MP','RV','VD')) AS nb_PE,
|
||||
(SELECT count(*) FROM dem_lig WHERE societe='ME' AND DATEDIFF(CURDATE(), date) <= 7 AND usermaj in ('CG','MP','RV','VD')) AS nb_ME,
|
||||
(SELECT count(*) FROM dem_lig WHERE societe='PL' AND DATEDIFF(CURDATE(), date) <= 7 AND usermaj in ('CG','MP','RV','VD')) AS nb_PL;"""
|
||||
results = request.dbsession.execute(query).first()
|
||||
return results
|
||||
|
||||
def get_fa_restant(request):
|
||||
query = """SELECT (SELECT count(*) FROM facture WHERE societe='PE' AND STATUS < 8) AS nb_PE,
|
||||
(SELECT count(*) FROM facture WHERE societe='ME' AND STATUS < 8) AS nb_ME,
|
||||
(SELECT count(*) FROM facture WHERE societe='PL' AND STATUS < 8) AS nb_PL;"""
|
||||
results = request.dbsession.execute(query).first()
|
||||
return results
|
||||
|
||||
def get_rdv_by_date(request, date, agenda):
|
||||
query = """SELECT COUNT(*) AS nb_rdv FROM bddevfac.dem_lig WHERE DATEVI=:date AND LISTE=:agenda;"""
|
||||
results = request.dbsession.execute(query, {'date': date, 'agenda': agenda}).first()
|
||||
return results.nb_rdv
|
||||
|
||||
def get_rdf_null(request):
|
||||
# lire les RDF non validés depuis moins d'un an
|
||||
query = """SELECT COUNT(*) AS nb_rdf FROM bddevfac.dem_rdf WHERE date_relu IS NULL AND year(date_inter) > 2021;"""
|
||||
results = request.dbsession.execute(query).first()
|
||||
return results.nb_rdf
|
||||
|
||||
252
mondumas/models/devis.py
Normal file
@@ -0,0 +1,252 @@
|
||||
# -*- coding: utf8 -*-
|
||||
from sqlalchemy import text
|
||||
from sqlalchemy.ext.declarative import declarative_base
|
||||
from sqlalchemy.orm import (
|
||||
scoped_session,
|
||||
sessionmaker,
|
||||
)
|
||||
from zope.sqlalchemy import (
|
||||
ZopeTransactionExtension,
|
||||
mark_changed
|
||||
)
|
||||
|
||||
from datetime import *
|
||||
import transaction
|
||||
import os
|
||||
|
||||
from ..views.default import (
|
||||
to_int,
|
||||
)
|
||||
|
||||
|
||||
def execute_query(request, query, params):
|
||||
"""Execute query and mark session as changed"""
|
||||
request.dbsession.execute(query, params)
|
||||
mark_changed(request.dbsession)
|
||||
transaction.commit()
|
||||
|
||||
|
||||
def get_dossiers_byName(request, societe, name):
|
||||
# lires tous les dossiers d'un chantier
|
||||
|
||||
query = """select * from (
|
||||
SELECT date,'DD' AS TYPE, LPAD(no_id,6,'0') AS numero, nomcli, CONCAT(c_nom,'; ',c_adr,'; ',c_ville) AS chantier, 0 AS montant, status, nosin, societe , no_id as nochantier
|
||||
FROM dem_devis WHERE societe=:societe AND c_nom LIKE :name
|
||||
UNION
|
||||
SELECT date,'DE' AS TYPE, LPAD(no_id,6,'0') AS numero, nomcli, CONCAT(c_nom,'; ',c_adr,'; ',c_ville) AS chantier, COALESCE(totalht,0) AS montant, status, nosin, societe , nochantier
|
||||
FROM devis WHERE societe=:societe AND c_nom LIKE :name
|
||||
UNION
|
||||
SELECT date,'FA' AS TYPE, LPAD(no_id,6,'0') AS numero, nomcli, CONCAT(c_nom,'; ',c_adr,'; ',c_ville) AS chantier, COALESCE(totalht,0) AS montant, status, nosin, societe , nochantier
|
||||
FROM facture WHERE societe=:societe AND c_nom LIKE :name
|
||||
) a
|
||||
order by date, TYPE
|
||||
"""
|
||||
results = request.dbsession.execute(query, {'societe': societe, 'name': name+'%'}).fetchall()
|
||||
return results
|
||||
|
||||
def get_devfac_by_no(request,nodossier):
|
||||
# lire devis, facture ou proforma
|
||||
|
||||
societe = nodossier[0:2]
|
||||
type_doc = nodossier[3:5]
|
||||
no_id = nodossier[5:]
|
||||
|
||||
if type_doc == 'DE':
|
||||
query = """
|
||||
SELECT d.*, c.*, a.NOM as nom_cabinet, e.NOM as nom_expert FROM devis d
|
||||
INNER JOIN clients c ON d.societe = c.societe and d.cd_cli = c.cd_cli
|
||||
INNER JOIN p_cabinet a ON d.cabinet = a.code
|
||||
INNER JOIN p_experts e ON d.cabinet = e.code_cab and d.expert = e.code_exp
|
||||
WHERE d.societe = :societe and d.no_id=:no_id;"""
|
||||
elif type_doc == 'FA':
|
||||
query = """
|
||||
SELECT d.*, c.*, a.NOM as nom_cabinet, e.NOM as nom_expert FROM facture d
|
||||
INNER JOIN clients c ON d.societe = c.societe and d.cd_cli = c.cd_cli
|
||||
INNER JOIN p_cabinet a ON d.cabinet = a.code
|
||||
INNER JOIN p_experts e ON d.cabinet = e.code_cab and d.expert = e.code_exp
|
||||
WHERE d.societe = :societe and d.no_id=:no_id;"""
|
||||
else:
|
||||
query = """
|
||||
SELECT d.*, c.*, a.NOM as nom_cabinet, e.NOM as nom_expert FROM proforma d
|
||||
INNER JOIN clients c ON d.societe = c.societe and d.cd_cli = c.cd_cli
|
||||
INNER JOIN p_cabinet a ON d.cabinet = a.code
|
||||
INNER JOIN p_experts e ON d.cabinet = e.code_cab and d.expert = e.code_exp
|
||||
WHERE d.societe = :societe and d.no_id=:no_id;"""
|
||||
|
||||
results = request.dbsession.execute(query, {'societe': societe, 'no_id': no_id}).first()
|
||||
return results
|
||||
|
||||
def get_devis_lig_by_no(request,nodossier):
|
||||
|
||||
societe = nodossier[0:2]
|
||||
type_doc = nodossier[3:5]
|
||||
no_id = nodossier[5:]
|
||||
|
||||
if type_doc == 'DE':
|
||||
query = "SELECT * FROM devis_lig WHERE societe = :societe and no_id=:no_id;"
|
||||
elif type_doc == 'FA':
|
||||
query = "SELECT * FROM facture_lig WHERE societe = :societe and no_id=:no_id;"
|
||||
else:
|
||||
query = "SELECT * FROM proforma_lig WHERE societe = :societe and no_id=:no_id;"
|
||||
|
||||
results = request.dbsession.execute(query, {'societe': societe, 'no_id': no_id}).fetchall()
|
||||
return results
|
||||
|
||||
def get_devis_lignes_by_no(request, nodossier, nolig):
|
||||
societe = nodossier[0:2]
|
||||
type_doc = nodossier[3:5]
|
||||
no_id = nodossier[5:]
|
||||
|
||||
if nolig == '0':
|
||||
query = "SELECT * FROM devis_lignes WHERE societe = :societe and no_id=:no_id;"
|
||||
results = request.dbsession.execute(query, {'societe': societe, 'no_id': no_id}).fetchall()
|
||||
else:
|
||||
query = "SELECT * FROM devis_lignes WHERE societe = :societe and no_id=:no_id and nolig=:nolig;"
|
||||
results = request.dbsession.execute(query, {'societe': societe, 'no_id': no_id, 'nolig': nolig}).first()
|
||||
return results
|
||||
|
||||
|
||||
def insert_devis_from_dossier(request, nodossier, logged_in):
|
||||
societe = nodossier[0:2]
|
||||
no_id = nodossier[3:]
|
||||
|
||||
query = "CALL spINS_DEVIS_FROM_DOSSIER(:societe, 'DDW', :no_id, :logged_in);"
|
||||
results = request.dbsession.execute(query,{'societe': societe, 'no_id': no_id, 'logged_in': logged_in}).first()
|
||||
return results
|
||||
|
||||
def get_devis_by_no(request,nodossier):
|
||||
# lire devis, facture ou proforma
|
||||
|
||||
societe = nodossier[0:2]
|
||||
no_id = nodossier[5:]
|
||||
|
||||
query = """
|
||||
SELECT d.*, c.*, s.libelle, a.NOM as nom_cabinet, e.NOM as nom_expert FROM devis d
|
||||
INNER JOIN clients c ON d.societe = c.societe and d.cd_cli = c.cd_cli
|
||||
INNER JOIN p_cabinet a ON d.cabinet = a.code
|
||||
INNER JOIN p_experts e ON d.cabinet = e.code_cab and d.expert = e.code_exp
|
||||
INNER JOIN p_statuts s ON d.STATUS = s.code
|
||||
WHERE d.societe = :societe and d.no_id=:no_id;"""
|
||||
|
||||
results = request.dbsession.execute(query, {'societe': societe, 'no_id': no_id}).first()
|
||||
return results
|
||||
|
||||
def get_facture_by_no(request,nodossier):
|
||||
# lire facture
|
||||
|
||||
societe = nodossier[0:2]
|
||||
no_id = nodossier[5:]
|
||||
|
||||
query = """
|
||||
SELECT d.*, c.*, s.libelle, a.NOM as nom_cabinet, e.NOM as nom_expert FROM facture d
|
||||
INNER JOIN clients c ON d.societe = c.societe and d.cd_cli = c.cd_cli
|
||||
INNER JOIN p_cabinet a ON d.cabinet = a.code
|
||||
INNER JOIN p_experts e ON d.cabinet = e.code_cab and d.expert = e.code_exp
|
||||
INNER JOIN p_statuts s ON d.STATUS = s.code
|
||||
WHERE d.societe = :societe and d.no_id=:no_id;"""
|
||||
|
||||
results = request.dbsession.execute(query, {'societe': societe, 'no_id': no_id}).first()
|
||||
return results
|
||||
|
||||
def get_proforma_by_no(request,nodossier):
|
||||
# lire facture
|
||||
|
||||
societe = nodossier[0:2]
|
||||
no_id = nodossier[5:]
|
||||
|
||||
query = """
|
||||
SELECT d.*, c.*, a.NOM as nom_cabinet, e.NOM as nom_expert FROM proforma d
|
||||
INNER JOIN clients c ON d.societe = c.societe and d.cd_cli = c.cd_cli
|
||||
INNER JOIN p_cabinet a ON d.cabinet = a.code
|
||||
INNER JOIN p_experts e ON d.cabinet = e.code_cab and d.expert = e.code_exp
|
||||
WHERE d.societe = :societe and d.no_id=:no_id;"""
|
||||
|
||||
results = request.dbsession.execute(query, {'societe': societe, 'no_id': no_id}).first()
|
||||
return results
|
||||
|
||||
def update_devis_ligne(request, nodossier, nolig, new_values):
|
||||
societe = nodossier[0:2]
|
||||
no_id = nodossier[5:]
|
||||
# formater les champs
|
||||
s = ''
|
||||
for param in new_values.keys():
|
||||
if s:
|
||||
s += ",%s=:%s" % (param, param)
|
||||
else:
|
||||
s = "%s=:%s" % (param, param)
|
||||
|
||||
if nolig == '0':
|
||||
query = "INSERT INTO devis_lignes SET %s" % s
|
||||
else:
|
||||
new_values['societe'] = societe
|
||||
new_values['no_id'] = no_id
|
||||
new_values['nolig'] = nolig
|
||||
query = "UPDATE devis_lignes SET %s WHERE societe = :societe and no_id=:no_id and nolig = :nolig;" % s
|
||||
# import pdb;pdb.set_trace()
|
||||
execute_query(request, query, new_values)
|
||||
|
||||
def sum_devis_totaux(request, nodossier):
|
||||
societe = nodossier[0:2]
|
||||
no_id = nodossier[5:]
|
||||
|
||||
query = """UPDATE devis SET totalht = (SELECT SUM(mtht) FROM devis_lignes WHERE societe=:societe AND no_id=:no_id),
|
||||
totaltva = ROUND(totalht * tauxtva / 100,2),
|
||||
totalttc = totalht + totaltva
|
||||
WHERE societe=:societe AND no_id=:no_id;"""
|
||||
execute_query(request, query, {'societe': societe, 'no_id': no_id})
|
||||
|
||||
def delete_devis_ligne(request, nodossier, nolig):
|
||||
societe = nodossier[0:2]
|
||||
no_id = nodossier[5:]
|
||||
|
||||
query = "DELETE FROM devis_lignes WHERE societe = :societe and no_id=:no_id and nolig=%s;"
|
||||
execute_query(request, query, {'societe': societe, 'no_id': no_id})
|
||||
|
||||
def move_devis_ligne(request, nodossier, nolig, move):
|
||||
societe = nodossier[0:2]
|
||||
no_id = nodossier[5:]
|
||||
|
||||
# get max no ligne du devis
|
||||
query = "SELECT count(*) AS max_no FROM devis_lignes WHERE societe = :societe and no_id=:no_id;"
|
||||
results = request.dbsession.execute(query, {'societe': societe, 'no_id': no_id}).first()
|
||||
max_no = results.max_no + 1
|
||||
|
||||
step = 0
|
||||
if move == 'up':
|
||||
# déplacement vers le haut
|
||||
if nolig > 1:
|
||||
step = -1
|
||||
else:
|
||||
# déplacement vers le haut
|
||||
if nolig < max_no:
|
||||
step = +1
|
||||
|
||||
if step != 0:
|
||||
# déplacer le suivant ou précédent vers la fin
|
||||
query = """UPDATE devis_lignes SET nolig = :max_no WHERE societe = :societe and no_id=:no_id and nolig = :nolig + :step;"""
|
||||
execute_query(request, query, {'societe': societe, 'no_id': no_id, 'nolig': nolig, 'max_no': max_no, 'step': step})
|
||||
# permuter avec le suivant ou précédent
|
||||
query = """UPDATE devis_lignes SET nolig = nolig + :step WHERE societe = :societe and no_id=:no_id and nolig = :nolig;"""
|
||||
execute_query(request, query, {'societe': societe, 'no_id': no_id, 'nolig': nolig, 'step': step})
|
||||
# remettre le précédent ou suivant à la place de la ligne déplacée
|
||||
query = """UPDATE devis_lignes SET nolig = :nolig WHERE societe = :societe and no_id=:no_id and nolig = :max_no;"""
|
||||
execute_query(request, query, {'societe': societe, 'no_id': no_id, 'nolig': nolig, 'max_no': max_no})
|
||||
|
||||
def update_devis_cloture(request, nodevis, status, logged_in):
|
||||
societe = nodevis[0:2]
|
||||
nochantier = int(nodevis[5:])
|
||||
# met le montant regle à 1 centime pour terminé le dossier
|
||||
query = "UPDATE devis SET STATUS = :status, USERMAJ = :logged_in WHERE societe=:societe AND no_id=:nochantier;"
|
||||
execute_query(request, query, {'societe': societe, 'nochantier': nochantier, 'status': status, 'logged_in': logged_in})
|
||||
|
||||
def update_devis_nochantier(request, societe, no_devis, nochantier):
|
||||
# extraire type de doc et no de doc à mettre à jour
|
||||
type = no_devis[0:2]
|
||||
no_id = no_devis[3:]
|
||||
if type == 'DE':
|
||||
# maj le numero du dossier du devis
|
||||
query = "UPDATE devis SET nochantier = :nochantier WHERE societe=:societe AND no_id=:no_id;"
|
||||
else:
|
||||
# maj le numero du dossier de la facture
|
||||
query = "UPDATE facture SET nochantier = :nochantier WHERE societe=:societe AND no_id=:no_id;"
|
||||
execute_query(request, query, {'societe': societe, 'nochantier': nochantier, 'no_id': no_id})
|
||||
@@ -12,6 +12,7 @@ from zope.sqlalchemy import (
|
||||
|
||||
from datetime import *
|
||||
import transaction
|
||||
import os
|
||||
|
||||
def execute_query(request, query, params):
|
||||
"""Execute query and mark session as changed"""
|
||||
@@ -29,13 +30,14 @@ def get_dossier_by_no(request,nodossier):
|
||||
societe = nodossier[0:2]
|
||||
no_id = nodossier[3:]
|
||||
query = """
|
||||
SELECT d.*, a.NOM as nom_cabinet, e.NOM as nom_expert,
|
||||
SELECT d.*, s.libelle, a.NOM as nom_cabinet, e.NOM as nom_expert,
|
||||
c.QUALITE AS cli_QUALITE, c.NOM AS cli_NOM, c.ADRESSE AS cli_ADRESSE, c.ADRESSE2 AS cli_ADRESSE2, c.CP AS cli_CP, c.VILLE AS cli_VILLE,
|
||||
c.TEL1 AS cli_TEL1, c.TEL2 AS cli_TEL2, c.TELP AS cli_TELP, c.FAX AS cli_FAX, c.NOMRESP AS cli_NOMRESP
|
||||
FROM dem_devis d
|
||||
INNER JOIN clients c ON d.societe = c.societe and d.cd_cli = c.cd_cli
|
||||
INNER JOIN p_cabinet a ON d.cabinet = a.code
|
||||
INNER JOIN p_experts e ON d.cabinet = e.code_cab and d.expert = e.code_exp
|
||||
INNER JOIN p_statuts s ON d.STATUS = s.code
|
||||
where d.societe = '%s' and d.no_id=%s;""" % (societe, no_id);
|
||||
results = request.dbsession.execute(query).first()
|
||||
return results
|
||||
@@ -45,37 +47,30 @@ def get_dossier_by_sinistre(request,societe, nosin):
|
||||
results = request.dbsession.execute(query).first()
|
||||
return results
|
||||
|
||||
|
||||
def get_devis_by_no(request,nodossier):
|
||||
societe = nodossier[0:2]
|
||||
type_doc = nodossier[3:5]
|
||||
no_id = nodossier[5:]
|
||||
|
||||
if type_doc == 'DE':
|
||||
query = """
|
||||
SELECT d.*, c.*, a.NOM as nom_cabinet, e.NOM as nom_expert FROM devis d
|
||||
INNER JOIN clients c ON d.societe = c.societe and d.cd_cli = c.cd_cli
|
||||
INNER JOIN p_cabinet a ON d.cabinet = a.code
|
||||
INNER JOIN p_experts e ON d.cabinet = e.code_cab and d.expert = e.code_exp
|
||||
WHERE d.societe = :societe and d.no_id=:no_id;"""
|
||||
elif type_doc == 'FA':
|
||||
query = """
|
||||
SELECT d.*, c.*, a.NOM as nom_cabinet, e.NOM as nom_expert FROM facture d
|
||||
INNER JOIN clients c ON d.societe = c.societe and d.cd_cli = c.cd_cli
|
||||
INNER JOIN p_cabinet a ON d.cabinet = a.code
|
||||
INNER JOIN p_experts e ON d.cabinet = e.code_cab and d.expert = e.code_exp
|
||||
WHERE d.societe = :societe and d.no_id=:no_id;"""
|
||||
else:
|
||||
query = """
|
||||
SELECT d.*, c.*, a.NOM as nom_cabinet, e.NOM as nom_expert FROM proforma d
|
||||
INNER JOIN clients c ON d.societe = c.societe and d.cd_cli = c.cd_cli
|
||||
INNER JOIN p_cabinet a ON d.cabinet = a.code
|
||||
INNER JOIN p_experts e ON d.cabinet = e.code_cab and d.expert = e.code_exp
|
||||
WHERE d.societe = :societe and d.no_id=:no_id;"""
|
||||
|
||||
results = request.dbsession.execute(query, {'societe': societe, 'no_id': no_id}).first()
|
||||
def get_dossiers_traites(request, societe):
|
||||
query = """SELECT d.date, LPAD(d.no_id,6,'0') AS numero, d.nomcli, CONCAT(d.c_nom,'; ',d.c_adr,'; ',d.c_ville) AS chantier, d.mttrav AS montant, status, s.libelle, d.nosin, d.nopol, d.humidite, d.usermaj
|
||||
FROM dem_devis d JOIN p_statuts s ON d.STATUS = s.CODE WHERE d.societe = :societe AND d.status < 2 ORDER BY d.status, d.nomcli""";
|
||||
results = request.dbsession.execute(query, {'societe': societe}).fetchall()
|
||||
return results
|
||||
|
||||
def get_dossiers_importes(request):
|
||||
query = "SELECT * FROM dem_devis WHERE usermaj='EMAIL' and status=0 ORDER BY DATEMAJ";
|
||||
results = request.dbsession.execute(query).fetchall()
|
||||
return results
|
||||
|
||||
def get_clients_byName(request, societe, nom):
|
||||
query = "SELECT * FROM clients WHERE societe = '%s' and nom LIKE '%s';" % (societe, nom + '%');
|
||||
results = request.dbsession.execute(query).fetchall()
|
||||
return results
|
||||
|
||||
def get_derniers_suivis(request):
|
||||
query = """SELECT l.*, CONCAT(l.societe,'-',l.no_id) AS nodossier, d.C_NOM FROM dem_lig l
|
||||
INNER JOIN dem_devis d ON l.societe=d.societe AND l.no_id=d.no_id
|
||||
WHERE DATEDIFF(CURDATE(), l.date) <= 7 AND l.usermaj in ('CG','MP','RV','VD') ORDER BY l.date, l.societe DESC;"""
|
||||
results = request.dbsession.execute(query, ).fetchall()
|
||||
return results
|
||||
|
||||
|
||||
def get_dossier_rdv_by_no(request,nodossier, nolig):
|
||||
societe = nodossier[0:2]
|
||||
no_id = nodossier[3:]
|
||||
@@ -124,11 +119,12 @@ def insert_suivi(request, nodossier, comment):
|
||||
societe = nodossier[0:2]
|
||||
no_id = nodossier[3:]
|
||||
|
||||
query = """
|
||||
INSERT INTO dem_lig (societe, NO_ID, DATE, COMMENT, USERMAJ) VALUES
|
||||
(:societe, :no_id, CURRENT_DATE(), :comment, 'MAIL');"""
|
||||
query = "INSERT INTO dem_lig (societe, NO_ID, DATE, COMMENT, USERMAJ) VALUES (:societe, :no_id, CURRENT_DATE(), :comment, 'EMAIL');"
|
||||
execute_query(request, query, {'societe': societe, 'no_id': no_id, 'comment': comment})
|
||||
|
||||
query = "UPDATE dem_devis SET usermaj = 'EMAIL' WHERE SOCIETE=:societe AND NO_ID=:no_id;"
|
||||
execute_query(request, query, {'societe': societe, 'no_id': no_id})
|
||||
|
||||
def get_similaires_byChantier(request, societe, C_NOM, C_ADR, C_CP, C_VILLE):
|
||||
|
||||
query = """
|
||||
@@ -138,49 +134,51 @@ WHERE societe<>:societe AND C_NOM=:C_NOM AND C_ADR=:C_ADR AND C_CP=:C_CP AND C_V
|
||||
|
||||
return results
|
||||
|
||||
def get_devis_lig_by_no(request,nodossier):
|
||||
|
||||
societe = nodossier[0:2]
|
||||
type_doc = nodossier[3:5]
|
||||
no_id = nodossier[5:]
|
||||
|
||||
if type_doc == 'DE':
|
||||
query = "SELECT * FROM devis_lig WHERE societe = :societe and no_id=:no_id;"
|
||||
elif type_doc == 'FA':
|
||||
query = "SELECT * FROM facture_lig WHERE societe = :societe and no_id=:no_id;"
|
||||
else:
|
||||
query = "SELECT * FROM proforma_lig WHERE societe = :societe and no_id=:no_id;"
|
||||
|
||||
results = request.dbsession.execute(query, {'societe': societe, 'no_id': no_id}).fetchall()
|
||||
return results
|
||||
|
||||
def get_docs_attaches(request, nodossier, norapport, nosection, filename):
|
||||
def get_docs_attaches(request, nodossier, norapport, origine, filename):
|
||||
societe = nodossier[0:2]
|
||||
nochantier = int(nodossier[3:])
|
||||
|
||||
if filename == '':
|
||||
query = "SELECT * FROM dossier_attaches WHERE nomrep = 'DOCS_ATTACHES' AND societe = :societe AND nochantier = :nochantier AND nodossier=0 ORDER BY cree_le;"
|
||||
query = "SELECT * FROM dossier_attaches WHERE societe = :societe AND nochantier = :nochantier AND nodossier=0 AND origine = :origine ORDER BY cree_le;"
|
||||
else:
|
||||
query = """SELECT * FROM dossier_attaches WHERE nomrep = 'DOCS_ATTACHES' AND societe = :societe AND nochantier = :nochantier
|
||||
AND nodossier = :norapport AND nomfichier = :filename ORDER BY cree_le;"""
|
||||
results = request.dbsession.execute(query, {'societe': societe, 'nochantier': nochantier, 'norapport': norapport, 'filename': filename}).fetchall()
|
||||
|
||||
query = """SELECT * FROM dossier_attaches WHERE societe = :societe AND nochantier = :nochantier
|
||||
AND nodossier = :norapport AND origine = :origine AND nomfichier = :filename ORDER BY cree_le;"""
|
||||
results = request.dbsession.execute(query, {'societe': societe, 'nochantier': nochantier,
|
||||
'norapport': norapport, 'origine': origine, 'filename': filename}).fetchall()
|
||||
return results
|
||||
|
||||
def get_photos(request, nodossier, norapport, nosection):
|
||||
def get_photos(request, nodossier, norapport, origine):
|
||||
societe = nodossier[0:2]
|
||||
nochantier = int(nodossier[3:])
|
||||
query = """SELECT * FROM dossier_attaches WHERE nomrep = 'DOCS_ATTACHES' AND societe = :societe AND nochantier = :nochantier
|
||||
AND nodossier = :norapport AND nosection = :nosection AND UPPER(RIGHT(nomfichier,3)) <> 'PDF' ORDER BY cree_le;"""
|
||||
results = request.dbsession.execute(query, {'societe': societe, 'nochantier': nochantier, 'norapport': norapport, 'nosection': nosection}).fetchall()
|
||||
query = """SELECT * FROM dossier_attaches WHERE societe = :societe AND nochantier = :nochantier
|
||||
AND nodossier = :norapport AND origine = :origine AND UPPER(RIGHT(nomfichier,3)) <> 'PDF' ORDER BY cree_le;"""
|
||||
results = request.dbsession.execute(query, {'societe': societe, 'nochantier': nochantier, 'norapport': norapport, 'origine': origine}).fetchall()
|
||||
return results
|
||||
|
||||
def delete_photos(request, nodossier, norapport, nosection, nomfic):
|
||||
def delete_photos(request, nodossier, norapport, origine, nomfic):
|
||||
societe = nodossier[0:2]
|
||||
nochantier = int(nodossier[3:])
|
||||
query = "DELETE FROM dossier_attaches WHERE nomrep='DOCS_ATTACHES' AND societe=:societe AND nochantier=:nochantier AND nodossier=:norapport AND nosection=:nosection AND nomfichier=:nomfic;"
|
||||
execute_query(request, query, {'societe': societe, 'nochantier': nochantier, 'norapport': norapport, 'nosection': nosection, 'nomfic': nomfic})
|
||||
# supprimer d'abord le fichier
|
||||
if len(origine) > 1:
|
||||
file_path = '%s/%s/%s/%s' % (request.registry.settings['mondumas.devfac_dir'], societe, nochantier, nomfic)
|
||||
else:
|
||||
file_path = '%s/%s/%s/%s/%s' % (request.registry.settings['mondumas.devfac_dir'], societe, nochantier, norapport, nomfic)
|
||||
if os.path.exists(file_path):
|
||||
os.remove(file_path)
|
||||
|
||||
query = "DELETE FROM dossier_attaches WHERE societe=:societe AND nochantier=:nochantier AND nodossier=:norapport AND origine=:origine AND nomfichier=:nomfic;"
|
||||
execute_query(request, query, {'societe': societe, 'nochantier': nochantier, 'norapport': norapport, 'origine': origine, 'nomfic': nomfic})
|
||||
|
||||
def rename_photos(request, nodossier, norapport, origine, nomfic, new_nomfic):
|
||||
societe = nodossier[0:2]
|
||||
nochantier = int(nodossier[3:])
|
||||
|
||||
query = """
|
||||
UPDATE dossier_attaches SET nomfichier = :new_nomfic
|
||||
WHERE societe=:societe AND nochantier=:nochantier AND nodossier=:norapport AND origine=:origine AND nomfichier=:nomfic;
|
||||
"""
|
||||
execute_query(request, query, {'societe': societe, 'nochantier': nochantier, 'norapport': norapport,
|
||||
'origine': origine, 'nomfic': nomfic, 'new_nomfic': new_nomfic})
|
||||
|
||||
def update_dossier(request, nodossier, new_values):
|
||||
societe = nodossier[0:2]
|
||||
@@ -203,18 +201,26 @@ def update_dossier(request, nodossier, new_values):
|
||||
query = "CALL spUPD_CHANTIER_COORD(:societe, :nochantier);"
|
||||
execute_query(request, query, {'societe': societe, 'nochantier': nochantier})
|
||||
|
||||
def insert_dossier_attaches(request, nodossier, norapport, nosection, filename, filesize, user):
|
||||
def update_dossier_cloture(request, nodossier, status, logged_in):
|
||||
societe = nodossier[0:2]
|
||||
nochantier = int(nodossier[3:])
|
||||
# met le montant regle à 1 centime pour terminé le dossier
|
||||
query = "UPDATE dem_devis SET STATUS = :status, USERMAJ = :logged_in WHERE societe=:societe AND no_id=:nochantier"
|
||||
execute_query(request, query, {'societe': societe, 'nochantier': nochantier, 'status': status, 'logged_in': logged_in})
|
||||
|
||||
def insert_dossier_attaches(request, nodossier, norapport, origine, filename, filesize, user):
|
||||
societe = nodossier[0:2]
|
||||
nochantier = int(nodossier[3:])
|
||||
|
||||
# fichier existe ?
|
||||
item = get_docs_attaches(request, nodossier, norapport, nosection, filename)
|
||||
item = get_docs_attaches(request, nodossier, norapport, origine, filename)
|
||||
if item:
|
||||
return
|
||||
# enregistrer dans la table dossier_attaches
|
||||
query = """INSERT INTO dossier_attaches (nomrep, societe, nochantier, nodossier, nosection, nomfichier, taillefichier, cree_le, usermaj)
|
||||
VALUES('DOCS_ATTACHES',:societe,:nochantier,:norapport,:nosection,:filename,:filesize,NOW(),:user);"""
|
||||
execute_query(request, query, {'societe': societe, 'nochantier': nochantier, 'norapport': norapport, 'nosection': nosection, 'filename': filename, 'filesize': filesize, 'user': user})
|
||||
query = """INSERT INTO dossier_attaches (societe, nochantier, nodossier, origine, nomfichier, taillefichier, cree_le, usermaj)
|
||||
VALUES(:societe,:nochantier,:norapport,:origine,:filename,:filesize,NOW(),:user);"""
|
||||
execute_query(request, query, {'societe': societe, 'nochantier': nochantier, 'norapport': norapport,
|
||||
'origine': origine, 'filename': filename, 'filesize': filesize, 'user': user})
|
||||
|
||||
def get_rapport_by_no(request,nodossier,date_inter):
|
||||
societe = nodossier[0:2]
|
||||
@@ -232,14 +238,14 @@ def get_rapport_by_no_id(request,no_id):
|
||||
results = request.dbsession.execute(query, {'no_id': no_id}).first()
|
||||
return results
|
||||
|
||||
def get_articles_by_fam(request, fam):
|
||||
query = "SELECT * FROM articles WHERE FAM = :fam;"
|
||||
results = request.dbsession.execute(query, {'fam': fam}).fetchall()
|
||||
def get_articles_rdf(request):
|
||||
query = "SELECT * FROM articles WHERE REF LIKE 'RDF%';"
|
||||
results = request.dbsession.execute(query).fetchall()
|
||||
return results
|
||||
|
||||
def get_rapport_rdf(request):
|
||||
# les rapports de RDF encours (non encore facturés)
|
||||
query = "SELECT * FROM dem_rdf where date_facture IS NULL;"
|
||||
# les rapports de RDF (100 derniers)
|
||||
query = "SELECT * FROM dem_rdf ORDER BY societe, no_id DESC LIMIT 100;"
|
||||
results = request.dbsession.execute(query, ).fetchall()
|
||||
return results
|
||||
|
||||
@@ -256,7 +262,7 @@ def get_rdf_causes(request, code):
|
||||
results = request.dbsession.execute(query, {'code': code + '%'}).fetchall()
|
||||
return results
|
||||
|
||||
def update_rapport(request, nodossier, date_inter, new_values):
|
||||
def update_rapport(request, nodossier, dateinter, new_values):
|
||||
societe = nodossier[0:2]
|
||||
nochantier = int(nodossier[3:])
|
||||
|
||||
@@ -268,8 +274,9 @@ def update_rapport(request, nodossier, date_inter, new_values):
|
||||
s = "%s=:%s" % (param, param)
|
||||
new_values['societe'] = societe
|
||||
new_values['nochantier'] = nochantier
|
||||
new_values['date_inter'] = date_inter
|
||||
query = "UPDATE dem_rdf SET %s WHERE societe=:societe AND nochantier=:nochantier AND date_inter=:date_inter;" % s
|
||||
new_values['dateinter'] = dateinter
|
||||
|
||||
query = "UPDATE dem_rdf SET %s WHERE societe=:societe AND nochantier=:nochantier AND date_inter=:dateinter;" % s
|
||||
execute_query(request, query, new_values)
|
||||
|
||||
def delete_rapport(request, no_id):
|
||||
@@ -277,20 +284,40 @@ def delete_rapport(request, no_id):
|
||||
query = "DELETE FROM dem_rdf WHERE no_id = :no_id"
|
||||
execute_query(request, query, {'no_id': no_id})
|
||||
|
||||
def validate_rapport(request, no_id):
|
||||
def update_rapport_validate(request, no_id):
|
||||
query = "UPDATE dem_rdf SET date_relu=CURRENT_DATE WHERE no_id = :no_id"
|
||||
execute_query(request, query, {'no_id': no_id})
|
||||
|
||||
def insert_facture_rdf(request, societe, nochantier, user, ref, date_rapport):
|
||||
# créer une facture vierge à partir du dossier
|
||||
query = "CALL spINS_FACTURE_RDF(:societe, :nochantier, :user, :ref, :date_rapport)"
|
||||
execute_query(request, query, {'societe': societe, 'nochantier': nochantier, 'user': user, 'ref': ref, 'date_rapport': date_rapport})
|
||||
def update_rapport_facture(request, no_id):
|
||||
query = "UPDATE dem_rdf SET date_facture=CURRENT_DATE WHERE no_id = :no_id"
|
||||
execute_query(request, query, {'no_id': no_id})
|
||||
|
||||
def insert_dossier(request, societe, cd_cli, c_nom, c_adr, c_adr2, c_cp, c_ville, c_telp, nosin, c_obs, tx_trav):
|
||||
def update_rapport_client(request, norapport, nomClient, codeClient):
|
||||
societe = codeClient[0:2]
|
||||
cd_cli = int(codeClient[3:])
|
||||
query = "UPDATE dem_rdf SET CD_CLI = :cd_cli, NOMCLI = :nomClient WHERE no_id = :norapport"
|
||||
execute_query(request, query, {'norapport': norapport, 'cd_cli': cd_cli, 'nomClient': nomClient})
|
||||
|
||||
def update_rapport_nochantier(request, norapport, new_nochantier):
|
||||
# controler que le no du nouveau dossier existe
|
||||
dossier = get_dossier_by_no(request,'PL-' + new_nochantier)
|
||||
if dossier:
|
||||
query = "UPDATE dem_rdf SET nochantier = :new_nochantier WHERE no_id = :norapport"
|
||||
execute_query(request, query, {'norapport': norapport, 'new_nochantier': new_nochantier})
|
||||
return "OK"
|
||||
else:
|
||||
return "NOK"
|
||||
|
||||
def insert_facture_rdf(request, societe, nochantier, cd_cli, nomcli, user, ref, date_rapport):
|
||||
# créer une facture vierge à partir du dossier
|
||||
query = "CALL spINS_FACTURE_RDF(:societe, :nochantier, :cd_cli, :nomcli, :user, :ref, :date_rapport)"
|
||||
execute_query(request, query, {'societe': societe, 'nochantier': nochantier, 'cd_cli': cd_cli, 'nomcli': nomcli, 'user': user, 'ref': ref, 'date_rapport': date_rapport})
|
||||
|
||||
def insert_dossier(request, societe, cd_cli, c_nom, c_adr, c_adr2, c_cp, c_ville, c_telp, c_email, nosin, nopol, c_obs, tx_trav):
|
||||
# créer une dem_devis selon l'email de l'OS
|
||||
query = """CALL spINS_DEMANDES(:societe, :cd_cli, :c_nom, :c_adr, :c_adr2, :c_cp, :c_ville, :c_telp, 'MR', 6, :nosin, :c_obs, :tx_trav, :logged_in);"""
|
||||
query = """CALL spINS_DEMANDES(:societe, :cd_cli, :c_nom, :c_adr, :c_adr2, :c_cp, :c_ville, :c_telp, :c_email, 'MR', 6, :nosin, :nopol, :c_obs, :tx_trav, 'EMAIL');"""
|
||||
execute_query(request, query, {'societe': societe, 'cd_cli': cd_cli, 'c_nom': c_nom, 'c_adr': c_adr, 'c_adr2': c_adr2, 'c_cp': c_cp,
|
||||
'c_ville': c_ville,'c_telp': c_telp, 'nosin': nosin, 'c_obs': c_obs, 'tx_trav': tx_trav, 'logged_in': 'EMAIL'})
|
||||
'c_ville': c_ville,'c_telp': c_telp, 'nosin': nosin, 'nopol': nopol, 'c_obs': c_obs, 'tx_trav': tx_trav, 'c_email': c_email})
|
||||
|
||||
query = "SELECT no_id FROM dem_devis WHERE societe = :societe AND date = curdate() AND cd_cli = :cd_cli ORDER BY no_id desc LIMIT 1;"
|
||||
results = request.dbsession.execute(query, {'societe': societe, 'cd_cli': cd_cli}).first()
|
||||
@@ -310,12 +337,74 @@ def get_experts(request, code_cab, code_exp):
|
||||
results = request.dbsession.execute(query, {'code_cab': code_cab, 'code_exp': code_exp}).first()
|
||||
return results
|
||||
|
||||
def insert_log_nuit(request, proc, msg):
|
||||
query = "INSERT INTO t_log_nuit (proc,msg) VALUES (:proc, :msg);"
|
||||
execute_query(request, query, {'proc': proc, 'msg': msg})
|
||||
def insert_log_nuit(request, proc, msg, nodossier):
|
||||
query = "INSERT INTO t_log_nuit (proc,msg, nodossier) VALUES (:proc, :msg, :nodossier);"
|
||||
execute_query(request, query, {'proc': proc, 'msg': msg, 'nodossier': nodossier})
|
||||
|
||||
def get_log_demandes(request, ):
|
||||
# lire le log de nuit
|
||||
query = """SELECT * FROM t_log_nuit WHERE proc = 'GENERER';"""
|
||||
query = """SELECT *, (SELECT usermaj FROM dem_devis WHERE societe=LEFT(nodossier,2) AND no_id=RIGHT(nodossier,6)) AS user
|
||||
FROM t_log_nuit WHERE proc = 'GENERER';"""
|
||||
results = request.dbsession.execute(query, )
|
||||
return results.fetchall()
|
||||
|
||||
def get_status_by_id(request, code):
|
||||
if code == '':
|
||||
query = """SELECT * FROM p_statuts;"""
|
||||
results = request.dbsession.execute(query,).fetchall()
|
||||
elif code == 'DE':
|
||||
query = """SELECT * FROM p_statuts WHERE code >= 3;"""
|
||||
results = request.dbsession.execute(query,).fetchall()
|
||||
else:
|
||||
query = """SELECT * FROM p_statuts WHERE code = :code;"""
|
||||
results = request.dbsession.execute(query, {'code': code}).first()
|
||||
return results
|
||||
|
||||
def get_motifs(request):
|
||||
query = """SELECT * FROM p_motifs;"""
|
||||
results = request.dbsession.execute(query,).fetchall()
|
||||
return results
|
||||
|
||||
def get_factures_en_att(request, societe):
|
||||
query = """SELECT f.date, LPAD(f.no_id,6,'0') AS numero, f.nomcli, CONCAT(f.c_nom,'; ',f.c_adr,'; ',f.c_ville) AS chantier, f.totalht AS montant, f.status, s.libelle, f.nosin, f.nopol, f.usermaj
|
||||
FROM facture f JOIN p_statuts s ON f.STATUS = s.CODE WHERE f.societe=:societe AND f.STATUS < 8 ORDER BY f.societe, f.STATUS, f.nomcli;"""
|
||||
results = request.dbsession.execute(query, {'societe': societe}).fetchall()
|
||||
return results
|
||||
|
||||
def get_dem_notes(request, nodossier, noligne):
|
||||
societe = nodossier[0:2]
|
||||
nochantier = int(nodossier[3:])
|
||||
|
||||
if noligne == '0':
|
||||
query = "SELECT societe, nochantier, noligne, libelle FROM dem_notes WHERE societe = :societe AND nochantier = :nochantier ORDER BY libelle;"
|
||||
results = request.dbsession.execute(query, {'societe': societe, 'nochantier': nochantier, 'noligne': noligne}).fetchall()
|
||||
else:
|
||||
query = "SELECT * FROM dem_notes WHERE societe = :societe AND nochantier = :nochantier AND noligne = :noligne;"
|
||||
results = request.dbsession.execute(query, {'societe': societe, 'nochantier': nochantier, 'noligne': noligne}).first()
|
||||
return results
|
||||
|
||||
def delete_dem_note(request, nodossier, noligne):
|
||||
societe = nodossier[0:2]
|
||||
nochantier = int(nodossier[3:])
|
||||
# une note ou dessin
|
||||
query = "DELETE FROM dem_notes WHERE societe=:societe AND nochantier=:nochantier AND noligne=:noligne;"
|
||||
execute_query(request, query, {'societe': societe, 'nochantier': nochantier, 'noligne': noligne})
|
||||
|
||||
def update_dem_note(request, nodossier, noligne, notes, logged_in):
|
||||
societe = nodossier[0:2]
|
||||
nochantier = int(nodossier[3:])
|
||||
# création ou modif ?
|
||||
if noligne == '0':
|
||||
query = "INSERT INTO dem_notes (societe, nochantier, notes, usermaj) VALUES (:societe, :nochantier, :notes, :logged_in);"
|
||||
execute_query(request, query, {'societe': societe, 'nochantier': nochantier, 'notes': notes, 'logged_in': logged_in})
|
||||
else:
|
||||
query = "UPDATE dem_notes SET notes=:notes, logged_in=:logged_in WHERE societe=:societe AND nochantier=:nochantier AND noligne=:noligne;"
|
||||
execute_query(request, query, {'societe': societe, 'nochantier': nochantier, 'noligne': noligne, 'notes': notes, 'logged_in': logged_in})
|
||||
|
||||
def get_nb_dessins(request, nodossier):
|
||||
societe = nodossier[0:2]
|
||||
nochantier = nodossier[3:]
|
||||
|
||||
query = "SELECT count(*) AS nb FROM dossier_attaches WHERE societe=:societe AND nochantier=:nochantier AND origine='FRN' AND nomfichier LIKE '%DESSIN No %';"
|
||||
results = request.dbsession.execute(query, {'societe': societe, 'nochantier': nochantier}).first()
|
||||
return results.nb
|
||||
|
||||
@@ -1,17 +1,8 @@
|
||||
# -*- coding: utf8 -*-
|
||||
from sqlalchemy import text
|
||||
from sqlalchemy.ext.declarative import declarative_base
|
||||
from sqlalchemy.orm import (
|
||||
scoped_session,
|
||||
sessionmaker,
|
||||
)
|
||||
from zope.sqlalchemy import (
|
||||
ZopeTransactionExtension,
|
||||
mark_changed
|
||||
)
|
||||
|
||||
from datetime import *
|
||||
import dateutil.relativedelta
|
||||
import transaction
|
||||
|
||||
def execute_query(request, query, params):
|
||||
@@ -26,24 +17,56 @@ def get_log_nuit(request, ):
|
||||
results = request.dbsession.execute(query, )
|
||||
return results.fetchall()
|
||||
|
||||
def get_last_emailing(request):
|
||||
def get_last_modified(request,):
|
||||
query = """
|
||||
SELECT 'DEMANDES' as nomtable, societe, no_id, datemaj, usermaj FROM bddevfac.dem_devis where date(datemaj)=CURDATE()
|
||||
UNION
|
||||
SELECT 'DEM_LIGNE' as nomtable, societe, no_id, datemaj, usermaj FROM bddevfac.dem_lig where date(datemaj)=CURDATE()
|
||||
UNION
|
||||
SELECT 'DEVIS' as nomtable, societe, no_id, datemaj, usermaj FROM bddevfac.devis where date(datemaj)=CURDATE()
|
||||
UNION
|
||||
SELECT 'DEVIS_LIG' as nomtable, societe, no_id, datemaj, usermaj FROM bddevfac.devis_lig where date(datemaj)=CURDATE()
|
||||
UNION
|
||||
SELECT 'FACTURES' as nomtable, societe, no_id, datemaj, usermaj FROM bddevfac.facture where date(datemaj)=CURDATE()
|
||||
UNION
|
||||
SELECT 'FACT_LIG' as nomtable, societe, no_id, datemaj, usermaj FROM bddevfac.facture_lig where date(datemaj)=CURDATE()
|
||||
UNION
|
||||
SELECT 'FAC_REGL' as nomtable, societe, cod_bnq, date as datemaj, JST FROM bddevfac.facture_reg where date(date)=CURDATE()
|
||||
order by datemaj desc limit 10; """
|
||||
results = request.dbsession.execute(query, )
|
||||
return results.fetchall()
|
||||
|
||||
def get_rappels_rdv(request):
|
||||
"""Lire les 200 derniers envois d'emails"""
|
||||
query = "SELECT * FROM email_rappels ORDER BY no_id DESC LIMIT 400;"
|
||||
results = request.dbsession.execute(query, {})
|
||||
return results.fetchall()
|
||||
|
||||
def get_orphans_DE(request, societe):
|
||||
|
||||
query = "SELECT * FROM devis WHERE societe = '%s' AND nochantier = 0 ORDER BY date desc LIMIT 50 ;" % (societe)
|
||||
results = request.dbsession.execute(query).first()
|
||||
return results
|
||||
|
||||
def get_dossiers_byChantier(request, societe, name):
|
||||
|
||||
query = "CALL spGET_DOSSIERS_byChantier('%s','%s','%s');" % (societe, 'DE', name.replace("'","''"))
|
||||
results = request.dbsession.execute(query).fetchall()
|
||||
return results
|
||||
|
||||
def get_cabinets_by_id(request, code):
|
||||
# lire les cabinets
|
||||
if code == '0':
|
||||
query = """SELECT * FROM P_CABINET ORDER BY nom;"""
|
||||
results = request.dbsession.execute(query).fetchall()
|
||||
else:
|
||||
query = """SELECT * FROM P_CABINET WHERE code=:code;"""
|
||||
results = request.dbsession.execute(query, {'code': code}).first()
|
||||
return results
|
||||
|
||||
def get_experts_by_id(request, code_cab, code_exp):
|
||||
# lire les experts du cabinet
|
||||
if code_exp == '0':
|
||||
query = """SELECT * FROM P_EXPERTS WHERE code_cab=:code_cab ORDER BY nom;"""
|
||||
results = request.dbsession.execute(query, {'code_cab': code_cab}).fetchall()
|
||||
else:
|
||||
query = """SELECT * FROM P_EXPERTS WHERE code_cab=:code_cab AND code_exp=:code_exp;"""
|
||||
results = request.dbsession.execute(query, {'code_cab': code_cab, 'code_exp': code_exp}).first()
|
||||
return results
|
||||
|
||||
def get_rdf_causes_by_id(request, code):
|
||||
# lire les rdf_causes
|
||||
if code == '0':
|
||||
@@ -54,24 +77,6 @@ def get_rdf_causes_by_id(request, code):
|
||||
results = request.dbsession.execute(query, {'code': code}).first()
|
||||
return results
|
||||
|
||||
def get_emails_sent(request, societe, nolig):
|
||||
d = datetime.now()
|
||||
d = d - dateutil.relativedelta.relativedelta(months=1)
|
||||
# début du mois M-3
|
||||
datedeb = d.strftime('%Y-%m-%d')
|
||||
|
||||
if nolig == 0:
|
||||
query = """SELECT CONCAT(l.societe,"-",l.no_id) as nodossier, l.datemaj, l.comment, l.nolig, l.usermaj, e.nomcli FROM dem_lig l
|
||||
INNER JOIN dem_devis e ON l.societe=e.societe AND l.no_id=e.no_id
|
||||
WHERE l.societe = :societe AND l.date >= :datedeb AND l.comment LIKE 'Envoi email -> %' ORDER BY l.datemaj LIMIT 250;"""
|
||||
results = request.dbsession.execute(query, {'societe': societe, 'datedeb': datedeb}).fetchall()
|
||||
else:
|
||||
query = """SELECT * FROM dem_lig WHERE nolig=:nolig;"""
|
||||
results = request.dbsession.execute(query, {'nolig': nolig}).first()
|
||||
|
||||
return results
|
||||
|
||||
|
||||
def delete_rdf_cause(request, old_code):
|
||||
query = "DELETE FROM rdf_causes WHERE code = :old_code;"
|
||||
execute_query(request, query, {'old_code': old_code})
|
||||
@@ -109,3 +114,135 @@ def delete_text(request, text_id):
|
||||
"""supprimer la text"""
|
||||
query = "delete from p_texts where text_id = :text_id;"
|
||||
execute_query(request, query, {'text_id': text_id})
|
||||
|
||||
def get_articles_byFam(request, fam):
|
||||
if fam == 'T':
|
||||
query = "SELECT * FROM articles WHERE FAM = 'T';"
|
||||
else:
|
||||
query = "SELECT * FROM articles WHERE FAM != 'T';"
|
||||
results = request.dbsession.execute(query, ).fetchall()
|
||||
return results
|
||||
|
||||
def get_article(request, ref):
|
||||
query = "SELECT * FROM articles WHERE REF = ref;"
|
||||
results = request.dbsession.execute(query, ).first()
|
||||
return results
|
||||
|
||||
def update_article(request, ref, new_values):
|
||||
# formater les champs
|
||||
s = ''
|
||||
for param in new_values.keys():
|
||||
if param == 'FAM':
|
||||
' ne prend que 2 premiers caractères'
|
||||
new_values['FAM'] = new_values['FAM'][0:2].upper()
|
||||
|
||||
if s:
|
||||
s += ",%s=:%s" % (param, param)
|
||||
else:
|
||||
s = "%s=:%s" % (param, param)
|
||||
|
||||
if ref == '0':
|
||||
query = "INSERT INTO articles SET %s" % s
|
||||
else:
|
||||
new_values['ref'] = ref
|
||||
query = "UPDATE articles SET %s WHERE ref = :ref;" % s
|
||||
execute_query(request, query, new_values)
|
||||
|
||||
def delete_article(request, ref):
|
||||
query = "DELETE FROM articles WHERE ref = :ref ;"
|
||||
execute_query(request, query, {'ref': ref})
|
||||
|
||||
def update_cabinet(request, code, new_values):
|
||||
# formater les champs
|
||||
s = ''
|
||||
for param in new_values.keys():
|
||||
if s:
|
||||
s += ",%s=:%s" % (param, param)
|
||||
else:
|
||||
s = "%s=:%s" % (param, param)
|
||||
|
||||
if code == '0':
|
||||
query = "CALL spINS_P_CABINET(:nom);"
|
||||
results = request.dbsession.execute(query, {'nom': new_values['NOM']}).first()
|
||||
# recupère lenouveau code créé
|
||||
code = results.newligne
|
||||
|
||||
new_values['code'] = code
|
||||
query = "UPDATE p_cabinet SET %s WHERE code = :code;" % s
|
||||
execute_query(request, query, new_values)
|
||||
|
||||
def delete_cabinet(request, code):
|
||||
query = "DELETE FROM p_cabinet WHERE code = :code ;"
|
||||
execute_query(request, query, {'code': code})
|
||||
|
||||
def update_expert(request, code_cab, code_exp, new_values):
|
||||
# formater les champs
|
||||
s = ''
|
||||
for param in new_values.keys():
|
||||
if s:
|
||||
s += ",%s=:%s" % (param, param)
|
||||
else:
|
||||
s = "%s=:%s" % (param, param)
|
||||
|
||||
if code_exp == '0':
|
||||
query = "CALL spINS_P_EXPERT(:code_cab, :nom);"
|
||||
results = request.dbsession.execute(query, {'code_cab': code_cab, 'nom': new_values['NOM']}).first()
|
||||
# recupère lenouveau code créé
|
||||
code_exp = results.newligne
|
||||
|
||||
new_values['code_cab'] = code_cab
|
||||
new_values['code_exp'] = code_exp
|
||||
query = "UPDATE p_experts SET %s WHERE code_cab = :code_cab AND code_exp = :code_exp;" % s
|
||||
execute_query(request, query, new_values)
|
||||
|
||||
def delete_expert(request, code_cab, code_exp):
|
||||
query = "DELETE FROM p_experts WHERE code_cab = :code_cab AND code_exp = :code_exp;"
|
||||
execute_query(request, query, {'code_cab': code_cab, 'code_exp': code_exp})
|
||||
|
||||
def update_societe(request, code, new_values):
|
||||
# formater les champs
|
||||
s = ''
|
||||
for param in new_values.keys():
|
||||
if s:
|
||||
s += ",%s=:%s" % (param, param)
|
||||
else:
|
||||
s = "%s=:%s" % (param, param)
|
||||
|
||||
new_values['societe'] = code
|
||||
query = "UPDATE p_societe SET %s WHERE societe = :societe;" % s
|
||||
execute_query(request, query, new_values)
|
||||
|
||||
def update_tarif(request, ref, new_values):
|
||||
# formater les champs
|
||||
s = ''
|
||||
for param in new_values.keys():
|
||||
if s:
|
||||
s += ",%s=:%s" % (param, param)
|
||||
else:
|
||||
s = "%s=:%s" % (param, param)
|
||||
|
||||
if ref == '0':
|
||||
query = "INSERT INTO tarifs SET %s" % s
|
||||
else:
|
||||
new_values['ref'] = ref
|
||||
query = "UPDATE tarifs SET %s WHERE ref = :ref;" % s
|
||||
execute_query(request, query, new_values)
|
||||
|
||||
def delete_tarif(request, ref):
|
||||
query = "DELETE FROM tarifs WHERE ref = :ref ;"
|
||||
execute_query(request, query, {'ref': ref})
|
||||
|
||||
def get_tarifs_byGroupe(request, groupe):
|
||||
query = "SELECT * FROM tarifs WHERE groupe = :groupe;"
|
||||
results = request.dbsession.execute(query, {'groupe': groupe}).fetchall()
|
||||
return results
|
||||
|
||||
def get_tarif(request, groupe, ref):
|
||||
query = "SELECT * FROM tarifs WHERE groupe = :groupe and ref = :ref;"
|
||||
results = request.dbsession.execute(query, {'groupe': groupe, 'ref': ref}).first()
|
||||
return results
|
||||
|
||||
def get_p_acces(request):
|
||||
query = """SELECT * FROM p_acces ORDER BY code;"""
|
||||
results = request.dbsession.execute(query).fetchall()
|
||||
return results
|
||||
|
||||
172
mondumas/models/stats.py
Normal file
@@ -0,0 +1,172 @@
|
||||
# -*- coding: utf8 -*-
|
||||
from sqlalchemy import text
|
||||
from sqlalchemy.ext.declarative import declarative_base
|
||||
from sqlalchemy.orm import (
|
||||
scoped_session,
|
||||
sessionmaker,
|
||||
)
|
||||
from zope.sqlalchemy import (
|
||||
ZopeTransactionExtension,
|
||||
mark_changed
|
||||
)
|
||||
|
||||
from datetime import *
|
||||
from dateutil.relativedelta import *
|
||||
import dateutil.relativedelta
|
||||
import transaction
|
||||
|
||||
def execute_query(request, query, params):
|
||||
"""Execute query and mark session as changed"""
|
||||
request.dbsession.execute(query, params)
|
||||
mark_changed(request.dbsession)
|
||||
transaction.commit()
|
||||
|
||||
def get_stats_dd(request, societe):
|
||||
|
||||
query = """SELECT societe, year(date) as Annee, COUNT(*) as Total,
|
||||
SUM(IF(status = '', 1, 0)) AS A_traiter,
|
||||
SUM(IF(status = 'Devis', 1, 0)) AS Devis,
|
||||
SUM(IF(status = 'Commandé', 1, 0)) AS Commande,
|
||||
SUM(IF(status = 'Facturé', 1, 0)) AS Facture,
|
||||
SUM(IF(status = 'Régl part.', 1, 0)) AS ReglePart,
|
||||
SUM(IF(status = 'Réglée', 1, 0)) AS Regle
|
||||
FROM dem_devis where societe=:societe group by societe, year(date) order by year(date) desc;"""
|
||||
results = request.dbsession.execute(query, {'societe': societe}).fetchall()
|
||||
return results
|
||||
|
||||
def get_stats_delais(request, societe, datedeb, datefin, groupe, id_chart):
|
||||
# lire les examens sur 12 mois glissants par moniteur
|
||||
query = """SELECT * FROM stats_delais
|
||||
WHERE societe=:societe AND id=:id_chart AND group1 >= :datedeb AND group1 <= :datefin AND group2=:groupe order by group1;"""
|
||||
results = request.dbsession.execute(query, {'societe': societe, 'id_chart': id_chart, 'datedeb': datedeb.strftime("%Y%m"),
|
||||
'datefin': datefin.strftime("%Y%m"), 'groupe': groupe})
|
||||
return results.fetchall()
|
||||
|
||||
def get_stats_delai_groupe(request, societe, datedeb, datefin):
|
||||
query = """SELECT group2, group2_lib FROM stats_delais
|
||||
WHERE societe=:societe AND group1 >= :datedeb AND group1 <= :datefin GROUP BY group2 ORDER BY group2_lib;"""
|
||||
results = request.dbsession.execute(query, {'societe': societe, 'datedeb': datedeb.strftime("%Y%m"), 'datefin': datefin.strftime("%Y%m")})
|
||||
return results.fetchall()
|
||||
|
||||
def get_ca_groupe_12m(request, societe, datedeb, datefin):
|
||||
|
||||
query = """SELECT DATE_FORMAT(date, "%Y%m") as yymm,
|
||||
DATE_FORMAT(date, "%M") as mois,
|
||||
DATE_FORMAT(date, "%M %Y") as date,
|
||||
SUM(IF(groupe = 'AXA', totalht, 0)) AS AXA_ca,
|
||||
SUM(IF(groupe = 'AXA', 1, 0)) AS AXA_nb,
|
||||
SUM(IF(groupe = 'MAIF', totalht, 0)) AS MAIF_ca,
|
||||
SUM(IF(groupe = 'MAIF', 1, 0)) AS MAIF_nb,
|
||||
SUM(IF(groupe = 'DOMUS', totalht, 0)) AS DOMUS_ca,
|
||||
SUM(IF(groupe = 'DOMUS', 1, 0)) AS DOMUS_nb,
|
||||
SUM(IF(groupe = 'GMF', totalht, 0)) AS GMF_ca,
|
||||
SUM(IF(groupe = 'GMF', 1, 0)) AS GMF_nb,
|
||||
SUM(IF(groupe = 'MACIF', totalht, 0)) AS MACIF_ca,
|
||||
SUM(IF(groupe = 'MACIF', 1, 0)) AS MACIF_nb
|
||||
FROM bddevfac.facture
|
||||
WHERE societe=:societe and date >= :datedeb and date <= :datefin GROUP BY yymm;"""
|
||||
results = request.dbsession.execute(query, {'societe': societe, 'datedeb': datedeb.strftime("%Y-%m"), 'datefin': datefin.strftime("%Y-%m")})
|
||||
return results.fetchall()
|
||||
|
||||
def get_ca_groupe_3y(request, societe, year):
|
||||
|
||||
query = """SELECT groupe,
|
||||
SUM(IF (year(date) = :year - 2, TOTALHT, 0)) as Annee1,
|
||||
SUM(IF (year(date) = :year - 2, 1, 0)) as Count1,
|
||||
SUM(IF (year(date) = :year - 1, TOTALHT, 0)) as Annee2,
|
||||
SUM(IF (year(date) = :year - 1, 1, 0)) as Count2,
|
||||
SUM(IF (year(date) = :year, TOTALHT, 0)) as Annee3,
|
||||
SUM(IF (year(date) = :year, 1, 0)) as Count3
|
||||
FROM bddevfac.facture
|
||||
WHERE societe=:societe AND groupe <> 'X' GROUP BY groupe;"""
|
||||
results = request.dbsession.execute(query, {'societe': societe, 'year': year})
|
||||
return results.fetchall()
|
||||
|
||||
def get_ca_groupe_3y_with_others(request, societe, year):
|
||||
|
||||
query = """SELECT groupe,
|
||||
SUM(IF (year(date) = :year - 2, TOTALHT, 0)) as Annee1,
|
||||
SUM(IF (year(date) = :year - 2, 1, 0)) as Count1,
|
||||
SUM(IF (year(date) = :year - 1, TOTALHT, 0)) as Annee2,
|
||||
SUM(IF (year(date) = :year - 1, 1, 0)) as Count2,
|
||||
SUM(IF (year(date) = :year, TOTALHT, 0)) as Annee3,
|
||||
SUM(IF (year(date) = :year, 1, 0)) as Count3
|
||||
FROM bddevfac.facture
|
||||
WHERE societe=:societe AND year(date) >= :year - 2 AND typecli <> 'I' GROUP BY groupe;"""
|
||||
results = request.dbsession.execute(query, {'societe': societe, 'year': year})
|
||||
return results.fetchall()
|
||||
|
||||
def get_ca_clients_12m(request, societe, datedeb, datefin):
|
||||
|
||||
query = """SELECT DATE_FORMAT(date, "%Y%m") as yymm,
|
||||
DATE_FORMAT(date, "%M") as mois,
|
||||
DATE_FORMAT(date, "%M %Y") as date,
|
||||
SUM(IF(typecli = 'A', totalht, 0)) AS A_ca,
|
||||
SUM(IF(typecli = 'A', 1, 0)) AS A_nb,
|
||||
SUM(IF(typecli = 'E', totalht, 0)) AS E_ca,
|
||||
SUM(IF(typecli = 'E', 1, 0)) AS E_nb,
|
||||
SUM(IF(typecli = 'G', totalht, 0)) AS G_ca,
|
||||
SUM(IF(typecli = 'G', 1, 0)) AS G_nb,
|
||||
SUM(IF(typecli = 'P', totalht, 0)) AS P_ca,
|
||||
SUM(IF(typecli = 'P', 1, 0)) AS P_nb,
|
||||
SUM(IF(typecli = 'R', totalht, 0)) AS R_ca,
|
||||
SUM(IF(typecli = 'R', 1, 0)) AS R_nb,
|
||||
SUM(IF(typecli = 'S', totalht, 0)) AS S_ca,
|
||||
SUM(IF(typecli = 'S', 1, 0)) AS S_nb
|
||||
FROM bddevfac.facture
|
||||
WHERE societe=:societe and date >= :datedeb and date <= :datefin GROUP BY yymm;"""
|
||||
results = request.dbsession.execute(query, {'societe': societe, 'datedeb': datedeb.strftime("%Y-%m"), 'datefin': datefin.strftime("%Y-%m")})
|
||||
return results.fetchall()
|
||||
|
||||
def get_ca_clients_3y(request, societe, year):
|
||||
|
||||
query = """SELECT LIB,
|
||||
SUM(IF (year(date) = :year - 2, TOTALHT, 0)) as Annee1,
|
||||
SUM(IF (year(date) = :year - 2, 1, 0)) as Count1,
|
||||
SUM(IF (year(date) = :year - 1, TOTALHT, 0)) as Annee2,
|
||||
SUM(IF (year(date) = :year - 1, 1, 0)) as Count2,
|
||||
SUM(IF (year(date) = :year, TOTALHT, 0)) as Annee3,
|
||||
SUM(IF (year(date) = :year, 1, 0)) as Count3
|
||||
FROM bddevfac.facture JOIN bddevfac.p_type ON bddevfac.facture.typecli = bddevfac.p_type.CODE
|
||||
WHERE societe=:societe AND year(date) >= :year - 2 AND typecli <> 'I' GROUP BY typecli;"""
|
||||
results = request.dbsession.execute(query, {'societe': societe, 'year': year})
|
||||
return results.fetchall()
|
||||
|
||||
def get_delais_pourcent(request, societe, groupe, datedeb):
|
||||
|
||||
query = """SELECT
|
||||
SUM(IF (delai_contact <= 2, 1, 0)) AS delais_inf,
|
||||
SUM(IF (delai_contact > 2, 1, 0)) AS delais_sup
|
||||
FROM bddevfac.dem_devis
|
||||
WHERE societe = :societe AND GROUPE = :groupe AND date >= :datedeb;"""
|
||||
results = request.dbsession.execute(query, {'societe': societe, 'groupe': groupe, 'datedeb': datedeb.strftime("%Y-%m")})
|
||||
return results.fetchall()
|
||||
|
||||
def get_nb_devis_fact(request, societe, year):
|
||||
|
||||
query = """SELECT
|
||||
SUM(IF (NOFACT > 0 AND year(date) = :year - 2, 1, 0)) AS devis_fact_y1,
|
||||
SUM(IF (NOFACT <= 0 AND year(date) = :year - 2, 1, 0)) AS devis_non_fact_y1,
|
||||
SUM(IF (NOFACT > 0 AND year(date) = :year - 1, 1, 0)) AS devis_fact_y2,
|
||||
SUM(IF (NOFACT <= 0 AND year(date) = :year - 1, 1, 0)) AS devis_non_fact_y2,
|
||||
SUM(IF (NOFACT > 0 AND year(date) = :year, 1, 0)) AS devis_fact_y3,
|
||||
SUM(IF (NOFACT <= 0 AND year(date) = :year, 1, 0)) AS devis_non_fact_y3
|
||||
FROM bddevfac.devis
|
||||
WHERE societe = :societe;"""
|
||||
results = request.dbsession.execute(query, {'societe': societe, 'year': year})
|
||||
return results.fetchall()
|
||||
|
||||
def get_nb_fact_with_devis(request, societe, year):
|
||||
|
||||
query = """SELECT
|
||||
SUM(IF (NODEVIS > 0 AND year(date) = :year - 2, 1, 0)) AS fact_w_devis_y1,
|
||||
SUM(IF (NODEVIS <= 0 AND year(date) = :year - 2, 1, 0)) AS fact_wo_devis_y1,
|
||||
SUM(IF (NODEVIS > 0 AND year(date) = :year - 1, 1, 0)) AS fact_w_devis_y2,
|
||||
SUM(IF (NODEVIS <= 0 AND year(date) = :year - 1, 1, 0)) AS fact_wo_devis_y2,
|
||||
SUM(IF (NODEVIS > 0 AND year(date) = :year, 1, 0)) AS fact_w_devis_y3,
|
||||
SUM(IF (NODEVIS <= 0 AND year(date) = :year, 1, 0)) AS fact_wo_devis_y3
|
||||
FROM bddevfac.facture
|
||||
WHERE societe = :societe;"""
|
||||
results = request.dbsession.execute(query, {'societe': societe, 'year': year})
|
||||
return results.fetchall()
|
||||
|
||||
232
mondumas/models/utils.py
Normal file
@@ -0,0 +1,232 @@
|
||||
# -*- coding: utf8 -*-
|
||||
from sqlalchemy import text
|
||||
from sqlalchemy.ext.declarative import declarative_base
|
||||
from sqlalchemy.orm import (
|
||||
scoped_session,
|
||||
sessionmaker,
|
||||
)
|
||||
from zope.sqlalchemy import (
|
||||
ZopeTransactionExtension,
|
||||
mark_changed
|
||||
)
|
||||
|
||||
from datetime import *
|
||||
import dateutil.relativedelta
|
||||
import transaction
|
||||
|
||||
def execute_query(request, query, params):
|
||||
"""Execute query and mark session as changed"""
|
||||
request.dbsession.execute(query, params)
|
||||
mark_changed(request.dbsession)
|
||||
transaction.commit()
|
||||
|
||||
def insert_log(request, proc, msg):
|
||||
query = "INSERT t_log_nuit (proc,msg) VALUES (:proc,:msg);"
|
||||
execute_query(request, query, {'proc': proc, 'msg' :msg})
|
||||
|
||||
def truncate_log(request):
|
||||
query = "TRUNCATE t_log_nuit;"
|
||||
execute_query(request, query, {})
|
||||
|
||||
def get_log(request):
|
||||
# lire les rappels non envoyés
|
||||
query = "SELECT * FROM t_log_nuit;"
|
||||
results = request.dbsession.execute(query, {}).fetchall()
|
||||
return results
|
||||
|
||||
def get_email_rappels(request):
|
||||
# lire les rappels non envoyés
|
||||
query = """ SELECT r.*, e.c_qualite, e.c_nom, e.c_adr, e.c_adr2, e.c_ville, e.c_email, s.tel, s.nom as nom_societe
|
||||
FROM email_rappels r
|
||||
INNER JOIN dem_devis e ON r.societe = e.societe AND r.nochantier = e.no_id
|
||||
INNER JOIN p_societe s ON r.societe = s.societe
|
||||
WHERE ISNULL(envoye_le) ORDER BY no_id;"""
|
||||
results = request.dbsession.execute(query, {}).fetchall()
|
||||
return results
|
||||
|
||||
def update_rappels(request):
|
||||
query = "CALL spUPD_RAPPELS();"
|
||||
execute_query(request, query, {})
|
||||
|
||||
def update_email_rappels(request, no_id):
|
||||
query = "UPDATE email_rappels SET envoye_le = NOW() WHERE no_id = :no_id;"
|
||||
execute_query(request, query, {'no_id': no_id})
|
||||
|
||||
def get_societes(request, societe):
|
||||
|
||||
if societe == '0':
|
||||
query = "SELECT * FROM p_societe;"
|
||||
results = request.dbsession.execute(query,).fetchall()
|
||||
else:
|
||||
query = "SELECT * FROM p_societe WHERE societe = :societe;"
|
||||
results = request.dbsession.execute(query, {'societe': societe}).first()
|
||||
return results
|
||||
|
||||
def chantierExiste(request,societe, no_id):
|
||||
query = "SELECT no_id FROM dem_devis WHERE societe = :societe and no_id = :no_id;"
|
||||
results = request.dbsession.execute(query, {'societe': societe, 'no_id': no_id}).first()
|
||||
if results:
|
||||
return len(results) > 0
|
||||
else:
|
||||
return False
|
||||
|
||||
def get_all_chantiers(request,societe):
|
||||
query = "SELECT * FROM dem_devis WHERE societe = :societe;"
|
||||
results = request.dbsession.execute(query, {'societe': societe}).fetchall()
|
||||
return results
|
||||
|
||||
def get_chantiers_month(request, societe, date_sel):
|
||||
# lire les chantiers du mois
|
||||
query = """SELECT * FROM dem_devis WHERE societe = :societe AND YEAR(date)=YEAR(:date_sel) AND MONTH(date)=MONTH(:date_sel)
|
||||
AND delai_facture = 0 AND nomcli NOT IN ('DUMAS JEAN MICHEL','DUMAS MENUISERIE','DUMAS PEINTURE');
|
||||
"""
|
||||
results = request.dbsession.execute(query, {'societe': societe, 'date_sel': date_sel}).fetchall()
|
||||
return results
|
||||
|
||||
def get_last_facture(request, societe, nochantier):
|
||||
query = "SELECT * FROM facture WHERE societe = :societe AND nochantier = :nochantier order by date DESC LIMIT 1;"
|
||||
results = request.dbsession.execute(query, {'societe': societe, 'nochantier': nochantier}).first()
|
||||
return results
|
||||
|
||||
def get_last_devis(request, societe, nochantier):
|
||||
query = "SELECT * FROM devis WHERE societe = :societe AND nochantier = :nochantier order by date DESC LIMIT 1;"
|
||||
results = request.dbsession.execute(query, {'societe': societe, 'nochantier': nochantier}).first()
|
||||
return results
|
||||
|
||||
def update_chantier_status(request, societe, no_id, status):
|
||||
query = "UPDATE dem_devis SET status = :status, DATEMAJ = DATEMAJ WHERE societe = :societe AND no_id = :no_id AND status <> :status;"
|
||||
execute_query(request, query, {'societe': societe, 'no_id': no_id, 'status': status})
|
||||
|
||||
def update_chantier_delais(request, societe, no_id, delai_contact, delai_rdv, delai_devis, delai_facture):
|
||||
query = """UPDATE dem_devis SET delai_contact = :delai_contact, delai_rdv = :delai_rdv, delai_devis = :delai_devis,
|
||||
delai_facture = :delai_facture, DATEMAJ = DATEMAJ
|
||||
WHERE societe = :societe AND no_id = :no_id;"""
|
||||
execute_query(request, query, {'societe': societe, 'no_id': no_id, 'delai_contact': delai_contact, 'delai_rdv': delai_rdv,
|
||||
'delai_devis': delai_devis, 'delai_facture': delai_facture})
|
||||
|
||||
def get_chantiers_dates(request, societe, nochantier):
|
||||
# lire 1er contact du chantier
|
||||
query = "SELECT date, datevi FROM dem_lig WHERE societe = :societe AND no_id = :nochantier AND datevi IS NOT NULL;"
|
||||
results = request.dbsession.execute(query, {'societe': societe, 'nochantier': nochantier}).first()
|
||||
if results:
|
||||
date_contact = results.date
|
||||
date_rdv = results.datevi
|
||||
else:
|
||||
date_contact = None
|
||||
date_rdv = None
|
||||
|
||||
# lire 1er devis du chantier
|
||||
query = "SELECT date FROM devis WHERE societe = :societe AND nochantier = :nochantier order by date LIMIT 1;"
|
||||
results = request.dbsession.execute(query, {'societe': societe, 'nochantier': nochantier}).first()
|
||||
if results:
|
||||
date_devis = results.date
|
||||
else:
|
||||
date_devis = None
|
||||
|
||||
# lire 1ere facture du chantier
|
||||
query = "SELECT date FROM facture WHERE societe = :societe AND nochantier = :nochantier order by date LIMIT 1;"
|
||||
results = request.dbsession.execute(query, {'societe': societe, 'nochantier': nochantier}).first()
|
||||
if results:
|
||||
date_facture = results.date
|
||||
else:
|
||||
date_facture = None
|
||||
return date_contact, date_rdv, date_devis, date_facture
|
||||
|
||||
def purge_mensuelle(request, until_date):
|
||||
|
||||
# ----- Purger les DEVIS dont la facture est réglée antérieure à until_date
|
||||
query = """DELETE devis.* FROM devis INNER JOIN facture ON devis.societe = facture.societe and devis.no_id = facture.nodevis
|
||||
WHERE facture.date < :until_date AND ABS(facture.totalttc - facture.mtregl) < 1;"""
|
||||
execute_query(request, query, {'until_date': until_date})
|
||||
|
||||
# ----- Purger les FACTURES réglées antérieures à until_date
|
||||
query = """DELETE FROM facture WHERE facture.date < :until_date AND ABS(facture.totalttc - facture.mtregl) < 1;"""
|
||||
execute_query(request, query, {'until_date': until_date})
|
||||
# ---- Purger les VERSEMENTS inutilisés et antérieurs à until_date
|
||||
query = "DELETE FROM liv_bnq WHERE date < :until_date AND ABS(MontantRegl - MontantDebit) < 1;"
|
||||
execute_query(request, query, {'until_date': until_date})
|
||||
|
||||
# ----- Purger les DEVIS n'ayant pas de facture antérieure à until_date
|
||||
query = """DELETE FROM devis WHERE devis.date < :until_date AND nofact=0;"""
|
||||
execute_query(request, query, {'until_date': until_date})
|
||||
|
||||
# -- RAZ les liens FACTURE et DEVIS
|
||||
query = "UPDATE dem_devis SET nodevis = 0, nofact = 0, datemaj=datemaj WHERE dem_devis.date < :until_date;"
|
||||
execute_query(request, query, {'until_date': until_date})
|
||||
# -- recreer les lien factures
|
||||
query = """UPDATE dem_devis INNER JOIN facture ON dem_devis.societe = facture.societe and dem_devis.no_id = facture.nochantier
|
||||
SET dem_devis.nofact = facture.no_id, dem_devis.datemaj=dem_devis.datemaj WHERE dem_devis.date < :until_date;"""
|
||||
execute_query(request, query, {'until_date': until_date})
|
||||
# -- recreer les lien DEVIS
|
||||
query = """UPDATE dem_devis INNER JOIN devis ON dem_devis.societe = devis.societe and dem_devis.no_id = devis.nochantier
|
||||
SET dem_devis.nodevis = devis.no_id, dem_devis.datemaj=dem_devis.datemaj WHERE dem_devis.date < :until_date"""
|
||||
execute_query(request, query, {'until_date': until_date})
|
||||
# ---- Purger les DEM_DEVIS n'ayant aucun DEVIS ni FACTURE
|
||||
query = "DELETE FROM dem_devis WHERE date < :until_date AND nodevis = 0 AND nofact = 0;"
|
||||
execute_query(request, query, {'until_date': until_date})
|
||||
|
||||
|
||||
def get_all_clients(request):
|
||||
query = "SELECT * FROM clients;"
|
||||
results = request.dbsession.execute(query, {}).fetchall()
|
||||
return results
|
||||
|
||||
def get_last_facture_client(request, societe, cd_cli):
|
||||
query = "SELECT * FROM facture WHERE societe = :societe AND cd_cli = :cd_cli order by date DESC LIMIT 1;"
|
||||
results = request.dbsession.execute(query, {'societe': societe, 'cd_cli': cd_cli}).first()
|
||||
return results
|
||||
|
||||
def get_last_payment_client(request, societe, cd_cli):
|
||||
query = "SELECT * FROM liv_bnq WHERE societe = :societe AND cd_cli = :cd_cli order by date DESC LIMIT 1;"
|
||||
results = request.dbsession.execute(query, {'societe': societe, 'cd_cli': cd_cli}).first()
|
||||
return results
|
||||
|
||||
def get_last_devis_client(request, societe, cd_cli):
|
||||
query = "SELECT * FROM devis WHERE societe = :societe AND cd_cli = :cd_cli order by date DESC LIMIT 1;"
|
||||
results = request.dbsession.execute(query, {'societe': societe, 'cd_cli': cd_cli}).first()
|
||||
return results
|
||||
|
||||
def get_last_proforma_client(request, societe, cd_cli):
|
||||
query = "SELECT * FROM proforma WHERE societe = :societe AND cd_cli = :cd_cli order by date DESC LIMIT 1;"
|
||||
results = request.dbsession.execute(query, {'societe': societe, 'cd_cli': cd_cli}).first()
|
||||
return results
|
||||
|
||||
def get_last_chantier_client(request, societe, cd_cli):
|
||||
query = "SELECT * FROM dem_devis WHERE societe = :societe AND cd_cli = :cd_cli order by date DESC LIMIT 1;"
|
||||
results = request.dbsession.execute(query, {'societe': societe, 'cd_cli': cd_cli}).first()
|
||||
return results
|
||||
|
||||
def update_client_dern_operation(request, societe, cd_cli, dern_operation):
|
||||
if dern_operation != None:
|
||||
d_operation = dern_operation.strftime('%Y/%m/%d')
|
||||
query = "UPDATE clients SET dern_operation = :dern_operation, modif_le = modif_le WHERE societe=:societe AND cd_cli=:cd_cli;"
|
||||
execute_query(request, query, {'societe': societe, 'cd_cli': cd_cli, 'dern_operation': d_operation})
|
||||
else:
|
||||
query = "UPDATE clients SET dern_operation = NULL, modif_le = modif_le WHERE societe=:societe AND cd_cli=:cd_cli;"
|
||||
execute_query(request, query, {'societe': societe, 'cd_cli': cd_cli})
|
||||
|
||||
def delete_client_unused(request):
|
||||
query = "DELETE FROM clients WHERE cd_cli <> 1 AND dern_operation IS NULL AND YEAR(cree_le) < YEAR(CURRENT_DATE()) - 5;"
|
||||
execute_query(request, query, {})
|
||||
|
||||
def update_stats_delais(request, societe, date, groupe):
|
||||
query = "CALL spUPD_STATS_DELAIS(:societe, :date, :groupe);"
|
||||
execute_query(request, query, {'societe': societe, 'date': date, 'groupe': groupe})
|
||||
|
||||
def update_devis_statut_4(request):
|
||||
# lire tutes les lignes de dem_devis mentionnant la commande
|
||||
query = "SELECT * FROM dem_lig where comment like '% est COMMANDE %';"
|
||||
devis_cdes = request.dbsession.execute(query, {}).fetchall()
|
||||
|
||||
for item in devis_cdes:
|
||||
if item.COMMENT.find('!! DE') == 0:
|
||||
# recupère le no de devis commandé
|
||||
nodevis = item.COMMENT[5:11]
|
||||
|
||||
# maj status de dem_devis concernée
|
||||
query = "UPDATE dem_devis SET status = 4, DATEMAJ = DATEMAJ WHERE societe = :societe AND no_id = :no_id AND status < 4;"
|
||||
execute_query(request, query, {'societe': item.societe, 'no_id': item.NO_ID})
|
||||
|
||||
# maj status de devis concerné
|
||||
query = "UPDATE devis SET status = 4, DATEMAJ = DATEMAJ WHERE societe = :societe AND no_id = :no_id AND status < 4;"
|
||||
execute_query(request, query, {'societe': item.societe, 'no_id': nodevis})
|
||||
@@ -7,8 +7,11 @@ def includeme(config):
|
||||
# default
|
||||
config.add_route('home', '/')
|
||||
config.add_route('affiche_message','/affiche_message/{login}')
|
||||
config.add_route('ajax_article', '/ajax_article')
|
||||
config.add_route('ajax_client', '/ajax_client')
|
||||
config.add_route('ajax_codepostal', '/ajax_codepostal')
|
||||
config.add_route('ajax_lookup', '/ajax_lookup')
|
||||
config.add_route('ajax_texte', '/ajax_texte')
|
||||
config.add_route('changer_mdp', '/changer_mdp')
|
||||
config.add_route('envoyer_mdp', '/envoyer_mdp')
|
||||
config.add_route('login', '/login')
|
||||
@@ -16,37 +19,79 @@ def includeme(config):
|
||||
config.add_route('logout', '/logout')
|
||||
config.add_route('redefinir_mdp', '/redefinir_mdp/{lien}')
|
||||
config.add_route('init_mdp', '/init_mdp/{user}/{lien}')
|
||||
# devis
|
||||
config.add_route('devis_ligne', '/devis_ligne/{type_ligne}/{nodevis}/{nolig}')
|
||||
config.add_route('devis_lig_mv', '/devis_lig_mv/{move}/{nodevis}/{nolig}')
|
||||
config.add_route('devis_list', '/devis_list/{societe}/{nodevis}')
|
||||
config.add_route('devis_create', '/devis_create/{nodossier}')
|
||||
config.add_route('devis_nochantier', '/devis_nochantier/{societe}/{nodevis}/{nochantier}')
|
||||
config.add_route('devis_web', '/devis_web/{nodevis}')
|
||||
config.add_route('devis_view', '/devis_view/{nodevis}')
|
||||
config.add_route('devis_preview', '/devis_preview/{nodevis}')
|
||||
config.add_route('devis_select', '/devis_select/{date}')
|
||||
config.add_route('devis_selected', '/devis_selected/{goto}/{date}/{nodevis}')
|
||||
config.add_route('factures_en_att','/factures_en_att')
|
||||
config.add_route('facture_select', '/facture_select/{date}')
|
||||
config.add_route('facture_selected', '/facture_selected/{goto}/{date}/{nofacture}')
|
||||
# dossier
|
||||
config.add_route('demandes','/demandes')
|
||||
config.add_route('delete_img','/delete_img/{nodossier}/{norapport}/{nosection}/{nomfic}')
|
||||
config.add_route('devis_view', '/devis_view/{nodossier}')
|
||||
config.add_route('demandes_dl','/demandes_dl/{societe}/{email_from}/{email_uid}')
|
||||
config.add_route('dem_devis','/dem_devis')
|
||||
config.add_route('delete_img','/delete_img/{nodossier}/{norapport}/{origine}/{nomfic}')
|
||||
config.add_route('dern_suivis','/dern_suivis')
|
||||
config.add_route('dessin_edit','/dessin_edit/{nodossier}/{noligne}')
|
||||
config.add_route('dossier_edit', '/dossier_edit/{nodossier}')
|
||||
config.add_route('dossier_lookup', '/dossier_lookup')
|
||||
config.add_route('dossier_select', '/dossier_select/{date}')
|
||||
config.add_route('dossier_selected', '/dossier_selected/{goto}/{date}/{nodossier}')
|
||||
config.add_route('dossier_view', '/dossier_view/{nodossier}')
|
||||
config.add_route('note_edit','/note_edit/{nodossier}/{noligne}')
|
||||
config.add_route('rdf_bill','/rdf_bill/{no_id}')
|
||||
config.add_route('rdf_client','/rdf_client/{no_id}')
|
||||
config.add_route('rdf_edit','/rdf_edit/{nodossier}/{date_inter}')
|
||||
config.add_route('rdf_list','/rdf_list')
|
||||
config.add_route('rdf_nochantier','/rdf_nodossier/{no_id}')
|
||||
config.add_route('rdf_rapport','/rdf_rapport/{no_id}')
|
||||
config.add_route('rdf_view','/rdf_view/{no_id}')
|
||||
config.add_route('rotate_img','/rotate_img/{nodossier}/{norapport}/{origine}/{nomfic}/{angle}')
|
||||
config.add_route('suivi_edit','/suivi_edit/{nodossier}/{nolig}')
|
||||
config.add_route('upload_doc', '/upload_doc/{nodossier}')
|
||||
config.add_route('upload_img', '/upload_img/{norapport}/{nosection}')
|
||||
config.add_route('upload_doc', '/upload_doc/{nodossier}/{origine}')
|
||||
config.add_route('upload_img', '/upload_img/{norapport}/{origine}')
|
||||
config.add_route('upload_om', '/upload_om')
|
||||
# parametres
|
||||
config.add_route('parametres', '/parametres')
|
||||
config.add_route('article_edit', '/article_edit/{ref}')
|
||||
config.add_route('articles', '/articles')
|
||||
config.add_route('cabinet_edit', '/cabinet_edit/{code}')
|
||||
config.add_route('cabinets', '/cabinets')
|
||||
config.add_route('connecter_a', '/connecter_a/{login}')
|
||||
config.add_route('dashboard', '/dashboard')
|
||||
config.add_route('emails_msg', '/emails_msg/{nolig}')
|
||||
config.add_route('emails_sent', '/emails_sent')
|
||||
config.add_route('infrastructure', '/infrastructure')
|
||||
config.add_route('last_emailing', '/last_emailing')
|
||||
config.add_route('orphans_de', '/orphans_de/{societe}')
|
||||
config.add_route('expert_edit', '/expert_edit/{code_cab}/{code_exp}')
|
||||
config.add_route('rappels_rdv', '/rappels_rdv')
|
||||
config.add_route('rdf_cause_edit', '/rdf_cause_edit/{code}')
|
||||
config.add_route('rdf_causes_list', '/rdf_causes_list')
|
||||
config.add_route('rdf_causes', '/rdf_causes')
|
||||
config.add_route('societe_edit', '/societe_edit/{societe}')
|
||||
config.add_route('societes', '/societes')
|
||||
config.add_route('text_edit', '/text_edit/{text_id}')
|
||||
config.add_route('text_list', '/text_list')
|
||||
config.add_route('text_view', '/text_view/{text_id}')
|
||||
config.add_route('tarif_edit', '/tarif_edit/{groupe}/{ref}')
|
||||
config.add_route('tarifs', '/tarifs/{groupe}')
|
||||
config.add_route('tarifs_import', '/tarifs_import')
|
||||
config.add_route('user_edit', '/user_edit/{cd_uti}')
|
||||
config.add_route('users_list', '/users_list')
|
||||
config.add_route('users', '/users')
|
||||
config.add_route('users_ua', '/users_ua')
|
||||
|
||||
# stats
|
||||
config.add_route('stats', '/stats')
|
||||
config.add_route('stats_dossiers', '/stats_dossiers/{societe}')
|
||||
config.add_route('stats_delais', '/stats_delais/{societe}')
|
||||
config.add_route('ca_groupes', '/ca_groupes/{societe}')
|
||||
config.add_route('ca_clients', '/ca_clients/{societe}')
|
||||
config.add_route('delais_pourcentage', '/delais_pourcentage/{societe}')
|
||||
config.add_route('pourcentage_devis', '/pourcentage_devis/{societe}')
|
||||
|
||||
# utils
|
||||
config.add_route('batch_nuit', '/batch_nuit/{param}')
|
||||
config.add_route('batch_test', '/batch_test/{param}')
|
||||
|
||||
@@ -88,6 +88,12 @@
|
||||
.modal-dialog {
|
||||
top:7%;
|
||||
}
|
||||
.type-ligne-panel {
|
||||
padding-left: 25px;
|
||||
margin-top: 5px;
|
||||
margin-bottom: 20px;
|
||||
display: none;
|
||||
}
|
||||
|
||||
.footer {
|
||||
background-color: #2f2f2f;
|
||||
@@ -171,6 +177,51 @@
|
||||
color: black;
|
||||
}
|
||||
|
||||
.bg-compta {
|
||||
background-color: SlateBlue !important;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.bg-gest {
|
||||
background-color: Coral !important;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.bg-prod {
|
||||
background-color: SkyBlue !important;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.bg-0, .bg-1 {
|
||||
background-color: khaki !important;
|
||||
color: black;
|
||||
}
|
||||
|
||||
.bg-2, .bg-3 {
|
||||
background-color: orange !important;
|
||||
color: black;
|
||||
}
|
||||
|
||||
.bg-4, .bg-5 {
|
||||
background-color: lightcoral !important;
|
||||
color: black;
|
||||
}
|
||||
|
||||
.bg-6, .bg-7 {
|
||||
background-color: CornflowerBlue !important;
|
||||
color: black;
|
||||
}
|
||||
|
||||
.bg-8 {
|
||||
background-color: LawnGreen !important;
|
||||
color: black;
|
||||
}
|
||||
|
||||
.bg-10, .bg-11, .bg-12 {
|
||||
background-color: gray !important;
|
||||
color: black;
|
||||
}
|
||||
|
||||
.new-page {
|
||||
page-break-before: always;
|
||||
}
|
||||
@@ -225,6 +276,10 @@
|
||||
}
|
||||
}
|
||||
|
||||
#dessin {
|
||||
width: 1140px;
|
||||
height: 1140px;
|
||||
}
|
||||
|
||||
/* ne pas affichier l'url after the link */
|
||||
@media print {
|
||||
@@ -232,3 +287,31 @@
|
||||
content: none !important;
|
||||
}
|
||||
}
|
||||
|
||||
.info-box {
|
||||
display: block;
|
||||
min-height: 70px;
|
||||
background: #fff;
|
||||
width: 100%;
|
||||
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
|
||||
border-radius: 2px;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
.info-box-icon {
|
||||
border-top-left-radius: 2px;
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
border-bottom-left-radius: 2px;
|
||||
display: block;
|
||||
float: left;
|
||||
height: 70px;
|
||||
width: 70px;
|
||||
text-align: center;
|
||||
font-size: 40px;
|
||||
line-height: 70px;
|
||||
background: rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
.info-box-content {
|
||||
padding: 5px 5px;
|
||||
margin-left: 80px;
|
||||
}
|
||||
5558
mondumas/static/dist/AdminLTE-2.4.18/css/AdminLTE.css
vendored
Normal file
8
mondumas/static/dist/AdminLTE-2.4.18/css/AdminLTE.min.css
vendored
Normal file
1260
mondumas/static/dist/AdminLTE-2.4.18/css/alt/AdminLTE-bootstrap-social.css
vendored
Normal file
1
mondumas/static/dist/AdminLTE-2.4.18/css/alt/AdminLTE-bootstrap-social.min.css
vendored
Normal file
93
mondumas/static/dist/AdminLTE-2.4.18/css/alt/AdminLTE-fullcalendar.css
vendored
Normal file
@@ -0,0 +1,93 @@
|
||||
/*
|
||||
* Plugin: Full Calendar
|
||||
* ---------------------
|
||||
*/
|
||||
.fc-button {
|
||||
background: #f4f4f4;
|
||||
background-image: none;
|
||||
color: #444;
|
||||
border-color: #ddd;
|
||||
border-bottom-color: #ddd;
|
||||
}
|
||||
.fc-button:hover,
|
||||
.fc-button:active,
|
||||
.fc-button.hover {
|
||||
background-color: #e9e9e9;
|
||||
}
|
||||
.fc-header-title h2 {
|
||||
font-size: 15px;
|
||||
line-height: 1.6em;
|
||||
color: #666;
|
||||
margin-left: 10px;
|
||||
}
|
||||
.fc-header-right {
|
||||
padding-right: 10px;
|
||||
}
|
||||
.fc-header-left {
|
||||
padding-left: 10px;
|
||||
}
|
||||
.fc-widget-header {
|
||||
background: #fafafa;
|
||||
}
|
||||
.fc-grid {
|
||||
width: 100%;
|
||||
border: 0;
|
||||
}
|
||||
.fc-widget-header:first-of-type,
|
||||
.fc-widget-content:first-of-type {
|
||||
border-left: 0;
|
||||
border-right: 0;
|
||||
}
|
||||
.fc-widget-header:last-of-type,
|
||||
.fc-widget-content:last-of-type {
|
||||
border-right: 0;
|
||||
}
|
||||
.fc-toolbar {
|
||||
padding: 10px;
|
||||
margin: 0;
|
||||
}
|
||||
.fc-day-number {
|
||||
font-size: 20px;
|
||||
font-weight: 300;
|
||||
padding-right: 10px;
|
||||
}
|
||||
.fc-color-picker {
|
||||
list-style: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.fc-color-picker > li {
|
||||
float: left;
|
||||
font-size: 30px;
|
||||
margin-right: 5px;
|
||||
line-height: 30px;
|
||||
}
|
||||
.fc-color-picker > li .fa {
|
||||
-webkit-transition: -webkit-transform linear 0.3s;
|
||||
-moz-transition: -moz-transform linear 0.3s;
|
||||
-o-transition: -o-transform linear 0.3s;
|
||||
transition: transform linear 0.3s;
|
||||
}
|
||||
.fc-color-picker > li .fa:hover {
|
||||
-webkit-transform: rotate(30deg);
|
||||
-ms-transform: rotate(30deg);
|
||||
-o-transform: rotate(30deg);
|
||||
transform: rotate(30deg);
|
||||
}
|
||||
#add-new-event {
|
||||
-webkit-transition: all linear 0.3s;
|
||||
-o-transition: all linear 0.3s;
|
||||
transition: all linear 0.3s;
|
||||
}
|
||||
.external-event {
|
||||
padding: 5px 10px;
|
||||
font-weight: bold;
|
||||
margin-bottom: 4px;
|
||||
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
|
||||
text-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
|
||||
border-radius: 3px;
|
||||
cursor: move;
|
||||
}
|
||||
.external-event:hover {
|
||||
box-shadow: inset 0 0 90px rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
1
mondumas/static/dist/AdminLTE-2.4.18/css/alt/AdminLTE-fullcalendar.min.css
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.fc-button{background:#f4f4f4;background-image:none;color:#444;border-color:#ddd;border-bottom-color:#ddd}.fc-button:hover,.fc-button:active,.fc-button.hover{background-color:#e9e9e9}.fc-header-title h2{font-size:15px;line-height:1.6em;color:#666;margin-left:10px}.fc-header-right{padding-right:10px}.fc-header-left{padding-left:10px}.fc-widget-header{background:#fafafa}.fc-grid{width:100%;border:0}.fc-widget-header:first-of-type,.fc-widget-content:first-of-type{border-left:0;border-right:0}.fc-widget-header:last-of-type,.fc-widget-content:last-of-type{border-right:0}.fc-toolbar{padding:10px;margin:0}.fc-day-number{font-size:20px;font-weight:300;padding-right:10px}.fc-color-picker{list-style:none;margin:0;padding:0}.fc-color-picker>li{float:left;font-size:30px;margin-right:5px;line-height:30px}.fc-color-picker>li .fa{-webkit-transition:-webkit-transform linear .3s;-moz-transition:-moz-transform linear .3s;-o-transition:-o-transform linear .3s;transition:transform linear .3s}.fc-color-picker>li .fa:hover{-webkit-transform:rotate(30deg);-ms-transform:rotate(30deg);-o-transform:rotate(30deg);transform:rotate(30deg)}#add-new-event{-webkit-transition:all linear .3s;-o-transition:all linear .3s;transition:all linear .3s}.external-event{padding:5px 10px;font-weight:bold;margin-bottom:4px;box-shadow:0 1px 1px rgba(0,0,0,0.1);text-shadow:0 1px 1px rgba(0,0,0,0.1);border-radius:3px;cursor:move}.external-event:hover{box-shadow:inset 0 0 90px rgba(0,0,0,0.2)}
|
||||
100
mondumas/static/dist/AdminLTE-2.4.18/css/alt/AdminLTE-select2.css
vendored
Normal file
@@ -0,0 +1,100 @@
|
||||
/*
|
||||
* Plugin: Select2
|
||||
* ---------------
|
||||
*/
|
||||
.select2-container--default.select2-container--focus,
|
||||
.select2-selection.select2-container--focus,
|
||||
.select2-container--default:focus,
|
||||
.select2-selection:focus,
|
||||
.select2-container--default:active,
|
||||
.select2-selection:active {
|
||||
outline: none;
|
||||
}
|
||||
.select2-container--default .select2-selection--single,
|
||||
.select2-selection .select2-selection--single {
|
||||
border: 1px solid #d2d6de;
|
||||
border-radius: 0;
|
||||
padding: 6px 12px;
|
||||
height: 34px;
|
||||
}
|
||||
.select2-container--default.select2-container--open {
|
||||
border-color: #3c8dbc;
|
||||
}
|
||||
.select2-dropdown {
|
||||
border: 1px solid #d2d6de;
|
||||
border-radius: 0;
|
||||
}
|
||||
.select2-container--default .select2-results__option--highlighted[aria-selected] {
|
||||
background-color: #3c8dbc;
|
||||
color: white;
|
||||
}
|
||||
.select2-results__option {
|
||||
padding: 6px 12px;
|
||||
user-select: none;
|
||||
-webkit-user-select: none;
|
||||
}
|
||||
.select2-container .select2-selection--single .select2-selection__rendered {
|
||||
padding-left: 0;
|
||||
padding-right: 0;
|
||||
height: auto;
|
||||
margin-top: -4px;
|
||||
}
|
||||
.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered {
|
||||
padding-right: 6px;
|
||||
padding-left: 20px;
|
||||
}
|
||||
.select2-container--default .select2-selection--single .select2-selection__arrow {
|
||||
height: 28px;
|
||||
right: 3px;
|
||||
}
|
||||
.select2-container--default .select2-selection--single .select2-selection__arrow b {
|
||||
margin-top: 0;
|
||||
}
|
||||
.select2-dropdown .select2-search__field,
|
||||
.select2-search--inline .select2-search__field {
|
||||
border: 1px solid #d2d6de;
|
||||
}
|
||||
.select2-dropdown .select2-search__field:focus,
|
||||
.select2-search--inline .select2-search__field:focus {
|
||||
outline: none;
|
||||
}
|
||||
.select2-container--default.select2-container--focus .select2-selection--multiple,
|
||||
.select2-container--default .select2-search--dropdown .select2-search__field {
|
||||
border-color: #3c8dbc !important;
|
||||
}
|
||||
.select2-container--default .select2-results__option[aria-disabled=true] {
|
||||
color: #999;
|
||||
}
|
||||
.select2-container--default .select2-results__option[aria-selected=true] {
|
||||
background-color: #ddd;
|
||||
}
|
||||
.select2-container--default .select2-results__option[aria-selected=true],
|
||||
.select2-container--default .select2-results__option[aria-selected=true]:hover {
|
||||
color: #444;
|
||||
}
|
||||
.select2-container--default .select2-selection--multiple {
|
||||
border: 1px solid #d2d6de;
|
||||
border-radius: 0;
|
||||
}
|
||||
.select2-container--default .select2-selection--multiple:focus {
|
||||
border-color: #3c8dbc;
|
||||
}
|
||||
.select2-container--default.select2-container--focus .select2-selection--multiple {
|
||||
border-color: #d2d6de;
|
||||
}
|
||||
.select2-container--default .select2-selection--multiple .select2-selection__choice {
|
||||
background-color: #3c8dbc;
|
||||
border-color: #367fa9;
|
||||
padding: 1px 10px;
|
||||
color: #fff;
|
||||
}
|
||||
.select2-container--default .select2-selection--multiple .select2-selection__choice__remove {
|
||||
margin-right: 5px;
|
||||
color: rgba(255, 255, 255, 0.7);
|
||||
}
|
||||
.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {
|
||||
color: #fff;
|
||||
}
|
||||
.select2-container .select2-selection--single .select2-selection__rendered {
|
||||
padding-right: 10px;
|
||||
}
|
||||
1
mondumas/static/dist/AdminLTE-2.4.18/css/alt/AdminLTE-select2.min.css
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.select2-container--default.select2-container--focus,.select2-selection.select2-container--focus,.select2-container--default:focus,.select2-selection:focus,.select2-container--default:active,.select2-selection:active{outline:none}.select2-container--default .select2-selection--single,.select2-selection .select2-selection--single{border:1px solid #d2d6de;border-radius:0;padding:6px 12px;height:34px}.select2-container--default.select2-container--open{border-color:#3c8dbc}.select2-dropdown{border:1px solid #d2d6de;border-radius:0}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#3c8dbc;color:white}.select2-results__option{padding:6px 12px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{padding-left:0;padding-right:0;height:auto;margin-top:-4px}.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered{padding-right:6px;padding-left:20px}.select2-container--default .select2-selection--single .select2-selection__arrow{height:28px;right:3px}.select2-container--default .select2-selection--single .select2-selection__arrow b{margin-top:0}.select2-dropdown .select2-search__field,.select2-search--inline .select2-search__field{border:1px solid #d2d6de}.select2-dropdown .select2-search__field:focus,.select2-search--inline .select2-search__field:focus{outline:none}.select2-container--default.select2-container--focus .select2-selection--multiple,.select2-container--default .select2-search--dropdown .select2-search__field{border-color:#3c8dbc !important}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option[aria-selected=true],.select2-container--default .select2-results__option[aria-selected=true]:hover{color:#444}.select2-container--default .select2-selection--multiple{border:1px solid #d2d6de;border-radius:0}.select2-container--default .select2-selection--multiple:focus{border-color:#3c8dbc}.select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#d2d6de}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#3c8dbc;border-color:#367fa9;padding:1px 10px;color:#fff}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{margin-right:5px;color:rgba(255,255,255,0.7)}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff}.select2-container .select2-selection--single .select2-selection__rendered{padding-right:10px}
|
||||
4084
mondumas/static/dist/AdminLTE-2.4.18/css/alt/AdminLTE-without-plugins.css
vendored
Normal file
9
mondumas/static/dist/AdminLTE-2.4.18/css/alt/AdminLTE-without-plugins.min.css
vendored
Normal file
1782
mondumas/static/dist/AdminLTE-2.4.18/css/skins/_all-skins.css
vendored
Normal file
1
mondumas/static/dist/AdminLTE-2.4.18/css/skins/_all-skins.min.css
vendored
Normal file
172
mondumas/static/dist/AdminLTE-2.4.18/css/skins/skin-black-light.css
vendored
Normal file
@@ -0,0 +1,172 @@
|
||||
/*
|
||||
* Skin: Black
|
||||
* -----------
|
||||
*/
|
||||
/* skin-black navbar */
|
||||
.skin-black-light .main-header {
|
||||
-webkit-box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.05);
|
||||
box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
.skin-black-light .main-header .navbar-toggle {
|
||||
color: #333;
|
||||
}
|
||||
.skin-black-light .main-header .navbar-brand {
|
||||
color: #333;
|
||||
border-right: 1px solid #d2d6de;
|
||||
}
|
||||
.skin-black-light .main-header .navbar {
|
||||
background-color: #ffffff;
|
||||
}
|
||||
.skin-black-light .main-header .navbar .nav > li > a {
|
||||
color: #333333;
|
||||
}
|
||||
.skin-black-light .main-header .navbar .nav > li > a:hover,
|
||||
.skin-black-light .main-header .navbar .nav > li > a:active,
|
||||
.skin-black-light .main-header .navbar .nav > li > a:focus,
|
||||
.skin-black-light .main-header .navbar .nav .open > a,
|
||||
.skin-black-light .main-header .navbar .nav .open > a:hover,
|
||||
.skin-black-light .main-header .navbar .nav .open > a:focus,
|
||||
.skin-black-light .main-header .navbar .nav > .active > a {
|
||||
background: #ffffff;
|
||||
color: #999999;
|
||||
}
|
||||
.skin-black-light .main-header .navbar .sidebar-toggle {
|
||||
color: #333333;
|
||||
}
|
||||
.skin-black-light .main-header .navbar .sidebar-toggle:hover {
|
||||
color: #999999;
|
||||
background: #ffffff;
|
||||
}
|
||||
.skin-black-light .main-header .navbar > .sidebar-toggle {
|
||||
color: #333;
|
||||
border-right: 1px solid #d2d6de;
|
||||
}
|
||||
.skin-black-light .main-header .navbar .navbar-nav > li > a {
|
||||
border-right: 1px solid #d2d6de;
|
||||
}
|
||||
.skin-black-light .main-header .navbar .navbar-custom-menu .navbar-nav > li > a,
|
||||
.skin-black-light .main-header .navbar .navbar-right > li > a {
|
||||
border-left: 1px solid #d2d6de;
|
||||
border-right-width: 0;
|
||||
}
|
||||
.skin-black-light .main-header .logo {
|
||||
background-color: #ffffff;
|
||||
color: #333333;
|
||||
border-bottom: 0 solid transparent;
|
||||
border-right: 1px solid #d2d6de;
|
||||
}
|
||||
.skin-black-light .main-header .logo:hover {
|
||||
background-color: #fcfcfc;
|
||||
}
|
||||
@media (max-width: 767px) {
|
||||
.skin-black-light .main-header .logo {
|
||||
background-color: #222222;
|
||||
color: #ffffff;
|
||||
border-bottom: 0 solid transparent;
|
||||
border-right: none;
|
||||
}
|
||||
.skin-black-light .main-header .logo:hover {
|
||||
background-color: #1f1f1f;
|
||||
}
|
||||
}
|
||||
.skin-black-light .main-header li.user-header {
|
||||
background-color: #222;
|
||||
}
|
||||
.skin-black-light .content-header {
|
||||
background: transparent;
|
||||
box-shadow: none;
|
||||
}
|
||||
.skin-black-light .wrapper,
|
||||
.skin-black-light .main-sidebar,
|
||||
.skin-black-light .left-side {
|
||||
background-color: #f9fafc;
|
||||
}
|
||||
.skin-black-light .main-sidebar {
|
||||
border-right: 1px solid #d2d6de;
|
||||
}
|
||||
.skin-black-light .user-panel > .info,
|
||||
.skin-black-light .user-panel > .info > a {
|
||||
color: #444444;
|
||||
}
|
||||
.skin-black-light .sidebar-menu > li {
|
||||
-webkit-transition: border-left-color 0.3s ease;
|
||||
-o-transition: border-left-color 0.3s ease;
|
||||
transition: border-left-color 0.3s ease;
|
||||
}
|
||||
.skin-black-light .sidebar-menu > li.header {
|
||||
color: #848484;
|
||||
background: #f9fafc;
|
||||
}
|
||||
.skin-black-light .sidebar-menu > li > a {
|
||||
border-left: 3px solid transparent;
|
||||
font-weight: 600;
|
||||
}
|
||||
.skin-black-light .sidebar-menu > li:hover > a,
|
||||
.skin-black-light .sidebar-menu > li.active > a {
|
||||
color: #000000;
|
||||
background: #f4f4f5;
|
||||
}
|
||||
.skin-black-light .sidebar-menu > li.active {
|
||||
border-left-color: #ffffff;
|
||||
}
|
||||
.skin-black-light .sidebar-menu > li.active > a {
|
||||
font-weight: 600;
|
||||
}
|
||||
.skin-black-light .sidebar-menu > li > .treeview-menu {
|
||||
background: #f4f4f5;
|
||||
}
|
||||
.skin-black-light .sidebar a {
|
||||
color: #444444;
|
||||
}
|
||||
.skin-black-light .sidebar a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
.skin-black-light .sidebar-menu .treeview-menu > li > a {
|
||||
color: #777777;
|
||||
}
|
||||
.skin-black-light .sidebar-menu .treeview-menu > li.active > a,
|
||||
.skin-black-light .sidebar-menu .treeview-menu > li > a:hover {
|
||||
color: #000000;
|
||||
}
|
||||
.skin-black-light .sidebar-menu .treeview-menu > li.active > a {
|
||||
font-weight: 600;
|
||||
}
|
||||
.skin-black-light .sidebar-form {
|
||||
border-radius: 3px;
|
||||
border: 1px solid #d2d6de;
|
||||
margin: 10px 10px;
|
||||
}
|
||||
.skin-black-light .sidebar-form input[type="text"],
|
||||
.skin-black-light .sidebar-form .btn {
|
||||
box-shadow: none;
|
||||
background-color: #fff;
|
||||
border: 1px solid transparent;
|
||||
height: 35px;
|
||||
}
|
||||
.skin-black-light .sidebar-form input[type="text"] {
|
||||
color: #666;
|
||||
border-top-left-radius: 2px;
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
border-bottom-left-radius: 2px;
|
||||
}
|
||||
.skin-black-light .sidebar-form input[type="text"]:focus,
|
||||
.skin-black-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
background-color: #fff;
|
||||
color: #666;
|
||||
}
|
||||
.skin-black-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
border-left-color: #fff;
|
||||
}
|
||||
.skin-black-light .sidebar-form .btn {
|
||||
color: #999;
|
||||
border-top-left-radius: 0;
|
||||
border-top-right-radius: 2px;
|
||||
border-bottom-right-radius: 2px;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
@media (min-width: 768px) {
|
||||
.skin-black-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu {
|
||||
border-left: 1px solid #d2d6de;
|
||||
}
|
||||
}
|
||||
1
mondumas/static/dist/AdminLTE-2.4.18/css/skins/skin-black-light.min.css
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.skin-black-light .main-header{-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.skin-black-light .main-header .navbar-toggle{color:#333}.skin-black-light .main-header .navbar-brand{color:#333;border-right:1px solid #d2d6de}.skin-black-light .main-header .navbar{background-color:#fff}.skin-black-light .main-header .navbar .nav>li>a{color:#333}.skin-black-light .main-header .navbar .nav>li>a:hover,.skin-black-light .main-header .navbar .nav>li>a:active,.skin-black-light .main-header .navbar .nav>li>a:focus,.skin-black-light .main-header .navbar .nav .open>a,.skin-black-light .main-header .navbar .nav .open>a:hover,.skin-black-light .main-header .navbar .nav .open>a:focus,.skin-black-light .main-header .navbar .nav>.active>a{background:#fff;color:#999}.skin-black-light .main-header .navbar .sidebar-toggle{color:#333}.skin-black-light .main-header .navbar .sidebar-toggle:hover{color:#999;background:#fff}.skin-black-light .main-header .navbar>.sidebar-toggle{color:#333;border-right:1px solid #d2d6de}.skin-black-light .main-header .navbar .navbar-nav>li>a{border-right:1px solid #d2d6de}.skin-black-light .main-header .navbar .navbar-custom-menu .navbar-nav>li>a,.skin-black-light .main-header .navbar .navbar-right>li>a{border-left:1px solid #d2d6de;border-right-width:0}.skin-black-light .main-header .logo{background-color:#fff;color:#333;border-bottom:0 solid transparent;border-right:1px solid #d2d6de}.skin-black-light .main-header .logo:hover{background-color:#fcfcfc}@media (max-width:767px){.skin-black-light .main-header .logo{background-color:#222;color:#fff;border-bottom:0 solid transparent;border-right:none}.skin-black-light .main-header .logo:hover{background-color:#1f1f1f}}.skin-black-light .main-header li.user-header{background-color:#222}.skin-black-light .content-header{background:transparent;box-shadow:none}.skin-black-light .wrapper,.skin-black-light .main-sidebar,.skin-black-light .left-side{background-color:#f9fafc}.skin-black-light .main-sidebar{border-right:1px solid #d2d6de}.skin-black-light .user-panel>.info,.skin-black-light .user-panel>.info>a{color:#444}.skin-black-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-black-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-black-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-black-light .sidebar-menu>li:hover>a,.skin-black-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-black-light .sidebar-menu>li.active{border-left-color:#fff}.skin-black-light .sidebar-menu>li.active>a{font-weight:600}.skin-black-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-black-light .sidebar a{color:#444}.skin-black-light .sidebar a:hover{text-decoration:none}.skin-black-light .sidebar-menu .treeview-menu>li>a{color:#777}.skin-black-light .sidebar-menu .treeview-menu>li.active>a,.skin-black-light .sidebar-menu .treeview-menu>li>a:hover{color:#000}.skin-black-light .sidebar-menu .treeview-menu>li.active>a{font-weight:600}.skin-black-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-black-light .sidebar-form input[type="text"],.skin-black-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px}.skin-black-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-black-light .sidebar-form input[type="text"]:focus,.skin-black-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-black-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-black-light .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}@media (min-width:768px){.skin-black-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}}
|
||||
161
mondumas/static/dist/AdminLTE-2.4.18/css/skins/skin-black.css
vendored
Normal file
@@ -0,0 +1,161 @@
|
||||
/*
|
||||
* Skin: Black
|
||||
* -----------
|
||||
*/
|
||||
/* skin-black navbar */
|
||||
.skin-black .main-header {
|
||||
-webkit-box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.05);
|
||||
box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
.skin-black .main-header .navbar-toggle {
|
||||
color: #333;
|
||||
}
|
||||
.skin-black .main-header .navbar-brand {
|
||||
color: #333;
|
||||
border-right: 1px solid #eee;
|
||||
}
|
||||
.skin-black .main-header .navbar {
|
||||
background-color: #ffffff;
|
||||
}
|
||||
.skin-black .main-header .navbar .nav > li > a {
|
||||
color: #333333;
|
||||
}
|
||||
.skin-black .main-header .navbar .nav > li > a:hover,
|
||||
.skin-black .main-header .navbar .nav > li > a:active,
|
||||
.skin-black .main-header .navbar .nav > li > a:focus,
|
||||
.skin-black .main-header .navbar .nav .open > a,
|
||||
.skin-black .main-header .navbar .nav .open > a:hover,
|
||||
.skin-black .main-header .navbar .nav .open > a:focus,
|
||||
.skin-black .main-header .navbar .nav > .active > a {
|
||||
background: #ffffff;
|
||||
color: #999999;
|
||||
}
|
||||
.skin-black .main-header .navbar .sidebar-toggle {
|
||||
color: #333333;
|
||||
}
|
||||
.skin-black .main-header .navbar .sidebar-toggle:hover {
|
||||
color: #999999;
|
||||
background: #ffffff;
|
||||
}
|
||||
.skin-black .main-header .navbar > .sidebar-toggle {
|
||||
color: #333;
|
||||
border-right: 1px solid #eee;
|
||||
}
|
||||
.skin-black .main-header .navbar .navbar-nav > li > a {
|
||||
border-right: 1px solid #eee;
|
||||
}
|
||||
.skin-black .main-header .navbar .navbar-custom-menu .navbar-nav > li > a,
|
||||
.skin-black .main-header .navbar .navbar-right > li > a {
|
||||
border-left: 1px solid #eee;
|
||||
border-right-width: 0;
|
||||
}
|
||||
.skin-black .main-header .logo {
|
||||
background-color: #ffffff;
|
||||
color: #333333;
|
||||
border-bottom: 0 solid transparent;
|
||||
border-right: 1px solid #eee;
|
||||
}
|
||||
.skin-black .main-header .logo:hover {
|
||||
background-color: #fcfcfc;
|
||||
}
|
||||
@media (max-width: 767px) {
|
||||
.skin-black .main-header .logo {
|
||||
background-color: #222222;
|
||||
color: #ffffff;
|
||||
border-bottom: 0 solid transparent;
|
||||
border-right: none;
|
||||
}
|
||||
.skin-black .main-header .logo:hover {
|
||||
background-color: #1f1f1f;
|
||||
}
|
||||
}
|
||||
.skin-black .main-header li.user-header {
|
||||
background-color: #222;
|
||||
}
|
||||
.skin-black .content-header {
|
||||
background: transparent;
|
||||
box-shadow: none;
|
||||
}
|
||||
.skin-black .wrapper,
|
||||
.skin-black .main-sidebar,
|
||||
.skin-black .left-side {
|
||||
background-color: #222d32;
|
||||
}
|
||||
.skin-black .user-panel > .info,
|
||||
.skin-black .user-panel > .info > a {
|
||||
color: #fff;
|
||||
}
|
||||
.skin-black .sidebar-menu > li.header {
|
||||
color: #4b646f;
|
||||
background: #1a2226;
|
||||
}
|
||||
.skin-black .sidebar-menu > li > a {
|
||||
border-left: 3px solid transparent;
|
||||
}
|
||||
.skin-black .sidebar-menu > li:hover > a,
|
||||
.skin-black .sidebar-menu > li.active > a,
|
||||
.skin-black .sidebar-menu > li.menu-open > a {
|
||||
color: #ffffff;
|
||||
background: #1e282c;
|
||||
}
|
||||
.skin-black .sidebar-menu > li.active > a {
|
||||
border-left-color: #ffffff;
|
||||
}
|
||||
.skin-black .sidebar-menu > li > .treeview-menu {
|
||||
margin: 0 1px;
|
||||
background: #2c3b41;
|
||||
}
|
||||
.skin-black .sidebar a {
|
||||
color: #b8c7ce;
|
||||
}
|
||||
.skin-black .sidebar a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
.skin-black .sidebar-menu .treeview-menu > li > a {
|
||||
color: #8aa4af;
|
||||
}
|
||||
.skin-black .sidebar-menu .treeview-menu > li.active > a,
|
||||
.skin-black .sidebar-menu .treeview-menu > li > a:hover {
|
||||
color: #ffffff;
|
||||
}
|
||||
.skin-black .sidebar-form {
|
||||
border-radius: 3px;
|
||||
border: 1px solid #374850;
|
||||
margin: 10px 10px;
|
||||
}
|
||||
.skin-black .sidebar-form input[type="text"],
|
||||
.skin-black .sidebar-form .btn {
|
||||
box-shadow: none;
|
||||
background-color: #374850;
|
||||
border: 1px solid transparent;
|
||||
height: 35px;
|
||||
}
|
||||
.skin-black .sidebar-form input[type="text"] {
|
||||
color: #666;
|
||||
border-top-left-radius: 2px;
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
border-bottom-left-radius: 2px;
|
||||
}
|
||||
.skin-black .sidebar-form input[type="text"]:focus,
|
||||
.skin-black .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
background-color: #fff;
|
||||
color: #666;
|
||||
}
|
||||
.skin-black .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
border-left-color: #fff;
|
||||
}
|
||||
.skin-black .sidebar-form .btn {
|
||||
color: #999;
|
||||
border-top-left-radius: 0;
|
||||
border-top-right-radius: 2px;
|
||||
border-bottom-right-radius: 2px;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
.skin-black .pace .pace-progress {
|
||||
background: #222;
|
||||
}
|
||||
.skin-black .pace .pace-activity {
|
||||
border-top-color: #222;
|
||||
border-left-color: #222;
|
||||
}
|
||||
1
mondumas/static/dist/AdminLTE-2.4.18/css/skins/skin-black.min.css
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.skin-black .main-header{-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.skin-black .main-header .navbar-toggle{color:#333}.skin-black .main-header .navbar-brand{color:#333;border-right:1px solid #eee}.skin-black .main-header .navbar{background-color:#fff}.skin-black .main-header .navbar .nav>li>a{color:#333}.skin-black .main-header .navbar .nav>li>a:hover,.skin-black .main-header .navbar .nav>li>a:active,.skin-black .main-header .navbar .nav>li>a:focus,.skin-black .main-header .navbar .nav .open>a,.skin-black .main-header .navbar .nav .open>a:hover,.skin-black .main-header .navbar .nav .open>a:focus,.skin-black .main-header .navbar .nav>.active>a{background:#fff;color:#999}.skin-black .main-header .navbar .sidebar-toggle{color:#333}.skin-black .main-header .navbar .sidebar-toggle:hover{color:#999;background:#fff}.skin-black .main-header .navbar>.sidebar-toggle{color:#333;border-right:1px solid #eee}.skin-black .main-header .navbar .navbar-nav>li>a{border-right:1px solid #eee}.skin-black .main-header .navbar .navbar-custom-menu .navbar-nav>li>a,.skin-black .main-header .navbar .navbar-right>li>a{border-left:1px solid #eee;border-right-width:0}.skin-black .main-header .logo{background-color:#fff;color:#333;border-bottom:0 solid transparent;border-right:1px solid #eee}.skin-black .main-header .logo:hover{background-color:#fcfcfc}@media (max-width:767px){.skin-black .main-header .logo{background-color:#222;color:#fff;border-bottom:0 solid transparent;border-right:none}.skin-black .main-header .logo:hover{background-color:#1f1f1f}}.skin-black .main-header li.user-header{background-color:#222}.skin-black .content-header{background:transparent;box-shadow:none}.skin-black .wrapper,.skin-black .main-sidebar,.skin-black .left-side{background-color:#222d32}.skin-black .user-panel>.info,.skin-black .user-panel>.info>a{color:#fff}.skin-black .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-black .sidebar-menu>li>a{border-left:3px solid transparent}.skin-black .sidebar-menu>li:hover>a,.skin-black .sidebar-menu>li.active>a,.skin-black .sidebar-menu>li.menu-open>a{color:#fff;background:#1e282c}.skin-black .sidebar-menu>li.active>a{border-left-color:#fff}.skin-black .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-black .sidebar a{color:#b8c7ce}.skin-black .sidebar a:hover{text-decoration:none}.skin-black .sidebar-menu .treeview-menu>li>a{color:#8aa4af}.skin-black .sidebar-menu .treeview-menu>li.active>a,.skin-black .sidebar-menu .treeview-menu>li>a:hover{color:#fff}.skin-black .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-black .sidebar-form input[type="text"],.skin-black .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px}.skin-black .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-black .sidebar-form input[type="text"]:focus,.skin-black .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-black .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-black .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}.skin-black .pace .pace-progress{background:#222}.skin-black .pace .pace-activity{border-top-color:#222;border-left-color:#222}
|
||||
163
mondumas/static/dist/AdminLTE-2.4.18/css/skins/skin-blue-light.css
vendored
Normal file
@@ -0,0 +1,163 @@
|
||||
/*
|
||||
* Skin: Blue
|
||||
* ----------
|
||||
*/
|
||||
.skin-blue-light .main-header .navbar {
|
||||
background-color: #3c8dbc;
|
||||
}
|
||||
.skin-blue-light .main-header .navbar .nav > li > a {
|
||||
color: #ffffff;
|
||||
}
|
||||
.skin-blue-light .main-header .navbar .nav > li > a:hover,
|
||||
.skin-blue-light .main-header .navbar .nav > li > a:active,
|
||||
.skin-blue-light .main-header .navbar .nav > li > a:focus,
|
||||
.skin-blue-light .main-header .navbar .nav .open > a,
|
||||
.skin-blue-light .main-header .navbar .nav .open > a:hover,
|
||||
.skin-blue-light .main-header .navbar .nav .open > a:focus,
|
||||
.skin-blue-light .main-header .navbar .nav > .active > a {
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
color: #f6f6f6;
|
||||
}
|
||||
.skin-blue-light .main-header .navbar .sidebar-toggle {
|
||||
color: #ffffff;
|
||||
}
|
||||
.skin-blue-light .main-header .navbar .sidebar-toggle:hover {
|
||||
color: #f6f6f6;
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
.skin-blue-light .main-header .navbar .sidebar-toggle {
|
||||
color: #fff;
|
||||
}
|
||||
.skin-blue-light .main-header .navbar .sidebar-toggle:hover {
|
||||
background-color: #367fa9;
|
||||
}
|
||||
@media (max-width: 767px) {
|
||||
.skin-blue-light .main-header .navbar .dropdown-menu li.divider {
|
||||
background-color: rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
.skin-blue-light .main-header .navbar .dropdown-menu li a {
|
||||
color: #fff;
|
||||
}
|
||||
.skin-blue-light .main-header .navbar .dropdown-menu li a:hover {
|
||||
background: #367fa9;
|
||||
}
|
||||
}
|
||||
.skin-blue-light .main-header .logo {
|
||||
background-color: #3c8dbc;
|
||||
color: #ffffff;
|
||||
border-bottom: 0 solid transparent;
|
||||
}
|
||||
.skin-blue-light .main-header .logo:hover {
|
||||
background-color: #3b8ab8;
|
||||
}
|
||||
.skin-blue-light .main-header li.user-header {
|
||||
background-color: #3c8dbc;
|
||||
}
|
||||
.skin-blue-light .content-header {
|
||||
background: transparent;
|
||||
}
|
||||
.skin-blue-light .wrapper,
|
||||
.skin-blue-light .main-sidebar,
|
||||
.skin-blue-light .left-side {
|
||||
background-color: #f9fafc;
|
||||
}
|
||||
.skin-blue-light .main-sidebar {
|
||||
border-right: 1px solid #d2d6de;
|
||||
}
|
||||
.skin-blue-light .user-panel > .info,
|
||||
.skin-blue-light .user-panel > .info > a {
|
||||
color: #444444;
|
||||
}
|
||||
.skin-blue-light .sidebar-menu > li {
|
||||
-webkit-transition: border-left-color 0.3s ease;
|
||||
-o-transition: border-left-color 0.3s ease;
|
||||
transition: border-left-color 0.3s ease;
|
||||
}
|
||||
.skin-blue-light .sidebar-menu > li.header {
|
||||
color: #848484;
|
||||
background: #f9fafc;
|
||||
}
|
||||
.skin-blue-light .sidebar-menu > li > a {
|
||||
border-left: 3px solid transparent;
|
||||
font-weight: 600;
|
||||
}
|
||||
.skin-blue-light .sidebar-menu > li:hover > a,
|
||||
.skin-blue-light .sidebar-menu > li.active > a {
|
||||
color: #000000;
|
||||
background: #f4f4f5;
|
||||
}
|
||||
.skin-blue-light .sidebar-menu > li.active {
|
||||
border-left-color: #3c8dbc;
|
||||
}
|
||||
.skin-blue-light .sidebar-menu > li.active > a {
|
||||
font-weight: 600;
|
||||
}
|
||||
.skin-blue-light .sidebar-menu > li > .treeview-menu {
|
||||
background: #f4f4f5;
|
||||
}
|
||||
.skin-blue-light .sidebar a {
|
||||
color: #444444;
|
||||
}
|
||||
.skin-blue-light .sidebar a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
.skin-blue-light .sidebar-menu .treeview-menu > li > a {
|
||||
color: #777777;
|
||||
}
|
||||
.skin-blue-light .sidebar-menu .treeview-menu > li.active > a,
|
||||
.skin-blue-light .sidebar-menu .treeview-menu > li > a:hover {
|
||||
color: #000000;
|
||||
}
|
||||
.skin-blue-light .sidebar-menu .treeview-menu > li.active > a {
|
||||
font-weight: 600;
|
||||
}
|
||||
.skin-blue-light .sidebar-form {
|
||||
border-radius: 3px;
|
||||
border: 1px solid #d2d6de;
|
||||
margin: 10px 10px;
|
||||
}
|
||||
.skin-blue-light .sidebar-form input[type="text"],
|
||||
.skin-blue-light .sidebar-form .btn {
|
||||
box-shadow: none;
|
||||
background-color: #fff;
|
||||
border: 1px solid transparent;
|
||||
height: 35px;
|
||||
}
|
||||
.skin-blue-light .sidebar-form input[type="text"] {
|
||||
color: #666;
|
||||
border-top-left-radius: 2px;
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
border-bottom-left-radius: 2px;
|
||||
}
|
||||
.skin-blue-light .sidebar-form input[type="text"]:focus,
|
||||
.skin-blue-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
background-color: #fff;
|
||||
color: #666;
|
||||
}
|
||||
.skin-blue-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
border-left-color: #fff;
|
||||
}
|
||||
.skin-blue-light .sidebar-form .btn {
|
||||
color: #999;
|
||||
border-top-left-radius: 0;
|
||||
border-top-right-radius: 2px;
|
||||
border-bottom-right-radius: 2px;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
@media (min-width: 768px) {
|
||||
.skin-blue-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu {
|
||||
border-left: 1px solid #d2d6de;
|
||||
}
|
||||
}
|
||||
.skin-blue-light .main-footer {
|
||||
border-top-color: #d2d6de;
|
||||
}
|
||||
.skin-blue.layout-top-nav .main-header > .logo {
|
||||
background-color: #3c8dbc;
|
||||
color: #ffffff;
|
||||
border-bottom: 0 solid transparent;
|
||||
}
|
||||
.skin-blue.layout-top-nav .main-header > .logo:hover {
|
||||
background-color: #3b8ab8;
|
||||
}
|
||||
1
mondumas/static/dist/AdminLTE-2.4.18/css/skins/skin-blue-light.min.css
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.skin-blue-light .main-header .navbar{background-color:#3c8dbc}.skin-blue-light .main-header .navbar .nav>li>a{color:#fff}.skin-blue-light .main-header .navbar .nav>li>a:hover,.skin-blue-light .main-header .navbar .nav>li>a:active,.skin-blue-light .main-header .navbar .nav>li>a:focus,.skin-blue-light .main-header .navbar .nav .open>a,.skin-blue-light .main-header .navbar .nav .open>a:hover,.skin-blue-light .main-header .navbar .nav .open>a:focus,.skin-blue-light .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-blue-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-blue-light .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-blue-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-blue-light .main-header .navbar .sidebar-toggle:hover{background-color:#367fa9}@media (max-width:767px){.skin-blue-light .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-blue-light .main-header .navbar .dropdown-menu li a{color:#fff}.skin-blue-light .main-header .navbar .dropdown-menu li a:hover{background:#367fa9}}.skin-blue-light .main-header .logo{background-color:#3c8dbc;color:#fff;border-bottom:0 solid transparent}.skin-blue-light .main-header .logo:hover{background-color:#3b8ab8}.skin-blue-light .main-header li.user-header{background-color:#3c8dbc}.skin-blue-light .content-header{background:transparent}.skin-blue-light .wrapper,.skin-blue-light .main-sidebar,.skin-blue-light .left-side{background-color:#f9fafc}.skin-blue-light .main-sidebar{border-right:1px solid #d2d6de}.skin-blue-light .user-panel>.info,.skin-blue-light .user-panel>.info>a{color:#444}.skin-blue-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-blue-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-blue-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-blue-light .sidebar-menu>li:hover>a,.skin-blue-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-blue-light .sidebar-menu>li.active{border-left-color:#3c8dbc}.skin-blue-light .sidebar-menu>li.active>a{font-weight:600}.skin-blue-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-blue-light .sidebar a{color:#444}.skin-blue-light .sidebar a:hover{text-decoration:none}.skin-blue-light .sidebar-menu .treeview-menu>li>a{color:#777}.skin-blue-light .sidebar-menu .treeview-menu>li.active>a,.skin-blue-light .sidebar-menu .treeview-menu>li>a:hover{color:#000}.skin-blue-light .sidebar-menu .treeview-menu>li.active>a{font-weight:600}.skin-blue-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-blue-light .sidebar-form input[type="text"],.skin-blue-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px}.skin-blue-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-blue-light .sidebar-form input[type="text"]:focus,.skin-blue-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-blue-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-blue-light .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}@media (min-width:768px){.skin-blue-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}}.skin-blue-light .main-footer{border-top-color:#d2d6de}.skin-blue.layout-top-nav .main-header>.logo{background-color:#3c8dbc;color:#fff;border-bottom:0 solid transparent}.skin-blue.layout-top-nav .main-header>.logo:hover{background-color:#3b8ab8}
|
||||
142
mondumas/static/dist/AdminLTE-2.4.18/css/skins/skin-blue.css
vendored
Normal file
@@ -0,0 +1,142 @@
|
||||
/*
|
||||
* Skin: Blue
|
||||
* ----------
|
||||
*/
|
||||
.skin-blue .main-header .navbar {
|
||||
background-color: #3c8dbc;
|
||||
}
|
||||
.skin-blue .main-header .navbar .nav > li > a {
|
||||
color: #ffffff;
|
||||
}
|
||||
.skin-blue .main-header .navbar .nav > li > a:hover,
|
||||
.skin-blue .main-header .navbar .nav > li > a:active,
|
||||
.skin-blue .main-header .navbar .nav > li > a:focus,
|
||||
.skin-blue .main-header .navbar .nav .open > a,
|
||||
.skin-blue .main-header .navbar .nav .open > a:hover,
|
||||
.skin-blue .main-header .navbar .nav .open > a:focus,
|
||||
.skin-blue .main-header .navbar .nav > .active > a {
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
color: #f6f6f6;
|
||||
}
|
||||
.skin-blue .main-header .navbar .sidebar-toggle {
|
||||
color: #ffffff;
|
||||
}
|
||||
.skin-blue .main-header .navbar .sidebar-toggle:hover {
|
||||
color: #f6f6f6;
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
.skin-blue .main-header .navbar .sidebar-toggle {
|
||||
color: #fff;
|
||||
}
|
||||
.skin-blue .main-header .navbar .sidebar-toggle:hover {
|
||||
background-color: #367fa9;
|
||||
}
|
||||
@media (max-width: 767px) {
|
||||
.skin-blue .main-header .navbar .dropdown-menu li.divider {
|
||||
background-color: rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
.skin-blue .main-header .navbar .dropdown-menu li a {
|
||||
color: #fff;
|
||||
}
|
||||
.skin-blue .main-header .navbar .dropdown-menu li a:hover {
|
||||
background: #367fa9;
|
||||
}
|
||||
}
|
||||
.skin-blue .main-header .logo {
|
||||
background-color: #367fa9;
|
||||
color: #ffffff;
|
||||
border-bottom: 0 solid transparent;
|
||||
}
|
||||
.skin-blue .main-header .logo:hover {
|
||||
background-color: #357ca5;
|
||||
}
|
||||
.skin-blue .main-header li.user-header {
|
||||
background-color: #3c8dbc;
|
||||
}
|
||||
.skin-blue .content-header {
|
||||
background: transparent;
|
||||
}
|
||||
.skin-blue .wrapper,
|
||||
.skin-blue .main-sidebar,
|
||||
.skin-blue .left-side {
|
||||
background-color: #222d32;
|
||||
}
|
||||
.skin-blue .user-panel > .info,
|
||||
.skin-blue .user-panel > .info > a {
|
||||
color: #fff;
|
||||
}
|
||||
.skin-blue .sidebar-menu > li.header {
|
||||
color: #4b646f;
|
||||
background: #1a2226;
|
||||
}
|
||||
.skin-blue .sidebar-menu > li > a {
|
||||
border-left: 3px solid transparent;
|
||||
}
|
||||
.skin-blue .sidebar-menu > li:hover > a,
|
||||
.skin-blue .sidebar-menu > li.active > a,
|
||||
.skin-blue .sidebar-menu > li.menu-open > a {
|
||||
color: #ffffff;
|
||||
background: #1e282c;
|
||||
}
|
||||
.skin-blue .sidebar-menu > li.active > a {
|
||||
border-left-color: #3c8dbc;
|
||||
}
|
||||
.skin-blue .sidebar-menu > li > .treeview-menu {
|
||||
margin: 0 1px;
|
||||
background: #2c3b41;
|
||||
}
|
||||
.skin-blue .sidebar a {
|
||||
color: #b8c7ce;
|
||||
}
|
||||
.skin-blue .sidebar a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
.skin-blue .sidebar-menu .treeview-menu > li > a {
|
||||
color: #8aa4af;
|
||||
}
|
||||
.skin-blue .sidebar-menu .treeview-menu > li.active > a,
|
||||
.skin-blue .sidebar-menu .treeview-menu > li > a:hover {
|
||||
color: #ffffff;
|
||||
}
|
||||
.skin-blue .sidebar-form {
|
||||
border-radius: 3px;
|
||||
border: 1px solid #374850;
|
||||
margin: 10px 10px;
|
||||
}
|
||||
.skin-blue .sidebar-form input[type="text"],
|
||||
.skin-blue .sidebar-form .btn {
|
||||
box-shadow: none;
|
||||
background-color: #374850;
|
||||
border: 1px solid transparent;
|
||||
height: 35px;
|
||||
}
|
||||
.skin-blue .sidebar-form input[type="text"] {
|
||||
color: #666;
|
||||
border-top-left-radius: 2px;
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
border-bottom-left-radius: 2px;
|
||||
}
|
||||
.skin-blue .sidebar-form input[type="text"]:focus,
|
||||
.skin-blue .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
background-color: #fff;
|
||||
color: #666;
|
||||
}
|
||||
.skin-blue .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
border-left-color: #fff;
|
||||
}
|
||||
.skin-blue .sidebar-form .btn {
|
||||
color: #999;
|
||||
border-top-left-radius: 0;
|
||||
border-top-right-radius: 2px;
|
||||
border-bottom-right-radius: 2px;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
.skin-blue.layout-top-nav .main-header > .logo {
|
||||
background-color: #3c8dbc;
|
||||
color: #ffffff;
|
||||
border-bottom: 0 solid transparent;
|
||||
}
|
||||
.skin-blue.layout-top-nav .main-header > .logo:hover {
|
||||
background-color: #3b8ab8;
|
||||
}
|
||||
1
mondumas/static/dist/AdminLTE-2.4.18/css/skins/skin-blue.min.css
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.skin-blue .main-header .navbar{background-color:#3c8dbc}.skin-blue .main-header .navbar .nav>li>a{color:#fff}.skin-blue .main-header .navbar .nav>li>a:hover,.skin-blue .main-header .navbar .nav>li>a:active,.skin-blue .main-header .navbar .nav>li>a:focus,.skin-blue .main-header .navbar .nav .open>a,.skin-blue .main-header .navbar .nav .open>a:hover,.skin-blue .main-header .navbar .nav .open>a:focus,.skin-blue .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-blue .main-header .navbar .sidebar-toggle{color:#fff}.skin-blue .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-blue .main-header .navbar .sidebar-toggle{color:#fff}.skin-blue .main-header .navbar .sidebar-toggle:hover{background-color:#367fa9}@media (max-width:767px){.skin-blue .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-blue .main-header .navbar .dropdown-menu li a{color:#fff}.skin-blue .main-header .navbar .dropdown-menu li a:hover{background:#367fa9}}.skin-blue .main-header .logo{background-color:#367fa9;color:#fff;border-bottom:0 solid transparent}.skin-blue .main-header .logo:hover{background-color:#357ca5}.skin-blue .main-header li.user-header{background-color:#3c8dbc}.skin-blue .content-header{background:transparent}.skin-blue .wrapper,.skin-blue .main-sidebar,.skin-blue .left-side{background-color:#222d32}.skin-blue .user-panel>.info,.skin-blue .user-panel>.info>a{color:#fff}.skin-blue .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-blue .sidebar-menu>li>a{border-left:3px solid transparent}.skin-blue .sidebar-menu>li:hover>a,.skin-blue .sidebar-menu>li.active>a,.skin-blue .sidebar-menu>li.menu-open>a{color:#fff;background:#1e282c}.skin-blue .sidebar-menu>li.active>a{border-left-color:#3c8dbc}.skin-blue .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-blue .sidebar a{color:#b8c7ce}.skin-blue .sidebar a:hover{text-decoration:none}.skin-blue .sidebar-menu .treeview-menu>li>a{color:#8aa4af}.skin-blue .sidebar-menu .treeview-menu>li.active>a,.skin-blue .sidebar-menu .treeview-menu>li>a:hover{color:#fff}.skin-blue .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-blue .sidebar-form input[type="text"],.skin-blue .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px}.skin-blue .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-blue .sidebar-form input[type="text"]:focus,.skin-blue .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-blue .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-blue .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}.skin-blue.layout-top-nav .main-header>.logo{background-color:#3c8dbc;color:#fff;border-bottom:0 solid transparent}.skin-blue.layout-top-nav .main-header>.logo:hover{background-color:#3b8ab8}
|
||||
152
mondumas/static/dist/AdminLTE-2.4.18/css/skins/skin-green-light.css
vendored
Normal file
@@ -0,0 +1,152 @@
|
||||
/*
|
||||
* Skin: Green
|
||||
* -----------
|
||||
*/
|
||||
.skin-green-light .main-header .navbar {
|
||||
background-color: #00a65a;
|
||||
}
|
||||
.skin-green-light .main-header .navbar .nav > li > a {
|
||||
color: #ffffff;
|
||||
}
|
||||
.skin-green-light .main-header .navbar .nav > li > a:hover,
|
||||
.skin-green-light .main-header .navbar .nav > li > a:active,
|
||||
.skin-green-light .main-header .navbar .nav > li > a:focus,
|
||||
.skin-green-light .main-header .navbar .nav .open > a,
|
||||
.skin-green-light .main-header .navbar .nav .open > a:hover,
|
||||
.skin-green-light .main-header .navbar .nav .open > a:focus,
|
||||
.skin-green-light .main-header .navbar .nav > .active > a {
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
color: #f6f6f6;
|
||||
}
|
||||
.skin-green-light .main-header .navbar .sidebar-toggle {
|
||||
color: #ffffff;
|
||||
}
|
||||
.skin-green-light .main-header .navbar .sidebar-toggle:hover {
|
||||
color: #f6f6f6;
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
.skin-green-light .main-header .navbar .sidebar-toggle {
|
||||
color: #fff;
|
||||
}
|
||||
.skin-green-light .main-header .navbar .sidebar-toggle:hover {
|
||||
background-color: #008d4c;
|
||||
}
|
||||
@media (max-width: 767px) {
|
||||
.skin-green-light .main-header .navbar .dropdown-menu li.divider {
|
||||
background-color: rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
.skin-green-light .main-header .navbar .dropdown-menu li a {
|
||||
color: #fff;
|
||||
}
|
||||
.skin-green-light .main-header .navbar .dropdown-menu li a:hover {
|
||||
background: #008d4c;
|
||||
}
|
||||
}
|
||||
.skin-green-light .main-header .logo {
|
||||
background-color: #00a65a;
|
||||
color: #ffffff;
|
||||
border-bottom: 0 solid transparent;
|
||||
}
|
||||
.skin-green-light .main-header .logo:hover {
|
||||
background-color: #00a157;
|
||||
}
|
||||
.skin-green-light .main-header li.user-header {
|
||||
background-color: #00a65a;
|
||||
}
|
||||
.skin-green-light .content-header {
|
||||
background: transparent;
|
||||
}
|
||||
.skin-green-light .wrapper,
|
||||
.skin-green-light .main-sidebar,
|
||||
.skin-green-light .left-side {
|
||||
background-color: #f9fafc;
|
||||
}
|
||||
.skin-green-light .main-sidebar {
|
||||
border-right: 1px solid #d2d6de;
|
||||
}
|
||||
.skin-green-light .user-panel > .info,
|
||||
.skin-green-light .user-panel > .info > a {
|
||||
color: #444444;
|
||||
}
|
||||
.skin-green-light .sidebar-menu > li {
|
||||
-webkit-transition: border-left-color 0.3s ease;
|
||||
-o-transition: border-left-color 0.3s ease;
|
||||
transition: border-left-color 0.3s ease;
|
||||
}
|
||||
.skin-green-light .sidebar-menu > li.header {
|
||||
color: #848484;
|
||||
background: #f9fafc;
|
||||
}
|
||||
.skin-green-light .sidebar-menu > li > a {
|
||||
border-left: 3px solid transparent;
|
||||
font-weight: 600;
|
||||
}
|
||||
.skin-green-light .sidebar-menu > li:hover > a,
|
||||
.skin-green-light .sidebar-menu > li.active > a {
|
||||
color: #000000;
|
||||
background: #f4f4f5;
|
||||
}
|
||||
.skin-green-light .sidebar-menu > li.active {
|
||||
border-left-color: #00a65a;
|
||||
}
|
||||
.skin-green-light .sidebar-menu > li.active > a {
|
||||
font-weight: 600;
|
||||
}
|
||||
.skin-green-light .sidebar-menu > li > .treeview-menu {
|
||||
background: #f4f4f5;
|
||||
}
|
||||
.skin-green-light .sidebar a {
|
||||
color: #444444;
|
||||
}
|
||||
.skin-green-light .sidebar a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
.skin-green-light .sidebar-menu .treeview-menu > li > a {
|
||||
color: #777777;
|
||||
}
|
||||
.skin-green-light .sidebar-menu .treeview-menu > li.active > a,
|
||||
.skin-green-light .sidebar-menu .treeview-menu > li > a:hover {
|
||||
color: #000000;
|
||||
}
|
||||
.skin-green-light .sidebar-menu .treeview-menu > li.active > a {
|
||||
font-weight: 600;
|
||||
}
|
||||
.skin-green-light .sidebar-form {
|
||||
border-radius: 3px;
|
||||
border: 1px solid #d2d6de;
|
||||
margin: 10px 10px;
|
||||
}
|
||||
.skin-green-light .sidebar-form input[type="text"],
|
||||
.skin-green-light .sidebar-form .btn {
|
||||
box-shadow: none;
|
||||
background-color: #fff;
|
||||
border: 1px solid transparent;
|
||||
height: 35px;
|
||||
}
|
||||
.skin-green-light .sidebar-form input[type="text"] {
|
||||
color: #666;
|
||||
border-top-left-radius: 2px;
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
border-bottom-left-radius: 2px;
|
||||
}
|
||||
.skin-green-light .sidebar-form input[type="text"]:focus,
|
||||
.skin-green-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
background-color: #fff;
|
||||
color: #666;
|
||||
}
|
||||
.skin-green-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
border-left-color: #fff;
|
||||
}
|
||||
.skin-green-light .sidebar-form .btn {
|
||||
color: #999;
|
||||
border-top-left-radius: 0;
|
||||
border-top-right-radius: 2px;
|
||||
border-bottom-right-radius: 2px;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
@media (min-width: 768px) {
|
||||
.skin-green-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu {
|
||||
border-left: 1px solid #d2d6de;
|
||||
}
|
||||
}
|
||||
1
mondumas/static/dist/AdminLTE-2.4.18/css/skins/skin-green-light.min.css
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.skin-green-light .main-header .navbar{background-color:#00a65a}.skin-green-light .main-header .navbar .nav>li>a{color:#fff}.skin-green-light .main-header .navbar .nav>li>a:hover,.skin-green-light .main-header .navbar .nav>li>a:active,.skin-green-light .main-header .navbar .nav>li>a:focus,.skin-green-light .main-header .navbar .nav .open>a,.skin-green-light .main-header .navbar .nav .open>a:hover,.skin-green-light .main-header .navbar .nav .open>a:focus,.skin-green-light .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-green-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-green-light .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-green-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-green-light .main-header .navbar .sidebar-toggle:hover{background-color:#008d4c}@media (max-width:767px){.skin-green-light .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-green-light .main-header .navbar .dropdown-menu li a{color:#fff}.skin-green-light .main-header .navbar .dropdown-menu li a:hover{background:#008d4c}}.skin-green-light .main-header .logo{background-color:#00a65a;color:#fff;border-bottom:0 solid transparent}.skin-green-light .main-header .logo:hover{background-color:#00a157}.skin-green-light .main-header li.user-header{background-color:#00a65a}.skin-green-light .content-header{background:transparent}.skin-green-light .wrapper,.skin-green-light .main-sidebar,.skin-green-light .left-side{background-color:#f9fafc}.skin-green-light .main-sidebar{border-right:1px solid #d2d6de}.skin-green-light .user-panel>.info,.skin-green-light .user-panel>.info>a{color:#444}.skin-green-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-green-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-green-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-green-light .sidebar-menu>li:hover>a,.skin-green-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-green-light .sidebar-menu>li.active{border-left-color:#00a65a}.skin-green-light .sidebar-menu>li.active>a{font-weight:600}.skin-green-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-green-light .sidebar a{color:#444}.skin-green-light .sidebar a:hover{text-decoration:none}.skin-green-light .sidebar-menu .treeview-menu>li>a{color:#777}.skin-green-light .sidebar-menu .treeview-menu>li.active>a,.skin-green-light .sidebar-menu .treeview-menu>li>a:hover{color:#000}.skin-green-light .sidebar-menu .treeview-menu>li.active>a{font-weight:600}.skin-green-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-green-light .sidebar-form input[type="text"],.skin-green-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px}.skin-green-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-green-light .sidebar-form input[type="text"]:focus,.skin-green-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-green-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-green-light .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}@media (min-width:768px){.skin-green-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}}
|
||||
134
mondumas/static/dist/AdminLTE-2.4.18/css/skins/skin-green.css
vendored
Normal file
@@ -0,0 +1,134 @@
|
||||
/*
|
||||
* Skin: Green
|
||||
* -----------
|
||||
*/
|
||||
.skin-green .main-header .navbar {
|
||||
background-color: #00a65a;
|
||||
}
|
||||
.skin-green .main-header .navbar .nav > li > a {
|
||||
color: #ffffff;
|
||||
}
|
||||
.skin-green .main-header .navbar .nav > li > a:hover,
|
||||
.skin-green .main-header .navbar .nav > li > a:active,
|
||||
.skin-green .main-header .navbar .nav > li > a:focus,
|
||||
.skin-green .main-header .navbar .nav .open > a,
|
||||
.skin-green .main-header .navbar .nav .open > a:hover,
|
||||
.skin-green .main-header .navbar .nav .open > a:focus,
|
||||
.skin-green .main-header .navbar .nav > .active > a {
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
color: #f6f6f6;
|
||||
}
|
||||
.skin-green .main-header .navbar .sidebar-toggle {
|
||||
color: #ffffff;
|
||||
}
|
||||
.skin-green .main-header .navbar .sidebar-toggle:hover {
|
||||
color: #f6f6f6;
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
.skin-green .main-header .navbar .sidebar-toggle {
|
||||
color: #fff;
|
||||
}
|
||||
.skin-green .main-header .navbar .sidebar-toggle:hover {
|
||||
background-color: #008d4c;
|
||||
}
|
||||
@media (max-width: 767px) {
|
||||
.skin-green .main-header .navbar .dropdown-menu li.divider {
|
||||
background-color: rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
.skin-green .main-header .navbar .dropdown-menu li a {
|
||||
color: #fff;
|
||||
}
|
||||
.skin-green .main-header .navbar .dropdown-menu li a:hover {
|
||||
background: #008d4c;
|
||||
}
|
||||
}
|
||||
.skin-green .main-header .logo {
|
||||
background-color: #008d4c;
|
||||
color: #ffffff;
|
||||
border-bottom: 0 solid transparent;
|
||||
}
|
||||
.skin-green .main-header .logo:hover {
|
||||
background-color: #008749;
|
||||
}
|
||||
.skin-green .main-header li.user-header {
|
||||
background-color: #00a65a;
|
||||
}
|
||||
.skin-green .content-header {
|
||||
background: transparent;
|
||||
}
|
||||
.skin-green .wrapper,
|
||||
.skin-green .main-sidebar,
|
||||
.skin-green .left-side {
|
||||
background-color: #222d32;
|
||||
}
|
||||
.skin-green .user-panel > .info,
|
||||
.skin-green .user-panel > .info > a {
|
||||
color: #fff;
|
||||
}
|
||||
.skin-green .sidebar-menu > li.header {
|
||||
color: #4b646f;
|
||||
background: #1a2226;
|
||||
}
|
||||
.skin-green .sidebar-menu > li > a {
|
||||
border-left: 3px solid transparent;
|
||||
}
|
||||
.skin-green .sidebar-menu > li:hover > a,
|
||||
.skin-green .sidebar-menu > li.active > a,
|
||||
.skin-green .sidebar-menu > li.menu-open > a {
|
||||
color: #ffffff;
|
||||
background: #1e282c;
|
||||
}
|
||||
.skin-green .sidebar-menu > li.active > a {
|
||||
border-left-color: #00a65a;
|
||||
}
|
||||
.skin-green .sidebar-menu > li > .treeview-menu {
|
||||
margin: 0 1px;
|
||||
background: #2c3b41;
|
||||
}
|
||||
.skin-green .sidebar a {
|
||||
color: #b8c7ce;
|
||||
}
|
||||
.skin-green .sidebar a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
.skin-green .sidebar-menu .treeview-menu > li > a {
|
||||
color: #8aa4af;
|
||||
}
|
||||
.skin-green .sidebar-menu .treeview-menu > li.active > a,
|
||||
.skin-green .sidebar-menu .treeview-menu > li > a:hover {
|
||||
color: #ffffff;
|
||||
}
|
||||
.skin-green .sidebar-form {
|
||||
border-radius: 3px;
|
||||
border: 1px solid #374850;
|
||||
margin: 10px 10px;
|
||||
}
|
||||
.skin-green .sidebar-form input[type="text"],
|
||||
.skin-green .sidebar-form .btn {
|
||||
box-shadow: none;
|
||||
background-color: #374850;
|
||||
border: 1px solid transparent;
|
||||
height: 35px;
|
||||
}
|
||||
.skin-green .sidebar-form input[type="text"] {
|
||||
color: #666;
|
||||
border-top-left-radius: 2px;
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
border-bottom-left-radius: 2px;
|
||||
}
|
||||
.skin-green .sidebar-form input[type="text"]:focus,
|
||||
.skin-green .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
background-color: #fff;
|
||||
color: #666;
|
||||
}
|
||||
.skin-green .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
border-left-color: #fff;
|
||||
}
|
||||
.skin-green .sidebar-form .btn {
|
||||
color: #999;
|
||||
border-top-left-radius: 0;
|
||||
border-top-right-radius: 2px;
|
||||
border-bottom-right-radius: 2px;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
1
mondumas/static/dist/AdminLTE-2.4.18/css/skins/skin-green.min.css
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.skin-green .main-header .navbar{background-color:#00a65a}.skin-green .main-header .navbar .nav>li>a{color:#fff}.skin-green .main-header .navbar .nav>li>a:hover,.skin-green .main-header .navbar .nav>li>a:active,.skin-green .main-header .navbar .nav>li>a:focus,.skin-green .main-header .navbar .nav .open>a,.skin-green .main-header .navbar .nav .open>a:hover,.skin-green .main-header .navbar .nav .open>a:focus,.skin-green .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-green .main-header .navbar .sidebar-toggle{color:#fff}.skin-green .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-green .main-header .navbar .sidebar-toggle{color:#fff}.skin-green .main-header .navbar .sidebar-toggle:hover{background-color:#008d4c}@media (max-width:767px){.skin-green .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-green .main-header .navbar .dropdown-menu li a{color:#fff}.skin-green .main-header .navbar .dropdown-menu li a:hover{background:#008d4c}}.skin-green .main-header .logo{background-color:#008d4c;color:#fff;border-bottom:0 solid transparent}.skin-green .main-header .logo:hover{background-color:#008749}.skin-green .main-header li.user-header{background-color:#00a65a}.skin-green .content-header{background:transparent}.skin-green .wrapper,.skin-green .main-sidebar,.skin-green .left-side{background-color:#222d32}.skin-green .user-panel>.info,.skin-green .user-panel>.info>a{color:#fff}.skin-green .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-green .sidebar-menu>li>a{border-left:3px solid transparent}.skin-green .sidebar-menu>li:hover>a,.skin-green .sidebar-menu>li.active>a,.skin-green .sidebar-menu>li.menu-open>a{color:#fff;background:#1e282c}.skin-green .sidebar-menu>li.active>a{border-left-color:#00a65a}.skin-green .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-green .sidebar a{color:#b8c7ce}.skin-green .sidebar a:hover{text-decoration:none}.skin-green .sidebar-menu .treeview-menu>li>a{color:#8aa4af}.skin-green .sidebar-menu .treeview-menu>li.active>a,.skin-green .sidebar-menu .treeview-menu>li>a:hover{color:#fff}.skin-green .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-green .sidebar-form input[type="text"],.skin-green .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px}.skin-green .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-green .sidebar-form input[type="text"]:focus,.skin-green .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-green .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-green .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}
|
||||
152
mondumas/static/dist/AdminLTE-2.4.18/css/skins/skin-purple-light.css
vendored
Normal file
@@ -0,0 +1,152 @@
|
||||
/*
|
||||
* Skin: Purple
|
||||
* ------------
|
||||
*/
|
||||
.skin-purple-light .main-header .navbar {
|
||||
background-color: #605ca8;
|
||||
}
|
||||
.skin-purple-light .main-header .navbar .nav > li > a {
|
||||
color: #ffffff;
|
||||
}
|
||||
.skin-purple-light .main-header .navbar .nav > li > a:hover,
|
||||
.skin-purple-light .main-header .navbar .nav > li > a:active,
|
||||
.skin-purple-light .main-header .navbar .nav > li > a:focus,
|
||||
.skin-purple-light .main-header .navbar .nav .open > a,
|
||||
.skin-purple-light .main-header .navbar .nav .open > a:hover,
|
||||
.skin-purple-light .main-header .navbar .nav .open > a:focus,
|
||||
.skin-purple-light .main-header .navbar .nav > .active > a {
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
color: #f6f6f6;
|
||||
}
|
||||
.skin-purple-light .main-header .navbar .sidebar-toggle {
|
||||
color: #ffffff;
|
||||
}
|
||||
.skin-purple-light .main-header .navbar .sidebar-toggle:hover {
|
||||
color: #f6f6f6;
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
.skin-purple-light .main-header .navbar .sidebar-toggle {
|
||||
color: #fff;
|
||||
}
|
||||
.skin-purple-light .main-header .navbar .sidebar-toggle:hover {
|
||||
background-color: #555299;
|
||||
}
|
||||
@media (max-width: 767px) {
|
||||
.skin-purple-light .main-header .navbar .dropdown-menu li.divider {
|
||||
background-color: rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
.skin-purple-light .main-header .navbar .dropdown-menu li a {
|
||||
color: #fff;
|
||||
}
|
||||
.skin-purple-light .main-header .navbar .dropdown-menu li a:hover {
|
||||
background: #555299;
|
||||
}
|
||||
}
|
||||
.skin-purple-light .main-header .logo {
|
||||
background-color: #605ca8;
|
||||
color: #ffffff;
|
||||
border-bottom: 0 solid transparent;
|
||||
}
|
||||
.skin-purple-light .main-header .logo:hover {
|
||||
background-color: #5d59a6;
|
||||
}
|
||||
.skin-purple-light .main-header li.user-header {
|
||||
background-color: #605ca8;
|
||||
}
|
||||
.skin-purple-light .content-header {
|
||||
background: transparent;
|
||||
}
|
||||
.skin-purple-light .wrapper,
|
||||
.skin-purple-light .main-sidebar,
|
||||
.skin-purple-light .left-side {
|
||||
background-color: #f9fafc;
|
||||
}
|
||||
.skin-purple-light .main-sidebar {
|
||||
border-right: 1px solid #d2d6de;
|
||||
}
|
||||
.skin-purple-light .user-panel > .info,
|
||||
.skin-purple-light .user-panel > .info > a {
|
||||
color: #444444;
|
||||
}
|
||||
.skin-purple-light .sidebar-menu > li {
|
||||
-webkit-transition: border-left-color 0.3s ease;
|
||||
-o-transition: border-left-color 0.3s ease;
|
||||
transition: border-left-color 0.3s ease;
|
||||
}
|
||||
.skin-purple-light .sidebar-menu > li.header {
|
||||
color: #848484;
|
||||
background: #f9fafc;
|
||||
}
|
||||
.skin-purple-light .sidebar-menu > li > a {
|
||||
border-left: 3px solid transparent;
|
||||
font-weight: 600;
|
||||
}
|
||||
.skin-purple-light .sidebar-menu > li:hover > a,
|
||||
.skin-purple-light .sidebar-menu > li.active > a {
|
||||
color: #000000;
|
||||
background: #f4f4f5;
|
||||
}
|
||||
.skin-purple-light .sidebar-menu > li.active {
|
||||
border-left-color: #605ca8;
|
||||
}
|
||||
.skin-purple-light .sidebar-menu > li.active > a {
|
||||
font-weight: 600;
|
||||
}
|
||||
.skin-purple-light .sidebar-menu > li > .treeview-menu {
|
||||
background: #f4f4f5;
|
||||
}
|
||||
.skin-purple-light .sidebar a {
|
||||
color: #444444;
|
||||
}
|
||||
.skin-purple-light .sidebar a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
.skin-purple-light .sidebar-menu .treeview-menu > li > a {
|
||||
color: #777777;
|
||||
}
|
||||
.skin-purple-light .sidebar-menu .treeview-menu > li.active > a,
|
||||
.skin-purple-light .sidebar-menu .treeview-menu > li > a:hover {
|
||||
color: #000000;
|
||||
}
|
||||
.skin-purple-light .sidebar-menu .treeview-menu > li.active > a {
|
||||
font-weight: 600;
|
||||
}
|
||||
.skin-purple-light .sidebar-form {
|
||||
border-radius: 3px;
|
||||
border: 1px solid #d2d6de;
|
||||
margin: 10px 10px;
|
||||
}
|
||||
.skin-purple-light .sidebar-form input[type="text"],
|
||||
.skin-purple-light .sidebar-form .btn {
|
||||
box-shadow: none;
|
||||
background-color: #fff;
|
||||
border: 1px solid transparent;
|
||||
height: 35px;
|
||||
}
|
||||
.skin-purple-light .sidebar-form input[type="text"] {
|
||||
color: #666;
|
||||
border-top-left-radius: 2px;
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
border-bottom-left-radius: 2px;
|
||||
}
|
||||
.skin-purple-light .sidebar-form input[type="text"]:focus,
|
||||
.skin-purple-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
background-color: #fff;
|
||||
color: #666;
|
||||
}
|
||||
.skin-purple-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
border-left-color: #fff;
|
||||
}
|
||||
.skin-purple-light .sidebar-form .btn {
|
||||
color: #999;
|
||||
border-top-left-radius: 0;
|
||||
border-top-right-radius: 2px;
|
||||
border-bottom-right-radius: 2px;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
@media (min-width: 768px) {
|
||||
.skin-purple-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu {
|
||||
border-left: 1px solid #d2d6de;
|
||||
}
|
||||
}
|
||||
1
mondumas/static/dist/AdminLTE-2.4.18/css/skins/skin-purple-light.min.css
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.skin-purple-light .main-header .navbar{background-color:#605ca8}.skin-purple-light .main-header .navbar .nav>li>a{color:#fff}.skin-purple-light .main-header .navbar .nav>li>a:hover,.skin-purple-light .main-header .navbar .nav>li>a:active,.skin-purple-light .main-header .navbar .nav>li>a:focus,.skin-purple-light .main-header .navbar .nav .open>a,.skin-purple-light .main-header .navbar .nav .open>a:hover,.skin-purple-light .main-header .navbar .nav .open>a:focus,.skin-purple-light .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-purple-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-purple-light .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-purple-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-purple-light .main-header .navbar .sidebar-toggle:hover{background-color:#555299}@media (max-width:767px){.skin-purple-light .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-purple-light .main-header .navbar .dropdown-menu li a{color:#fff}.skin-purple-light .main-header .navbar .dropdown-menu li a:hover{background:#555299}}.skin-purple-light .main-header .logo{background-color:#605ca8;color:#fff;border-bottom:0 solid transparent}.skin-purple-light .main-header .logo:hover{background-color:#5d59a6}.skin-purple-light .main-header li.user-header{background-color:#605ca8}.skin-purple-light .content-header{background:transparent}.skin-purple-light .wrapper,.skin-purple-light .main-sidebar,.skin-purple-light .left-side{background-color:#f9fafc}.skin-purple-light .main-sidebar{border-right:1px solid #d2d6de}.skin-purple-light .user-panel>.info,.skin-purple-light .user-panel>.info>a{color:#444}.skin-purple-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-purple-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-purple-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-purple-light .sidebar-menu>li:hover>a,.skin-purple-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-purple-light .sidebar-menu>li.active{border-left-color:#605ca8}.skin-purple-light .sidebar-menu>li.active>a{font-weight:600}.skin-purple-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-purple-light .sidebar a{color:#444}.skin-purple-light .sidebar a:hover{text-decoration:none}.skin-purple-light .sidebar-menu .treeview-menu>li>a{color:#777}.skin-purple-light .sidebar-menu .treeview-menu>li.active>a,.skin-purple-light .sidebar-menu .treeview-menu>li>a:hover{color:#000}.skin-purple-light .sidebar-menu .treeview-menu>li.active>a{font-weight:600}.skin-purple-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-purple-light .sidebar-form input[type="text"],.skin-purple-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px}.skin-purple-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-purple-light .sidebar-form input[type="text"]:focus,.skin-purple-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-purple-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-purple-light .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}@media (min-width:768px){.skin-purple-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}}
|
||||
134
mondumas/static/dist/AdminLTE-2.4.18/css/skins/skin-purple.css
vendored
Normal file
@@ -0,0 +1,134 @@
|
||||
/*
|
||||
* Skin: Purple
|
||||
* ------------
|
||||
*/
|
||||
.skin-purple .main-header .navbar {
|
||||
background-color: #605ca8;
|
||||
}
|
||||
.skin-purple .main-header .navbar .nav > li > a {
|
||||
color: #ffffff;
|
||||
}
|
||||
.skin-purple .main-header .navbar .nav > li > a:hover,
|
||||
.skin-purple .main-header .navbar .nav > li > a:active,
|
||||
.skin-purple .main-header .navbar .nav > li > a:focus,
|
||||
.skin-purple .main-header .navbar .nav .open > a,
|
||||
.skin-purple .main-header .navbar .nav .open > a:hover,
|
||||
.skin-purple .main-header .navbar .nav .open > a:focus,
|
||||
.skin-purple .main-header .navbar .nav > .active > a {
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
color: #f6f6f6;
|
||||
}
|
||||
.skin-purple .main-header .navbar .sidebar-toggle {
|
||||
color: #ffffff;
|
||||
}
|
||||
.skin-purple .main-header .navbar .sidebar-toggle:hover {
|
||||
color: #f6f6f6;
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
.skin-purple .main-header .navbar .sidebar-toggle {
|
||||
color: #fff;
|
||||
}
|
||||
.skin-purple .main-header .navbar .sidebar-toggle:hover {
|
||||
background-color: #555299;
|
||||
}
|
||||
@media (max-width: 767px) {
|
||||
.skin-purple .main-header .navbar .dropdown-menu li.divider {
|
||||
background-color: rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
.skin-purple .main-header .navbar .dropdown-menu li a {
|
||||
color: #fff;
|
||||
}
|
||||
.skin-purple .main-header .navbar .dropdown-menu li a:hover {
|
||||
background: #555299;
|
||||
}
|
||||
}
|
||||
.skin-purple .main-header .logo {
|
||||
background-color: #555299;
|
||||
color: #ffffff;
|
||||
border-bottom: 0 solid transparent;
|
||||
}
|
||||
.skin-purple .main-header .logo:hover {
|
||||
background-color: #545096;
|
||||
}
|
||||
.skin-purple .main-header li.user-header {
|
||||
background-color: #605ca8;
|
||||
}
|
||||
.skin-purple .content-header {
|
||||
background: transparent;
|
||||
}
|
||||
.skin-purple .wrapper,
|
||||
.skin-purple .main-sidebar,
|
||||
.skin-purple .left-side {
|
||||
background-color: #222d32;
|
||||
}
|
||||
.skin-purple .user-panel > .info,
|
||||
.skin-purple .user-panel > .info > a {
|
||||
color: #fff;
|
||||
}
|
||||
.skin-purple .sidebar-menu > li.header {
|
||||
color: #4b646f;
|
||||
background: #1a2226;
|
||||
}
|
||||
.skin-purple .sidebar-menu > li > a {
|
||||
border-left: 3px solid transparent;
|
||||
}
|
||||
.skin-purple .sidebar-menu > li:hover > a,
|
||||
.skin-purple .sidebar-menu > li.active > a,
|
||||
.skin-purple .sidebar-menu > li.menu-open > a {
|
||||
color: #ffffff;
|
||||
background: #1e282c;
|
||||
}
|
||||
.skin-purple .sidebar-menu > li.active > a {
|
||||
border-left-color: #605ca8;
|
||||
}
|
||||
.skin-purple .sidebar-menu > li > .treeview-menu {
|
||||
margin: 0 1px;
|
||||
background: #2c3b41;
|
||||
}
|
||||
.skin-purple .sidebar a {
|
||||
color: #b8c7ce;
|
||||
}
|
||||
.skin-purple .sidebar a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
.skin-purple .sidebar-menu .treeview-menu > li > a {
|
||||
color: #8aa4af;
|
||||
}
|
||||
.skin-purple .sidebar-menu .treeview-menu > li.active > a,
|
||||
.skin-purple .sidebar-menu .treeview-menu > li > a:hover {
|
||||
color: #ffffff;
|
||||
}
|
||||
.skin-purple .sidebar-form {
|
||||
border-radius: 3px;
|
||||
border: 1px solid #374850;
|
||||
margin: 10px 10px;
|
||||
}
|
||||
.skin-purple .sidebar-form input[type="text"],
|
||||
.skin-purple .sidebar-form .btn {
|
||||
box-shadow: none;
|
||||
background-color: #374850;
|
||||
border: 1px solid transparent;
|
||||
height: 35px;
|
||||
}
|
||||
.skin-purple .sidebar-form input[type="text"] {
|
||||
color: #666;
|
||||
border-top-left-radius: 2px;
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
border-bottom-left-radius: 2px;
|
||||
}
|
||||
.skin-purple .sidebar-form input[type="text"]:focus,
|
||||
.skin-purple .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
background-color: #fff;
|
||||
color: #666;
|
||||
}
|
||||
.skin-purple .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
border-left-color: #fff;
|
||||
}
|
||||
.skin-purple .sidebar-form .btn {
|
||||
color: #999;
|
||||
border-top-left-radius: 0;
|
||||
border-top-right-radius: 2px;
|
||||
border-bottom-right-radius: 2px;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
1
mondumas/static/dist/AdminLTE-2.4.18/css/skins/skin-purple.min.css
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.skin-purple .main-header .navbar{background-color:#605ca8}.skin-purple .main-header .navbar .nav>li>a{color:#fff}.skin-purple .main-header .navbar .nav>li>a:hover,.skin-purple .main-header .navbar .nav>li>a:active,.skin-purple .main-header .navbar .nav>li>a:focus,.skin-purple .main-header .navbar .nav .open>a,.skin-purple .main-header .navbar .nav .open>a:hover,.skin-purple .main-header .navbar .nav .open>a:focus,.skin-purple .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-purple .main-header .navbar .sidebar-toggle{color:#fff}.skin-purple .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-purple .main-header .navbar .sidebar-toggle{color:#fff}.skin-purple .main-header .navbar .sidebar-toggle:hover{background-color:#555299}@media (max-width:767px){.skin-purple .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-purple .main-header .navbar .dropdown-menu li a{color:#fff}.skin-purple .main-header .navbar .dropdown-menu li a:hover{background:#555299}}.skin-purple .main-header .logo{background-color:#555299;color:#fff;border-bottom:0 solid transparent}.skin-purple .main-header .logo:hover{background-color:#545096}.skin-purple .main-header li.user-header{background-color:#605ca8}.skin-purple .content-header{background:transparent}.skin-purple .wrapper,.skin-purple .main-sidebar,.skin-purple .left-side{background-color:#222d32}.skin-purple .user-panel>.info,.skin-purple .user-panel>.info>a{color:#fff}.skin-purple .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-purple .sidebar-menu>li>a{border-left:3px solid transparent}.skin-purple .sidebar-menu>li:hover>a,.skin-purple .sidebar-menu>li.active>a,.skin-purple .sidebar-menu>li.menu-open>a{color:#fff;background:#1e282c}.skin-purple .sidebar-menu>li.active>a{border-left-color:#605ca8}.skin-purple .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-purple .sidebar a{color:#b8c7ce}.skin-purple .sidebar a:hover{text-decoration:none}.skin-purple .sidebar-menu .treeview-menu>li>a{color:#8aa4af}.skin-purple .sidebar-menu .treeview-menu>li.active>a,.skin-purple .sidebar-menu .treeview-menu>li>a:hover{color:#fff}.skin-purple .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-purple .sidebar-form input[type="text"],.skin-purple .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px}.skin-purple .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-purple .sidebar-form input[type="text"]:focus,.skin-purple .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-purple .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-purple .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}
|
||||
152
mondumas/static/dist/AdminLTE-2.4.18/css/skins/skin-red-light.css
vendored
Normal file
@@ -0,0 +1,152 @@
|
||||
/*
|
||||
* Skin: Red
|
||||
* ---------
|
||||
*/
|
||||
.skin-red-light .main-header .navbar {
|
||||
background-color: #dd4b39;
|
||||
}
|
||||
.skin-red-light .main-header .navbar .nav > li > a {
|
||||
color: #ffffff;
|
||||
}
|
||||
.skin-red-light .main-header .navbar .nav > li > a:hover,
|
||||
.skin-red-light .main-header .navbar .nav > li > a:active,
|
||||
.skin-red-light .main-header .navbar .nav > li > a:focus,
|
||||
.skin-red-light .main-header .navbar .nav .open > a,
|
||||
.skin-red-light .main-header .navbar .nav .open > a:hover,
|
||||
.skin-red-light .main-header .navbar .nav .open > a:focus,
|
||||
.skin-red-light .main-header .navbar .nav > .active > a {
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
color: #f6f6f6;
|
||||
}
|
||||
.skin-red-light .main-header .navbar .sidebar-toggle {
|
||||
color: #ffffff;
|
||||
}
|
||||
.skin-red-light .main-header .navbar .sidebar-toggle:hover {
|
||||
color: #f6f6f6;
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
.skin-red-light .main-header .navbar .sidebar-toggle {
|
||||
color: #fff;
|
||||
}
|
||||
.skin-red-light .main-header .navbar .sidebar-toggle:hover {
|
||||
background-color: #d73925;
|
||||
}
|
||||
@media (max-width: 767px) {
|
||||
.skin-red-light .main-header .navbar .dropdown-menu li.divider {
|
||||
background-color: rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
.skin-red-light .main-header .navbar .dropdown-menu li a {
|
||||
color: #fff;
|
||||
}
|
||||
.skin-red-light .main-header .navbar .dropdown-menu li a:hover {
|
||||
background: #d73925;
|
||||
}
|
||||
}
|
||||
.skin-red-light .main-header .logo {
|
||||
background-color: #dd4b39;
|
||||
color: #ffffff;
|
||||
border-bottom: 0 solid transparent;
|
||||
}
|
||||
.skin-red-light .main-header .logo:hover {
|
||||
background-color: #dc4735;
|
||||
}
|
||||
.skin-red-light .main-header li.user-header {
|
||||
background-color: #dd4b39;
|
||||
}
|
||||
.skin-red-light .content-header {
|
||||
background: transparent;
|
||||
}
|
||||
.skin-red-light .wrapper,
|
||||
.skin-red-light .main-sidebar,
|
||||
.skin-red-light .left-side {
|
||||
background-color: #f9fafc;
|
||||
}
|
||||
.skin-red-light .main-sidebar {
|
||||
border-right: 1px solid #d2d6de;
|
||||
}
|
||||
.skin-red-light .user-panel > .info,
|
||||
.skin-red-light .user-panel > .info > a {
|
||||
color: #444444;
|
||||
}
|
||||
.skin-red-light .sidebar-menu > li {
|
||||
-webkit-transition: border-left-color 0.3s ease;
|
||||
-o-transition: border-left-color 0.3s ease;
|
||||
transition: border-left-color 0.3s ease;
|
||||
}
|
||||
.skin-red-light .sidebar-menu > li.header {
|
||||
color: #848484;
|
||||
background: #f9fafc;
|
||||
}
|
||||
.skin-red-light .sidebar-menu > li > a {
|
||||
border-left: 3px solid transparent;
|
||||
font-weight: 600;
|
||||
}
|
||||
.skin-red-light .sidebar-menu > li:hover > a,
|
||||
.skin-red-light .sidebar-menu > li.active > a {
|
||||
color: #000000;
|
||||
background: #f4f4f5;
|
||||
}
|
||||
.skin-red-light .sidebar-menu > li.active {
|
||||
border-left-color: #dd4b39;
|
||||
}
|
||||
.skin-red-light .sidebar-menu > li.active > a {
|
||||
font-weight: 600;
|
||||
}
|
||||
.skin-red-light .sidebar-menu > li > .treeview-menu {
|
||||
background: #f4f4f5;
|
||||
}
|
||||
.skin-red-light .sidebar a {
|
||||
color: #444444;
|
||||
}
|
||||
.skin-red-light .sidebar a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
.skin-red-light .sidebar-menu .treeview-menu > li > a {
|
||||
color: #777777;
|
||||
}
|
||||
.skin-red-light .sidebar-menu .treeview-menu > li.active > a,
|
||||
.skin-red-light .sidebar-menu .treeview-menu > li > a:hover {
|
||||
color: #000000;
|
||||
}
|
||||
.skin-red-light .sidebar-menu .treeview-menu > li.active > a {
|
||||
font-weight: 600;
|
||||
}
|
||||
.skin-red-light .sidebar-form {
|
||||
border-radius: 3px;
|
||||
border: 1px solid #d2d6de;
|
||||
margin: 10px 10px;
|
||||
}
|
||||
.skin-red-light .sidebar-form input[type="text"],
|
||||
.skin-red-light .sidebar-form .btn {
|
||||
box-shadow: none;
|
||||
background-color: #fff;
|
||||
border: 1px solid transparent;
|
||||
height: 35px;
|
||||
}
|
||||
.skin-red-light .sidebar-form input[type="text"] {
|
||||
color: #666;
|
||||
border-top-left-radius: 2px;
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
border-bottom-left-radius: 2px;
|
||||
}
|
||||
.skin-red-light .sidebar-form input[type="text"]:focus,
|
||||
.skin-red-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
background-color: #fff;
|
||||
color: #666;
|
||||
}
|
||||
.skin-red-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
border-left-color: #fff;
|
||||
}
|
||||
.skin-red-light .sidebar-form .btn {
|
||||
color: #999;
|
||||
border-top-left-radius: 0;
|
||||
border-top-right-radius: 2px;
|
||||
border-bottom-right-radius: 2px;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
@media (min-width: 768px) {
|
||||
.skin-red-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu {
|
||||
border-left: 1px solid #d2d6de;
|
||||
}
|
||||
}
|
||||
1
mondumas/static/dist/AdminLTE-2.4.18/css/skins/skin-red-light.min.css
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.skin-red-light .main-header .navbar{background-color:#dd4b39}.skin-red-light .main-header .navbar .nav>li>a{color:#fff}.skin-red-light .main-header .navbar .nav>li>a:hover,.skin-red-light .main-header .navbar .nav>li>a:active,.skin-red-light .main-header .navbar .nav>li>a:focus,.skin-red-light .main-header .navbar .nav .open>a,.skin-red-light .main-header .navbar .nav .open>a:hover,.skin-red-light .main-header .navbar .nav .open>a:focus,.skin-red-light .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-red-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-red-light .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-red-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-red-light .main-header .navbar .sidebar-toggle:hover{background-color:#d73925}@media (max-width:767px){.skin-red-light .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-red-light .main-header .navbar .dropdown-menu li a{color:#fff}.skin-red-light .main-header .navbar .dropdown-menu li a:hover{background:#d73925}}.skin-red-light .main-header .logo{background-color:#dd4b39;color:#fff;border-bottom:0 solid transparent}.skin-red-light .main-header .logo:hover{background-color:#dc4735}.skin-red-light .main-header li.user-header{background-color:#dd4b39}.skin-red-light .content-header{background:transparent}.skin-red-light .wrapper,.skin-red-light .main-sidebar,.skin-red-light .left-side{background-color:#f9fafc}.skin-red-light .main-sidebar{border-right:1px solid #d2d6de}.skin-red-light .user-panel>.info,.skin-red-light .user-panel>.info>a{color:#444}.skin-red-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-red-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-red-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-red-light .sidebar-menu>li:hover>a,.skin-red-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-red-light .sidebar-menu>li.active{border-left-color:#dd4b39}.skin-red-light .sidebar-menu>li.active>a{font-weight:600}.skin-red-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-red-light .sidebar a{color:#444}.skin-red-light .sidebar a:hover{text-decoration:none}.skin-red-light .sidebar-menu .treeview-menu>li>a{color:#777}.skin-red-light .sidebar-menu .treeview-menu>li.active>a,.skin-red-light .sidebar-menu .treeview-menu>li>a:hover{color:#000}.skin-red-light .sidebar-menu .treeview-menu>li.active>a{font-weight:600}.skin-red-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-red-light .sidebar-form input[type="text"],.skin-red-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px}.skin-red-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-red-light .sidebar-form input[type="text"]:focus,.skin-red-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-red-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-red-light .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}@media (min-width:768px){.skin-red-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}}
|
||||
134
mondumas/static/dist/AdminLTE-2.4.18/css/skins/skin-red.css
vendored
Normal file
@@ -0,0 +1,134 @@
|
||||
/*
|
||||
* Skin: Red
|
||||
* ---------
|
||||
*/
|
||||
.skin-red .main-header .navbar {
|
||||
background-color: #dd4b39;
|
||||
}
|
||||
.skin-red .main-header .navbar .nav > li > a {
|
||||
color: #ffffff;
|
||||
}
|
||||
.skin-red .main-header .navbar .nav > li > a:hover,
|
||||
.skin-red .main-header .navbar .nav > li > a:active,
|
||||
.skin-red .main-header .navbar .nav > li > a:focus,
|
||||
.skin-red .main-header .navbar .nav .open > a,
|
||||
.skin-red .main-header .navbar .nav .open > a:hover,
|
||||
.skin-red .main-header .navbar .nav .open > a:focus,
|
||||
.skin-red .main-header .navbar .nav > .active > a {
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
color: #f6f6f6;
|
||||
}
|
||||
.skin-red .main-header .navbar .sidebar-toggle {
|
||||
color: #ffffff;
|
||||
}
|
||||
.skin-red .main-header .navbar .sidebar-toggle:hover {
|
||||
color: #f6f6f6;
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
.skin-red .main-header .navbar .sidebar-toggle {
|
||||
color: #fff;
|
||||
}
|
||||
.skin-red .main-header .navbar .sidebar-toggle:hover {
|
||||
background-color: #d73925;
|
||||
}
|
||||
@media (max-width: 767px) {
|
||||
.skin-red .main-header .navbar .dropdown-menu li.divider {
|
||||
background-color: rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
.skin-red .main-header .navbar .dropdown-menu li a {
|
||||
color: #fff;
|
||||
}
|
||||
.skin-red .main-header .navbar .dropdown-menu li a:hover {
|
||||
background: #d73925;
|
||||
}
|
||||
}
|
||||
.skin-red .main-header .logo {
|
||||
background-color: #d73925;
|
||||
color: #ffffff;
|
||||
border-bottom: 0 solid transparent;
|
||||
}
|
||||
.skin-red .main-header .logo:hover {
|
||||
background-color: #d33724;
|
||||
}
|
||||
.skin-red .main-header li.user-header {
|
||||
background-color: #dd4b39;
|
||||
}
|
||||
.skin-red .content-header {
|
||||
background: transparent;
|
||||
}
|
||||
.skin-red .wrapper,
|
||||
.skin-red .main-sidebar,
|
||||
.skin-red .left-side {
|
||||
background-color: #222d32;
|
||||
}
|
||||
.skin-red .user-panel > .info,
|
||||
.skin-red .user-panel > .info > a {
|
||||
color: #fff;
|
||||
}
|
||||
.skin-red .sidebar-menu > li.header {
|
||||
color: #4b646f;
|
||||
background: #1a2226;
|
||||
}
|
||||
.skin-red .sidebar-menu > li > a {
|
||||
border-left: 3px solid transparent;
|
||||
}
|
||||
.skin-red .sidebar-menu > li:hover > a,
|
||||
.skin-red .sidebar-menu > li.active > a,
|
||||
.skin-red .sidebar-menu > li.menu-open > a {
|
||||
color: #ffffff;
|
||||
background: #1e282c;
|
||||
}
|
||||
.skin-red .sidebar-menu > li.active > a {
|
||||
border-left-color: #dd4b39;
|
||||
}
|
||||
.skin-red .sidebar-menu > li > .treeview-menu {
|
||||
margin: 0 1px;
|
||||
background: #2c3b41;
|
||||
}
|
||||
.skin-red .sidebar a {
|
||||
color: #b8c7ce;
|
||||
}
|
||||
.skin-red .sidebar a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
.skin-red .sidebar-menu .treeview-menu > li > a {
|
||||
color: #8aa4af;
|
||||
}
|
||||
.skin-red .sidebar-menu .treeview-menu > li.active > a,
|
||||
.skin-red .sidebar-menu .treeview-menu > li > a:hover {
|
||||
color: #ffffff;
|
||||
}
|
||||
.skin-red .sidebar-form {
|
||||
border-radius: 3px;
|
||||
border: 1px solid #374850;
|
||||
margin: 10px 10px;
|
||||
}
|
||||
.skin-red .sidebar-form input[type="text"],
|
||||
.skin-red .sidebar-form .btn {
|
||||
box-shadow: none;
|
||||
background-color: #374850;
|
||||
border: 1px solid transparent;
|
||||
height: 35px;
|
||||
}
|
||||
.skin-red .sidebar-form input[type="text"] {
|
||||
color: #666;
|
||||
border-top-left-radius: 2px;
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
border-bottom-left-radius: 2px;
|
||||
}
|
||||
.skin-red .sidebar-form input[type="text"]:focus,
|
||||
.skin-red .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
background-color: #fff;
|
||||
color: #666;
|
||||
}
|
||||
.skin-red .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
border-left-color: #fff;
|
||||
}
|
||||
.skin-red .sidebar-form .btn {
|
||||
color: #999;
|
||||
border-top-left-radius: 0;
|
||||
border-top-right-radius: 2px;
|
||||
border-bottom-right-radius: 2px;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
1
mondumas/static/dist/AdminLTE-2.4.18/css/skins/skin-red.min.css
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.skin-red .main-header .navbar{background-color:#dd4b39}.skin-red .main-header .navbar .nav>li>a{color:#fff}.skin-red .main-header .navbar .nav>li>a:hover,.skin-red .main-header .navbar .nav>li>a:active,.skin-red .main-header .navbar .nav>li>a:focus,.skin-red .main-header .navbar .nav .open>a,.skin-red .main-header .navbar .nav .open>a:hover,.skin-red .main-header .navbar .nav .open>a:focus,.skin-red .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-red .main-header .navbar .sidebar-toggle{color:#fff}.skin-red .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-red .main-header .navbar .sidebar-toggle{color:#fff}.skin-red .main-header .navbar .sidebar-toggle:hover{background-color:#d73925}@media (max-width:767px){.skin-red .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-red .main-header .navbar .dropdown-menu li a{color:#fff}.skin-red .main-header .navbar .dropdown-menu li a:hover{background:#d73925}}.skin-red .main-header .logo{background-color:#d73925;color:#fff;border-bottom:0 solid transparent}.skin-red .main-header .logo:hover{background-color:#d33724}.skin-red .main-header li.user-header{background-color:#dd4b39}.skin-red .content-header{background:transparent}.skin-red .wrapper,.skin-red .main-sidebar,.skin-red .left-side{background-color:#222d32}.skin-red .user-panel>.info,.skin-red .user-panel>.info>a{color:#fff}.skin-red .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-red .sidebar-menu>li>a{border-left:3px solid transparent}.skin-red .sidebar-menu>li:hover>a,.skin-red .sidebar-menu>li.active>a,.skin-red .sidebar-menu>li.menu-open>a{color:#fff;background:#1e282c}.skin-red .sidebar-menu>li.active>a{border-left-color:#dd4b39}.skin-red .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-red .sidebar a{color:#b8c7ce}.skin-red .sidebar a:hover{text-decoration:none}.skin-red .sidebar-menu .treeview-menu>li>a{color:#8aa4af}.skin-red .sidebar-menu .treeview-menu>li.active>a,.skin-red .sidebar-menu .treeview-menu>li>a:hover{color:#fff}.skin-red .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-red .sidebar-form input[type="text"],.skin-red .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px}.skin-red .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-red .sidebar-form input[type="text"]:focus,.skin-red .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-red .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-red .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}
|
||||
152
mondumas/static/dist/AdminLTE-2.4.18/css/skins/skin-yellow-light.css
vendored
Normal file
@@ -0,0 +1,152 @@
|
||||
/*
|
||||
* Skin: Yellow
|
||||
* ------------
|
||||
*/
|
||||
.skin-yellow-light .main-header .navbar {
|
||||
background-color: #f39c12;
|
||||
}
|
||||
.skin-yellow-light .main-header .navbar .nav > li > a {
|
||||
color: #ffffff;
|
||||
}
|
||||
.skin-yellow-light .main-header .navbar .nav > li > a:hover,
|
||||
.skin-yellow-light .main-header .navbar .nav > li > a:active,
|
||||
.skin-yellow-light .main-header .navbar .nav > li > a:focus,
|
||||
.skin-yellow-light .main-header .navbar .nav .open > a,
|
||||
.skin-yellow-light .main-header .navbar .nav .open > a:hover,
|
||||
.skin-yellow-light .main-header .navbar .nav .open > a:focus,
|
||||
.skin-yellow-light .main-header .navbar .nav > .active > a {
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
color: #f6f6f6;
|
||||
}
|
||||
.skin-yellow-light .main-header .navbar .sidebar-toggle {
|
||||
color: #ffffff;
|
||||
}
|
||||
.skin-yellow-light .main-header .navbar .sidebar-toggle:hover {
|
||||
color: #f6f6f6;
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
.skin-yellow-light .main-header .navbar .sidebar-toggle {
|
||||
color: #fff;
|
||||
}
|
||||
.skin-yellow-light .main-header .navbar .sidebar-toggle:hover {
|
||||
background-color: #e08e0b;
|
||||
}
|
||||
@media (max-width: 767px) {
|
||||
.skin-yellow-light .main-header .navbar .dropdown-menu li.divider {
|
||||
background-color: rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
.skin-yellow-light .main-header .navbar .dropdown-menu li a {
|
||||
color: #fff;
|
||||
}
|
||||
.skin-yellow-light .main-header .navbar .dropdown-menu li a:hover {
|
||||
background: #e08e0b;
|
||||
}
|
||||
}
|
||||
.skin-yellow-light .main-header .logo {
|
||||
background-color: #f39c12;
|
||||
color: #ffffff;
|
||||
border-bottom: 0 solid transparent;
|
||||
}
|
||||
.skin-yellow-light .main-header .logo:hover {
|
||||
background-color: #f39a0d;
|
||||
}
|
||||
.skin-yellow-light .main-header li.user-header {
|
||||
background-color: #f39c12;
|
||||
}
|
||||
.skin-yellow-light .content-header {
|
||||
background: transparent;
|
||||
}
|
||||
.skin-yellow-light .wrapper,
|
||||
.skin-yellow-light .main-sidebar,
|
||||
.skin-yellow-light .left-side {
|
||||
background-color: #f9fafc;
|
||||
}
|
||||
.skin-yellow-light .main-sidebar {
|
||||
border-right: 1px solid #d2d6de;
|
||||
}
|
||||
.skin-yellow-light .user-panel > .info,
|
||||
.skin-yellow-light .user-panel > .info > a {
|
||||
color: #444444;
|
||||
}
|
||||
.skin-yellow-light .sidebar-menu > li {
|
||||
-webkit-transition: border-left-color 0.3s ease;
|
||||
-o-transition: border-left-color 0.3s ease;
|
||||
transition: border-left-color 0.3s ease;
|
||||
}
|
||||
.skin-yellow-light .sidebar-menu > li.header {
|
||||
color: #848484;
|
||||
background: #f9fafc;
|
||||
}
|
||||
.skin-yellow-light .sidebar-menu > li > a {
|
||||
border-left: 3px solid transparent;
|
||||
font-weight: 600;
|
||||
}
|
||||
.skin-yellow-light .sidebar-menu > li:hover > a,
|
||||
.skin-yellow-light .sidebar-menu > li.active > a {
|
||||
color: #000000;
|
||||
background: #f4f4f5;
|
||||
}
|
||||
.skin-yellow-light .sidebar-menu > li.active {
|
||||
border-left-color: #f39c12;
|
||||
}
|
||||
.skin-yellow-light .sidebar-menu > li.active > a {
|
||||
font-weight: 600;
|
||||
}
|
||||
.skin-yellow-light .sidebar-menu > li > .treeview-menu {
|
||||
background: #f4f4f5;
|
||||
}
|
||||
.skin-yellow-light .sidebar a {
|
||||
color: #444444;
|
||||
}
|
||||
.skin-yellow-light .sidebar a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
.skin-yellow-light .sidebar-menu .treeview-menu > li > a {
|
||||
color: #777777;
|
||||
}
|
||||
.skin-yellow-light .sidebar-menu .treeview-menu > li.active > a,
|
||||
.skin-yellow-light .sidebar-menu .treeview-menu > li > a:hover {
|
||||
color: #000000;
|
||||
}
|
||||
.skin-yellow-light .sidebar-menu .treeview-menu > li.active > a {
|
||||
font-weight: 600;
|
||||
}
|
||||
.skin-yellow-light .sidebar-form {
|
||||
border-radius: 3px;
|
||||
border: 1px solid #d2d6de;
|
||||
margin: 10px 10px;
|
||||
}
|
||||
.skin-yellow-light .sidebar-form input[type="text"],
|
||||
.skin-yellow-light .sidebar-form .btn {
|
||||
box-shadow: none;
|
||||
background-color: #fff;
|
||||
border: 1px solid transparent;
|
||||
height: 35px;
|
||||
}
|
||||
.skin-yellow-light .sidebar-form input[type="text"] {
|
||||
color: #666;
|
||||
border-top-left-radius: 2px;
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
border-bottom-left-radius: 2px;
|
||||
}
|
||||
.skin-yellow-light .sidebar-form input[type="text"]:focus,
|
||||
.skin-yellow-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
background-color: #fff;
|
||||
color: #666;
|
||||
}
|
||||
.skin-yellow-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
border-left-color: #fff;
|
||||
}
|
||||
.skin-yellow-light .sidebar-form .btn {
|
||||
color: #999;
|
||||
border-top-left-radius: 0;
|
||||
border-top-right-radius: 2px;
|
||||
border-bottom-right-radius: 2px;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
@media (min-width: 768px) {
|
||||
.skin-yellow-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu {
|
||||
border-left: 1px solid #d2d6de;
|
||||
}
|
||||
}
|
||||
1
mondumas/static/dist/AdminLTE-2.4.18/css/skins/skin-yellow-light.min.css
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.skin-yellow-light .main-header .navbar{background-color:#f39c12}.skin-yellow-light .main-header .navbar .nav>li>a{color:#fff}.skin-yellow-light .main-header .navbar .nav>li>a:hover,.skin-yellow-light .main-header .navbar .nav>li>a:active,.skin-yellow-light .main-header .navbar .nav>li>a:focus,.skin-yellow-light .main-header .navbar .nav .open>a,.skin-yellow-light .main-header .navbar .nav .open>a:hover,.skin-yellow-light .main-header .navbar .nav .open>a:focus,.skin-yellow-light .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-yellow-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-yellow-light .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-yellow-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-yellow-light .main-header .navbar .sidebar-toggle:hover{background-color:#e08e0b}@media (max-width:767px){.skin-yellow-light .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-yellow-light .main-header .navbar .dropdown-menu li a{color:#fff}.skin-yellow-light .main-header .navbar .dropdown-menu li a:hover{background:#e08e0b}}.skin-yellow-light .main-header .logo{background-color:#f39c12;color:#fff;border-bottom:0 solid transparent}.skin-yellow-light .main-header .logo:hover{background-color:#f39a0d}.skin-yellow-light .main-header li.user-header{background-color:#f39c12}.skin-yellow-light .content-header{background:transparent}.skin-yellow-light .wrapper,.skin-yellow-light .main-sidebar,.skin-yellow-light .left-side{background-color:#f9fafc}.skin-yellow-light .main-sidebar{border-right:1px solid #d2d6de}.skin-yellow-light .user-panel>.info,.skin-yellow-light .user-panel>.info>a{color:#444}.skin-yellow-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-yellow-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-yellow-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-yellow-light .sidebar-menu>li:hover>a,.skin-yellow-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-yellow-light .sidebar-menu>li.active{border-left-color:#f39c12}.skin-yellow-light .sidebar-menu>li.active>a{font-weight:600}.skin-yellow-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-yellow-light .sidebar a{color:#444}.skin-yellow-light .sidebar a:hover{text-decoration:none}.skin-yellow-light .sidebar-menu .treeview-menu>li>a{color:#777}.skin-yellow-light .sidebar-menu .treeview-menu>li.active>a,.skin-yellow-light .sidebar-menu .treeview-menu>li>a:hover{color:#000}.skin-yellow-light .sidebar-menu .treeview-menu>li.active>a{font-weight:600}.skin-yellow-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-yellow-light .sidebar-form input[type="text"],.skin-yellow-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px}.skin-yellow-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-yellow-light .sidebar-form input[type="text"]:focus,.skin-yellow-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-yellow-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-yellow-light .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}@media (min-width:768px){.skin-yellow-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}}
|
||||
134
mondumas/static/dist/AdminLTE-2.4.18/css/skins/skin-yellow.css
vendored
Normal file
@@ -0,0 +1,134 @@
|
||||
/*
|
||||
* Skin: Yellow
|
||||
* ------------
|
||||
*/
|
||||
.skin-yellow .main-header .navbar {
|
||||
background-color: #f39c12;
|
||||
}
|
||||
.skin-yellow .main-header .navbar .nav > li > a {
|
||||
color: #ffffff;
|
||||
}
|
||||
.skin-yellow .main-header .navbar .nav > li > a:hover,
|
||||
.skin-yellow .main-header .navbar .nav > li > a:active,
|
||||
.skin-yellow .main-header .navbar .nav > li > a:focus,
|
||||
.skin-yellow .main-header .navbar .nav .open > a,
|
||||
.skin-yellow .main-header .navbar .nav .open > a:hover,
|
||||
.skin-yellow .main-header .navbar .nav .open > a:focus,
|
||||
.skin-yellow .main-header .navbar .nav > .active > a {
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
color: #f6f6f6;
|
||||
}
|
||||
.skin-yellow .main-header .navbar .sidebar-toggle {
|
||||
color: #ffffff;
|
||||
}
|
||||
.skin-yellow .main-header .navbar .sidebar-toggle:hover {
|
||||
color: #f6f6f6;
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
.skin-yellow .main-header .navbar .sidebar-toggle {
|
||||
color: #fff;
|
||||
}
|
||||
.skin-yellow .main-header .navbar .sidebar-toggle:hover {
|
||||
background-color: #e08e0b;
|
||||
}
|
||||
@media (max-width: 767px) {
|
||||
.skin-yellow .main-header .navbar .dropdown-menu li.divider {
|
||||
background-color: rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
.skin-yellow .main-header .navbar .dropdown-menu li a {
|
||||
color: #fff;
|
||||
}
|
||||
.skin-yellow .main-header .navbar .dropdown-menu li a:hover {
|
||||
background: #e08e0b;
|
||||
}
|
||||
}
|
||||
.skin-yellow .main-header .logo {
|
||||
background-color: #e08e0b;
|
||||
color: #ffffff;
|
||||
border-bottom: 0 solid transparent;
|
||||
}
|
||||
.skin-yellow .main-header .logo:hover {
|
||||
background-color: #db8b0b;
|
||||
}
|
||||
.skin-yellow .main-header li.user-header {
|
||||
background-color: #f39c12;
|
||||
}
|
||||
.skin-yellow .content-header {
|
||||
background: transparent;
|
||||
}
|
||||
.skin-yellow .wrapper,
|
||||
.skin-yellow .main-sidebar,
|
||||
.skin-yellow .left-side {
|
||||
background-color: #222d32;
|
||||
}
|
||||
.skin-yellow .user-panel > .info,
|
||||
.skin-yellow .user-panel > .info > a {
|
||||
color: #fff;
|
||||
}
|
||||
.skin-yellow .sidebar-menu > li.header {
|
||||
color: #4b646f;
|
||||
background: #1a2226;
|
||||
}
|
||||
.skin-yellow .sidebar-menu > li > a {
|
||||
border-left: 3px solid transparent;
|
||||
}
|
||||
.skin-yellow .sidebar-menu > li:hover > a,
|
||||
.skin-yellow .sidebar-menu > li.active > a,
|
||||
.skin-yellow .sidebar-menu > li.menu-open > a {
|
||||
color: #ffffff;
|
||||
background: #1e282c;
|
||||
}
|
||||
.skin-yellow .sidebar-menu > li.active > a {
|
||||
border-left-color: #f39c12;
|
||||
}
|
||||
.skin-yellow .sidebar-menu > li > .treeview-menu {
|
||||
margin: 0 1px;
|
||||
background: #2c3b41;
|
||||
}
|
||||
.skin-yellow .sidebar a {
|
||||
color: #b8c7ce;
|
||||
}
|
||||
.skin-yellow .sidebar a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
.skin-yellow .sidebar-menu .treeview-menu > li > a {
|
||||
color: #8aa4af;
|
||||
}
|
||||
.skin-yellow .sidebar-menu .treeview-menu > li.active > a,
|
||||
.skin-yellow .sidebar-menu .treeview-menu > li > a:hover {
|
||||
color: #ffffff;
|
||||
}
|
||||
.skin-yellow .sidebar-form {
|
||||
border-radius: 3px;
|
||||
border: 1px solid #374850;
|
||||
margin: 10px 10px;
|
||||
}
|
||||
.skin-yellow .sidebar-form input[type="text"],
|
||||
.skin-yellow .sidebar-form .btn {
|
||||
box-shadow: none;
|
||||
background-color: #374850;
|
||||
border: 1px solid transparent;
|
||||
height: 35px;
|
||||
}
|
||||
.skin-yellow .sidebar-form input[type="text"] {
|
||||
color: #666;
|
||||
border-top-left-radius: 2px;
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
border-bottom-left-radius: 2px;
|
||||
}
|
||||
.skin-yellow .sidebar-form input[type="text"]:focus,
|
||||
.skin-yellow .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
background-color: #fff;
|
||||
color: #666;
|
||||
}
|
||||
.skin-yellow .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
border-left-color: #fff;
|
||||
}
|
||||
.skin-yellow .sidebar-form .btn {
|
||||
color: #999;
|
||||
border-top-left-radius: 0;
|
||||
border-top-right-radius: 2px;
|
||||
border-bottom-right-radius: 2px;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
1
mondumas/static/dist/AdminLTE-2.4.18/css/skins/skin-yellow.min.css
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.skin-yellow .main-header .navbar{background-color:#f39c12}.skin-yellow .main-header .navbar .nav>li>a{color:#fff}.skin-yellow .main-header .navbar .nav>li>a:hover,.skin-yellow .main-header .navbar .nav>li>a:active,.skin-yellow .main-header .navbar .nav>li>a:focus,.skin-yellow .main-header .navbar .nav .open>a,.skin-yellow .main-header .navbar .nav .open>a:hover,.skin-yellow .main-header .navbar .nav .open>a:focus,.skin-yellow .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-yellow .main-header .navbar .sidebar-toggle{color:#fff}.skin-yellow .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-yellow .main-header .navbar .sidebar-toggle{color:#fff}.skin-yellow .main-header .navbar .sidebar-toggle:hover{background-color:#e08e0b}@media (max-width:767px){.skin-yellow .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-yellow .main-header .navbar .dropdown-menu li a{color:#fff}.skin-yellow .main-header .navbar .dropdown-menu li a:hover{background:#e08e0b}}.skin-yellow .main-header .logo{background-color:#e08e0b;color:#fff;border-bottom:0 solid transparent}.skin-yellow .main-header .logo:hover{background-color:#db8b0b}.skin-yellow .main-header li.user-header{background-color:#f39c12}.skin-yellow .content-header{background:transparent}.skin-yellow .wrapper,.skin-yellow .main-sidebar,.skin-yellow .left-side{background-color:#222d32}.skin-yellow .user-panel>.info,.skin-yellow .user-panel>.info>a{color:#fff}.skin-yellow .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-yellow .sidebar-menu>li>a{border-left:3px solid transparent}.skin-yellow .sidebar-menu>li:hover>a,.skin-yellow .sidebar-menu>li.active>a,.skin-yellow .sidebar-menu>li.menu-open>a{color:#fff;background:#1e282c}.skin-yellow .sidebar-menu>li.active>a{border-left-color:#f39c12}.skin-yellow .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-yellow .sidebar a{color:#b8c7ce}.skin-yellow .sidebar a:hover{text-decoration:none}.skin-yellow .sidebar-menu .treeview-menu>li>a{color:#8aa4af}.skin-yellow .sidebar-menu .treeview-menu>li.active>a,.skin-yellow .sidebar-menu .treeview-menu>li>a:hover{color:#fff}.skin-yellow .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-yellow .sidebar-form input[type="text"],.skin-yellow .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px}.skin-yellow .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-yellow .sidebar-form input[type="text"]:focus,.skin-yellow .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-yellow .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-yellow .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}
|
||||
BIN
mondumas/static/dist/AdminLTE-2.4.18/img/avatar.png
vendored
Normal file
|
After Width: | Height: | Size: 7.9 KiB |
BIN
mondumas/static/dist/AdminLTE-2.4.18/img/avatar04.png
vendored
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
mondumas/static/dist/AdminLTE-2.4.18/img/avatar2.png
vendored
Normal file
|
After Width: | Height: | Size: 8.1 KiB |
BIN
mondumas/static/dist/AdminLTE-2.4.18/img/avatar3.png
vendored
Normal file
|
After Width: | Height: | Size: 9.0 KiB |
BIN
mondumas/static/dist/AdminLTE-2.4.18/img/avatar5.png
vendored
Normal file
|
After Width: | Height: | Size: 7.4 KiB |
BIN
mondumas/static/dist/AdminLTE-2.4.18/img/credit/american-express.png
vendored
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
mondumas/static/dist/AdminLTE-2.4.18/img/credit/cirrus.png
vendored
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
mondumas/static/dist/AdminLTE-2.4.18/img/credit/mastercard.png
vendored
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
mondumas/static/dist/AdminLTE-2.4.18/img/credit/mestro.png
vendored
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
mondumas/static/dist/AdminLTE-2.4.18/img/credit/paypal.png
vendored
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
mondumas/static/dist/AdminLTE-2.4.18/img/credit/paypal2.png
vendored
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
mondumas/static/dist/AdminLTE-2.4.18/img/credit/visa.png
vendored
Normal file
|
After Width: | Height: | Size: 1.0 KiB |
BIN
mondumas/static/dist/AdminLTE-2.4.18/img/default-50x50.gif
vendored
Normal file
|
After Width: | Height: | Size: 184 B |
BIN
mondumas/static/dist/AdminLTE-2.4.18/img/icons.png
vendored
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
mondumas/static/dist/AdminLTE-2.4.18/img/photo1.png
vendored
Normal file
|
After Width: | Height: | Size: 656 KiB |
BIN
mondumas/static/dist/AdminLTE-2.4.18/img/photo2.png
vendored
Normal file
|
After Width: | Height: | Size: 412 KiB |
BIN
mondumas/static/dist/AdminLTE-2.4.18/img/photo3.jpg
vendored
Normal file
|
After Width: | Height: | Size: 383 KiB |
BIN
mondumas/static/dist/AdminLTE-2.4.18/img/photo4.jpg
vendored
Normal file
|
After Width: | Height: | Size: 1.1 MiB |
BIN
mondumas/static/dist/AdminLTE-2.4.18/img/user1-128x128.jpg
vendored
Normal file
|
After Width: | Height: | Size: 2.8 KiB |
BIN
mondumas/static/dist/AdminLTE-2.4.18/img/user2-160x160.jpg
vendored
Normal file
|
After Width: | Height: | Size: 6.9 KiB |
BIN
mondumas/static/dist/AdminLTE-2.4.18/img/user3-128x128.jpg
vendored
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
BIN
mondumas/static/dist/AdminLTE-2.4.18/img/user4-128x128.jpg
vendored
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
BIN
mondumas/static/dist/AdminLTE-2.4.18/img/user5-128x128.jpg
vendored
Normal file
|
After Width: | Height: | Size: 6.3 KiB |
BIN
mondumas/static/dist/AdminLTE-2.4.18/img/user6-128x128.jpg
vendored
Normal file
|
After Width: | Height: | Size: 4.2 KiB |
BIN
mondumas/static/dist/AdminLTE-2.4.18/img/user7-128x128.jpg
vendored
Normal file
|
After Width: | Height: | Size: 6.3 KiB |
BIN
mondumas/static/dist/AdminLTE-2.4.18/img/user8-128x128.jpg
vendored
Normal file
|
After Width: | Height: | Size: 4.9 KiB |
1160
mondumas/static/dist/AdminLTE-2.4.18/js/adminlte.js
vendored
Normal file
13
mondumas/static/dist/AdminLTE-2.4.18/js/adminlte.min.js
vendored
Normal file
354
mondumas/static/dist/AdminLTE-2.4.18/js/demo.js
vendored
Normal file
@@ -0,0 +1,354 @@
|
||||
/**
|
||||
* AdminLTE Demo Menu
|
||||
* ------------------
|
||||
* You should not use this file in production.
|
||||
* This file is for demo purposes only.
|
||||
*/
|
||||
$(function () {
|
||||
'use strict'
|
||||
|
||||
/**
|
||||
* Get access to plugins
|
||||
*/
|
||||
|
||||
$('[data-toggle="control-sidebar"]').controlSidebar()
|
||||
$('[data-toggle="push-menu"]').pushMenu()
|
||||
var $pushMenu = $('[data-toggle="push-menu"]').data('lte.pushmenu')
|
||||
var $controlSidebar = $('[data-toggle="control-sidebar"]').data('lte.controlsidebar')
|
||||
var $layout = $('body').data('lte.layout')
|
||||
$(window).on('load', function() {
|
||||
// Reinitialize variables on load
|
||||
$pushMenu = $('[data-toggle="push-menu"]').data('lte.pushmenu')
|
||||
$controlSidebar = $('[data-toggle="control-sidebar"]').data('lte.controlsidebar')
|
||||
$layout = $('body').data('lte.layout')
|
||||
})
|
||||
|
||||
/**
|
||||
* List of all the available skins
|
||||
*
|
||||
* @type Array
|
||||
*/
|
||||
var mySkins = [
|
||||
'skin-blue',
|
||||
'skin-black',
|
||||
'skin-red',
|
||||
'skin-yellow',
|
||||
'skin-purple',
|
||||
'skin-green',
|
||||
'skin-blue-light',
|
||||
'skin-black-light',
|
||||
'skin-red-light',
|
||||
'skin-yellow-light',
|
||||
'skin-purple-light',
|
||||
'skin-green-light'
|
||||
]
|
||||
|
||||
/**
|
||||
* Get a prestored setting
|
||||
*
|
||||
* @param String name Name of of the setting
|
||||
* @returns String The value of the setting | null
|
||||
*/
|
||||
function get(name) {
|
||||
if (typeof (Storage) !== 'undefined') {
|
||||
return localStorage.getItem(name)
|
||||
} else {
|
||||
window.alert('Please use a modern browser to properly view this template!')
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Store a new settings in the browser
|
||||
*
|
||||
* @param String name Name of the setting
|
||||
* @param String val Value of the setting
|
||||
* @returns void
|
||||
*/
|
||||
function store(name, val) {
|
||||
if (typeof (Storage) !== 'undefined') {
|
||||
localStorage.setItem(name, val)
|
||||
} else {
|
||||
window.alert('Please use a modern browser to properly view this template!')
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Toggles layout classes
|
||||
*
|
||||
* @param String cls the layout class to toggle
|
||||
* @returns void
|
||||
*/
|
||||
function changeLayout(cls) {
|
||||
$('body').toggleClass(cls)
|
||||
$layout.fixSidebar()
|
||||
if ($('body').hasClass('fixed') && cls == 'fixed') {
|
||||
$pushMenu.expandOnHover()
|
||||
$layout.activate()
|
||||
}
|
||||
$controlSidebar.fix()
|
||||
}
|
||||
|
||||
/**
|
||||
* Replaces the old skin with the new skin
|
||||
* @param String cls the new skin class
|
||||
* @returns Boolean false to prevent link's default action
|
||||
*/
|
||||
function changeSkin(cls) {
|
||||
$.each(mySkins, function (i) {
|
||||
$('body').removeClass(mySkins[i])
|
||||
})
|
||||
|
||||
$('body').addClass(cls)
|
||||
store('skin', cls)
|
||||
return false
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve default settings and apply them to the template
|
||||
*
|
||||
* @returns void
|
||||
*/
|
||||
function setup() {
|
||||
var tmp = get('skin')
|
||||
if (tmp && $.inArray(tmp, mySkins))
|
||||
changeSkin(tmp)
|
||||
|
||||
// Add the change skin listener
|
||||
$('[data-skin]').on('click', function (e) {
|
||||
if ($(this).hasClass('knob'))
|
||||
return
|
||||
e.preventDefault()
|
||||
changeSkin($(this).data('skin'))
|
||||
})
|
||||
|
||||
// Add the layout manager
|
||||
$('[data-layout]').on('click', function () {
|
||||
changeLayout($(this).data('layout'))
|
||||
})
|
||||
|
||||
$('[data-controlsidebar]').on('click', function () {
|
||||
changeLayout($(this).data('controlsidebar'))
|
||||
var slide = !$controlSidebar.options.slide
|
||||
|
||||
$controlSidebar.options.slide = slide
|
||||
if (!slide)
|
||||
$('.control-sidebar').removeClass('control-sidebar-open')
|
||||
})
|
||||
|
||||
$('[data-sidebarskin="toggle"]').on('click', function () {
|
||||
var $sidebar = $('.control-sidebar')
|
||||
if ($sidebar.hasClass('control-sidebar-dark')) {
|
||||
$sidebar.removeClass('control-sidebar-dark')
|
||||
$sidebar.addClass('control-sidebar-light')
|
||||
} else {
|
||||
$sidebar.removeClass('control-sidebar-light')
|
||||
$sidebar.addClass('control-sidebar-dark')
|
||||
}
|
||||
})
|
||||
|
||||
$('[data-enable="expandOnHover"]').on('click', function () {
|
||||
$(this).attr('disabled', true)
|
||||
$pushMenu.expandOnHover()
|
||||
if (!$('body').hasClass('sidebar-collapse'))
|
||||
$('[data-layout="sidebar-collapse"]').click()
|
||||
})
|
||||
|
||||
// Reset options
|
||||
if ($('body').hasClass('fixed')) {
|
||||
$('[data-layout="fixed"]').attr('checked', 'checked')
|
||||
}
|
||||
if ($('body').hasClass('layout-boxed')) {
|
||||
$('[data-layout="layout-boxed"]').attr('checked', 'checked')
|
||||
}
|
||||
if ($('body').hasClass('sidebar-collapse')) {
|
||||
$('[data-layout="sidebar-collapse"]').attr('checked', 'checked')
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Create the new tab
|
||||
var $tabPane = $('<div />', {
|
||||
'id': 'control-sidebar-theme-demo-options-tab',
|
||||
'class': 'tab-pane active'
|
||||
})
|
||||
|
||||
// Create the tab button
|
||||
var $tabButton = $('<li />', {'class': 'active'})
|
||||
.html('<a href=\'#control-sidebar-theme-demo-options-tab\' data-toggle=\'tab\'>'
|
||||
+ '<i class="fa fa-wrench"></i>'
|
||||
+ '</a>')
|
||||
|
||||
// Add the tab button to the right sidebar tabs
|
||||
$('[href="#control-sidebar-home-tab"]')
|
||||
.parent()
|
||||
.before($tabButton)
|
||||
|
||||
// Create the menu
|
||||
var $demoSettings = $('<div />')
|
||||
|
||||
// Layout options
|
||||
$demoSettings.append(
|
||||
'<h4 class="control-sidebar-heading">'
|
||||
+ 'Layout Options'
|
||||
+ '</h4>'
|
||||
// Fixed layout
|
||||
+ '<div class="form-group">'
|
||||
+ '<label class="control-sidebar-subheading">'
|
||||
+ '<input type="checkbox"data-layout="fixed"class="pull-right"/> '
|
||||
+ 'Fixed layout'
|
||||
+ '</label>'
|
||||
+ '<p>Activate the fixed layout. You can\'t use fixed and boxed layouts together</p>'
|
||||
+ '</div>'
|
||||
// Boxed layout
|
||||
+ '<div class="form-group">'
|
||||
+ '<label class="control-sidebar-subheading">'
|
||||
+ '<input type="checkbox"data-layout="layout-boxed" class="pull-right"/> '
|
||||
+ 'Boxed Layout'
|
||||
+ '</label>'
|
||||
+ '<p>Activate the boxed layout</p>'
|
||||
+ '</div>'
|
||||
// Sidebar Toggle
|
||||
+ '<div class="form-group">'
|
||||
+ '<label class="control-sidebar-subheading">'
|
||||
+ '<input type="checkbox"data-layout="sidebar-collapse"class="pull-right"/> '
|
||||
+ 'Toggle Sidebar'
|
||||
+ '</label>'
|
||||
+ '<p>Toggle the left sidebar\'s state (open or collapse)</p>'
|
||||
+ '</div>'
|
||||
// Sidebar mini expand on hover toggle
|
||||
+ '<div class="form-group">'
|
||||
+ '<label class="control-sidebar-subheading">'
|
||||
+ '<input type="checkbox"data-enable="expandOnHover"class="pull-right"/> '
|
||||
+ 'Sidebar Expand on Hover'
|
||||
+ '</label>'
|
||||
+ '<p>Let the sidebar mini expand on hover</p>'
|
||||
+ '</div>'
|
||||
// Control Sidebar Toggle
|
||||
+ '<div class="form-group">'
|
||||
+ '<label class="control-sidebar-subheading">'
|
||||
+ '<input type="checkbox"data-controlsidebar="control-sidebar-open"class="pull-right"/> '
|
||||
+ 'Toggle Right Sidebar Slide'
|
||||
+ '</label>'
|
||||
+ '<p>Toggle between slide over content and push content effects</p>'
|
||||
+ '</div>'
|
||||
// Control Sidebar Skin Toggle
|
||||
+ '<div class="form-group">'
|
||||
+ '<label class="control-sidebar-subheading">'
|
||||
+ '<input type="checkbox"data-sidebarskin="toggle"class="pull-right"/> '
|
||||
+ 'Toggle Right Sidebar Skin'
|
||||
+ '</label>'
|
||||
+ '<p>Toggle between dark and light skins for the right sidebar</p>'
|
||||
+ '</div>'
|
||||
)
|
||||
var $skinsList = $('<ul />', {'class': 'list-unstyled clearfix'})
|
||||
|
||||
// Dark sidebar skins
|
||||
var $skinBlue =
|
||||
$('<li />', {style: 'float:left; width: 33.33333%; padding: 5px;'})
|
||||
.append('<a href="javascript:void(0)" data-skin="skin-blue" style="display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)" class="clearfix full-opacity-hover">'
|
||||
+ '<div><span style="display:block; width: 20%; float: left; height: 7px; background: #367fa9"></span><span class="bg-light-blue" style="display:block; width: 80%; float: left; height: 7px;"></span></div>'
|
||||
+ '<div><span style="display:block; width: 20%; float: left; height: 20px; background: #222d32"></span><span style="display:block; width: 80%; float: left; height: 20px; background: #f4f5f7"></span></div>'
|
||||
+ '</a>'
|
||||
+ '<p class="text-center no-margin">Blue</p>')
|
||||
$skinsList.append($skinBlue)
|
||||
var $skinBlack =
|
||||
$('<li />', {style: 'float:left; width: 33.33333%; padding: 5px;'})
|
||||
.append('<a href="javascript:void(0)" data-skin="skin-black" style="display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)" class="clearfix full-opacity-hover">'
|
||||
+ '<div style="box-shadow: 0 0 2px rgba(0,0,0,0.1)" class="clearfix"><span style="display:block; width: 20%; float: left; height: 7px; background: #fefefe"></span><span style="display:block; width: 80%; float: left; height: 7px; background: #fefefe"></span></div>'
|
||||
+ '<div><span style="display:block; width: 20%; float: left; height: 20px; background: #222"></span><span style="display:block; width: 80%; float: left; height: 20px; background: #f4f5f7"></span></div>'
|
||||
+ '</a>'
|
||||
+ '<p class="text-center no-margin">Black</p>')
|
||||
$skinsList.append($skinBlack)
|
||||
var $skinPurple =
|
||||
$('<li />', {style: 'float:left; width: 33.33333%; padding: 5px;'})
|
||||
.append('<a href="javascript:void(0)" data-skin="skin-purple" style="display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)" class="clearfix full-opacity-hover">'
|
||||
+ '<div><span style="display:block; width: 20%; float: left; height: 7px;" class="bg-purple-active"></span><span class="bg-purple" style="display:block; width: 80%; float: left; height: 7px;"></span></div>'
|
||||
+ '<div><span style="display:block; width: 20%; float: left; height: 20px; background: #222d32"></span><span style="display:block; width: 80%; float: left; height: 20px; background: #f4f5f7"></span></div>'
|
||||
+ '</a>'
|
||||
+ '<p class="text-center no-margin">Purple</p>')
|
||||
$skinsList.append($skinPurple)
|
||||
var $skinGreen =
|
||||
$('<li />', {style: 'float:left; width: 33.33333%; padding: 5px;'})
|
||||
.append('<a href="javascript:void(0)" data-skin="skin-green" style="display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)" class="clearfix full-opacity-hover">'
|
||||
+ '<div><span style="display:block; width: 20%; float: left; height: 7px;" class="bg-green-active"></span><span class="bg-green" style="display:block; width: 80%; float: left; height: 7px;"></span></div>'
|
||||
+ '<div><span style="display:block; width: 20%; float: left; height: 20px; background: #222d32"></span><span style="display:block; width: 80%; float: left; height: 20px; background: #f4f5f7"></span></div>'
|
||||
+ '</a>'
|
||||
+ '<p class="text-center no-margin">Green</p>')
|
||||
$skinsList.append($skinGreen)
|
||||
var $skinRed =
|
||||
$('<li />', {style: 'float:left; width: 33.33333%; padding: 5px;'})
|
||||
.append('<a href="javascript:void(0)" data-skin="skin-red" style="display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)" class="clearfix full-opacity-hover">'
|
||||
+ '<div><span style="display:block; width: 20%; float: left; height: 7px;" class="bg-red-active"></span><span class="bg-red" style="display:block; width: 80%; float: left; height: 7px;"></span></div>'
|
||||
+ '<div><span style="display:block; width: 20%; float: left; height: 20px; background: #222d32"></span><span style="display:block; width: 80%; float: left; height: 20px; background: #f4f5f7"></span></div>'
|
||||
+ '</a>'
|
||||
+ '<p class="text-center no-margin">Red</p>')
|
||||
$skinsList.append($skinRed)
|
||||
var $skinYellow =
|
||||
$('<li />', {style: 'float:left; width: 33.33333%; padding: 5px;'})
|
||||
.append('<a href="javascript:void(0)" data-skin="skin-yellow" style="display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)" class="clearfix full-opacity-hover">'
|
||||
+ '<div><span style="display:block; width: 20%; float: left; height: 7px;" class="bg-yellow-active"></span><span class="bg-yellow" style="display:block; width: 80%; float: left; height: 7px;"></span></div>'
|
||||
+ '<div><span style="display:block; width: 20%; float: left; height: 20px; background: #222d32"></span><span style="display:block; width: 80%; float: left; height: 20px; background: #f4f5f7"></span></div>'
|
||||
+ '</a>'
|
||||
+ '<p class="text-center no-margin">Yellow</p>')
|
||||
$skinsList.append($skinYellow)
|
||||
|
||||
// Light sidebar skins
|
||||
var $skinBlueLight =
|
||||
$('<li />', {style: 'float:left; width: 33.33333%; padding: 5px;'})
|
||||
.append('<a href="javascript:void(0)" data-skin="skin-blue-light" style="display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)" class="clearfix full-opacity-hover">'
|
||||
+ '<div><span style="display:block; width: 20%; float: left; height: 7px; background: #367fa9"></span><span class="bg-light-blue" style="display:block; width: 80%; float: left; height: 7px;"></span></div>'
|
||||
+ '<div><span style="display:block; width: 20%; float: left; height: 20px; background: #f9fafc"></span><span style="display:block; width: 80%; float: left; height: 20px; background: #f4f5f7"></span></div>'
|
||||
+ '</a>'
|
||||
+ '<p class="text-center no-margin" style="font-size: 12px">Blue Light</p>')
|
||||
$skinsList.append($skinBlueLight)
|
||||
var $skinBlackLight =
|
||||
$('<li />', {style: 'float:left; width: 33.33333%; padding: 5px;'})
|
||||
.append('<a href="javascript:void(0)" data-skin="skin-black-light" style="display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)" class="clearfix full-opacity-hover">'
|
||||
+ '<div style="box-shadow: 0 0 2px rgba(0,0,0,0.1)" class="clearfix"><span style="display:block; width: 20%; float: left; height: 7px; background: #fefefe"></span><span style="display:block; width: 80%; float: left; height: 7px; background: #fefefe"></span></div>'
|
||||
+ '<div><span style="display:block; width: 20%; float: left; height: 20px; background: #f9fafc"></span><span style="display:block; width: 80%; float: left; height: 20px; background: #f4f5f7"></span></div>'
|
||||
+ '</a>'
|
||||
+ '<p class="text-center no-margin" style="font-size: 12px">Black Light</p>')
|
||||
$skinsList.append($skinBlackLight)
|
||||
var $skinPurpleLight =
|
||||
$('<li />', {style: 'float:left; width: 33.33333%; padding: 5px;'})
|
||||
.append('<a href="javascript:void(0)" data-skin="skin-purple-light" style="display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)" class="clearfix full-opacity-hover">'
|
||||
+ '<div><span style="display:block; width: 20%; float: left; height: 7px;" class="bg-purple-active"></span><span class="bg-purple" style="display:block; width: 80%; float: left; height: 7px;"></span></div>'
|
||||
+ '<div><span style="display:block; width: 20%; float: left; height: 20px; background: #f9fafc"></span><span style="display:block; width: 80%; float: left; height: 20px; background: #f4f5f7"></span></div>'
|
||||
+ '</a>'
|
||||
+ '<p class="text-center no-margin" style="font-size: 12px">Purple Light</p>')
|
||||
$skinsList.append($skinPurpleLight)
|
||||
var $skinGreenLight =
|
||||
$('<li />', {style: 'float:left; width: 33.33333%; padding: 5px;'})
|
||||
.append('<a href="javascript:void(0)" data-skin="skin-green-light" style="display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)" class="clearfix full-opacity-hover">'
|
||||
+ '<div><span style="display:block; width: 20%; float: left; height: 7px;" class="bg-green-active"></span><span class="bg-green" style="display:block; width: 80%; float: left; height: 7px;"></span></div>'
|
||||
+ '<div><span style="display:block; width: 20%; float: left; height: 20px; background: #f9fafc"></span><span style="display:block; width: 80%; float: left; height: 20px; background: #f4f5f7"></span></div>'
|
||||
+ '</a>'
|
||||
+ '<p class="text-center no-margin" style="font-size: 12px">Green Light</p>')
|
||||
$skinsList.append($skinGreenLight)
|
||||
var $skinRedLight =
|
||||
$('<li />', {style: 'float:left; width: 33.33333%; padding: 5px;'})
|
||||
.append('<a href="javascript:void(0)" data-skin="skin-red-light" style="display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)" class="clearfix full-opacity-hover">'
|
||||
+ '<div><span style="display:block; width: 20%; float: left; height: 7px;" class="bg-red-active"></span><span class="bg-red" style="display:block; width: 80%; float: left; height: 7px;"></span></div>'
|
||||
+ '<div><span style="display:block; width: 20%; float: left; height: 20px; background: #f9fafc"></span><span style="display:block; width: 80%; float: left; height: 20px; background: #f4f5f7"></span></div>'
|
||||
+ '</a>'
|
||||
+ '<p class="text-center no-margin" style="font-size: 12px">Red Light</p>')
|
||||
$skinsList.append($skinRedLight)
|
||||
var $skinYellowLight =
|
||||
$('<li />', {style: 'float:left; width: 33.33333%; padding: 5px;'})
|
||||
.append('<a href="javascript:void(0)" data-skin="skin-yellow-light" style="display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)" class="clearfix full-opacity-hover">'
|
||||
+ '<div><span style="display:block; width: 20%; float: left; height: 7px;" class="bg-yellow-active"></span><span class="bg-yellow" style="display:block; width: 80%; float: left; height: 7px;"></span></div>'
|
||||
+ '<div><span style="display:block; width: 20%; float: left; height: 20px; background: #f9fafc"></span><span style="display:block; width: 80%; float: left; height: 20px; background: #f4f5f7"></span></div>'
|
||||
+ '</a>'
|
||||
+ '<p class="text-center no-margin" style="font-size: 12px">Yellow Light</p>')
|
||||
$skinsList.append($skinYellowLight)
|
||||
|
||||
$demoSettings.append('<h4 class="control-sidebar-heading">Skins</h4>')
|
||||
$demoSettings.append($skinsList)
|
||||
|
||||
$tabPane.append($demoSettings)
|
||||
$('#control-sidebar-home-tab').after($tabPane)
|
||||
|
||||
setup()
|
||||
|
||||
$('[data-toggle="tooltip"]').tooltip()
|
||||
})
|
||||
211
mondumas/static/dist/AdminLTE-2.4.18/js/pages/dashboard.js
vendored
Normal file
@@ -0,0 +1,211 @@
|
||||
/*
|
||||
* Author: Abdullah A Almsaeed
|
||||
* Date: 4 Jan 2014
|
||||
* Description:
|
||||
* This is a demo file used only for the main dashboard (index.html)
|
||||
**/
|
||||
|
||||
$(function () {
|
||||
|
||||
'use strict';
|
||||
|
||||
// Make the dashboard widgets sortable Using jquery UI
|
||||
$('.connectedSortable').sortable({
|
||||
containment : $('section.content'),
|
||||
placeholder : 'sort-highlight',
|
||||
connectWith : '.connectedSortable',
|
||||
handle : '.box-header, .nav-tabs',
|
||||
forcePlaceholderSize: true,
|
||||
zIndex : 999999
|
||||
});
|
||||
$('.connectedSortable .box-header, .connectedSortable .nav-tabs-custom').css('cursor', 'move');
|
||||
|
||||
// jQuery UI sortable for the todo list
|
||||
$('.todo-list').sortable({
|
||||
placeholder : 'sort-highlight',
|
||||
handle : '.handle',
|
||||
forcePlaceholderSize: true,
|
||||
zIndex : 999999
|
||||
});
|
||||
|
||||
// bootstrap WYSIHTML5 - text editor
|
||||
$('.textarea').wysihtml5();
|
||||
|
||||
$('.daterange').daterangepicker({
|
||||
ranges : {
|
||||
'Today' : [moment(), moment()],
|
||||
'Yesterday' : [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
|
||||
'Last 7 Days' : [moment().subtract(6, 'days'), moment()],
|
||||
'Last 30 Days': [moment().subtract(29, 'days'), moment()],
|
||||
'This Month' : [moment().startOf('month'), moment().endOf('month')],
|
||||
'Last Month' : [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]
|
||||
},
|
||||
startDate: moment().subtract(29, 'days'),
|
||||
endDate : moment()
|
||||
}, function (start, end) {
|
||||
window.alert('You chose: ' + start.format('MMMM D, YYYY') + ' - ' + end.format('MMMM D, YYYY'));
|
||||
});
|
||||
|
||||
/* jQueryKnob */
|
||||
$('.knob').knob();
|
||||
|
||||
// jvectormap data
|
||||
var visitorsData = {
|
||||
US: 398, // USA
|
||||
SA: 400, // Saudi Arabia
|
||||
CA: 1000, // Canada
|
||||
DE: 500, // Germany
|
||||
FR: 760, // France
|
||||
CN: 300, // China
|
||||
AU: 700, // Australia
|
||||
BR: 600, // Brazil
|
||||
IN: 800, // India
|
||||
GB: 320, // Great Britain
|
||||
RU: 3000 // Russia
|
||||
};
|
||||
// World map by jvectormap
|
||||
$('#world-map').vectorMap({
|
||||
map : 'world_mill_en',
|
||||
backgroundColor : 'transparent',
|
||||
regionStyle : {
|
||||
initial: {
|
||||
fill : '#e4e4e4',
|
||||
'fill-opacity' : 1,
|
||||
stroke : 'none',
|
||||
'stroke-width' : 0,
|
||||
'stroke-opacity': 1
|
||||
}
|
||||
},
|
||||
series : {
|
||||
regions: [
|
||||
{
|
||||
values : visitorsData,
|
||||
scale : ['#92c1dc', '#ebf4f9'],
|
||||
normalizeFunction: 'polynomial'
|
||||
}
|
||||
]
|
||||
},
|
||||
onRegionLabelShow: function (e, el, code) {
|
||||
if (typeof visitorsData[code] != 'undefined')
|
||||
el.html(el.html() + ': ' + visitorsData[code] + ' new visitors');
|
||||
}
|
||||
});
|
||||
|
||||
// Sparkline charts
|
||||
var myvalues = [1000, 1200, 920, 927, 931, 1027, 819, 930, 1021];
|
||||
$('#sparkline-1').sparkline(myvalues, {
|
||||
type : 'line',
|
||||
lineColor: '#92c1dc',
|
||||
fillColor: '#ebf4f9',
|
||||
height : '50',
|
||||
width : '80'
|
||||
});
|
||||
myvalues = [515, 519, 520, 522, 652, 810, 370, 627, 319, 630, 921];
|
||||
$('#sparkline-2').sparkline(myvalues, {
|
||||
type : 'line',
|
||||
lineColor: '#92c1dc',
|
||||
fillColor: '#ebf4f9',
|
||||
height : '50',
|
||||
width : '80'
|
||||
});
|
||||
myvalues = [15, 19, 20, 22, 33, 27, 31, 27, 19, 30, 21];
|
||||
$('#sparkline-3').sparkline(myvalues, {
|
||||
type : 'line',
|
||||
lineColor: '#92c1dc',
|
||||
fillColor: '#ebf4f9',
|
||||
height : '50',
|
||||
width : '80'
|
||||
});
|
||||
|
||||
// The Calender
|
||||
$('#calendar').datepicker();
|
||||
|
||||
// SLIMSCROLL FOR CHAT WIDGET
|
||||
$('#chat-box').slimScroll({
|
||||
height: '250px'
|
||||
});
|
||||
|
||||
/* Morris.js Charts */
|
||||
// Sales chart
|
||||
var area = new Morris.Area({
|
||||
element : 'revenue-chart',
|
||||
resize : true,
|
||||
data : [
|
||||
{ y: '2011 Q1', item1: 2666, item2: 2666 },
|
||||
{ y: '2011 Q2', item1: 2778, item2: 2294 },
|
||||
{ y: '2011 Q3', item1: 4912, item2: 1969 },
|
||||
{ y: '2011 Q4', item1: 3767, item2: 3597 },
|
||||
{ y: '2012 Q1', item1: 6810, item2: 1914 },
|
||||
{ y: '2012 Q2', item1: 5670, item2: 4293 },
|
||||
{ y: '2012 Q3', item1: 4820, item2: 3795 },
|
||||
{ y: '2012 Q4', item1: 15073, item2: 5967 },
|
||||
{ y: '2013 Q1', item1: 10687, item2: 4460 },
|
||||
{ y: '2013 Q2', item1: 8432, item2: 5713 }
|
||||
],
|
||||
xkey : 'y',
|
||||
ykeys : ['item1', 'item2'],
|
||||
labels : ['Item 1', 'Item 2'],
|
||||
lineColors: ['#a0d0e0', '#3c8dbc'],
|
||||
hideHover : 'auto'
|
||||
});
|
||||
var line = new Morris.Line({
|
||||
element : 'line-chart',
|
||||
resize : true,
|
||||
data : [
|
||||
{ y: '2011 Q1', item1: 2666 },
|
||||
{ y: '2011 Q2', item1: 2778 },
|
||||
{ y: '2011 Q3', item1: 4912 },
|
||||
{ y: '2011 Q4', item1: 3767 },
|
||||
{ y: '2012 Q1', item1: 6810 },
|
||||
{ y: '2012 Q2', item1: 5670 },
|
||||
{ y: '2012 Q3', item1: 4820 },
|
||||
{ y: '2012 Q4', item1: 15073 },
|
||||
{ y: '2013 Q1', item1: 10687 },
|
||||
{ y: '2013 Q2', item1: 8432 }
|
||||
],
|
||||
xkey : 'y',
|
||||
ykeys : ['item1'],
|
||||
labels : ['Item 1'],
|
||||
lineColors : ['#efefef'],
|
||||
lineWidth : 2,
|
||||
hideHover : 'auto',
|
||||
gridTextColor : '#fff',
|
||||
gridStrokeWidth : 0.4,
|
||||
pointSize : 4,
|
||||
pointStrokeColors: ['#efefef'],
|
||||
gridLineColor : '#efefef',
|
||||
gridTextFamily : 'Open Sans',
|
||||
gridTextSize : 10
|
||||
});
|
||||
|
||||
// Donut Chart
|
||||
var donut = new Morris.Donut({
|
||||
element : 'sales-chart',
|
||||
resize : true,
|
||||
colors : ['#3c8dbc', '#f56954', '#00a65a'],
|
||||
data : [
|
||||
{ label: 'Download Sales', value: 12 },
|
||||
{ label: 'In-Store Sales', value: 30 },
|
||||
{ label: 'Mail-Order Sales', value: 20 }
|
||||
],
|
||||
hideHover: 'auto'
|
||||
});
|
||||
|
||||
// Fix for charts under tabs
|
||||
$('.box ul.nav a').on('shown.bs.tab', function () {
|
||||
area.redraw();
|
||||
donut.redraw();
|
||||
line.redraw();
|
||||
});
|
||||
|
||||
/* The todo list plugin */
|
||||
$('.todo-list').todoList({
|
||||
onCheck : function () {
|
||||
window.console.log($(this), 'The element has been checked');
|
||||
},
|
||||
onUnCheck: function () {
|
||||
window.console.log($(this), 'The element has been unchecked');
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
274
mondumas/static/dist/AdminLTE-2.4.18/js/pages/dashboard2.js
vendored
Normal file
@@ -0,0 +1,274 @@
|
||||
$(function () {
|
||||
|
||||
'use strict';
|
||||
|
||||
/* ChartJS
|
||||
* -------
|
||||
* Here we will create a few charts using ChartJS
|
||||
*/
|
||||
|
||||
// -----------------------
|
||||
// - MONTHLY SALES CHART -
|
||||
// -----------------------
|
||||
|
||||
// Get context with jQuery - using jQuery's .get() method.
|
||||
var salesChartCanvas = $('#salesChart').get(0).getContext('2d');
|
||||
// This will get the first returned node in the jQuery collection.
|
||||
var salesChart = new Chart(salesChartCanvas);
|
||||
|
||||
var salesChartData = {
|
||||
labels : ['January', 'February', 'March', 'April', 'May', 'June', 'July'],
|
||||
datasets: [
|
||||
{
|
||||
label : 'Electronics',
|
||||
fillColor : 'rgb(210, 214, 222)',
|
||||
strokeColor : 'rgb(210, 214, 222)',
|
||||
pointColor : 'rgb(210, 214, 222)',
|
||||
pointStrokeColor : '#c1c7d1',
|
||||
pointHighlightFill : '#fff',
|
||||
pointHighlightStroke: 'rgb(220,220,220)',
|
||||
data : [65, 59, 80, 81, 56, 55, 40]
|
||||
},
|
||||
{
|
||||
label : 'Digital Goods',
|
||||
fillColor : 'rgba(60,141,188,0.9)',
|
||||
strokeColor : 'rgba(60,141,188,0.8)',
|
||||
pointColor : '#3b8bba',
|
||||
pointStrokeColor : 'rgba(60,141,188,1)',
|
||||
pointHighlightFill : '#fff',
|
||||
pointHighlightStroke: 'rgba(60,141,188,1)',
|
||||
data : [28, 48, 40, 19, 86, 27, 90]
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
var salesChartOptions = {
|
||||
// Boolean - If we should show the scale at all
|
||||
showScale : true,
|
||||
// Boolean - Whether grid lines are shown across the chart
|
||||
scaleShowGridLines : false,
|
||||
// String - Colour of the grid lines
|
||||
scaleGridLineColor : 'rgba(0,0,0,.05)',
|
||||
// Number - Width of the grid lines
|
||||
scaleGridLineWidth : 1,
|
||||
// Boolean - Whether to show horizontal lines (except X axis)
|
||||
scaleShowHorizontalLines: true,
|
||||
// Boolean - Whether to show vertical lines (except Y axis)
|
||||
scaleShowVerticalLines : true,
|
||||
// Boolean - Whether the line is curved between points
|
||||
bezierCurve : true,
|
||||
// Number - Tension of the bezier curve between points
|
||||
bezierCurveTension : 0.3,
|
||||
// Boolean - Whether to show a dot for each point
|
||||
pointDot : false,
|
||||
// Number - Radius of each point dot in pixels
|
||||
pointDotRadius : 4,
|
||||
// Number - Pixel width of point dot stroke
|
||||
pointDotStrokeWidth : 1,
|
||||
// Number - amount extra to add to the radius to cater for hit detection outside the drawn point
|
||||
pointHitDetectionRadius : 20,
|
||||
// Boolean - Whether to show a stroke for datasets
|
||||
datasetStroke : true,
|
||||
// Number - Pixel width of dataset stroke
|
||||
datasetStrokeWidth : 2,
|
||||
// Boolean - Whether to fill the dataset with a color
|
||||
datasetFill : true,
|
||||
// String - A legend template
|
||||
legendTemplate : '<ul class=\'<%=name.toLowerCase()%>-legend\'><% for (var i=0; i<datasets.length; i++){%><li><span style=\'background-color:<%=datasets[i].lineColor%>\'></span><%=datasets[i].label%></li><%}%></ul>',
|
||||
// Boolean - whether to maintain the starting aspect ratio or not when responsive, if set to false, will take up entire container
|
||||
maintainAspectRatio : true,
|
||||
// Boolean - whether to make the chart responsive to window resizing
|
||||
responsive : true
|
||||
};
|
||||
|
||||
// Create the line chart
|
||||
salesChart.Line(salesChartData, salesChartOptions);
|
||||
|
||||
// ---------------------------
|
||||
// - END MONTHLY SALES CHART -
|
||||
// ---------------------------
|
||||
|
||||
// -------------
|
||||
// - PIE CHART -
|
||||
// -------------
|
||||
// Get context with jQuery - using jQuery's .get() method.
|
||||
var pieChartCanvas = $('#pieChart').get(0).getContext('2d');
|
||||
var pieChart = new Chart(pieChartCanvas);
|
||||
var PieData = [
|
||||
{
|
||||
value : 700,
|
||||
color : '#f56954',
|
||||
highlight: '#f56954',
|
||||
label : 'Chrome'
|
||||
},
|
||||
{
|
||||
value : 500,
|
||||
color : '#00a65a',
|
||||
highlight: '#00a65a',
|
||||
label : 'IE'
|
||||
},
|
||||
{
|
||||
value : 400,
|
||||
color : '#f39c12',
|
||||
highlight: '#f39c12',
|
||||
label : 'FireFox'
|
||||
},
|
||||
{
|
||||
value : 600,
|
||||
color : '#00c0ef',
|
||||
highlight: '#00c0ef',
|
||||
label : 'Safari'
|
||||
},
|
||||
{
|
||||
value : 300,
|
||||
color : '#3c8dbc',
|
||||
highlight: '#3c8dbc',
|
||||
label : 'Opera'
|
||||
},
|
||||
{
|
||||
value : 100,
|
||||
color : '#d2d6de',
|
||||
highlight: '#d2d6de',
|
||||
label : 'Navigator'
|
||||
}
|
||||
];
|
||||
var pieOptions = {
|
||||
// Boolean - Whether we should show a stroke on each segment
|
||||
segmentShowStroke : true,
|
||||
// String - The colour of each segment stroke
|
||||
segmentStrokeColor : '#fff',
|
||||
// Number - The width of each segment stroke
|
||||
segmentStrokeWidth : 1,
|
||||
// Number - The percentage of the chart that we cut out of the middle
|
||||
percentageInnerCutout: 50, // This is 0 for Pie charts
|
||||
// Number - Amount of animation steps
|
||||
animationSteps : 100,
|
||||
// String - Animation easing effect
|
||||
animationEasing : 'easeOutBounce',
|
||||
// Boolean - Whether we animate the rotation of the Doughnut
|
||||
animateRotate : true,
|
||||
// Boolean - Whether we animate scaling the Doughnut from the centre
|
||||
animateScale : false,
|
||||
// Boolean - whether to make the chart responsive to window resizing
|
||||
responsive : true,
|
||||
// Boolean - whether to maintain the starting aspect ratio or not when responsive, if set to false, will take up entire container
|
||||
maintainAspectRatio : false,
|
||||
// String - A legend template
|
||||
legendTemplate : '<ul class=\'<%=name.toLowerCase()%>-legend\'><% for (var i=0; i<segments.length; i++){%><li><span style=\'background-color:<%=segments[i].fillColor%>\'></span><%if(segments[i].label){%><%=segments[i].label%><%}%></li><%}%></ul>',
|
||||
// String - A tooltip template
|
||||
tooltipTemplate : '<%=value %> <%=label%> users'
|
||||
};
|
||||
// Create pie or douhnut chart
|
||||
// You can switch between pie and douhnut using the method below.
|
||||
pieChart.Doughnut(PieData, pieOptions);
|
||||
// -----------------
|
||||
// - END PIE CHART -
|
||||
// -----------------
|
||||
|
||||
/* jVector Maps
|
||||
* ------------
|
||||
* Create a world map with markers
|
||||
*/
|
||||
$('#world-map-markers').vectorMap({
|
||||
map : 'world_mill_en',
|
||||
normalizeFunction: 'polynomial',
|
||||
hoverOpacity : 0.7,
|
||||
hoverColor : false,
|
||||
backgroundColor : 'transparent',
|
||||
regionStyle : {
|
||||
initial : {
|
||||
fill : 'rgba(210, 214, 222, 1)',
|
||||
'fill-opacity' : 1,
|
||||
stroke : 'none',
|
||||
'stroke-width' : 0,
|
||||
'stroke-opacity': 1
|
||||
},
|
||||
hover : {
|
||||
'fill-opacity': 0.7,
|
||||
cursor : 'pointer'
|
||||
},
|
||||
selected : {
|
||||
fill: 'yellow'
|
||||
},
|
||||
selectedHover: {}
|
||||
},
|
||||
markerStyle : {
|
||||
initial: {
|
||||
fill : '#00a65a',
|
||||
stroke: '#111'
|
||||
}
|
||||
},
|
||||
markers : [
|
||||
{ latLng: [41.90, 12.45], name: 'Vatican City' },
|
||||
{ latLng: [43.73, 7.41], name: 'Monaco' },
|
||||
{ latLng: [-0.52, 166.93], name: 'Nauru' },
|
||||
{ latLng: [-8.51, 179.21], name: 'Tuvalu' },
|
||||
{ latLng: [43.93, 12.46], name: 'San Marino' },
|
||||
{ latLng: [47.14, 9.52], name: 'Liechtenstein' },
|
||||
{ latLng: [7.11, 171.06], name: 'Marshall Islands' },
|
||||
{ latLng: [17.3, -62.73], name: 'Saint Kitts and Nevis' },
|
||||
{ latLng: [3.2, 73.22], name: 'Maldives' },
|
||||
{ latLng: [35.88, 14.5], name: 'Malta' },
|
||||
{ latLng: [12.05, -61.75], name: 'Grenada' },
|
||||
{ latLng: [13.16, -61.23], name: 'Saint Vincent and the Grenadines' },
|
||||
{ latLng: [13.16, -59.55], name: 'Barbados' },
|
||||
{ latLng: [17.11, -61.85], name: 'Antigua and Barbuda' },
|
||||
{ latLng: [-4.61, 55.45], name: 'Seychelles' },
|
||||
{ latLng: [7.35, 134.46], name: 'Palau' },
|
||||
{ latLng: [42.5, 1.51], name: 'Andorra' },
|
||||
{ latLng: [14.01, -60.98], name: 'Saint Lucia' },
|
||||
{ latLng: [6.91, 158.18], name: 'Federated States of Micronesia' },
|
||||
{ latLng: [1.3, 103.8], name: 'Singapore' },
|
||||
{ latLng: [1.46, 173.03], name: 'Kiribati' },
|
||||
{ latLng: [-21.13, -175.2], name: 'Tonga' },
|
||||
{ latLng: [15.3, -61.38], name: 'Dominica' },
|
||||
{ latLng: [-20.2, 57.5], name: 'Mauritius' },
|
||||
{ latLng: [26.02, 50.55], name: 'Bahrain' },
|
||||
{ latLng: [0.33, 6.73], name: 'São Tomé and Príncipe' }
|
||||
]
|
||||
});
|
||||
|
||||
/* SPARKLINE CHARTS
|
||||
* ----------------
|
||||
* Create a inline charts with spark line
|
||||
*/
|
||||
|
||||
// -----------------
|
||||
// - SPARKLINE BAR -
|
||||
// -----------------
|
||||
$('.sparkbar').each(function () {
|
||||
var $this = $(this);
|
||||
$this.sparkline('html', {
|
||||
type : 'bar',
|
||||
height : $this.data('height') ? $this.data('height') : '30',
|
||||
barColor: $this.data('color')
|
||||
});
|
||||
});
|
||||
|
||||
// -----------------
|
||||
// - SPARKLINE PIE -
|
||||
// -----------------
|
||||
$('.sparkpie').each(function () {
|
||||
var $this = $(this);
|
||||
$this.sparkline('html', {
|
||||
type : 'pie',
|
||||
height : $this.data('height') ? $this.data('height') : '90',
|
||||
sliceColors: $this.data('color')
|
||||
});
|
||||
});
|
||||
|
||||
// ------------------
|
||||
// - SPARKLINE LINE -
|
||||
// ------------------
|
||||
$('.sparkline').each(function () {
|
||||
var $this = $(this);
|
||||
$this.sparkline('html', {
|
||||
type : 'line',
|
||||
height : $this.data('height') ? $this.data('height') : '90',
|
||||
width : '100%',
|
||||
lineColor: $this.data('linecolor'),
|
||||
fillColor: $this.data('fillcolor'),
|
||||
spotColor: $this.data('spotcolor')
|
||||
});
|
||||
});
|
||||
});
|
||||
88
mondumas/static/dist/drawingboard/drawingboard.css
vendored
Normal file
@@ -0,0 +1,88 @@
|
||||
/* drawingboard.js v0.4.6 - https://github.com/Leimi/drawingboard.js
|
||||
* Copyright (c) 2015 Emmanuel Pelletier
|
||||
* Licensed MIT */
|
||||
.drawing-board, .drawing-board * { -webkit-box-sizing: content-box; -moz-box-sizing: content-box; box-sizing: content-box; }
|
||||
|
||||
.drawing-board-utils-hidden, .drawing-board-controls-hidden { display: none !important; }
|
||||
|
||||
.drawing-board { position: relative; display: block; }
|
||||
|
||||
.drawing-board-canvas-wrapper { position: relative; margin: 0; border: 1px solid #ddd; }
|
||||
|
||||
.drawing-board-canvas { position: absolute; top: 0; left: 0; z-index: 10; width: auto; }
|
||||
|
||||
.drawing-board-canvas { cursor: crosshair; z-index: 20; }
|
||||
|
||||
.drawing-board-cursor { position: absolute; top: 0; left: 0; pointer-events: none; border-radius: 50%; background: #ccc; background: rgba(0, 0, 0, 0.2); z-index: 30; }
|
||||
|
||||
.drawing-board-control > button, .drawing-board-control-colors-rainbows, .drawing-board-control-size .drawing-board-control-inner, .drawing-board-control-size-dropdown { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; overflow: hidden; border: none; background-color: #eee; padding: 2px 4px; border: 1px solid #ccc; box-shadow: 0 1px 3px -2px #121212, inset 0 2px 5px 0 rgba(255, 255, 255, 0.3); -webkit-box-shadow: 0 1px 3px -2px #121212, inset 0 2px 5px 0 rgba(255, 255, 255, 0.3); height: 28px; }
|
||||
|
||||
.drawing-board-control > button { cursor: pointer; min-width: 28px; line-height: 14px; }
|
||||
.drawing-board-control > button:hover, .drawing-board-control > button:focus { background-color: #ddd; }
|
||||
.drawing-board-control > button:active, .drawing-board-control > button.active { box-shadow: inset 0 1px 2px 0 rgba(0, 0, 0, 0.2); -webkit-box-shadow: inset 0 1px 2px 0 rgba(0, 0, 0, 0.2); background-color: #ddd; }
|
||||
.drawing-board-control > button[disabled] { color: gray; }
|
||||
.drawing-board-control > button[disabled]:hover, .drawing-board-control > button[disabled]:focus, .drawing-board-control > button[disabled]:active, .drawing-board-control > button[disabled].active { background-color: #eee; box-shadow: 0 1px 3px -2px #121212, inset 0 2px 5px 0 rgba(255, 255, 255, 0.3); -webkit-box-shadow: 0 1px 3px -2px #121212, inset 0 2px 5px 0 rgba(255, 255, 255, 0.3); cursor: default; }
|
||||
|
||||
.drawing-board-controls { margin: 0 auto; text-align: center; font-size: 0; display: table; border-spacing: 9.33333px 0; position: relative; min-height: 28px; }
|
||||
.drawing-board-controls[data-align="left"] { margin: 0; left: -9.33333px; }
|
||||
.drawing-board-controls[data-align="right"] { margin: 0 0 0 auto; right: -9.33333px; }
|
||||
.drawing-board-canvas-wrapper + .drawing-board-controls, .drawing-board-controls + .drawing-board-canvas-wrapper { margin-top: 5px; }
|
||||
|
||||
.drawing-board-controls-hidden { height: 0; min-height: 0; padding: 0; margin: 0; border: 0; }
|
||||
|
||||
.drawing-board-control { display: table-cell; border-collapse: separate; vertical-align: middle; font-size: 16px; height: 100%; }
|
||||
|
||||
.drawing-board-control-inner { position: relative; height: 100%; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; }
|
||||
|
||||
.drawing-board-control > button { margin: 0; vertical-align: middle; }
|
||||
|
||||
.drawing-board-control-colors { font-size: 0; line-height: 0; }
|
||||
|
||||
.drawing-board-control-colors-current { border: 1px solid #ccc; cursor: pointer; display: inline-block; width: 26px; height: 26px; }
|
||||
|
||||
.drawing-board-control-colors-rainbows { display: inline-block; margin-left: 5px; position: absolute; left: 0; top: 33px; margin-left: 0; z-index: 100; width: 250px; height: auto; padding: 4px; }
|
||||
|
||||
.drawing-board-control-colors-rainbow { height: 18px; }
|
||||
|
||||
.drawing-board-control-colors-picker:first-child { margin-right: 5px; }
|
||||
|
||||
.drawing-board-control-colors-picker { display: inline-block; width: 18px; height: 18px; cursor: pointer; }
|
||||
|
||||
.drawing-board-control-colors-picker[data-color="rgba(255, 255, 255, 1)"] { width: 16px; height: 17px; border: 1px solid #ccc; border-bottom: none; }
|
||||
|
||||
.drawing-board-control-colors-picker:hover { width: 16px; height: 16px; border: 1px solid #555; }
|
||||
|
||||
.drawing-board-control-drawingmode > button { margin-right: 2px; }
|
||||
.drawing-board-control-drawingmode > button:last-child { margin-right: 0; }
|
||||
|
||||
.drawing-board-control-drawingmode-pencil-button { overflow: hidden; *text-indent: -9999px; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAe9JREFUeNpiZAACVlFRBhYREQZcQPnbNwa3N28YlL5+ZfgLFfvPwGD9m4FhIgsDHuAO0gTUDNKIBvyBmqt/MTDMY8Gl0f31azD7L6oUIxCnAzWmAPHBfwwM01AMUAV6JfPQIVwOYgVqqPnFyOjz6///O38YGKpAgmAD1OXlGdTk5PD5hgeouZudj8/uy9evP/78/dsFFPsJNiAoKIiBABAHap4oLi9v8fTNm48//v7NBwbgWZgkE7rqt8DY+A8JZRBW+cfIuEDT0NDlzadP3z98/doPFDuCrB7TAGFhBqCNIGwM9OcKUzs7+xdv3355+f79VqDYAiTDwZgJh7ONgYpnOvn4GL949erT7UePdgL5JVCD4fgBLBBxaX74+PG789evnwby0/8jKXgExIeB+CG6Af///1e9Ki9vFSAkZPzoyZPPJy9evA9MB77/sWiEARZkzV+/fvXYtGnTpG3btj28EBT0BqjZ5D8OjXCwPksUhA1Wpggf/PHjx/9169Y9EBERaUlgZmaIAcrLE4rk5sIqBqDmlefnRPzfWGX5EaSZm5ubgRloADGA5QZ3RgK7gESY4PMNn9ZtObPpzZvfU4DiYkiB/RcHG+S7fyxAMH/lFU2GOZd2bLx18/cEUMoD4j9I+DcS/RtJHGTYf4AAAwAxaOMYHjxKFwAAAABJRU5ErkJggg=='); background-position: 50% 50%; background-repeat: no-repeat; }
|
||||
.drawing-board-control-drawingmode-pencil-button:before { content: ""; display: block; width: 0; height: 100%; }
|
||||
|
||||
.drawing-board-control-drawingmode-eraser-button { overflow: hidden; *text-indent: -9999px; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAkpJREFUeNp0kk+IElEcx39vFBc9+OfQRTAwzFt4CaYOKStj6MoeculStzoIQSB4kCVckmDx4iGCXWYJIqjoVOzO1l4qT1F7WfBWHvxzDPyTB3XUmXn93suRybUffHmP997n9/cRsFgwGARJkiAcDsPlwgEIeEZQAhCRAkgAlOD6SQP4rgMFDWVnYCAQgFgsBqFQCBwOByzZNQOotPHx1RNCCCipu6bfb+zSnslkeOQVILPrBkAirbws9btdTEWAzZPXpfepOzaeGMBXwe/3w3+MwTc3Dl+UeghTiskbBvR6Pbh18mZHB0jjmxvCKhIfR37s3r+Sevf8ca/T4TBF2HTSODuDxP7uNjrZFFbBk8lEzOVyspa4ykGYw2zfbTb/7ilvok1YhlVVFfP5vDydTkHXdXDdlhZOOnPY4/HA0YPtp3h6LFjh8XgsFgoFGTPgsKm1zDr8ajTQh8Fh5eGjZzjGI8yjKlgjF4tFGdd/YKYmRja24hw+zu3sYe2HiH3hYzQjl8tleTQanWtou93G6Qngdrth6+1+9h6hTULJZ/PeziJXKhV5OByeg1ut1gJOp9NZTdNOcQ419ot+ggp1qoLdBFmqVmNpm3A8Huewy+Wq1RH8QH9zmBlJJpMRdCIqiiIPBgN+2MCGsW/r8/kgGo1m0fmpzWarseayHlmNeL1eFiWC0cRqtSr3+/3FpSiKHMZtjU1glbFyfKgLTqfzEka9OJvNeDnzz1JnCaFmqOl8ZdJY1SiDOXCiXKg1NtG5DIt0y6ov3dE/AgwAENFWYYLj4mYAAAAASUVORK5CYII='); background-position: 50% 50%; background-repeat: no-repeat; }
|
||||
.drawing-board-control-drawingmode-eraser-button:before { content: ""; display: block; width: 0; height: 100%; }
|
||||
|
||||
.drawing-board-control-drawingmode-filler-button { overflow: hidden; *text-indent: -9999px; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAnNJREFUeNp0k0trE1EUx89MJpNJooYYXBgDNtCKdRPwlbqoCKUtaNVNA0Uo7UbMxoVPEARTXEi+QWfnwn6DEAlEkrSLttTGRiULEQlJ8yChmbzI++E50yTUJA78uMy953/u/557LmOz2WDEZ2m1WrckSRJSqdR2tVrdHQyYebwHtVoNuFHqTqczhQnWKaBYLDoKhcIuzgHDMKBSqeD20qd+LNdsNocSoFhRr9ctpVLJigl4xIIJQizLAmG4cAPa7bYcy9Iug5TL5UYikbD6/X7Rbre/IUcYe3WUW5ZsnQQzW9LpNOPz+UQc5aBM5mgdh7vI9FCCAesW2tnr9YqZTAby+bw8f3AQRP6853n+Ph5hemSCntjj8YjZbFYWx2IxeS2RSEMwuA87O79eqdXquVolK+GxnP0EPbHb7RZJSGABIR6PA11zJHKIR2MhHA5DIPDj7eH3j95KpfK60Wg8Yntil8slkqgnpioLghacTidoNDpEC3q9HnheCc3s1jZeLcW943pirPw/4lKpBkqlDubnl/riycnLsLy88EKj0fhzuRyZv8RFo1E6wpBYkiqy7Z54YmIcVlYeyOKC4mYwJ0nHRaQuM5vNT6hB/iceG7sIq6sPnwmC4MerDkby40AOCCoiddie1Wp92W7zQ2KTyQSLizNP8T0EsPLBbxEDnCj0GkM2qIEwyZRCobizsfH5A1ZXFhuN52F29vpz3HkL574mk8lj24Y5wsHkvjjoX0BOIWc5jruHzbK2ufmzEwpFO3jnDhQv4JoROYdoERVyGjEgZ8iBDlF3FzXo4go6utZ9lftY4N/dXisjR0i1G0ublv8KMAA0ZoUlicxrhwAAAABJRU5ErkJggg=='); background-position: 50% 50%; background-repeat: no-repeat; }
|
||||
.drawing-board-control-drawingmode-filler-button:before { content: ""; display: block; width: 0; height: 100%; }
|
||||
|
||||
.drawing-board-control-navigation > button { font-family: Helvetica, Arial, sans-serif; font-size: 14px; font-weight: bold; margin-right: 2px; }
|
||||
.drawing-board-control-navigation > button:last-child { margin-right: 0; }
|
||||
|
||||
.drawing-board-control-size[data-drawing-board-type="range"] .drawing-board-control-inner { width: 75px; }
|
||||
.drawing-board-control-size[data-drawing-board-type="dropdown"] .drawing-board-control-inner { overflow: visible; }
|
||||
|
||||
.drawing-board-control-size-range-input { position: relative; width: 100%; z-index: 100; margin: 0; padding: 0; border: 0; }
|
||||
|
||||
.drawing-board-control-size-range-current, .drawing-board-control-size-dropdown-current span, .drawing-board-control-size-dropdown span { display: block; background: #333; opacity: .8; }
|
||||
|
||||
.drawing-board-control-size-range-current { display: inline-block; opacity: .15; position: absolute; pointer-events: none; left: 50%; top: 50%; z-index: 50; }
|
||||
|
||||
.drawing-board-control-size-dropdown-current { display: block; height: 100%; width: 40px; overflow: hidden; position: relative; }
|
||||
.drawing-board-control-size-dropdown-current span { position: absolute; left: 50%; top: 50%; }
|
||||
|
||||
.drawing-board-control-size-dropdown { position: absolute; left: -6px; top: 33px; height: auto; list-style-type: none; margin: 0; padding: 0; z-index: 100; }
|
||||
.drawing-board-control-size-dropdown li { display: block; padding: 4px; margin: 3px 0; min-height: 16px; }
|
||||
.drawing-board-control-size-dropdown li:hover { background: #ccc; }
|
||||
.drawing-board-control-size-dropdown span { margin: 0 auto; }
|
||||
|
||||
.drawing-board-control-download-button { overflow: hidden; *text-indent: -9999px; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAoBJREFUeNqMkr9PU1EUx7/vR1tQ3yu10hAmTawtBSYSy2YccFOcnDQm/gewOLnj5GYMg4sdXFxkMca4OBAwdUBe/ZkIGFp+9tHXvh/3/fTcAm01aLzJybnn3nM+95tzrnDl6Tb+sibuTmWUWj3C6/Juk+LySUmyvt0FCKKA02ryOCy6LBiu15ngMbZ5DDCNBqIw6gKM+n4nECUJru3glKry8CpjQaHVYmC2rVH82DIMMMdGGARdwJ+SPNdFS9chx+MXDNMp/NzagWNatk/nQU/hiYAoih6FYTBCBs9zUXMCbAhx2OYOv351lPOJ3EwH4LteL6Dcp/Rfu3FrstDyIizt+agpaYxNDU0M9gl4v7Ck+TYrCYLQqZHUyTtdQBiutPSGUflczSXHs5lVKwZdSOBMvwztxVvN0RtzsiyXBFHsAvL5PBSnCpXV2getILFiE2SjspYbuZzPiDSZ2vOXmlvX5yQqTmMfg9ZXqtls1wnT09OHEyAq0aFLg/gSXsSWq9wWk+p9PrCoYTwcijdLOfE7UsEufN9HGIYnT4EnTGIXe1KqtNNIvuNnGamxfi7SgQD/nIJCTbzOPQ/SQh1pud7T4M6W/8qFIw/5WAr5m7Ozsw9UVc069Fls2yJzSC5/lnc9RhaHZVnfSqUnEgXP2oBqtYqBgYG2+mKxmOVADnAcB4yxHgD1RzehKKns/LyV4gUHBweQy+UyRkdH6UKJ6fQDFxcXoWkaXJeRuTgUGCdLQJ9bx72lGZimGWs2m+083oN+2iiFQiGxvLy8RrDzudyltgrG3N8U2G8CrPz4sGYYRqJSqWR4H/jNWbJhUjAWi8XG8R/L87yPpGCVttVfAgwAVpZR+8tZC08AAAAASUVORK5CYII='); background-position: 50% 50%; background-repeat: no-repeat; }
|
||||
.drawing-board-control-download-button:before { content: ""; display: block; width: 0; height: 100%; }
|
||||
1374
mondumas/static/dist/drawingboard/drawingboard.js
vendored
Normal file
5
mondumas/static/dist/drawingboard/drawingboard.min.css
vendored
Normal file
4
mondumas/static/dist/drawingboard/drawingboard.min.js
vendored
Normal file
16
mondumas/static/dist/drawingboard/drawingboard.nocontrol.css
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
/* drawingboard.js v0.4.6 - https://github.com/Leimi/drawingboard.js
|
||||
* Copyright (c) 2015 Emmanuel Pelletier
|
||||
* Licensed MIT */
|
||||
.drawing-board, .drawing-board * { -webkit-box-sizing: content-box; -moz-box-sizing: content-box; box-sizing: content-box; }
|
||||
|
||||
.drawing-board-utils-hidden { display: none !important; }
|
||||
|
||||
.drawing-board { position: relative; display: block; }
|
||||
|
||||
.drawing-board-canvas-wrapper { position: relative; margin: 0; border: 1px solid #ddd; }
|
||||
|
||||
.drawing-board-canvas { position: absolute; top: 0; left: 0; z-index: 10; width: auto; }
|
||||
|
||||
.drawing-board-canvas { cursor: crosshair; z-index: 20; }
|
||||
|
||||
.drawing-board-cursor { position: absolute; top: 0; left: 0; pointer-events: none; border-radius: 50%; background: #ccc; background: rgba(0, 0, 0, 0.2); z-index: 30; }
|
||||
971
mondumas/static/dist/drawingboard/drawingboard.nocontrol.js
vendored
Normal file
@@ -0,0 +1,971 @@
|
||||
/* drawingboard.js v0.4.6 - https://github.com/Leimi/drawingboard.js
|
||||
* Copyright (c) 2015 Emmanuel Pelletier
|
||||
* Licensed MIT */
|
||||
(function() {
|
||||
|
||||
'use strict';
|
||||
|
||||
/**
|
||||
* SimpleUndo is a very basic javascript undo/redo stack for managing histories of basically anything.
|
||||
*
|
||||
* options are: {
|
||||
* * `provider` : required. a function to call on `save`, which should provide the current state of the historized object through the given "done" callback
|
||||
* * `maxLength` : the maximum number of items in history
|
||||
* * `opUpdate` : a function to call to notify of changes in history. Will be called on `save`, `undo`, `redo` and `clear`
|
||||
* }
|
||||
*
|
||||
*/
|
||||
var SimpleUndo = function(options) {
|
||||
|
||||
var settings = options ? options : {};
|
||||
var defaultOptions = {
|
||||
provider: function() {
|
||||
throw new Error("No provider!");
|
||||
},
|
||||
maxLength: 30,
|
||||
onUpdate: function() {}
|
||||
};
|
||||
|
||||
this.provider = (typeof settings.provider != 'undefined') ? settings.provider : defaultOptions.provider;
|
||||
this.maxLength = (typeof settings.maxLength != 'undefined') ? settings.maxLength : defaultOptions.maxLength;
|
||||
this.onUpdate = (typeof settings.onUpdate != 'undefined') ? settings.onUpdate : defaultOptions.onUpdate;
|
||||
|
||||
this.initialItem = null;
|
||||
this.clear();
|
||||
};
|
||||
|
||||
function truncate (stack, limit) {
|
||||
while (stack.length > limit) {
|
||||
stack.shift();
|
||||
}
|
||||
}
|
||||
|
||||
SimpleUndo.prototype.initialize = function(initialItem) {
|
||||
this.stack[0] = initialItem;
|
||||
this.initialItem = initialItem;
|
||||
};
|
||||
|
||||
|
||||
SimpleUndo.prototype.clear = function() {
|
||||
this.stack = [this.initialItem];
|
||||
this.position = 0;
|
||||
this.onUpdate();
|
||||
};
|
||||
|
||||
SimpleUndo.prototype.save = function() {
|
||||
this.provider(function(current) {
|
||||
truncate(this.stack, this.maxLength);
|
||||
this.position = Math.min(this.position,this.stack.length - 1);
|
||||
|
||||
this.stack = this.stack.slice(0, this.position + 1);
|
||||
this.stack.push(current);
|
||||
this.position++;
|
||||
this.onUpdate();
|
||||
}.bind(this));
|
||||
};
|
||||
|
||||
SimpleUndo.prototype.undo = function(callback) {
|
||||
if (this.canUndo()) {
|
||||
var item = this.stack[--this.position];
|
||||
this.onUpdate();
|
||||
|
||||
if (callback) {
|
||||
callback(item);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
SimpleUndo.prototype.redo = function(callback) {
|
||||
if (this.canRedo()) {
|
||||
var item = this.stack[++this.position];
|
||||
this.onUpdate();
|
||||
|
||||
if (callback) {
|
||||
callback(item);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
SimpleUndo.prototype.canUndo = function() {
|
||||
return this.position > 0;
|
||||
};
|
||||
|
||||
SimpleUndo.prototype.canRedo = function() {
|
||||
return this.position < this.count();
|
||||
};
|
||||
|
||||
SimpleUndo.prototype.count = function() {
|
||||
return this.stack.length - 1; // -1 because of initial item
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//exports
|
||||
// node module
|
||||
if (typeof module != 'undefined') {
|
||||
module.exports = SimpleUndo;
|
||||
}
|
||||
|
||||
// browser global
|
||||
if (typeof window != 'undefined') {
|
||||
window.SimpleUndo = SimpleUndo;
|
||||
}
|
||||
|
||||
})();
|
||||
window.DrawingBoard = typeof DrawingBoard !== "undefined" ? DrawingBoard : {};
|
||||
|
||||
|
||||
DrawingBoard.Utils = {};
|
||||
|
||||
/*!
|
||||
* Tim (lite)
|
||||
* github.com/premasagar/tim
|
||||
*//*
|
||||
A tiny, secure JavaScript micro-templating script.
|
||||
*/
|
||||
DrawingBoard.Utils.tpl = (function(){
|
||||
"use strict";
|
||||
|
||||
var start = "{{",
|
||||
end = "}}",
|
||||
path = "[a-z0-9_][\\.a-z0-9_]*", // e.g. config.person.name
|
||||
pattern = new RegExp(start + "\\s*("+ path +")\\s*" + end, "gi"),
|
||||
undef;
|
||||
|
||||
return function(template, data){
|
||||
// Merge data into the template string
|
||||
return template.replace(pattern, function(tag, token){
|
||||
var path = token.split("."),
|
||||
len = path.length,
|
||||
lookup = data,
|
||||
i = 0;
|
||||
|
||||
for (; i < len; i++){
|
||||
lookup = lookup[path[i]];
|
||||
|
||||
// Property not found
|
||||
if (lookup === undef){
|
||||
throw "tim: '" + path[i] + "' not found in " + tag;
|
||||
}
|
||||
|
||||
// Return the required value
|
||||
if (i === len - 1){
|
||||
return lookup;
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
}());
|
||||
|
||||
/**
|
||||
* https://github.com/jeromeetienne/microevent.js
|
||||
* MicroEvent - to make any js object an event emitter (server or browser)
|
||||
*
|
||||
* - pure javascript - server compatible, browser compatible
|
||||
* - dont rely on the browser doms
|
||||
* - super simple - you get it immediatly, no mistery, no magic involved
|
||||
*
|
||||
* - create a MicroEventDebug with goodies to debug
|
||||
* - make it safer to use
|
||||
*/
|
||||
DrawingBoard.Utils.MicroEvent = function(){};
|
||||
|
||||
DrawingBoard.Utils.MicroEvent.prototype = {
|
||||
bind : function(event, fct){
|
||||
this._events = this._events || {};
|
||||
this._events[event] = this._events[event] || [];
|
||||
this._events[event].push(fct);
|
||||
},
|
||||
unbind : function(event, fct){
|
||||
this._events = this._events || {};
|
||||
if( event in this._events === false ) return;
|
||||
this._events[event].splice(this._events[event].indexOf(fct), 1);
|
||||
},
|
||||
trigger : function(event /* , args... */){
|
||||
this._events = this._events || {};
|
||||
if( event in this._events === false ) return;
|
||||
for(var i = 0; i < this._events[event].length; i++){
|
||||
this._events[event][i].apply(this, Array.prototype.slice.call(arguments, 1));
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
//I know.
|
||||
DrawingBoard.Utils._boxBorderSize = function($el, withPadding, withMargin, direction) {
|
||||
withPadding = !!withPadding || true;
|
||||
withMargin = !!withMargin || false;
|
||||
var width = 0,
|
||||
props;
|
||||
if (direction == "width") {
|
||||
props = ['border-left-width', 'border-right-width'];
|
||||
if (withPadding) props.push('padding-left', 'padding-right');
|
||||
if (withMargin) props.push('margin-left', 'margin-right');
|
||||
} else {
|
||||
props = ['border-top-width', 'border-bottom-width'];
|
||||
if (withPadding) props.push('padding-top', 'padding-bottom');
|
||||
if (withMargin) props.push('margin-top', 'margin-bottom');
|
||||
}
|
||||
for (var i = props.length - 1; i >= 0; i--)
|
||||
width += parseInt($el.css(props[i]).replace('px', ''), 10);
|
||||
return width;
|
||||
};
|
||||
|
||||
DrawingBoard.Utils.boxBorderWidth = function($el, withPadding, withMargin) {
|
||||
return DrawingBoard.Utils._boxBorderSize($el, withPadding, withMargin, 'width');
|
||||
};
|
||||
|
||||
DrawingBoard.Utils.boxBorderHeight = function($el, withPadding, withMargin) {
|
||||
return DrawingBoard.Utils._boxBorderSize($el, withPadding, withMargin, 'height');
|
||||
};
|
||||
|
||||
DrawingBoard.Utils.isColor = function(string) {
|
||||
if (!string || !string.length) return false;
|
||||
return (/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i).test(string) || $.inArray(string.substring(0, 3), ['rgb', 'hsl']) !== -1;
|
||||
};
|
||||
|
||||
/**
|
||||
* Packs an RGB color into a single integer.
|
||||
*/
|
||||
DrawingBoard.Utils.RGBToInt = function(r, g, b) {
|
||||
var c = 0;
|
||||
c |= (r & 255) << 16;
|
||||
c |= (g & 255) << 8;
|
||||
c |= (b & 255);
|
||||
return c;
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns informations on the pixel located at (x,y).
|
||||
*/
|
||||
DrawingBoard.Utils.pixelAt = function(image, x, y) {
|
||||
var i = (y * image.width + x) * 4;
|
||||
var c = DrawingBoard.Utils.RGBToInt(
|
||||
image.data[i],
|
||||
image.data[i + 1],
|
||||
image.data[i + 2]
|
||||
);
|
||||
|
||||
return [
|
||||
i, // INDEX
|
||||
x, // X
|
||||
y, // Y
|
||||
c // COLOR
|
||||
];
|
||||
};
|
||||
|
||||
/**
|
||||
* Compares two colors with the given tolerance (between 0 and 255).
|
||||
*/
|
||||
DrawingBoard.Utils.compareColors = function(a, b, tolerance) {
|
||||
if (tolerance === 0) {
|
||||
return (a === b);
|
||||
}
|
||||
|
||||
var ra = (a >> 16) & 255, rb = (b >> 16) & 255,
|
||||
ga = (a >> 8) & 255, gb = (b >> 8) & 255,
|
||||
ba = a & 255, bb = b & 255;
|
||||
|
||||
return (Math.abs(ra - rb) <= tolerance)
|
||||
&& (Math.abs(ga - gb) <= tolerance)
|
||||
&& (Math.abs(ba - bb) <= tolerance);
|
||||
};
|
||||
|
||||
(function() {
|
||||
var lastTime = 0;
|
||||
var vendors = ['ms', 'moz', 'webkit', 'o'];
|
||||
for(var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
|
||||
window.requestAnimationFrame = window[vendors[x]+'RequestAnimationFrame'];
|
||||
window.cancelAnimationFrame = window[vendors[x]+'CancelAnimationFrame'] || window[vendors[x]+'CancelRequestAnimationFrame'];
|
||||
}
|
||||
}());
|
||||
|
||||
window.DrawingBoard = typeof DrawingBoard !== "undefined" ? DrawingBoard : {};
|
||||
|
||||
/**
|
||||
* pass the id of the html element to put the drawing board into
|
||||
* and some options : {
|
||||
* controls: array of controls to initialize with the drawingboard. 'Colors', 'Size', and 'Navigation' by default
|
||||
* instead of simple strings, you can pass an object to define a control opts
|
||||
* ie ['Color', { Navigation: { reset: false }}]
|
||||
* controlsPosition: "top left" by default. Define where to put the controls: at the "top" or "bottom" of the canvas, aligned to "left"/"right"/"center"
|
||||
* background: background of the drawing board. Give a hex color or an image url "#ffffff" (white) by default
|
||||
* color: pencil color ("#000000" by default)
|
||||
* size: pencil size (3 by default)
|
||||
* webStorage: 'session', 'local' or false ('session' by default). store the current drawing in session or local storage and restore it when you come back
|
||||
* droppable: true or false (false by default). If true, dropping an image on the canvas will include it and allow you to draw on it,
|
||||
* errorMessage: html string to put in the board's element on browsers that don't support canvas.
|
||||
* stretchImg: default behavior of image setting on the canvas: set to the canvas width/height or not? false by default
|
||||
* }
|
||||
*/
|
||||
DrawingBoard.Board = function(id, opts) {
|
||||
this.opts = this.mergeOptions(opts);
|
||||
|
||||
this.ev = new DrawingBoard.Utils.MicroEvent();
|
||||
|
||||
this.id = id;
|
||||
this.$el = $(document.getElementById(id));
|
||||
if (!this.$el.length)
|
||||
return false;
|
||||
|
||||
var tpl = '<div class="drawing-board-canvas-wrapper"></canvas><canvas class="drawing-board-canvas"></canvas><div class="drawing-board-cursor drawing-board-utils-hidden"></div></div>';
|
||||
if (this.opts.controlsPosition.indexOf("bottom") > -1) tpl += '<div class="drawing-board-controls"></div>';
|
||||
else tpl = '<div class="drawing-board-controls"></div>' + tpl;
|
||||
|
||||
this.$el.addClass('drawing-board').append(tpl);
|
||||
this.dom = {
|
||||
$canvasWrapper: this.$el.find('.drawing-board-canvas-wrapper'),
|
||||
$canvas: this.$el.find('.drawing-board-canvas'),
|
||||
$cursor: this.$el.find('.drawing-board-cursor'),
|
||||
$controls: this.$el.find('.drawing-board-controls')
|
||||
};
|
||||
|
||||
$.each(['left', 'right', 'center'], $.proxy(function(n, val) {
|
||||
if (this.opts.controlsPosition.indexOf(val) > -1) {
|
||||
this.dom.$controls.attr('data-align', val);
|
||||
return false;
|
||||
}
|
||||
}, this));
|
||||
|
||||
this.canvas = this.dom.$canvas.get(0);
|
||||
this.ctx = this.canvas && this.canvas.getContext && this.canvas.getContext('2d') ? this.canvas.getContext('2d') : null;
|
||||
this.color = this.opts.color;
|
||||
|
||||
if (!this.ctx) {
|
||||
if (this.opts.errorMessage)
|
||||
this.$el.html(this.opts.errorMessage);
|
||||
return false;
|
||||
}
|
||||
|
||||
this.storage = this._getStorage();
|
||||
|
||||
this.initHistory();
|
||||
//init default board values before controls are added (mostly pencil color and size)
|
||||
this.reset({ webStorage: false, history: false, background: false });
|
||||
//init controls (they will need the default board values to work like pencil color and size)
|
||||
this.initControls();
|
||||
//set board's size after the controls div is added
|
||||
this.resize();
|
||||
//reset the board to take all resized space
|
||||
this.reset({ webStorage: false, history: false, background: true });
|
||||
this.restoreWebStorage();
|
||||
this.initDropEvents();
|
||||
this.initDrawEvents();
|
||||
};
|
||||
|
||||
|
||||
|
||||
DrawingBoard.Board.defaultOpts = {
|
||||
controls: ['Color', 'DrawingMode', 'Size', 'Navigation'],
|
||||
controlsPosition: "top left",
|
||||
color: "#000000",
|
||||
size: 1,
|
||||
background: "#fff",
|
||||
eraserColor: "background",
|
||||
fillTolerance: 100,
|
||||
fillHack: true, //try to prevent issues with anti-aliasing with a little hack by default
|
||||
webStorage: 'session',
|
||||
droppable: false,
|
||||
enlargeYourContainer: false,
|
||||
errorMessage: "<p>It seems you use an obsolete browser. <a href=\"http://browsehappy.com/\" target=\"_blank\">Update it</a> to start drawing.</p>",
|
||||
stretchImg: false //when setting the canvas img, strech the image at the whole canvas size when this opt is true
|
||||
};
|
||||
|
||||
|
||||
|
||||
DrawingBoard.Board.prototype = {
|
||||
|
||||
mergeOptions: function(opts) {
|
||||
opts = $.extend({}, DrawingBoard.Board.defaultOpts, opts);
|
||||
if (!opts.background && opts.eraserColor === "background")
|
||||
opts.eraserColor = "transparent";
|
||||
return opts;
|
||||
},
|
||||
|
||||
/**
|
||||
* Canvas reset/resize methods: put back the canvas to its default values
|
||||
*
|
||||
* depending on options, can set color, size, background back to default values
|
||||
* and store the reseted canvas in webstorage and history queue
|
||||
*
|
||||
* resize values depend on the `enlargeYourContainer` option
|
||||
*/
|
||||
|
||||
reset: function(opts) {
|
||||
opts = $.extend({
|
||||
color: this.opts.color,
|
||||
size: this.opts.size,
|
||||
webStorage: true,
|
||||
history: true,
|
||||
background: false
|
||||
}, opts);
|
||||
|
||||
this.setMode('pencil');
|
||||
|
||||
if (opts.background) {
|
||||
this.resetBackground(this.opts.background, $.proxy(function() {
|
||||
if (opts.history) this.saveHistory();
|
||||
}, this));
|
||||
}
|
||||
|
||||
if (opts.color) this.setColor(opts.color);
|
||||
if (opts.size) this.ctx.lineWidth = opts.size;
|
||||
|
||||
this.ctx.lineCap = "round";
|
||||
this.ctx.lineJoin = "round";
|
||||
// this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.width);
|
||||
|
||||
if (opts.webStorage) this.saveWebStorage();
|
||||
|
||||
// if opts.background we already dealt with the history
|
||||
if (opts.history && !opts.background) this.saveHistory();
|
||||
|
||||
this.blankCanvas = this.getImg();
|
||||
|
||||
this.ev.trigger('board:reset', opts);
|
||||
},
|
||||
|
||||
resetBackground: function(background, callback) {
|
||||
background = background || this.opts.background;
|
||||
|
||||
var bgIsColor = DrawingBoard.Utils.isColor(background);
|
||||
var prevMode = this.getMode();
|
||||
this.setMode('pencil');
|
||||
this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height);
|
||||
if (bgIsColor) {
|
||||
this.ctx.fillStyle = background;
|
||||
this.ctx.fillRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height);
|
||||
this.history.initialize(this.getImg());
|
||||
if (callback) callback();
|
||||
} else if (background)
|
||||
this.setImg(background, {
|
||||
callback: $.proxy(function() {
|
||||
this.history.initialize(this.getImg());
|
||||
if (callback) callback();
|
||||
}, this)
|
||||
});
|
||||
this.setMode(prevMode);
|
||||
},
|
||||
|
||||
resize: function() {
|
||||
this.dom.$controls.toggleClass('drawing-board-controls-hidden', (!this.controls || !this.controls.length));
|
||||
|
||||
var canvasWidth, canvasHeight;
|
||||
var widths = [
|
||||
this.$el.width(),
|
||||
DrawingBoard.Utils.boxBorderWidth(this.$el),
|
||||
DrawingBoard.Utils.boxBorderWidth(this.dom.$canvasWrapper, true, true)
|
||||
];
|
||||
var heights = [
|
||||
this.$el.height(),
|
||||
DrawingBoard.Utils.boxBorderHeight(this.$el),
|
||||
this.dom.$controls.height(),
|
||||
DrawingBoard.Utils.boxBorderHeight(this.dom.$controls, false, true),
|
||||
DrawingBoard.Utils.boxBorderHeight(this.dom.$canvasWrapper, true, true)
|
||||
];
|
||||
var that = this;
|
||||
var sum = function(values, multiplier) { //make the sum of all array values
|
||||
multiplier = multiplier || 1;
|
||||
var res = values[0];
|
||||
for (var i = 1; i < values.length; i++) {
|
||||
res = res + (values[i]*multiplier);
|
||||
}
|
||||
return res;
|
||||
};
|
||||
var sub = function(values) { return sum(values, -1); }; //substract all array values from the first one
|
||||
|
||||
if (this.opts.enlargeYourContainer) {
|
||||
canvasWidth = this.$el.width();
|
||||
canvasHeight = this.$el.height();
|
||||
|
||||
this.$el.width( sum(widths) );
|
||||
this.$el.height( sum(heights) );
|
||||
} else {
|
||||
canvasWidth = sub(widths);
|
||||
canvasHeight = sub(heights);
|
||||
}
|
||||
|
||||
this.dom.$canvasWrapper.css('width', canvasWidth + 'px');
|
||||
this.dom.$canvasWrapper.css('height', canvasHeight + 'px');
|
||||
|
||||
this.dom.$canvas.css('width', canvasWidth + 'px');
|
||||
this.dom.$canvas.css('height', canvasHeight + 'px');
|
||||
|
||||
this.canvas.width = canvasWidth;
|
||||
this.canvas.height = canvasHeight;
|
||||
},
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Controls:
|
||||
* the drawing board can has various UI elements to control it.
|
||||
* one control is represented by a class in the namespace DrawingBoard.Control
|
||||
* it must have a $el property (jQuery object), representing the html element to append on the drawing board at initialization.
|
||||
*
|
||||
*/
|
||||
|
||||
initControls: function() {
|
||||
this.controls = [];
|
||||
if (!this.opts.controls.length || !DrawingBoard.Control) return false;
|
||||
for (var i = 0; i < this.opts.controls.length; i++) {
|
||||
var c = null;
|
||||
if (typeof this.opts.controls[i] == "string")
|
||||
c = new window['DrawingBoard']['Control'][this.opts.controls[i]](this);
|
||||
else if (typeof this.opts.controls[i] == "object") {
|
||||
for (var controlName in this.opts.controls[i]) break;
|
||||
c = new window['DrawingBoard']['Control'][controlName](this, this.opts.controls[i][controlName]);
|
||||
}
|
||||
if (c) {
|
||||
this.addControl(c);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
//add a new control or an existing one at the position you want in the UI
|
||||
//to add a totally new control, you can pass a string with the js class as 1st parameter and control options as 2nd ie "addControl('Navigation', { reset: false }"
|
||||
//the last parameter (2nd or 3rd depending on the situation) is always the position you want to place the control at
|
||||
addControl: function(control, optsOrPos, pos) {
|
||||
if (typeof control !== "string" && (typeof control !== "object" || !control instanceof DrawingBoard.Control))
|
||||
return false;
|
||||
|
||||
var opts = typeof optsOrPos == "object" ? optsOrPos : {};
|
||||
pos = pos ? pos*1 : (typeof optsOrPos == "number" ? optsOrPos : null);
|
||||
|
||||
if (typeof control == "string")
|
||||
control = new window['DrawingBoard']['Control'][control](this, opts);
|
||||
|
||||
if (pos)
|
||||
this.dom.$controls.children().eq(pos).before(control.$el);
|
||||
else
|
||||
this.dom.$controls.append(control.$el);
|
||||
|
||||
if (!this.controls)
|
||||
this.controls = [];
|
||||
this.controls.push(control);
|
||||
this.dom.$controls.removeClass('drawing-board-controls-hidden');
|
||||
},
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* History methods: undo and redo drawed lines
|
||||
*/
|
||||
|
||||
initHistory: function() {
|
||||
this.history = new SimpleUndo({
|
||||
maxLength: 30,
|
||||
provider: $.proxy(function(done) {
|
||||
done(this.getImg());
|
||||
}, this),
|
||||
onUpdate: $.proxy(function() {
|
||||
this.ev.trigger('historyNavigation');
|
||||
}, this)
|
||||
});
|
||||
},
|
||||
|
||||
saveHistory: function() {
|
||||
this.history.save();
|
||||
},
|
||||
|
||||
restoreHistory: function(image) {
|
||||
this.setImg(image, {
|
||||
callback: $.proxy(function() {
|
||||
this.saveWebStorage();
|
||||
}, this)
|
||||
});
|
||||
},
|
||||
|
||||
goBackInHistory: function() {
|
||||
this.history.undo($.proxy(this.restoreHistory, this));
|
||||
},
|
||||
|
||||
goForthInHistory: function() {
|
||||
this.history.redo($.proxy(this.restoreHistory, this));
|
||||
},
|
||||
|
||||
/**
|
||||
* Image methods: you can directly put an image on the canvas, get it in base64 data url or start a download
|
||||
*/
|
||||
|
||||
setImg: function(src, opts) {
|
||||
opts = $.extend({
|
||||
stretch: this.opts.stretchImg,
|
||||
callback: null
|
||||
}, opts);
|
||||
|
||||
var ctx = this.ctx;
|
||||
var img = new Image();
|
||||
var oldGCO = ctx.globalCompositeOperation;
|
||||
img.onload = function() {
|
||||
ctx.globalCompositeOperation = "source-over";
|
||||
ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);
|
||||
|
||||
if (opts.stretch) {
|
||||
ctx.drawImage(img, 0, 0, ctx.canvas.width, ctx.canvas.height);
|
||||
} else {
|
||||
ctx.drawImage(img, 0, 0);
|
||||
}
|
||||
|
||||
ctx.globalCompositeOperation = oldGCO;
|
||||
|
||||
if (opts.callback) {
|
||||
opts.callback();
|
||||
}
|
||||
};
|
||||
img.src = src;
|
||||
},
|
||||
|
||||
getImg: function() {
|
||||
return this.canvas.toDataURL("image/png");
|
||||
},
|
||||
|
||||
downloadImg: function() {
|
||||
var img = this.getImg();
|
||||
img = img.replace("image/png", "image/octet-stream");
|
||||
window.location.href = img;
|
||||
},
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* WebStorage handling : save and restore to local or session storage
|
||||
*/
|
||||
|
||||
saveWebStorage: function() {
|
||||
if (window[this.storage]) {
|
||||
window[this.storage].setItem('drawing-board-' + this.id, this.getImg());
|
||||
this.ev.trigger('board:save' + this.storage.charAt(0).toUpperCase() + this.storage.slice(1), this.getImg());
|
||||
}
|
||||
},
|
||||
|
||||
restoreWebStorage: function() {
|
||||
if (window[this.storage] && window[this.storage].getItem('drawing-board-' + this.id) !== null) {
|
||||
this.setImg(window[this.storage].getItem('drawing-board-' + this.id));
|
||||
this.ev.trigger('board:restore' + this.storage.charAt(0).toUpperCase() + this.storage.slice(1), window[this.storage].getItem('drawing-board-' + this.id));
|
||||
}
|
||||
},
|
||||
|
||||
clearWebStorage: function() {
|
||||
if (window[this.storage] && window[this.storage].getItem('drawing-board-' + this.id) !== null) {
|
||||
window[this.storage].removeItem('drawing-board-' + this.id);
|
||||
this.ev.trigger('board:clear' + this.storage.charAt(0).toUpperCase() + this.storage.slice(1));
|
||||
}
|
||||
},
|
||||
|
||||
_getStorage: function() {
|
||||
if (!this.opts.webStorage || !(this.opts.webStorage === 'session' || this.opts.webStorage === 'local')) return false;
|
||||
return this.opts.webStorage + 'Storage';
|
||||
},
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Drop an image on the canvas to draw on it
|
||||
*/
|
||||
|
||||
initDropEvents: function() {
|
||||
if (!this.opts.droppable)
|
||||
return false;
|
||||
|
||||
this.dom.$canvas.on('dragover dragenter drop', function(e) {
|
||||
e.stopPropagation();
|
||||
e.preventDefault();
|
||||
});
|
||||
|
||||
this.dom.$canvas.on('drop', $.proxy(this._onCanvasDrop, this));
|
||||
},
|
||||
|
||||
_onCanvasDrop: function(e) {
|
||||
e = e.originalEvent ? e.originalEvent : e;
|
||||
var files = e.dataTransfer.files;
|
||||
if (!files || !files.length || files[0].type.indexOf('image') == -1 || !window.FileReader)
|
||||
return false;
|
||||
var fr = new FileReader();
|
||||
fr.readAsDataURL(files[0]);
|
||||
fr.onload = $.proxy(function(ev) {
|
||||
this.setImg(ev.target.result, {
|
||||
callback: $.proxy(function() {
|
||||
this.saveHistory();
|
||||
}, this)
|
||||
});
|
||||
this.ev.trigger('board:imageDropped', ev.target.result);
|
||||
this.ev.trigger('board:userAction');
|
||||
}, this);
|
||||
},
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* set and get current drawing mode
|
||||
*
|
||||
* possible modes are "pencil" (draw normally), "eraser" (draw transparent, like, erase, you know), "filler" (paint can)
|
||||
*/
|
||||
|
||||
setMode: function(newMode, silent) {
|
||||
silent = silent || false;
|
||||
newMode = newMode || 'pencil';
|
||||
|
||||
this.ev.unbind('board:startDrawing', $.proxy(this.fill, this));
|
||||
|
||||
if (this.opts.eraserColor === "transparent")
|
||||
this.ctx.globalCompositeOperation = newMode === "eraser" ? "destination-out" : "source-over";
|
||||
else {
|
||||
if (newMode === "eraser") {
|
||||
if (this.opts.eraserColor === "background" && DrawingBoard.Utils.isColor(this.opts.background))
|
||||
this.ctx.strokeStyle = this.opts.background;
|
||||
else if (DrawingBoard.Utils.isColor(this.opts.eraserColor))
|
||||
this.ctx.strokeStyle = this.opts.eraserColor;
|
||||
} else if (!this.mode || this.mode === "eraser") {
|
||||
this.ctx.strokeStyle = this.color;
|
||||
}
|
||||
|
||||
if (newMode === "filler")
|
||||
this.ev.bind('board:startDrawing', $.proxy(this.fill, this));
|
||||
}
|
||||
this.mode = newMode;
|
||||
if (!silent)
|
||||
this.ev.trigger('board:mode', this.mode);
|
||||
},
|
||||
|
||||
getMode: function() {
|
||||
return this.mode || "pencil";
|
||||
},
|
||||
|
||||
setColor: function(color) {
|
||||
var that = this;
|
||||
color = color || this.color;
|
||||
if (!DrawingBoard.Utils.isColor(color))
|
||||
return false;
|
||||
this.color = color;
|
||||
if (this.opts.eraserColor !== "transparent" && this.mode === "eraser") {
|
||||
var setStrokeStyle = function(mode) {
|
||||
if (mode !== "eraser")
|
||||
that.strokeStyle = that.color;
|
||||
that.ev.unbind('board:mode', setStrokeStyle);
|
||||
};
|
||||
this.ev.bind('board:mode', setStrokeStyle);
|
||||
} else
|
||||
this.ctx.strokeStyle = this.color;
|
||||
},
|
||||
|
||||
/**
|
||||
* Fills an area with the current stroke color.
|
||||
*/
|
||||
fill: function(e) {
|
||||
if (this.getImg() === this.blankCanvas) {
|
||||
this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height);
|
||||
this.ctx.fillStyle = this.color;
|
||||
this.ctx.fillRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height);
|
||||
return;
|
||||
}
|
||||
|
||||
var img = this.ctx.getImageData(0, 0, this.canvas.width, this.canvas.height);
|
||||
|
||||
// constants identifying pixels components
|
||||
var INDEX = 0, X = 1, Y = 2, COLOR = 3;
|
||||
|
||||
// target color components
|
||||
var stroke = this.ctx.strokeStyle;
|
||||
var r = parseInt(stroke.substr(1, 2), 16);
|
||||
var g = parseInt(stroke.substr(3, 2), 16);
|
||||
var b = parseInt(stroke.substr(5, 2), 16);
|
||||
|
||||
// starting point
|
||||
var start = DrawingBoard.Utils.pixelAt(img, parseInt(e.coords.x, 10), parseInt(e.coords.y, 10));
|
||||
var startColor = start[COLOR];
|
||||
var tolerance = this.opts.fillTolerance;
|
||||
var useHack = this.opts.fillHack; //see https://github.com/Leimi/drawingboard.js/pull/38
|
||||
|
||||
// no need to continue if starting and target colors are the same
|
||||
if (DrawingBoard.Utils.compareColors(startColor, DrawingBoard.Utils.RGBToInt(r, g, b), tolerance))
|
||||
return;
|
||||
|
||||
// pixels to evaluate
|
||||
var queue = [start];
|
||||
|
||||
// loop vars
|
||||
var pixel, x, y;
|
||||
var maxX = img.width - 1;
|
||||
var maxY = img.height - 1;
|
||||
|
||||
function updatePixelColor(pixel) {
|
||||
img.data[pixel[INDEX]] = r;
|
||||
img.data[pixel[INDEX] + 1] = g;
|
||||
img.data[pixel[INDEX] + 2] = b;
|
||||
}
|
||||
|
||||
while ((pixel = queue.pop())) {
|
||||
if (useHack)
|
||||
updatePixelColor(pixel);
|
||||
|
||||
if (DrawingBoard.Utils.compareColors(pixel[COLOR], startColor, tolerance)) {
|
||||
if (!useHack)
|
||||
updatePixelColor(pixel);
|
||||
if (pixel[X] > 0) // west
|
||||
queue.push(DrawingBoard.Utils.pixelAt(img, pixel[X] - 1, pixel[Y]));
|
||||
if (pixel[X] < maxX) // east
|
||||
queue.push(DrawingBoard.Utils.pixelAt(img, pixel[X] + 1, pixel[Y]));
|
||||
if (pixel[Y] > 0) // north
|
||||
queue.push(DrawingBoard.Utils.pixelAt(img, pixel[X], pixel[Y] - 1));
|
||||
if (pixel[Y] < maxY) // south
|
||||
queue.push(DrawingBoard.Utils.pixelAt(img, pixel[X], pixel[Y] + 1));
|
||||
}
|
||||
}
|
||||
|
||||
this.ctx.putImageData(img, 0, 0);
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* Drawing handling, with mouse or touch
|
||||
*/
|
||||
|
||||
initDrawEvents: function() {
|
||||
this.isDrawing = false;
|
||||
this.isMouseHovering = false;
|
||||
this.coords = {};
|
||||
this.coords.old = this.coords.current = this.coords.oldMid = { x: 0, y: 0 };
|
||||
|
||||
this.dom.$canvas.on('mousedown touchstart', $.proxy(function(e) {
|
||||
this._onInputStart(e, this._getInputCoords(e) );
|
||||
}, this));
|
||||
|
||||
this.dom.$canvas.on('mousemove touchmove', $.proxy(function(e) {
|
||||
this._onInputMove(e, this._getInputCoords(e) );
|
||||
}, this));
|
||||
|
||||
this.dom.$canvas.on('mousemove', $.proxy(function(e) {
|
||||
|
||||
}, this));
|
||||
|
||||
this.dom.$canvas.on('mouseup touchend', $.proxy(function(e) {
|
||||
this._onInputStop(e, this._getInputCoords(e) );
|
||||
}, this));
|
||||
|
||||
this.dom.$canvas.on('mouseover', $.proxy(function(e) {
|
||||
this._onMouseOver(e, this._getInputCoords(e) );
|
||||
}, this));
|
||||
|
||||
this.dom.$canvas.on('mouseout', $.proxy(function(e) {
|
||||
this._onMouseOut(e, this._getInputCoords(e) );
|
||||
|
||||
}, this));
|
||||
|
||||
$('body').on('mouseup touchend', $.proxy(function(e) {
|
||||
this.isDrawing = false;
|
||||
}, this));
|
||||
|
||||
if (window.requestAnimationFrame) requestAnimationFrame( $.proxy(this.draw, this) );
|
||||
},
|
||||
|
||||
draw: function() {
|
||||
//if the pencil size is big (>10), the small crosshair makes a friend: a circle of the size of the pencil
|
||||
//todo: have the circle works on every browser - it currently should be added only when CSS pointer-events are supported
|
||||
//we assume that if requestAnimationFrame is supported, pointer-events is too, but this is terribad.
|
||||
if (window.requestAnimationFrame && this.ctx.lineWidth > 10 && this.isMouseHovering) {
|
||||
this.dom.$cursor.css({ width: this.ctx.lineWidth + 'px', height: this.ctx.lineWidth + 'px' });
|
||||
var transform = DrawingBoard.Utils.tpl("translateX({{x}}px) translateY({{y}}px)", { x: this.coords.current.x-(this.ctx.lineWidth/2), y: this.coords.current.y-(this.ctx.lineWidth/2) });
|
||||
this.dom.$cursor.css({ 'transform': transform, '-webkit-transform': transform, '-ms-transform': transform });
|
||||
this.dom.$cursor.removeClass('drawing-board-utils-hidden');
|
||||
} else {
|
||||
this.dom.$cursor.addClass('drawing-board-utils-hidden');
|
||||
}
|
||||
|
||||
if (this.isDrawing) {
|
||||
var currentMid = this._getMidInputCoords(this.coords.current);
|
||||
this.ctx.beginPath();
|
||||
this.ctx.moveTo(currentMid.x, currentMid.y);
|
||||
this.ctx.quadraticCurveTo(this.coords.old.x, this.coords.old.y, this.coords.oldMid.x, this.coords.oldMid.y);
|
||||
this.ctx.stroke();
|
||||
|
||||
this.coords.old = this.coords.current;
|
||||
this.coords.oldMid = currentMid;
|
||||
}
|
||||
|
||||
if (window.requestAnimationFrame) requestAnimationFrame( $.proxy(function() { this.draw(); }, this) );
|
||||
},
|
||||
|
||||
_onInputStart: function(e, coords) {
|
||||
this.coords.current = this.coords.old = coords;
|
||||
this.coords.oldMid = this._getMidInputCoords(coords);
|
||||
this.isDrawing = true;
|
||||
|
||||
if (!window.requestAnimationFrame) this.draw();
|
||||
|
||||
this.ev.trigger('board:startDrawing', {e: e, coords: coords});
|
||||
e.stopPropagation();
|
||||
e.preventDefault();
|
||||
},
|
||||
|
||||
_onInputMove: function(e, coords) {
|
||||
this.coords.current = coords;
|
||||
this.ev.trigger('board:drawing', {e: e, coords: coords});
|
||||
|
||||
if (!window.requestAnimationFrame) this.draw();
|
||||
|
||||
e.stopPropagation();
|
||||
e.preventDefault();
|
||||
},
|
||||
|
||||
_onInputStop: function(e, coords) {
|
||||
if (this.isDrawing && (!e.touches || e.touches.length === 0)) {
|
||||
this.isDrawing = false;
|
||||
|
||||
this.saveWebStorage();
|
||||
this.saveHistory();
|
||||
|
||||
this.ev.trigger('board:stopDrawing', {e: e, coords: coords});
|
||||
this.ev.trigger('board:userAction');
|
||||
e.stopPropagation();
|
||||
e.preventDefault();
|
||||
}
|
||||
},
|
||||
|
||||
_onMouseOver: function(e, coords) {
|
||||
this.isMouseHovering = true;
|
||||
this.coords.old = this._getInputCoords(e);
|
||||
this.coords.oldMid = this._getMidInputCoords(this.coords.old);
|
||||
|
||||
this.ev.trigger('board:mouseOver', {e: e, coords: coords});
|
||||
},
|
||||
|
||||
_onMouseOut: function(e, coords) {
|
||||
this.isMouseHovering = false;
|
||||
|
||||
this.ev.trigger('board:mouseOut', {e: e, coords: coords});
|
||||
},
|
||||
|
||||
_getInputCoords: function(e) {
|
||||
e = e.originalEvent ? e.originalEvent : e;
|
||||
var
|
||||
rect = this.canvas.getBoundingClientRect(),
|
||||
width = this.dom.$canvas.width(),
|
||||
height = this.dom.$canvas.height()
|
||||
;
|
||||
var x, y;
|
||||
if (e.touches && e.touches.length == 1) {
|
||||
x = e.touches[0].pageX;
|
||||
y = e.touches[0].pageY;
|
||||
} else {
|
||||
x = e.pageX;
|
||||
y = e.pageY;
|
||||
}
|
||||
x = x - this.dom.$canvas.offset().left;
|
||||
y = y - this.dom.$canvas.offset().top;
|
||||
x *= (width / rect.width);
|
||||
y *= (height / rect.height);
|
||||
return {
|
||||
x: x,
|
||||
y: y
|
||||
};
|
||||
},
|
||||
|
||||
_getMidInputCoords: function(coords) {
|
||||
return {
|
||||
x: this.coords.old.x + coords.x>>1,
|
||||
y: this.coords.old.y + coords.y>>1
|
||||
};
|
||||
}
|
||||
};
|
||||
5
mondumas/static/dist/drawingboard/drawingboard.nocontrol.min.css
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
/* drawingboard.js v0.4.6 - https://github.com/Leimi/drawingboard.js
|
||||
* Copyright (c) 2015 Emmanuel Pelletier
|
||||
* Licensed MIT */
|
||||
|
||||
.drawing-board,.drawing-board *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.drawing-board-utils-hidden{display:none!important}.drawing-board{position:relative;display:block}.drawing-board-canvas-wrapper{position:relative;margin:0;border:1px solid #ddd}.drawing-board-canvas{position:absolute;top:0;left:0;width:auto;cursor:crosshair;z-index:20}.drawing-board-cursor{position:absolute;top:0;left:0;pointer-events:none;border-radius:50%;background:#ccc;background:rgba(0,0,0,.2);z-index:30}
|
||||
4
mondumas/static/dist/drawingboard/drawingboard.nocontrol.min.js
vendored
Normal file
BIN
mondumas/static/img/Logo-CD.jpg
Normal file
|
After Width: | Height: | Size: 76 KiB |
BIN
mondumas/static/img/Logo-ME.jpg
Normal file
|
After Width: | Height: | Size: 68 KiB |
BIN
mondumas/static/img/Logo-PE.jpg
Normal file
|
After Width: | Height: | Size: 57 KiB |
|
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 56 KiB |