From eaaf65131b347bed619afd94b4f503fc6b540d1c Mon Sep 17 00:00:00 2001 From: Anand Doshi Date: Fri, 24 Feb 2012 15:29:07 +0530 Subject: [PATCH] desktop: first cut --- erpnext/home/page/desktop/__init__.py | 0 erpnext/home/page/desktop/desktop.css | 95 ++++++++++++++++++++++ erpnext/home/page/desktop/desktop.html | 6 ++ erpnext/home/page/desktop/desktop.js | 79 ++++++++++++++++++ erpnext/home/page/desktop/desktop.txt | 28 +++++++ erpnext/patches/jan_mar_2012/navupdate.py | 3 +- images/sprite-desktop.png | Bin 0 -> 30354 bytes 7 files changed, 210 insertions(+), 1 deletion(-) create mode 100644 erpnext/home/page/desktop/__init__.py create mode 100644 erpnext/home/page/desktop/desktop.css create mode 100644 erpnext/home/page/desktop/desktop.html create mode 100644 erpnext/home/page/desktop/desktop.js create mode 100644 erpnext/home/page/desktop/desktop.txt create mode 100644 images/sprite-desktop.png diff --git a/erpnext/home/page/desktop/__init__.py b/erpnext/home/page/desktop/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/erpnext/home/page/desktop/desktop.css b/erpnext/home/page/desktop/desktop.css new file mode 100644 index 00000000000..4a8d128bee8 --- /dev/null +++ b/erpnext/home/page/desktop/desktop.css @@ -0,0 +1,95 @@ +/* Sprite CSS */ +.sprite-account{ background-position: 0 0; width: 32px; height: 40px; } +.sprite-selling{ background-position: 0 -90px; width: 40px; height: 40px; } +.sprite-calendar{ background-position: 0 -180px; width: 35px; height: 40px; } +.sprite-dashboard{ background-position: 0 -270px; width: 40px; height: 29px; } +.sprite-feed{ background-position: 0 -349px; width: 32px; height: 40px; } +.sprite-hr{ background-position: 0 -439px; width: 40px; height: 32px; } +.sprite-kb{ background-position: 0 -521px; width: 24px; height: 39px; } +.sprite-messages{ background-position: 0 -610px; width: 40px; height: 26px; } +.sprite-production{ background-position: 0 -686px; width: 40px; height: 33px; } +.sprite-project{ background-position: 0 -769px; width: 40px; height: 22px; } +.sprite-report{ background-position: 0 -841px; width: 29px; height: 40px; } +.sprite-buying{ background-position: 0 -931px; width: 34px; height: 40px; } +.sprite-setting{ background-position: 0 -1021px; width: 37px; height: 40px; } +.sprite-stock{ background-position: 0 -1111px; width: 34px; height: 39px; } +.sprite-support{ background-position: 0 -1200px; width: 40px; height: 40px; } +.sprite-todo{ background-position: 0 -1290px; width: 40px; height: 34px; } +.sprite-website{ background-position: 0 -1374px; width: 40px; height: 40px; } + +.sprite-image { background-image: url("images/sprite-desktop.png"); } + + +.sprite-account{ margin-top: 8px; margin-left: 12px; } +.sprite-selling{ margin-top: 8px; margin-left: 8px; } +.sprite-stock{ margin-top: 8px; margin-left: 8px; } +.sprite-buying{ margin-top: 8px; margin-left: 12px; } +.sprite-support{ margin-top: 8px; margin-left: 8px; } +.sprite-hr{ margin-top: 12px; margin-left: 8px; } +.sprite-project{ margin-top: 16px; margin-left: 8px; } +.sprite-production{ margin-top: 10px; margin-left: 8px; } +.sprite-website{ margin-top: 8px; margin-left: 8px; } +.sprite-setting{ margin-top: 8px; margin-left: 8px; } +.sprite-dashboard{ margin-top: 14px; margin-left: 8px; } +.sprite-report{ margin-top: 8px; margin-left: 14px; } + +.sprite-messages{ margin-top: 14px; margin-left: 8px; } +.sprite-todo{ margin-top: 10px; margin-left: 10px; } +.sprite-calendar{ margin-top: 8px; margin-left: 10px; } +.sprite-kb{ margin-top: 8px; margin-left: 16px; } +.sprite-feed{ margin-top: 8px; margin-left: 14px; } + +.case-border { + border-radius: 10px; + width: 56px; + height: 56px; + border: 4px solid white; + box-shadow: 0 0 10px 1px black; + margin: auto; +} + +.case-wrapper { + margin: 24px; + float: left; + width: 100px; + height: 100px; +} + +.case-label { + color: white; + font-size: 14px; + padding-top: 10px; + text-align: center; + text-shadow: 1px 1px 5px #000, 3px 3px 5px #000; +} + +/* Hover and click effects */ +.case-border:hover { + animation: hover-effect 0.5s; + -moz-animation: hover-effect 0.5s; /* Firefox */ + -webkit-animation: hover-effect 0.5s; /* Safari and Chrome */ + box-shadow: 0 0 2px 0 black, 0 0 10px 1px white; +} + +.case-border:active, .case-border:focus { + box-shadow: 0 0 5px 2px black; +} + +@keyframes hover-effect +{ + from {box-shadow: 0 0 10px 1px black} + to {box-shadow: 0 0 2px 0 black, 0 0 10px 1px white;} +} + +@-moz-keyframes hover-effect /* Firefox */ +{ + from {box-shadow: 0 0 10px 1px black} + to {box-shadow: 0 0 2px 0 black, 0 0 10px 1px white;} +} + +@-webkit-keyframes hover-effect /* Safari and Chrome */ +{ + from {box-shadow: 0 0 10px 1px black} + to {box-shadow: 0 0 2px 0 black, 0 0 10px 1px white;} +} + diff --git a/erpnext/home/page/desktop/desktop.html b/erpnext/home/page/desktop/desktop.html new file mode 100644 index 00000000000..52af1c59356 --- /dev/null +++ b/erpnext/home/page/desktop/desktop.html @@ -0,0 +1,6 @@ +
+
+
+
+
diff --git a/erpnext/home/page/desktop/desktop.js b/erpnext/home/page/desktop/desktop.js new file mode 100644 index 00000000000..2595869e9aa --- /dev/null +++ b/erpnext/home/page/desktop/desktop.js @@ -0,0 +1,79 @@ +wn.provide('erpnext.desktop'); + +erpnext.desktop.gradient = "" + +erpnext.desktop.refresh = function() { + erpnext.desktop.add_classes(); + erpnext.desktop.render(); +} + +erpnext.desktop.add_classes = function() { + var classes = [ + { name: 'red', start: '#A90329', middle: '#8F0222', end: '#6D0019' }, + { name: 'brown', start: '#723e02', middle: '#633501', end: '#4a2700' }, + { name: 'green', start: '#4b5602', middle: '#3f4901', end: '#313800' }, + { name: 'blue', start: '#026584', middle: '#025770', end: '#004256' }, + { name: 'yellow', start: '#be7902', middle: '#a66a02', end: '#865500' }, + { name: 'purple', start: '#4d017d', middle: '#410169', end: '#310050' }, + { name: 'ocean', start: '#02a47e', middle: '#018d6c', end: '#006a51' }, + { name: 'pink', start: '#a40281', middle: '#8d016e', end: '#6a0053' }, + { name: 'grey', start: '#545454', middle: '#484848', end: '#363636' }, + { name: 'dark-red', start: '#68021a', middle: '#590116', end: '#440010' }, + { name: 'leaf-green', start: '#b0a400', middle: '#968c00', end: '#726a00' }, + { name: 'dark-blue', start: '#023bae', middle: '#013295', end: '#002672' }, + { name: 'bright-green', start: '#03ad1f', middle: '#02941a', end: '#007213' }, + { name: 'bright-yellow', start: '#ffd65e', middle: '#febf04', end: '#ed9017' }, + ]; + $.each(classes, function(i, v) { + $(repl(erpnext.desktop.gradient, v)).appendTo('head'); + }); +} + +erpnext.desktop.render = function() { + var icons = [ + { gradient: 'brown', sprite: 'feed', label: 'Activity', link: '#!Event Updates' }, + { gradient: 'blue', sprite: 'account', label: 'Accounts', link: '#!accounts-home' }, + { gradient: 'green', sprite: 'selling', label: 'Selling', link: '#!selling-home' }, + { gradient: 'yellow', sprite: 'stock', label: 'Stock', link: '#!stock-home' }, + { gradient: 'red', sprite: 'buying', label: 'Buying', link: '#!buying-home' }, + { gradient: 'purple', sprite: 'support', label: 'Support', link: '#!support-home' }, + { gradient: 'ocean', sprite: 'hr', label: 'Human
Resources', link: '#!hr-home' }, + { gradient: 'red', sprite: 'project', label: 'Projects', link: '#!projects-home' }, + { gradient: 'dark-red', sprite: 'production', label: 'Production', link: '#!production-home' }, + { gradient: 'leaf-green', sprite: 'website', label: 'Website', link: '#!website-home' }, + { gradient: 'grey', sprite: 'setting', label: 'Settings', link: '#!Setup' }, + { gradient: 'bright-green', sprite: 'dashboard', label: 'Dashboard', link: '#!dashboard' }, + //{ gradient: 'dark-blue', sprite: 'report', label: 'Report' }, + { gradient: 'pink', sprite: 'messages', label: 'Messages', link: '#!messages' }, + { gradient: 'bright-yellow', sprite: 'todo', label: 'To Do', link: '#!todo' }, + { gradient: 'red', sprite: 'calendar', label: 'Calendar', link: '#!calendar' }, + { gradient: 'red', sprite: 'kb', label: 'Knowledge
Base', link: '#!questions' }, + ] + + $.each(icons, function(i, v) { + var icon_case = $('#icon-grid').append(repl('\ +
\ +
\ +
\ +
\ +
%(label)s
\ +
', v)); + }); + +} + +pscript.onload_desktop = function() { + // load desktop + erpnext.desktop.refresh(); +} + diff --git a/erpnext/home/page/desktop/desktop.txt b/erpnext/home/page/desktop/desktop.txt new file mode 100644 index 00000000000..f1918b9a843 --- /dev/null +++ b/erpnext/home/page/desktop/desktop.txt @@ -0,0 +1,28 @@ +# Page, desktop +[ + + # These values are common in all dictionaries + { + 'creation': '2012-02-24 11:37:43', + 'docstatus': 0, + 'modified': '2012-02-24 11:37:43', + 'modified_by': u'Administrator', + 'owner': u'Administrator' + }, + + # These values are common for all Page + { + 'doctype': 'Page', + 'module': u'Home', + 'name': '__common__', + 'page_name': u'desktop', + 'standard': u'Yes', + 'title': u'Desktop' + }, + + # Page, desktop + { + 'doctype': 'Page', + 'name': u'desktop' + } +] \ No newline at end of file diff --git a/erpnext/patches/jan_mar_2012/navupdate.py b/erpnext/patches/jan_mar_2012/navupdate.py index 7d8665002e2..483ba2a967b 100644 --- a/erpnext/patches/jan_mar_2012/navupdate.py +++ b/erpnext/patches/jan_mar_2012/navupdate.py @@ -27,10 +27,11 @@ def execute(): reload_doc('production', 'page', 'production_home') reload_doc('projects', 'page', 'projects_home') reload_doc('website', 'page', 'website_home') + reload_doc('home', 'page', 'desktop') webnotes.conn.commit() webnotes.conn.sql("""create table __SchedulerLog ( `timestamp` timestamp, method varchar(200), error text - ) engine=MyISAM""") \ No newline at end of file + ) engine=MyISAM""") diff --git a/images/sprite-desktop.png b/images/sprite-desktop.png new file mode 100644 index 0000000000000000000000000000000000000000..cb8fc6ecfef0ac09e7b9ddb1bae1ddc9d7f420a8 GIT binary patch literal 30354 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%0Dr5w p