diff --git a/frappe/core/page/desktop/desktop.js b/frappe/core/page/desktop/desktop.js index 4752a34212..727db6a8e6 100644 --- a/frappe/core/page/desktop/desktop.js +++ b/frappe/core/page/desktop/desktop.js @@ -1,6 +1,8 @@ frappe.provide('frappe.desktop'); frappe.pages['desktop'].on_page_load = function(wrapper) { + frappe.assets.views["Module"](); + // load desktop frappe.desktop.refresh(wrapper); }; diff --git a/frappe/hooks.py b/frappe/hooks.py index 568b670997..13bad081e7 100644 --- a/frappe/hooks.py +++ b/frappe/hooks.py @@ -11,19 +11,23 @@ before_install = "frappe.utils.install.before_install" after_install = "frappe.utils.install.after_install" # website -app_include_js = "assets/js/frappe.min.js" +app_include_js = [ + "assets/js/desk.min.js", + "assets/js/editor.min.js", +] app_include_css = [ - "assets/frappe/css/splash.css", - "assets/css/frappe.css" - ] + "assets/css/desk.min.css" +] + web_include_js = [ - "assets/js/frappe-web.min.js", - "website_script.js" - ] + "assets/js/frappe-web.min.js", + "website_script.js" +] + web_include_css = [ - "assets/css/frappe-web.css", - "style_settings.css" - ] + "assets/css/frappe-web.css", + "style_settings.css" +] write_file_keys = ["file_url", "file_name"] diff --git a/frappe/public/build.json b/frappe/public/build.json index 8c77592c32..b3425e42c2 100644 --- a/frappe/public/build.json +++ b/frappe/public/build.json @@ -14,21 +14,17 @@ "public/js/frappe/misc/pretty_date.js", "public/js/lib/moment/moment.min.js", "public/js/lib/highlight.pack.js", + "public/js/frappe/class.js", "website/js/website.js" ], "js/editor.min.js": [ "public/js/lib/jquery/jquery.hotkeys.js", - "public/js/frappe/class.js", "public/js/lib/beautify-html.js", "public/js/frappe/ui/editor.js" ], - "css/frappe.css": [ + "css/desk.min.css": [ "public/js/lib/jquery/bootstrap_theme/jquery-ui.selected.css", - "public/js/lib/slickgrid/slick.grid.css", - "public/js/lib/slickgrid/slick-default-theme.css", - "public/css/bootstrap.css", - "public/css/tag-it.css", "public/css/font-awesome.css", "public/css/octicons/octicons.css", "public/css/desk.css", @@ -37,47 +33,35 @@ "public/css/navbar.css", "public/css/sidebar.css", "public/css/page.css", - "public/css/form.css", - "public/css/form_grid.css", - "public/css/list.css", - "public/css/report.css", - "public/css/module.css", - "public/css/slickgrid.css", - "public/css/tree_grid.css", "public/css/tree.css", "public/css/nprogress.css", "public/css/desktop.css", "public/css/mobile.css" ], - "js/frappe.min.js": [ + "js/desk.min.js": [ "public/js/lib/jquery/jquery-ui.min.js", "public/js/lib/Sortable.min.js", "public/js/lib/tag-it.min.js", - "public/js/lib/jquery/jquery.hotkeys.js", "public/js/lib/bootstrap.min.js", "public/js/lib/nprogress.js", - "public/js/lib/beautify-html.js", "public/js/lib/moment/moment.min.js", "public/js/lib/moment/moment-timezone.min.js", - "public/js/frappe/format.js", "public/js/frappe/provide.js", "public/js/frappe/class.js", - "public/js/frappe/translate.js", "public/js/frappe/assets.js", + "public/js/frappe/format.js", + "public/js/frappe/form/formatters.js", + "public/js/frappe/translate.js", "public/js/frappe/ui/modal.html", "public/js/frappe/dom.js", "public/js/frappe/ui/messages.js", - "public/js/frappe/ui/listing.html", - "public/js/frappe/ui/listing.js", + "public/js/frappe/request.js", "public/js/frappe/router.js", - "public/js/frappe/desk.js", "public/js/frappe/defaults.js", "public/js/lib/microtemplate.js", - "public/html/print_template.html", - "public/js/legacy/globals.js", "public/js/legacy/datatype.js", "public/js/legacy/dom.js", @@ -89,6 +73,8 @@ "public/js/frappe/ui/iconbar.js", "public/js/frappe/form/layout.js", "public/js/frappe/ui/field_group.js", + "public/js/frappe/form/control.js", + "public/js/frappe/form/link_selector.js", "public/js/frappe/ui/dialog.js", "public/js/frappe/ui/button.js", "public/js/frappe/ui/app_icon.js", @@ -99,7 +85,6 @@ "public/js/frappe/model/create_new.js", "public/js/frappe/model/perm.js", "public/js/frappe/model/workflow.js", - "public/js/frappe/model/indicator.js", "public/js/frappe/misc/user.js", "public/js/frappe/misc/pretty_date.js", @@ -110,62 +95,42 @@ "public/js/frappe/ui/upload.html", "public/js/frappe/upload.js", - "public/js/frappe/ui/filters/filters.js", - "public/js/frappe/ui/filters/edit_filter.html", "public/js/frappe/ui/tree.js", - "public/js/frappe/ui/tags.js", - "public/js/frappe/ui/star.js", "public/js/frappe/views/container.js", "public/js/frappe/views/factory.js", "public/js/frappe/views/pageview.js", - "public/js/frappe/views/module/module_title.html", - "public/js/frappe/views/module/module_section.html", - "public/js/frappe/views/module/module_sidebar.html", - "public/js/frappe/views/module/moduleview.js", - "public/js/frappe/views/formview.js", - "public/js/frappe/views/reports/reportview.js", - "public/js/frappe/views/calendar.js", - "public/js/frappe/views/ganttview.js", - "public/js/frappe/views/reports/query_report.js", - "public/js/frappe/views/reports/grid_report.js", - "public/js/frappe/views/reports/print_grid.html", - "public/js/frappe/views/communication.js", - "public/js/frappe/views/test_runner.js", - "public/js/frappe/form/formatters.js", - "public/js/frappe/list/doclistview.js", - "public/js/frappe/list/list_sidebar.js", - "public/js/frappe/list/list_sidebar.html", - "public/js/frappe/list/list_sidebar_stat.html", - "public/js/frappe/list/list_item_main.html", - "public/js/frappe/list/list_item_row.html", - "public/js/frappe/list/list_item_main_head.html", - "public/js/frappe/list/list_item_row_head.html", - "public/js/frappe/list/list_item_subject.html", - "public/js/frappe/list/listview.js", - - "public/js/frappe/ui/toolbar/selector_dialog.js", - "public/js/frappe/ui/toolbar/new.js", "public/js/frappe/ui/toolbar/awesome_bar.js", - "public/js/frappe/ui/toolbar/report.js", - "public/js/frappe/ui/toolbar/recent.js", - "public/js/frappe/ui/toolbar/bookmarks.js", "public/js/frappe/ui/toolbar/about.js", "public/js/frappe/ui/toolbar/navbar.html", "public/js/frappe/ui/toolbar/offcanvas_left_sidebar.html", "public/js/frappe/ui/toolbar/toolbar.js", - "public/js/frappe/ui/editor.js", + "public/js/frappe/views/communication.js", + "public/js/frappe/desk.js" + ], + "css/module.min.css": [ + "public/css/module.css" + ], + "js/module.min.js": [ + "public/js/frappe/views/module/module_title.html", + "public/js/frappe/views/module/module_section.html", + "public/js/frappe/views/module/module_sidebar.html", + "public/js/frappe/views/module/moduleview.js" + ], + "css/form.min.css": [ + "public/css/form.css", + "public/css/form_grid.css" + ], + "js/form.min.js": [ + "public/js/frappe/views/formview.js", "public/js/legacy/form.js", "public/js/legacy/clientscriptAPI.js", - "public/js/frappe/form/toolbar.js", "public/js/frappe/form/dashboard.js", "public/js/frappe/form/save.js", "public/js/frappe/form/script_manager.js", - "public/js/frappe/form/control.js", - "public/js/frappe/form/link_selector.js", "public/js/frappe/form/grid_form.html", "public/js/frappe/form/grid.js", "public/js/frappe/form/linked_with.js", @@ -185,12 +150,46 @@ "public/js/frappe/form/footer/timeline.js", "public/js/frappe/form/footer/assign_to.js" ], - "js/print_format_v3.min.js": [ - "public/js/legacy/layout.js", - "public/js/legacy/print_table.js", - "public/js/legacy/print_format.js" + "css/list.min.css": [ + "public/css/list.css", + "public/css/tag-it.css" + ], + "js/list.min.js": [ + "public/js/frappe/ui/listing.html", + "public/js/frappe/ui/listing.js", + "public/js/frappe/model/indicator.js", + "public/js/frappe/ui/filters/filters.js", + "public/js/frappe/ui/filters/edit_filter.html", + "public/js/frappe/ui/tags.js", + "public/js/frappe/ui/star.js", + "public/html/print_template.html", + "public/js/frappe/list/doclistview.js", + "public/js/frappe/list/list_sidebar.js", + "public/js/frappe/list/list_sidebar.html", + "public/js/frappe/list/list_sidebar_stat.html", + "public/js/frappe/list/list_item_main.html", + "public/js/frappe/list/list_item_row.html", + "public/js/frappe/list/list_item_main_head.html", + "public/js/frappe/list/list_item_row_head.html", + "public/js/frappe/list/list_item_subject.html", + "public/js/frappe/list/listview.js", + "public/js/frappe/views/calendar.js", + "public/js/frappe/views/ganttview.js" + ], + "css/report.min.css": [ + "public/css/report.css", + "public/css/tree_grid.css", + + "public/js/lib/slickgrid/slick.grid.css", + "public/js/lib/slickgrid/slick-default-theme.css", + "public/css/slickgrid.css" ], - "js/slickgrid.min.js": [ + "js/report.min.js": [ + "public/js/frappe/views/reports/reportview.js", + "public/js/frappe/views/reports/query_report.js", + "public/js/frappe/views/reports/grid_report.js", + "public/js/frappe/views/reports/print_grid.html", + "public/js/lib/slickgrid/jquery.event.drag.js", "public/js/lib/slickgrid/plugins/slick.cellrangedecorator.js", "public/js/lib/slickgrid/plugins/slick.cellrangeselector.js", @@ -199,5 +198,10 @@ "public/js/lib/slickgrid/slick.core.js", "public/js/lib/slickgrid/slick.grid.js", "public/js/lib/slickgrid/slick.dataview.js" + ], + "js/print_format_v3.min.js": [ + "public/js/legacy/layout.js", + "public/js/legacy/print_table.js", + "public/js/legacy/print_format.js" ] } diff --git a/frappe/public/css/form_grid.css b/frappe/public/css/form_grid.css index 9e3639952c..1ecf80e4c8 100644 --- a/frappe/public/css/form_grid.css +++ b/frappe/public/css/form_grid.css @@ -62,7 +62,7 @@ z-index: 1021; position: relative; overflow: hidden; - max-height: 0; + height: 0; opacity: 0; -webkit-transition: opacity 0.2s ease; -o-transition: opacity 0.2s ease; @@ -70,7 +70,7 @@ } .grid-row-open .form-in-grid { opacity: 1; - max-height: 10000px; + height: auto; } .grid-form-heading { padding: 10px 15px; diff --git a/frappe/public/css/report.css b/frappe/public/css/report.css index a8b2f28055..96b8fe094a 100644 --- a/frappe/public/css/report.css +++ b/frappe/public/css/report.css @@ -1,35 +1,3 @@ -.slick-wrapper, -.slick-header { - border: none !important; -} -.slick-headerrow { - border: none; - border-bottom: 1px solid #d1d8dd; -} -.slick-headerrow-column { - background-color: #f7fafc !important; -} -.slick-headerrow-column input { - border: 1px solid #d1d8dd; - border-radius: 3px; - font-size: 12px; - padding: 0px 3px !important; -} -.slick-cell { - border-color: #d1d8dd !important; - color: inherit !important; -} -.slick-header-column, -.slick-header-columns { - font-size: 12px; - font-weight: bold; - background-color: #f7fafc; - border-color: #d1d8dd !important; - color: #8d99a6 !important; -} -.slick-row.odd .slick-cell { - background-color: #fafbfc; -} .grid-report .plot { margin: 15px; display: none; diff --git a/frappe/public/css/slickgrid.css b/frappe/public/css/slickgrid.css index 525b6c2f5f..23c46cad78 100644 --- a/frappe/public/css/slickgrid.css +++ b/frappe/public/css/slickgrid.css @@ -1,21 +1,43 @@ -.slick-cell { - font-size: 12px; -} - -.slick-header-column, .slick-cell { +.slick-header-column, +.slick-cell { -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} +.slick-wrapper, +.slick-header { + border: none !important; +} +.slick-headerrow { + border: none; + border-bottom: 1px solid #d1d8dd; } - .slick-headerrow-column { - background: #87ceeb; - text-overflow: clip; + background-color: #f7fafc !important; + text-overflow: clip; } - .slick-headerrow-column input { - margin: 0; - padding: 0; - width: 100%; - min-height: 20px; -} \ No newline at end of file + border: 1px solid #d1d8dd; + border-radius: 3px; + font-size: 12px; + padding: 0px 3px !important; + margin: 0; + width: 100%; + min-height: 20px; +} +.slick-cell { + font-size: 12px; + border-color: #d1d8dd !important; + color: inherit !important; +} +.slick-header-column, +.slick-header-columns { + font-size: 12px; + font-weight: bold; + background-color: #f7fafc; + border-color: #d1d8dd !important; + color: #8d99a6 !important; +} +.slick-row.odd .slick-cell { + background-color: #fafbfc; +} diff --git a/frappe/public/js/frappe/assets.js b/frappe/public/js/frappe/assets.js index 53a2ecef53..414d99bfa8 100644 --- a/frappe/public/js/frappe/assets.js +++ b/frappe/public/js/frappe/assets.js @@ -20,14 +20,14 @@ frappe.require = function(items) { frappe.assets = { // keep track of executed assets executed_ : {}, - + check: function() { // if version is different then clear localstorage if(window._version_number != localStorage.getItem("_version_number")) { localStorage.clear(); console.log("Cleared App Cache."); } - + if(localStorage._last_load) { var not_updated_since = new Date() - new Date(localStorage._last_load); if(not_updated_since < 10000 || not_updated_since > 86400000) { @@ -38,24 +38,24 @@ frappe.assets = { localStorage.clear(); console.log("Cleared localstorage"); } - + frappe.assets.init_local_storage(); }, - + init_local_storage: function() { localStorage._last_load = new Date(); localStorage._version_number = window._version_number; if(frappe.boot) localStorage.metadata_version = frappe.boot.metadata_version; }, - + // check if the asset exists in - // localstorage + // localstorage exists: function(src) { if('localStorage' in window && localStorage.getItem(src) && (frappe.boot ? !frappe.boot.developer_mode : true)) return true; }, - + // add the asset to // localstorage add: function(src, txt) { @@ -66,27 +66,27 @@ frappe.assets = { // if quota is exceeded, clear local storage and set item localStorage.clear(); console.log("Local Storage cleared"); - + localStorage.setItem(src, txt); } } }, - + get: function(src) { return localStorage.getItem(src); }, - + extn: function(src) { if(src.indexOf('?')!=-1) { src = src.split('?').slice(-1)[0]; } return src.split('.').slice(-1)[0]; }, - + // load an asset via load: function(src) { // this is virtual page load, only get the the source - // *without* the template + // *without* the template frappe.set_loading(); frappe.call({ @@ -99,10 +99,10 @@ frappe.assets = { }, async: false }) - + frappe.done_loading(); }, - + // pass on to the handler to set execute: function(src) { if(!frappe.assets.exists(src)) { @@ -114,7 +114,7 @@ frappe.assets = { frappe.assets.executed_[src] = 1; } }, - + // handle types of assets // and launch them in the // app @@ -125,5 +125,26 @@ frappe.assets = { css: function(txt, src) { frappe.dom.set_style(txt); } + }, + + views: { + "List": function() { + frappe.require("assets/css/list.min.css"); + frappe.require("assets/js/list.min.js"); + }, + "Form": function() { + frappe.assets.views["List"](); + frappe.require("assets/css/form.min.css"); + frappe.require("assets/js/form.min.js"); + }, + "Report": function() { + frappe.assets.views["List"](); + frappe.require("assets/css/report.min.css"); + frappe.require("assets/js/report.min.js"); + }, + "Module": function() { + frappe.require("assets/css/module.min.css"); + frappe.require("assets/js/module.min.js"); + } } -}; \ No newline at end of file +}; diff --git a/frappe/public/js/frappe/desk.js b/frappe/public/js/frappe/desk.js index 016179d49b..5e2f2de203 100644 --- a/frappe/public/js/frappe/desk.js +++ b/frappe/public/js/frappe/desk.js @@ -274,4 +274,31 @@ frappe.Application = Class.extend({ if(frappe.boot.startup_js) eval(frappe.boot.startup_js); } -}) +}); + +frappe.get_module = function(m) { + var module = frappe.modules[m]; + if (!module) { + return; + } + + module.name = m; + + if(module.type==="module" && !module.link) { + module.link = "Module/" + m; + } + + if(module.link) { + module._id = module.link.toLowerCase().replace("/", "-"); + } + + if(!module.label) { + module.label = m; + } + + if(!module._label) { + module._label = __(module.label || module.name); + } + + return module; +}; diff --git a/frappe/public/js/frappe/router.js b/frappe/public/js/frappe/router.js index 9f0e63a175..8281e260da 100644 --- a/frappe/public/js/frappe/router.js +++ b/frappe/public/js/frappe/router.js @@ -34,10 +34,16 @@ frappe.route = function() { route = frappe.get_route(); frappe.route_history.push(route); - if(route[0] && frappe.views[route[0] + "Factory"]) { + if(route[0] && route[1] && !frappe.views[route[0] + "Factory"] && frappe.assets.views[route[0]]) { + // load factory code + frappe.assets.views[route[0]](); + } + + if(route[0] && route[1] && frappe.views[route[0] + "Factory"]) { // has a view generator, generate! - if(!frappe.view_factory[route[0]]) + if(!frappe.view_factory[route[0]]) { frappe.view_factory[route[0]] = new frappe.views[route[0] + "Factory"](); + } frappe.view_factory[route[0]].show(); } else { diff --git a/frappe/public/js/frappe/ui/listing.html b/frappe/public/js/frappe/ui/listing.html index c321acb0ee..51cbb55746 100644 --- a/frappe/public/js/frappe/ui/listing.html +++ b/frappe/public/js/frappe/ui/listing.html @@ -20,7 +20,7 @@
%(msg)s
', { - msg: msg - })) + return $(frappe.messages.get_waiting_message(msg)) .appendTo(parent); }; +frappe.messages.get_waiting_message = function(msg) { + return repl('%(msg)s