`, and ``.
-@font-family-monospace: Menlo, Monaco, Consolas, "Courier New", monospace;
-@font-family-base: @font-family-sans-serif;
-
-@font-size-base: 14px;
-@font-size-large: ceil((@font-size-base * 1.25)); // ~18px
-@font-size-small: ceil((@font-size-base * 0.85)); // ~12px
-
-@font-size-h1: floor((@font-size-base * 2.6)); // ~36px
-@font-size-h2: floor((@font-size-base * 2.15)); // ~30px
-@font-size-h3: ceil((@font-size-base * 1.7)); // ~24px
-@font-size-h4: ceil((@font-size-base * 1.25)); // ~18px
-@font-size-h5: @font-size-base;
-@font-size-h6: ceil((@font-size-base * 0.85)); // ~12px
-
-//** Unit-less `line-height` for use in components like buttons.
-@line-height-base: 1.428571429; // 20/14
-//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
-@line-height-computed: floor((@font-size-base * @line-height-base)); // ~20px
-
-//** By default, this inherits from the ``.
-@headings-font-family: inherit;
-@headings-font-weight: 500;
-@headings-line-height: 1.1;
-@headings-color: inherit;
-
-
-//== Iconography
-//
-//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.
-
-//** Load fonts from this directory.
-@icon-font-path: "../fonts/";
-//** File name for all font files.
-@icon-font-name: "glyphicons-halflings-regular";
-//** Element ID within SVG icon file.
-@icon-font-svg-id: "glyphicons_halflingsregular";
-
-
-//== Components
-//
-//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
-
-@padding-base-vertical: 6px;
-@padding-base-horizontal: 12px;
-
-@padding-large-vertical: 10px;
-@padding-large-horizontal: 16px;
-
-@padding-small-vertical: 5px;
-@padding-small-horizontal: 10px;
-
-@padding-xs-vertical: 1px;
-@padding-xs-horizontal: 5px;
-
-@line-height-large: 1.3333333; // extra decimals for Win 8.1 Chrome
-@line-height-small: 1.5;
-
-@border-radius-base: 4px;
-@border-radius-large: 6px;
-@border-radius-small: 3px;
-
-//** Global color for active items (e.g., navs or dropdowns).
-@component-active-color: #fff;
-//** Global background color for active items (e.g., navs or dropdowns).
-@component-active-bg: @brand-primary;
-
-//** Width of the `border` for generating carets that indicate dropdowns.
-@caret-width-base: 4px;
-//** Carets increase slightly in size for larger components.
-@caret-width-large: 5px;
-
-
-//== Tables
-//
-//## Customizes the `.table` component with basic values, each used across all table variations.
-
-//** Padding for ``s and ` `s.
-@table-cell-padding: 8px;
-//** Padding for cells in `.table-condensed`.
-@table-condensed-cell-padding: 5px;
-
-//** Default background color used for all tables.
-@table-bg: transparent;
-//** Background color used for `.table-striped`.
-@table-bg-accent: #f9f9f9;
-//** Background color used for `.table-hover`.
-@table-bg-hover: #f5f5f5;
-@table-bg-active: @table-bg-hover;
-
-//** Border color for table and cell borders.
-@table-border-color: #ddd;
-
-
-//== Buttons
-//
-//## For each of Bootstrap's buttons, define text, background and border color.
-
-@btn-font-weight: normal;
-
-@btn-default-color: #333;
-@btn-default-bg: #fff;
-@btn-default-border: #ccc;
-
-@btn-primary-color: #fff;
-@btn-primary-bg: @brand-primary;
-@btn-primary-border: darken(@btn-primary-bg, 5%);
-
-@btn-success-color: #fff;
-@btn-success-bg: @brand-success;
-@btn-success-border: darken(@btn-success-bg, 5%);
-
-@btn-info-color: #fff;
-@btn-info-bg: @brand-info;
-@btn-info-border: darken(@btn-info-bg, 5%);
-
-@btn-warning-color: #fff;
-@btn-warning-bg: @brand-warning;
-@btn-warning-border: darken(@btn-warning-bg, 5%);
-
-@btn-danger-color: #fff;
-@btn-danger-bg: @brand-danger;
-@btn-danger-border: darken(@btn-danger-bg, 5%);
-
-@btn-link-disabled-color: @gray-light;
-
-// Allows for customizing button radius independently from global border radius
-@btn-border-radius-base: @border-radius-base;
-@btn-border-radius-large: @border-radius-large;
-@btn-border-radius-small: @border-radius-small;
-
-
-//== Forms
-//
-//##
-
-//** ` ` background color
-@input-bg: #fff;
-//** ` ` background color
-@input-bg-disabled: @gray-lighter;
-
-//** Text color for ` `s
-@input-color: @gray;
-//** ` ` border color
-@input-border: #ccc;
-
-// TODO: Rename `@input-border-radius` to `@input-border-radius-base` in v4
-//** Default `.form-control` border radius
-// This has no effect on ``s in some browsers, due to the limited stylability of ``s in CSS.
-@input-border-radius: @border-radius-base;
-//** Large `.form-control` border radius
-@input-border-radius-large: @border-radius-large;
-//** Small `.form-control` border radius
-@input-border-radius-small: @border-radius-small;
-
-//** Border color for inputs on focus
-@input-border-focus: #66afe9;
-
-//** Placeholder text color
-@input-color-placeholder: #999;
-
-//** Default `.form-control` height
-@input-height-base: (@line-height-computed + (@padding-base-vertical * 2) + 2);
-//** Large `.form-control` height
-@input-height-large: (ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 2);
-//** Small `.form-control` height
-@input-height-small: (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 2);
-
-//** `.form-group` margin
-@form-group-margin-bottom: 15px;
-
-@legend-color: @gray-dark;
-@legend-border-color: #e5e5e5;
-
-//** Background color for textual input addons
-@input-group-addon-bg: @gray-lighter;
-//** Border color for textual input addons
-@input-group-addon-border-color: @input-border;
-
-//** Disabled cursor for form controls and buttons.
-@cursor-disabled: not-allowed;
-
-
-//== Dropdowns
-//
-//## Dropdown menu container and contents.
-
-//** Background for the dropdown menu.
-@dropdown-bg: #fff;
-//** Dropdown menu `border-color`.
-@dropdown-border: rgba(0,0,0,.15);
-//** Dropdown menu `border-color` **for IE8**.
-@dropdown-fallback-border: #ccc;
-//** Divider color for between dropdown items.
-@dropdown-divider-bg: #e5e5e5;
-
-//** Dropdown link text color.
-@dropdown-link-color: @gray-dark;
-//** Hover color for dropdown links.
-@dropdown-link-hover-color: darken(@gray-dark, 5%);
-//** Hover background for dropdown links.
-@dropdown-link-hover-bg: #f5f5f5;
-
-//** Active dropdown menu item text color.
-@dropdown-link-active-color: @component-active-color;
-//** Active dropdown menu item background color.
-@dropdown-link-active-bg: @component-active-bg;
-
-//** Disabled dropdown menu item background color.
-@dropdown-link-disabled-color: @gray-light;
-
-//** Text color for headers within dropdown menus.
-@dropdown-header-color: @gray-light;
-
-//** Deprecated `@dropdown-caret-color` as of v3.1.0
-@dropdown-caret-color: #000;
-
-
-//-- Z-index master list
-//
-// Warning: Avoid customizing these values. They're used for a bird's eye view
-// of components dependent on the z-axis and are designed to all work together.
-//
-// Note: These variables are not generated into the Customizer.
-
-@zindex-navbar: 1000;
-@zindex-dropdown: 1000;
-@zindex-popover: 1060;
-@zindex-tooltip: 1070;
-@zindex-navbar-fixed: 1030;
-@zindex-modal-background: 1040;
-@zindex-modal: 1050;
-
-
-//== Media queries breakpoints
-//
-//## Define the breakpoints at which your layout will change, adapting to different screen sizes.
-
-// Extra small screen / phone
-//** Deprecated `@screen-xs` as of v3.0.1
-@screen-xs: 480px;
-//** Deprecated `@screen-xs-min` as of v3.2.0
-@screen-xs-min: @screen-xs;
-//** Deprecated `@screen-phone` as of v3.0.1
-@screen-phone: @screen-xs-min;
-
-// Small screen / tablet
-//** Deprecated `@screen-sm` as of v3.0.1
-@screen-sm: 768px;
-@screen-sm-min: @screen-sm;
-//** Deprecated `@screen-tablet` as of v3.0.1
-@screen-tablet: @screen-sm-min;
-
-// Medium screen / desktop
-//** Deprecated `@screen-md` as of v3.0.1
-@screen-md: 992px;
-@screen-md-min: @screen-md;
-//** Deprecated `@screen-desktop` as of v3.0.1
-@screen-desktop: @screen-md-min;
-
-// Large screen / wide desktop
-//** Deprecated `@screen-lg` as of v3.0.1
-@screen-lg: 1200px;
-@screen-lg-min: @screen-lg;
-//** Deprecated `@screen-lg-desktop` as of v3.0.1
-@screen-lg-desktop: @screen-lg-min;
-
-// So media queries don't overlap when required, provide a maximum
-@screen-xs-max: (@screen-sm-min - 1);
-@screen-sm-max: (@screen-md-min - 1);
-@screen-md-max: (@screen-lg-min - 1);
-
-
-//== Grid system
-//
-//## Define your custom responsive grid.
-
-//** Number of columns in the grid.
-@grid-columns: 12;
-//** Padding between columns. Gets divided in half for the left and right.
-@grid-gutter-width: 30px;
-// Navbar collapse
-//** Point at which the navbar becomes uncollapsed.
-@grid-float-breakpoint: @screen-sm-min;
-//** Point at which the navbar begins collapsing.
-@grid-float-breakpoint-max: (@grid-float-breakpoint - 1);
-
-
-//== Container sizes
-//
-//## Define the maximum width of `.container` for different screen sizes.
-
-// Small screen / tablet
-@container-tablet: (720px + @grid-gutter-width);
-//** For `@screen-sm-min` and up.
-@container-sm: @container-tablet;
-
-// Medium screen / desktop
-@container-desktop: (940px + @grid-gutter-width);
-//** For `@screen-md-min` and up.
-@container-md: @container-desktop;
-
-// Large screen / wide desktop
-@container-large-desktop: (1140px + @grid-gutter-width);
-//** For `@screen-lg-min` and up.
-@container-lg: @container-large-desktop;
-
-
-//== Navbar
-//
-//##
-
-// Basics of a navbar
-@navbar-height: 50px;
-@navbar-margin-bottom: @line-height-computed;
-@navbar-border-radius: @border-radius-base;
-@navbar-padding-horizontal: floor((@grid-gutter-width / 2));
-@navbar-padding-vertical: ((@navbar-height - @line-height-computed) / 2);
-@navbar-collapse-max-height: 340px;
-
-@navbar-default-color: #777;
-@navbar-default-bg: #f8f8f8;
-@navbar-default-border: darken(@navbar-default-bg, 6.5%);
-
-// Navbar links
-@navbar-default-link-color: #777;
-@navbar-default-link-hover-color: #333;
-@navbar-default-link-hover-bg: transparent;
-@navbar-default-link-active-color: #555;
-@navbar-default-link-active-bg: darken(@navbar-default-bg, 6.5%);
-@navbar-default-link-disabled-color: #ccc;
-@navbar-default-link-disabled-bg: transparent;
-
-// Navbar brand label
-@navbar-default-brand-color: @navbar-default-link-color;
-@navbar-default-brand-hover-color: darken(@navbar-default-brand-color, 10%);
-@navbar-default-brand-hover-bg: transparent;
-
-// Navbar toggle
-@navbar-default-toggle-hover-bg: #ddd;
-@navbar-default-toggle-icon-bar-bg: #888;
-@navbar-default-toggle-border-color: #ddd;
-
-
-//=== Inverted navbar
-// Reset inverted navbar basics
-@navbar-inverse-color: lighten(@gray-light, 15%);
-@navbar-inverse-bg: #222;
-@navbar-inverse-border: darken(@navbar-inverse-bg, 10%);
-
-// Inverted navbar links
-@navbar-inverse-link-color: lighten(@gray-light, 15%);
-@navbar-inverse-link-hover-color: #fff;
-@navbar-inverse-link-hover-bg: transparent;
-@navbar-inverse-link-active-color: @navbar-inverse-link-hover-color;
-@navbar-inverse-link-active-bg: darken(@navbar-inverse-bg, 10%);
-@navbar-inverse-link-disabled-color: #444;
-@navbar-inverse-link-disabled-bg: transparent;
-
-// Inverted navbar brand label
-@navbar-inverse-brand-color: @navbar-inverse-link-color;
-@navbar-inverse-brand-hover-color: #fff;
-@navbar-inverse-brand-hover-bg: transparent;
-
-// Inverted navbar toggle
-@navbar-inverse-toggle-hover-bg: #333;
-@navbar-inverse-toggle-icon-bar-bg: #fff;
-@navbar-inverse-toggle-border-color: #333;
-
-
-//== Navs
-//
-//##
-
-//=== Shared nav styles
-@nav-link-padding: 10px 15px;
-@nav-link-hover-bg: @gray-lighter;
-
-@nav-disabled-link-color: @gray-light;
-@nav-disabled-link-hover-color: @gray-light;
-
-//== Tabs
-@nav-tabs-border-color: #ddd;
-
-@nav-tabs-link-hover-border-color: @gray-lighter;
-
-@nav-tabs-active-link-hover-bg: @body-bg;
-@nav-tabs-active-link-hover-color: @gray;
-@nav-tabs-active-link-hover-border-color: #ddd;
-
-@nav-tabs-justified-link-border-color: #ddd;
-@nav-tabs-justified-active-link-border-color: @body-bg;
-
-//== Pills
-@nav-pills-border-radius: @border-radius-base;
-@nav-pills-active-link-hover-bg: @component-active-bg;
-@nav-pills-active-link-hover-color: @component-active-color;
-
-
-//== Pagination
-//
-//##
-
-@pagination-color: @link-color;
-@pagination-bg: #fff;
-@pagination-border: #ddd;
-
-@pagination-hover-color: @link-hover-color;
-@pagination-hover-bg: @gray-lighter;
-@pagination-hover-border: #ddd;
-
-@pagination-active-color: #fff;
-@pagination-active-bg: @brand-primary;
-@pagination-active-border: @brand-primary;
-
-@pagination-disabled-color: @gray-light;
-@pagination-disabled-bg: #fff;
-@pagination-disabled-border: #ddd;
-
-
-//== Pager
-//
-//##
-
-@pager-bg: @pagination-bg;
-@pager-border: @pagination-border;
-@pager-border-radius: 15px;
-
-@pager-hover-bg: @pagination-hover-bg;
-
-@pager-active-bg: @pagination-active-bg;
-@pager-active-color: @pagination-active-color;
-
-@pager-disabled-color: @pagination-disabled-color;
-
-
-//== Jumbotron
-//
-//##
-
-@jumbotron-padding: 30px;
-@jumbotron-color: inherit;
-@jumbotron-bg: @gray-lighter;
-@jumbotron-heading-color: inherit;
-@jumbotron-font-size: ceil((@font-size-base * 1.5));
-@jumbotron-heading-font-size: ceil((@font-size-base * 4.5));
-
-
-//== Form states and alerts
-//
-//## Define colors for form feedback states and, by default, alerts.
-
-@state-success-text: #3c763d;
-@state-success-bg: #dff0d8;
-@state-success-border: darken(spin(@state-success-bg, -10), 5%);
-
-@state-info-text: #31708f;
-@state-info-bg: #d9edf7;
-@state-info-border: darken(spin(@state-info-bg, -10), 7%);
-
-@state-warning-text: #8a6d3b;
-@state-warning-bg: #fcf8e3;
-@state-warning-border: darken(spin(@state-warning-bg, -10), 5%);
-
-@state-danger-text: #a94442;
-@state-danger-bg: #f2dede;
-@state-danger-border: darken(spin(@state-danger-bg, -10), 5%);
-
-
-//== Tooltips
-//
-//##
-
-//** Tooltip max width
-@tooltip-max-width: 200px;
-//** Tooltip text color
-@tooltip-color: #fff;
-//** Tooltip background color
-@tooltip-bg: #000;
-@tooltip-opacity: .9;
-
-//** Tooltip arrow width
-@tooltip-arrow-width: 5px;
-//** Tooltip arrow color
-@tooltip-arrow-color: @tooltip-bg;
-
-
-//== Popovers
-//
-//##
-
-//** Popover body background color
-@popover-bg: #fff;
-//** Popover maximum width
-@popover-max-width: 276px;
-//** Popover border color
-@popover-border-color: rgba(0,0,0,.2);
-//** Popover fallback border color
-@popover-fallback-border-color: #ccc;
-
-//** Popover title background color
-@popover-title-bg: darken(@popover-bg, 3%);
-
-//** Popover arrow width
-@popover-arrow-width: 10px;
-//** Popover arrow color
-@popover-arrow-color: @popover-bg;
-
-//** Popover outer arrow width
-@popover-arrow-outer-width: (@popover-arrow-width + 1);
-//** Popover outer arrow color
-@popover-arrow-outer-color: fadein(@popover-border-color, 5%);
-//** Popover outer arrow fallback color
-@popover-arrow-outer-fallback-color: darken(@popover-fallback-border-color, 20%);
-
-
-//== Labels
-//
-//##
-
-//** Default label background color
-@label-default-bg: @gray-light;
-//** Primary label background color
-@label-primary-bg: @brand-primary;
-//** Success label background color
-@label-success-bg: @brand-success;
-//** Info label background color
-@label-info-bg: @brand-info;
-//** Warning label background color
-@label-warning-bg: @brand-warning;
-//** Danger label background color
-@label-danger-bg: @brand-danger;
-
-//** Default label text color
-@label-color: #fff;
-//** Default text color of a linked label
-@label-link-hover-color: #fff;
-
-
-//== Modals
-//
-//##
-
-//** Padding applied to the modal body
-@modal-inner-padding: 15px;
-
-//** Padding applied to the modal title
-@modal-title-padding: 15px;
-//** Modal title line-height
-@modal-title-line-height: @line-height-base;
-
-//** Background color of modal content area
-@modal-content-bg: #fff;
-//** Modal content border color
-@modal-content-border-color: rgba(0,0,0,.2);
-//** Modal content border color **for IE8**
-@modal-content-fallback-border-color: #999;
-
-//** Modal backdrop background color
-@modal-backdrop-bg: #000;
-//** Modal backdrop opacity
-@modal-backdrop-opacity: .5;
-//** Modal header border color
-@modal-header-border-color: #e5e5e5;
-//** Modal footer border color
-@modal-footer-border-color: @modal-header-border-color;
-
-@modal-lg: 900px;
-@modal-md: 600px;
-@modal-sm: 300px;
-
-
-//== Alerts
-//
-//## Define alert colors, border radius, and padding.
-
-@alert-padding: 15px;
-@alert-border-radius: @border-radius-base;
-@alert-link-font-weight: bold;
-
-@alert-success-bg: @state-success-bg;
-@alert-success-text: @state-success-text;
-@alert-success-border: @state-success-border;
-
-@alert-info-bg: @state-info-bg;
-@alert-info-text: @state-info-text;
-@alert-info-border: @state-info-border;
-
-@alert-warning-bg: @state-warning-bg;
-@alert-warning-text: @state-warning-text;
-@alert-warning-border: @state-warning-border;
-
-@alert-danger-bg: @state-danger-bg;
-@alert-danger-text: @state-danger-text;
-@alert-danger-border: @state-danger-border;
-
-
-//== Progress bars
-//
-//##
-
-//** Background color of the whole progress component
-@progress-bg: #f5f5f5;
-//** Progress bar text color
-@progress-bar-color: #fff;
-//** Variable for setting rounded corners on progress bar.
-@progress-border-radius: @border-radius-base;
-
-//** Default progress bar color
-@progress-bar-bg: @brand-primary;
-//** Success progress bar color
-@progress-bar-success-bg: @brand-success;
-//** Warning progress bar color
-@progress-bar-warning-bg: @brand-warning;
-//** Danger progress bar color
-@progress-bar-danger-bg: @brand-danger;
-//** Info progress bar color
-@progress-bar-info-bg: @brand-info;
-
-
-//== List group
-//
-//##
-
-//** Background color on `.list-group-item`
-@list-group-bg: #fff;
-//** `.list-group-item` border color
-@list-group-border: #ddd;
-//** List group border radius
-@list-group-border-radius: @border-radius-base;
-
-//** Background color of single list items on hover
-@list-group-hover-bg: #f5f5f5;
-//** Text color of active list items
-@list-group-active-color: @component-active-color;
-//** Background color of active list items
-@list-group-active-bg: @component-active-bg;
-//** Border color of active list elements
-@list-group-active-border: @list-group-active-bg;
-//** Text color for content within active list items
-@list-group-active-text-color: lighten(@list-group-active-bg, 40%);
-
-//** Text color of disabled list items
-@list-group-disabled-color: @gray-light;
-//** Background color of disabled list items
-@list-group-disabled-bg: @gray-lighter;
-//** Text color for content within disabled list items
-@list-group-disabled-text-color: @list-group-disabled-color;
-
-@list-group-link-color: #555;
-@list-group-link-hover-color: @list-group-link-color;
-@list-group-link-heading-color: #333;
-
-
-//== Panels
-//
-//##
-
-@panel-bg: #fff;
-@panel-body-padding: 15px;
-@panel-heading-padding: 10px 15px;
-@panel-footer-padding: @panel-heading-padding;
-@panel-border-radius: @border-radius-base;
-
-//** Border color for elements within panels
-@panel-inner-border: #ddd;
-@panel-footer-bg: #f5f5f5;
-
-@panel-default-text: @gray-dark;
-@panel-default-border: #ddd;
-@panel-default-heading-bg: #f5f5f5;
-
-@panel-primary-text: #fff;
-@panel-primary-border: @brand-primary;
-@panel-primary-heading-bg: @brand-primary;
-
-@panel-success-text: @state-success-text;
-@panel-success-border: @state-success-border;
-@panel-success-heading-bg: @state-success-bg;
-
-@panel-info-text: @state-info-text;
-@panel-info-border: @state-info-border;
-@panel-info-heading-bg: @state-info-bg;
-
-@panel-warning-text: @state-warning-text;
-@panel-warning-border: @state-warning-border;
-@panel-warning-heading-bg: @state-warning-bg;
-
-@panel-danger-text: @state-danger-text;
-@panel-danger-border: @state-danger-border;
-@panel-danger-heading-bg: @state-danger-bg;
-
-
-//== Thumbnails
-//
-//##
-
-//** Padding around the thumbnail image
-@thumbnail-padding: 4px;
-//** Thumbnail background color
-@thumbnail-bg: @body-bg;
-//** Thumbnail border color
-@thumbnail-border: #ddd;
-//** Thumbnail border radius
-@thumbnail-border-radius: @border-radius-base;
-
-//** Custom text color for thumbnail captions
-@thumbnail-caption-color: @text-color;
-//** Padding around the thumbnail caption
-@thumbnail-caption-padding: 9px;
-
-
-//== Wells
-//
-//##
-
-@well-bg: #f5f5f5;
-@well-border: darken(@well-bg, 7%);
-
-
-//== Badges
-//
-//##
-
-@badge-color: #fff;
-//** Linked badge text color on hover
-@badge-link-hover-color: #fff;
-@badge-bg: @gray-light;
-
-//** Badge text color in active nav link
-@badge-active-color: @link-color;
-//** Badge background color in active nav link
-@badge-active-bg: #fff;
-
-@badge-font-weight: bold;
-@badge-line-height: 1;
-@badge-border-radius: 10px;
-
-
-//== Breadcrumbs
-//
-//##
-
-@breadcrumb-padding-vertical: 8px;
-@breadcrumb-padding-horizontal: 15px;
-//** Breadcrumb background color
-@breadcrumb-bg: #f5f5f5;
-//** Breadcrumb text color
-@breadcrumb-color: #ccc;
-//** Text color of current page in the breadcrumb
-@breadcrumb-active-color: @gray-light;
-//** Textual separator for between breadcrumb elements
-@breadcrumb-separator: "/";
-
-
-//== Carousel
-//
-//##
-
-@carousel-text-shadow: 0 1px 2px rgba(0,0,0,.6);
-
-@carousel-control-color: #fff;
-@carousel-control-width: 15%;
-@carousel-control-opacity: .5;
-@carousel-control-font-size: 20px;
-
-@carousel-indicator-active-bg: #fff;
-@carousel-indicator-border-color: #fff;
-
-@carousel-caption-color: #fff;
-
-
-//== Close
-//
-//##
-
-@close-font-weight: bold;
-@close-color: #000;
-@close-text-shadow: 0 1px 0 #fff;
-
-
-//== Code
-//
-//##
-
-@code-color: #c7254e;
-@code-bg: #f9f2f4;
-
-@kbd-color: #fff;
-@kbd-bg: #333;
-
-@pre-bg: #f5f5f5;
-@pre-color: @gray-dark;
-@pre-border-color: #ccc;
-@pre-scrollable-max-height: 340px;
-
-
-//== Type
-//
-//##
-
-//** Horizontal offset for forms and lists.
-@component-offset-horizontal: 180px;
-//** Text muted color
-@text-muted: @gray-light;
-//** Abbreviations and acronyms border color
-@abbr-border-color: @gray-light;
-//** Headings small color
-@headings-small-color: @gray-light;
-//** Blockquote small color
-@blockquote-small-color: @gray-light;
-//** Blockquote font size
-@blockquote-font-size: (@font-size-base * 1.25);
-//** Blockquote border color
-@blockquote-border-color: @gray-lighter;
-//** Page header border color
-@page-header-border-color: @gray-lighter;
-//** Width of horizontal description list titles
-@dl-horizontal-offset: @component-offset-horizontal;
-//** Point at which .dl-horizontal becomes horizontal
-@dl-horizontal-breakpoint: @grid-float-breakpoint;
-//** Horizontal line color.
-@hr-border: @gray-lighter;
diff --git a/src/assets/css/global/animation.less b/src/assets/css/global/animation.less
deleted file mode 100644
index e69de29..0000000
diff --git a/src/assets/css/global/border.less b/src/assets/css/global/border.less
deleted file mode 100644
index 97bcae3..0000000
--- a/src/assets/css/global/border.less
+++ /dev/null
@@ -1,41 +0,0 @@
-@import "variables";
-
-#radius {
- .border-radius(@from,@end,@step) {
- .mX(@f,@e,@s) when (@e >= @f) {
- .border-radius-@{e} {
- -webkit-border-radius: @e*1px;
- -moz-border-radius: @e*1px;
- border-radius: @e*1px;
- }
- .br@{e} {
- -webkit-border-radius: @e*1px;
- -moz-border-radius: @e*1px;
- border-radius: @e*1px;
- }
-
- .mX(@f, @e - @s, @s);
- }
- .mX(@from, @end, @step);
- }
-
-}
-
-#radius > .border-radius(1, 10, 1);
-
-.border-dash {
- border: 1px dashed #ccc;
-}
-
-.border {
- border: 1px solid #eee;
-}
-
-.border-danger {
- border: 1px solid @brand-danger;
-}
-
-.border-bottom {
- border-bottom: 1px solid #eee;
-}
-
diff --git a/src/assets/css/global/button.less b/src/assets/css/global/button.less
deleted file mode 100644
index c1b3ad0..0000000
--- a/src/assets/css/global/button.less
+++ /dev/null
@@ -1,31 +0,0 @@
-
-.btn-action {
- margin: 0 3px;
- display: inline-block;
- opacity: 0.85;
- -webkit-transition: all 0.1s;
- -o-transition: all 0.1s;
- transition: all 0.1s;
- cursor: pointer;
-
- &:hover {
- text-decoration: none;
- opacity: 1;
- -moz-transform: scale(1.2);
- -webkit-transform: scale(1.2);
- -o-transform: scale(1.2);
- -ms-transform: scale(1.2);
- transform: scale(1.2);
- }
-}
-
-//编辑区域按钮,鼠标一上去按钮变大
-.action-buttons {
- a {
- .btn-action;
- }
-}
-
-.cursor {
- cursor: pointer;
-}
diff --git a/src/assets/css/global/color.less b/src/assets/css/global/color.less
deleted file mode 100644
index 6fa3b6b..0000000
--- a/src/assets/css/global/color.less
+++ /dev/null
@@ -1,358 +0,0 @@
-@import "./variables.less";
-
-.bg-primary {
- background-color: @brand-primary;
- color: white;
-}
-
-.bg-success {
- background-color: @brand-success;
- color: white;
-}
-
-.bg-info {
- background-color: @brand-info;
- color: white;
-}
-
-.bg-warning {
- background-color: @brand-warning;
- color: white;
-}
-
-.bg-danger {
- background-color: @brand-danger;
- color: white;
-}
-
-.bg-gray {
- background-color: @brand-gray;
- color: white;
-}
-
-.bg-laxative {
- background-color: @brand-laxative;
- color: white;
-}
-
-.text-primary {
- color: @brand-primary;
-}
-
-.bg-navy {
- background-color: #001F3F;
-}
-
-.bg-blue {
- background-color: #0074D9;
-}
-
-.bg-aqua {
- background-color: #7FDBFF;
-}
-
-.bg-aliceblue {
- background-color: aliceblue;
-}
-
-.bg-pink {
- background-color: pink;
-}
-
-.bg-azure {
- background-color: azure;
-}
-
-.bg-teal {
- background-color: #39CCCC;
-}
-
-.bg-olive {
- background-color: #3D9970;
-}
-
-.bg-green {
- background-color: #2ECC40;
-}
-
-.bg-lime {
- background-color: #01FF70;
-}
-
-.bg-yellow {
- background-color: #FFDC00;
-}
-
-.bg-pink {
- color: pink;
-}
-
-.bg-orange {
- background-color: #FF851B;
-}
-
-.bg-red {
- background-color: #FF4136;
-}
-
-.bg-fuchsia {
- background-color: #F012BE;
-}
-
-.bg-purple {
- background-color: #B10DC9;
-}
-
-.bg-maroon {
- background-color: #85144B;
-}
-
-.bg-white {
- background-color: #FFFFFF;
-}
-
-.bg-gray {
- background-color: #AAAAAA;
-}
-
-.bg-silver {
- background-color: #DDDDDD;
-}
-
-.bg-silver-white {
- background-color: #EEEEEE;
-}
-
-.bg-black {
- background-color: #111111;
-}
-
-.bg-111 {
- background-color: #111
-}
-
-.bg-222 {
- background-color: #222
-}
-
-.bg-333 {
- background-color: #333
-}
-
-.bg-444 {
- background-color: #444
-}
-
-.bg-555 {
- background-color: #555
-}
-
-.bg-666 {
- background-color: #666
-}
-
-.bg-777 {
- background-color: #777
-}
-
-.bg-888 {
- background-color: #888
-}
-
-.bg-999 {
- background-color: #999
-}
-
-.bg-aaa {
- background-color: #aaa
-}
-
-.bg-bbb {
- background-color: #bbb
-}
-
-.bg-ccc {
- background-color: #ccc
-}
-
-.bg-ddd {
- background-color: #ddd
-}
-
-.bg-eee {
- background-color: #eee
-}
-
-/* Colors */
-.navy {
- color: #001F3F;
-}
-
-.blue {
- color: #0074D9;
-}
-
-.aqua {
- color: #7FDBFF;
-}
-
-.teal {
- color: #39CCCC;
-}
-
-.olive {
- color: #3D9970;
-}
-
-.green {
- color: #2ECC40;
-}
-
-.lime {
- color: #01FF70;
-}
-
-.yellow {
- color: #FFDC00;
-}
-
-.pink {
- color: pink;
-}
-
-.orange {
- color: #FF851B;
-}
-
-.red {
- color: #FF4136;
-}
-
-.fuchsia {
- color: #F012BE;
-}
-
-.purple {
- color: #B10DC9;
-}
-
-.maroon {
- color: #85144B;
-}
-
-.white {
- color: #FFFFFF;
-}
-
-.silver {
- color: #DDDDDD;
-}
-
-.gray {
- color: #AAAAAA;
-}
-
-.black {
- color: #111111;
-}
-
-.color-111 {
- color: #111
-}
-
-.color-222 {
- color: #222
-}
-
-.color-333 {
- color: #333
-}
-
-.color-444 {
- color: #444
-}
-
-.color-555 {
- color: #555
-}
-
-.color-666 {
- color: #666
-}
-
-.color-777 {
- color: #777
-}
-
-.color-888 {
- color: #888
-}
-
-.color-999 {
- color: #999
-}
-
-.color-aaa {
- color: #aaa
-}
-
-.color-bbb {
- color: #bbb
-}
-
-.color-ccc {
- color: #ccc
-}
-
-.color-ddd {
- color: #ddd
-}
-
-.color-eee {
- color: #eee
-}
-
-.color-text {
- color: #660E7A;
-}
-
-.color-doc {
- color: #295496;
-}
-
-.color-xls {
- color: #1E6C41;
-}
-
-.color-ppt {
- color: #D04324;
-}
-
-.color-pdf {
- color: #E40B0B;
-}
-
-.color-audio {
- color: #5bc0de;
-}
-
-.color-video {
- color: #5cb85c;
-}
-
-.color-image {
- color: #0074D9;
-}
-
-.color-archive {
- color: #4437f2;
-}
-
-.color-light-active {
- color: #ffc60c;
-}
-
-.color-light-inactive {
- color: #ccc;
-}
-
diff --git a/src/assets/css/global/font.less b/src/assets/css/global/font.less
deleted file mode 100644
index 114ce52..0000000
--- a/src/assets/css/global/font.less
+++ /dev/null
@@ -1,38 +0,0 @@
-#font{
- .f(@from,@end,@step){
- .mX(@f,@e,@s) when (@e >= @f){
- .f@{e}{
- font-size:@e*1px!important;
- }
- .mX(@f,@e - @s,@s);
- }
- .mX(@from,@end,@step);
- }
-
-}
-
-#font > .f(10,80,1);
-
-#font{
- .ln(@from,@end,@step){
- .mX(@f,@e,@s) when (@e >= @f){
- .ln@{e}{
- line-height:@e*1px!important;
- }
- .mX(@f,@e - @s,@s);
- }
- .mX(@from,@end,@step);
- }
-
-}
-
-#font > .ln(10,100,1);
-
-
-
-.bold{
- font-weight:bold;
-}
-.italic{
- font-style:italic;
-}
diff --git a/src/assets/css/global/layout.less b/src/assets/css/global/layout.less
deleted file mode 100644
index d210494..0000000
--- a/src/assets/css/global/layout.less
+++ /dev/null
@@ -1,132 +0,0 @@
-#layout{
- .margin(@from,@end,@step){
- .mX(@f,@e,@s) when (@e >= @f){
- .m@{e}{
- margin:@e*1px;
- }
- .mt@{e}{
- margin-top:@e*1px;
- }
- .mr@{e}{
- margin-right:@e*1px;
- }
- .mb@{e}{
- margin-bottom: @e*1px;
- }
- .ml@{e}{
- margin-left: @e*1px;
- }
- .mv@{e}{
- margin-top: @e*1px;
- margin-bottom: @e*1px;
- }
- .mh@{e}{
- margin-left: @e*1px;
- margin-right: @e*1px*1px;
- }
- .mX(@f,@e - @s,@s);
- }
- .mX(@from,@end,@step);
- }
- .padding(@from,@end,@step){
- .pX(@f,@e,@s) when (@e >= @f){
- .p@{e}{
- padding:@e*1px;
- }
- .pt@{e}{
- padding-top:@e*1px;
- }
- .pr@{e}{
- padding-right:@e*1px;
- }
- .pb@{e}{
- padding-bottom: @e*1px;
- }
- .pl@{e}{
- padding-left: @e*1px;
- }
- .pv@{e}{
- padding-top: @e*1px;
- padding-bottom: @e*1px;
- }
- .ph@{e}{
- padding-left: @e*1px;
- padding-right: @e*1px;
- }
- .pX(@f,@e - @s,@s);
- }
- .pX(@from,@end,@step);
- }
- .width(@from,@end,@step){
- .wX(@f,@e,@s) when (@e >= @f){
- .w@{e}{
- width:@e*1px;
- }
- .w@{e}m{
- max-width:@e*1px;
- }
- .w@{e}n{
- min-width:@e*1px;
- }
- .w@{e}i{
- width:@e*1px!important;
- }
- .wX(@f,@e - @s,@s);
- }
- .wX(@from,@end,@step);
- }
- .height(@from,@end,@step){
- .hX(@f,@e,@s) when (@e >= @f){
- .h@{e}{
- height:@e*1px;
- }
- .lh@{e}{
- line-height:@e*1px;
- }
- .h@{e}m{
- max-height:@e*1px;
- }
- .h@{e}n{
- min-height:@e*1px;
- }
- .h@{e}i{
- height:@e*1px!important;
- }
- .hX(@f,@e - @s,@s);
- }
- .hX(@from,@end,@step);
- }
-}
-
-.wp20{
- width:20%;
-}
-.wp25{
- width:25%;
-}
-.wp33{
- width:33%;
-}
-.wp100{
- width:100%;
-}
-.wp50{
- width:50%;
-}
-.hp100{
- height:100%;
-}
-.hp50{
- height: 50%;
-}
-
-#layout > .margin(20,200,5);
-#layout > .margin(0,19,1);
-#layout > .padding(20,200,5);
-#layout > .padding(0,19,1);
-#layout > .width(20,400,10);
-#layout > .width(0,19,1);
-#layout > .height(20,400,10);
-#layout > .height(0,19,1);
-
-
diff --git a/src/assets/css/global/miscellaneous.less b/src/assets/css/global/miscellaneous.less
deleted file mode 100644
index 815c21f..0000000
--- a/src/assets/css/global/miscellaneous.less
+++ /dev/null
@@ -1,75 +0,0 @@
-.compulsory {
- &:before {
- content: "*";
- color: red;
- }
-}
-
-.limit-hints {
- font-size: 10px;
- color: #aaaaaa;
- float: right;
-}
-
-.hover-underline {
-
- cursor: pointer;
-
- &:hover {
- text-decoration: underline;
- }
-
-}
-
-.btn-file {
- overflow: hidden;
- position: relative;
- vertical-align: middle;
- cursor: pointer;
-
- > input {
- position: absolute;
- top: 0;
- right: 0;
- margin: 0;
- opacity: 0;
- filter: alpha(opacity=0);
- font-size: 23px;
- height: 100%;
- width: 100%;
- direction: ltr;
- cursor: pointer;
- }
-}
-
-.list-text-restriction {
- display: -webkit-box;
- -webkit-box-orient: vertical;
- overflow: hidden;
- position: relative;
- line-height: 17px;
- max-height: 51px;
- -webkit-line-clamp: 3;
- text-overflow: ellipsis;
-}
-
-.one-line {
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
-}
-
-.inline-block {
- display: inline-block;
-}
-
-.overflow-hidden {
- overflow: hidden;
-}
-
-.tank-box {
- background-color: white;
- box-shadow: 0 0 5px rgba(0, 0, 0, .2);
- border-radius: 5px;
- padding: 20px 15px 10px 15px;
-}
diff --git a/src/assets/css/global/responsive.less b/src/assets/css/global/responsive.less
deleted file mode 100644
index 2d1966e..0000000
--- a/src/assets/css/global/responsive.less
+++ /dev/null
@@ -1,36 +0,0 @@
-@media (min-width: 992px) {
- .visible-mobile {
- display: none !important;
- }
-
- .visible-pc {
- display: block !important;
- }
-}
-
-@media (max-width: 992px) {
- .visible-mobile {
- display: block !important;
- }
-
- .visible-pc {
- display: none !important;
- }
-}
-
-//浏览器滚动条样式
-.thin-scrollbar {
- ::-webkit-scrollbar {
- width: 3px;
- height: 3px;
- }
-
- ::-webkit-scrollbar-track {
- background: transparent;
- }
-
- ::-webkit-scrollbar-thumb {
- background: rgba(0, 0, 0, 0.3);
- }
-
-}
diff --git a/src/assets/css/global/variables.less b/src/assets/css/global/variables.less
deleted file mode 100644
index 86b7670..0000000
--- a/src/assets/css/global/variables.less
+++ /dev/null
@@ -1,99 +0,0 @@
-@import "../bootstrap/variables.less";
-//Bootstrap Theme.
-//@brand-primary: darken(#428bca, 6.5%); // #337ab7
-//@brand-success: #5cb85c;
-//@brand-info: #5bc0de;
-//@brand-warning: #f0ad4e;
-//@brand-danger: #d9534f;
-//@brand-gray: #c2c2c2;
-
-//Angulr Theme.
-//@brand-primary: #7266ba;
-//@brand-info: #23b7e5;
-//@brand-success: #27c24c;
-//@brand-warning: #fad733;
-//@brand-danger: #f05050;
-//@brand-light: #edf1f2;
-//@brand-dark: #3a3f51;
-//@brand-black: #1c2b36;
-//@brand-gray: #c2c2c2;
-//@brand-laxative: #B3EE3A;
-
-//Inspina Theme.
-//@brand-primary: #1ab394;
-//@brand-success: #1c84c6;
-//@brand-info: #23c6c8;
-//@brand-warning: #f8ac59;
-//@brand-danger: #ED5565;
-//@brand-gray: #c2c2c2;
-//@brand-laxative: #B3EE3A;
-
-
-//zhengxianqian Theme.
-//@brand-primary: #23B7E5;
-@brand-primary: #006699;
-@brand-success: #1ab394;
-@brand-info: #5EC1C5;
-@brand-warning: #FEC62E;
-@brand-danger: #FE8768;
-@brand-gray: #c2c2c2;
-@brand-laxative: #B3EE3A;
-
-
-@navy: @brand-primary; // Primary color
-@dark-gray: @brand-gray; // Default color
-@blue: @brand-success; // Success color
-@lazur: @brand-info; // Info color
-@yellow: @brand-warning; // Warrning color
-@red: @brand-danger; // Danger color
-@green: @brand-laxative; // Danger color
-
-@gray-base: #000;
-@gray-darker: lighten(@gray-base, 13.5%); // #222
-@gray-dark: lighten(@gray-base, 20%); // #333
-@gray: lighten(@gray-base, 33.5%); // #555
-@gray-light: lighten(@gray-base, 46.7%); // #777
-@gray-lighter: lighten(@gray-base, 93.5%); // #eee
-
-// Various colors
-@text-color: #676a6c; // Body text
-@gray: #f3f3f4; // Background wrapper color
-@light-gray: #D1DADE; // Default label, badget
-@label-badget-color: #5E5E5E;
-@light-blue: #f3f6fb;
-
-// Spiner color and margin
-@spin-color: @navy;
-@spin-margin: 0 auto;
-
-// IBOX colors ( default panel colors)
-@border-color: #e7eaec; // IBox border
-@ibox-title-bg: #ffffff; // IBox Background header
-@ibox-content-bg: #ffffff; // IBox Background content
-
-//Sidebar width
-@sidebar-width: 170px;
-
-// Boxed layout width
-@boxed-width: 1200px;
-
-//Border radius for buttons
-@btn-border-radius: 3px;
-
-//Navigation
-@nav-bg: #2F4050;
-@nav-text-color: #a7b1c2;
-
-
-@top-navigation-height: 45px;
-
-@app-color-title: #474747;
-@app-color-content: #8A8A8A;
-
-//上方导航栏高度
-@frame-header-height: 80px;
-
-//下方蓝眼云盘高度
-@power-footer-height: 40px;
-
-
diff --git a/src/assets/css/inspinia/badgets_labels.less b/src/assets/css/inspinia/badgets_labels.less
deleted file mode 100644
index 137eaaf..0000000
--- a/src/assets/css/inspinia/badgets_labels.less
+++ /dev/null
@@ -1,72 +0,0 @@
-
-.label {
- background-color: @light-gray;
- color: @label-badget-color;
- font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
- font-size: 10px;
- font-weight: 600;
- padding: 3px 8px;
- text-shadow: none;
-}
-
-.badge {
- background-color: @light-gray;
- color: @label-badget-color;
- font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
- font-size: 11px;
- font-weight: 600;
- padding-bottom: 4px;
- padding-left: 6px;
- padding-right: 6px;
- text-shadow: none;
-}
-
-.label-primary, .badge-primary {
- background-color: @navy;
- color: #FFFFFF;
-}
-
-.label-success, .badge-success {
- background-color: @blue;
- color: #FFFFFF;
-}
-
-.label-warning, .badge-warning {
- background-color: @yellow;
- color: #FFFFFF;
-}
-
-.label-warning-light, .badge-warning-light {
- background-color: @yellow;
- color: #ffffff;
-}
-
-.label-danger, .badge-danger {
- background-color: @red;
- color: #FFFFFF;
-}
-
-.label-info, .badge-info {
- background-color: @lazur;
- color: #FFFFFF;
-}
-
-.label-inverse, .badge-inverse {
- background-color: #262626;
- color: #FFFFFF;
-}
-
-.label-laxative, .badge-laxative {
- background-color: @green;
- color: #FFFFFF;
-}
-
-.label-white, .badge-white {
- background-color: #FFFFFF;
- color: #5E5E5E;
-}
-
-.label-white, .badge-disable {
- background-color: #2A2E36;
- color: #8B91A0;
-}
diff --git a/src/assets/css/inspinia/base.less b/src/assets/css/inspinia/base.less
deleted file mode 100644
index e62dfdf..0000000
--- a/src/assets/css/inspinia/base.less
+++ /dev/null
@@ -1,1283 +0,0 @@
-
-.block {
- display: block;
-}
-
-.clear {
- display: block;
- overflow: hidden;
-}
-
-a {
- cursor: pointer;
-}
-
-a:hover, a:focus {
- text-decoration: none;
-}
-
-.border-bottom {
- border-bottom: 1px solid @border-color !important;
-}
-
-.font-bold {
- font-weight: 600;
-}
-
-.font-noraml {
- font-weight: 400;
-}
-
-.text-uppercase {
- text-transform: uppercase;
-}
-
-.font-italic {
- font-style: italic;
-}
-
-.b-r {
- border-right: 1px solid @border-color;
-}
-
-.hr-line-dashed {
- border-top: 1px dashed @border-color;
- color: #ffffff;
- background-color: #ffffff;
- height: 1px;
- margin: 20px 0;
-}
-
-.hr-line-solid {
- border-bottom: 1px solid @border-color;
- background-color: rgba(0, 0, 0, 0);
- border-style: solid !important;
- margin-top: 15px;
- margin-bottom: 15px;
-}
-
-/* GALLERY */
-.gallery > .row > div {
- margin-bottom: 15px;
-}
-
-.fancybox img {
- margin-bottom: 5px;
- /* Only for demo */
- width: 24%;
-}
-
-/* Summernote text editor */
-.note-editor {
- height: auto !important;
- //min-height: 300px;
-}
-
-.note-editor.fullscreen {
- z-index: 2050;
-}
-
-.note-editor.note-frame.fullscreen {
- z-index: 2020;
-}
-
-.note-editor.note-frame {
- border: none;
-}
-
-.note-editor.panel {
- margin-bottom: 0;
-}
-
-/* MODAL */
-.modal-content {
- background-clip: padding-box;
- background-color: #FFFFFF;
- border: 1px solid rgba(0, 0, 0, 0);
- border-radius: 4px;
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
- outline: 0 none;
- position: relative;
-}
-
-.modal-dialog {
- z-index: 2200;
-}
-
-.modal-body {
- padding: 20px 30px 30px 30px;
-}
-
-.inmodal .modal-body {
- background: #f8fafb;
-}
-
-.inmodal .modal-header {
- padding: 30px 15px;
- text-align: center;
-}
-
-.animated.modal.fade .modal-dialog {
- -webkit-transform: none;
- -ms-transform: none;
- -o-transform: none;
- transform: none;
-}
-
-.inmodal .modal-title {
- font-size: 26px;
-}
-
-.inmodal .modal-icon {
- font-size: 84px;
- color: #e2e3e3;
-}
-
-.modal-footer {
- margin-top: 0;
-}
-
-
-.title-action {
- text-align: right;
- padding-top: 30px;
-}
-
-.ibox-content h1, .ibox-content h2, .ibox-content h3, .ibox-content h4, .ibox-content h5,
-.ibox-title h1, .ibox-title h2, .ibox-title h3, .ibox-title h4, .ibox-title h5 {
- margin-top: 5px;
-}
-
-ul.unstyled, ol.unstyled {
- list-style: none outside none;
- margin-left: 0;
-}
-
-.big-icon {
- font-size: 160px !important;
- color: #e5e6e7;
-}
-
-/* FOOTER */
-
-.footer {
-
- background: none repeat scroll 0 0 white;
- border-top: 1px solid @border-color;
- bottom: 0;
- left: 0;
- padding: 10px 20px;
- position: absolute;
- right: 0;
-}
-
-.footer.fixed_full {
- position: fixed;
- bottom: 0;
- left: 0;
- right: 0;
- z-index: 1000;
- padding: 10px 20px;
- background: white;
- border-top: 1px solid @border-color;
-}
-
-.footer.fixed {
- position: fixed;
- bottom: 0;
- left: 0;
- right: 0;
- z-index: 1000;
- padding: 10px 20px;
- background: white;
- border-top: 1px solid @border-color;
- margin-left: @sidebar-width;
-}
-
-#body.mini-navbar .footer.fixed {
- margin: 0 0 0 70px;
-}
-
-/* PANELS */
-
-.page-heading {
- border-top: 0;
- padding: 0 10px 20px 10px;
-}
-
-.panel-heading h1, .panel-heading h2 {
- margin-bottom: 5px;
-}
-
-/* TABLES */
-
-.table-bordered {
- border: 1px solid #EBEBEB;
-}
-
-.table-bordered > thead > tr > th, .table-bordered > thead > tr > td {
- background-color: #F5F5F6;
- border-bottom-width: 1px;
-}
-
-.table-bordered > thead > tr > th, .table-bordered > tbody > tr > th, .table-bordered > tfoot > tr > th, .table-bordered > thead > tr > td, .table-bordered > tbody > tr > td, .table-bordered > tfoot > tr > td {
- border: 1px solid #e7e7e7;
-}
-
-.table > thead > tr > th {
- border-bottom: 1px solid #DDDDDD;
- vertical-align: bottom;
-}
-
-.table > thead > tr > th, .table > tbody > tr > th, .table > tfoot > tr > th, .table > thead > tr > td, .table > tbody > tr > td, .table > tfoot > tr > td {
- border-top: 1px solid @border-color;
- line-height: 1.42857;
- padding: 8px;
- vertical-align: top;
-}
-
-/* PANELS */
-
-.panel.blank-panel {
- background: none;
- margin: 0;
-}
-
-.blank-panel .panel-heading {
- padding-bottom: 0;
-}
-
-.nav-tabs > li > a {
- color: #A7B1C2;
- font-weight: 600;
- padding: 10px 20px 10px 25px;
-}
-
-.nav-tabs > li > a:hover, .nav-tabs > li > a:focus {
- background-color: #e6e6e6;
- color: @text-color;
-}
-
-.ui-tab .tab-content {
- padding: 20px 0;
-}
-
-/* GLOBAL */
-
-.no-padding {
- padding: 0 !important;
-}
-
-.no-borders {
- border: none !important;
-}
-
-.no-margins {
- margin: 0 !important;
-}
-
-.no-top-border {
- border-top: 0 !important;
-}
-
-.ibox-content.text-box {
- padding-bottom: 0;
- padding-top: 15px;
-}
-
-.border-left-right {
- border-left: 1px solid @border-color;
- border-right: 1px solid @border-color;
-}
-
-.border-top-bottom {
- border-top: 1px solid @border-color;
- border-bottom: 1px solid @border-color;
-}
-
-.border-left {
- border-left: 1px solid @border-color;
-}
-
-.border-right {
- border-right: 1px solid @border-color;
-}
-
-.border-top {
- border-top: 1px solid @border-color;
-}
-
-.border-bottom {
- border-bottom: 1px solid @border-color;
-}
-
-.border-size-sm {
- border-width: 3px;
-}
-
-.border-size-md {
- border-width: 6px;
-}
-
-.border-size-lg {
- border-width: 9px;
-}
-
-.border-size-xl {
- border-width: 12px;
-}
-
-.full-width {
- width: 100% !important;
-}
-
-.link-block {
- font-size: 12px;
- padding: 10px;
-}
-
-.link-block a {
- font-size: 10px;
- color: inherit;
-
-}
-
-#body.mini-navbar .branding {
- display: none;
-}
-
-img.circle-border {
- border: 6px solid #FFFFFF;
- border-radius: 50%;
-}
-
-.branding {
- float: left;
- color: #FFFFFF;
- font-size: 18px;
- font-weight: 600;
- padding: 17px 20px;
- text-align: center;
- background-color: @navy;
-}
-
-.login-panel {
- margin-top: 25%;
-}
-
-.icons-box h3 {
- margin-top: 10px;
- margin-bottom: 10px;
-}
-
-.icons-box .infont a i {
- font-size: 25px;
- display: block;
- color: @text-color;
-}
-
-.icons-box .infont a {
- color: #a6a8a9;
-}
-
-.icons-box .infont a {
- padding: 10px;
-
- margin: 1px;
- display: block;
-}
-
-.ui-draggable .ibox-title {
- cursor: move;
-}
-
-.breadcrumb {
- background-color: #ffffff;
- padding: 0;
- margin-bottom: 0;
-}
-
-.breadcrumb > li a {
- color: inherit;
-}
-
-.breadcrumb > .active {
- color: inherit;
-}
-
-code {
- background-color: #F9F2F4;
- border-radius: 4px;
- color: #ca4440;
- font-size: 90%;
- padding: 2px 4px;
- white-space: nowrap;
-}
-
-.ibox {
- clear: both;
- margin-bottom: 25px;
- margin-top: 0;
- padding: 0;
-}
-
-.ibox.collapsed .ibox-content {
- display: none;
-}
-
-.ibox.collapsed .fa.fa-chevron-up:before {
- content: "\f078";
-}
-
-.ibox.collapsed .fa.fa-chevron-down:before {
- content: "\f077";
-}
-
-.ibox:after, .ibox:before {
- display: table;
-}
-
-.ibox-title {
- -moz-border-bottom-colors: none;
- -moz-border-left-colors: none;
- -moz-border-right-colors: none;
- -moz-border-top-colors: none;
- background-color: @ibox-title-bg;
- border-color: @border-color;
- border-image: none;
- border-style: solid solid none;
- border-width: 2px 0 0;
- color: inherit;
- margin-bottom: 0;
- padding: 15px 15px 7px;
- min-height: 48px;
-}
-
-.ibox-content {
- background-color: @ibox-content-bg;
- color: inherit;
- padding: 15px 20px 20px 20px;
-
- border-color: @border-color;
- border-image: none;
- border-style: solid solid none;
- border-width: 1px 0;
-}
-
-.ibox-footer {
- color: inherit;
- border-top: 1px solid @border-color;
- font-size: 90%;
- background: #ffffff;
- padding: 10px 15px;
-}
-
-table.table-mail tr td {
- padding: 12px;
-}
-
-.table-mail .check-mail {
- padding-left: 20px;
-}
-
-.table-mail .mail-date {
- padding-right: 20px;
-}
-
-.star-mail, .check-mail {
- width: 40px;
-}
-
-.unread td a, .unread td {
- font-weight: 600;
- color: inherit;
-}
-
-.read td a, .read td {
- font-weight: normal;
- color: inherit;
-}
-
-.unread td {
- background-color: #f9f8f8;
-}
-
-.ibox-content {
- clear: both;
-}
-
-.ibox-heading {
- background-color: #f3f6fb;
- border-bottom: none;
-}
-
-.ibox-heading h3 {
- font-weight: 200;
- font-size: 24px;
-}
-
-.ibox-title h5 {
- display: inline-block;
- font-size: 14px;
- margin: 0 0 7px;
- padding: 0;
- text-overflow: ellipsis;
- float: left;
-}
-
-.ibox-title .label {
- float: left;
- margin-left: 4px;
-}
-
-.ibox-tools {
- display: block;
- float: none;
- margin-top: 0;
- position: relative;
- padding: 0;
- text-align: right;
-}
-
-.ibox-tools a {
- cursor: pointer;
- margin-left: 5px;
- color: #c4c4c4;
-}
-
-.ibox-tools a.btn-primary {
- color: #fff;
-}
-
-.ibox-tools .dropdown-menu > li > a {
- padding: 4px 10px;
- font-size: 12px;
-}
-
-.ibox .ibox-tools.open > .dropdown-menu {
- left: auto;
- right: 0;
-}
-
-/* BACKGROUNDS */
-
-.gray-bg, .bg-muted {
- background-color: @gray;
-}
-
-.white-bg, .bg-white {
- background-color: #ffffff;
-}
-
-.navy-bg, .bg-success {
- background-color: @navy;
- color: #ffffff;
-}
-
-.blue-bg, .bg-primary {
- background-color: @blue;
- color: #ffffff;
-}
-
-.lazur-bg, .bg-info {
- background-color: @lazur;
- color: #ffffff;
-}
-
-.yellow-bg, .bg-warning {
- background-color: @yellow;
- color: #ffffff;
-}
-
-.red-bg, .bg-danger {
- background-color: @red;
- color: #ffffff;
-}
-
-.black-bg, .bg-black {
- background-color: #262626;
-}
-
-.panel-primary {
- border-color: @navy;
-}
-
-.panel-primary > .panel-heading {
- background-color: @navy;
- border-color: @navy;
-}
-
-.panel-success {
- border-color: @blue;
-}
-
-.panel-success > .panel-heading {
- background-color: @blue;
- border-color: @blue;
- color: #ffffff;
-}
-
-.panel-info {
- border-color: @lazur;
-}
-
-.panel-info > .panel-heading {
- background-color: @lazur;
- border-color: @lazur;
- color: #ffffff;
-}
-
-.panel-warning {
- border-color: @yellow;
-}
-
-.panel-warning > .panel-heading {
- background-color: @yellow;
- border-color: @yellow;
- color: #ffffff;
-}
-
-.panel-danger {
- border-color: @red;
-}
-
-.panel-danger > .panel-heading {
- background-color: @red;
- border-color: @red;
- color: #ffffff;
-}
-
-.progress-bar {
- background-color: @navy;
-}
-
-.progress-small, .progress-small .progress-bar {
- height: 10px;
-}
-
-.progress-small, .progress-mini {
- margin-top: 5px;
-}
-
-.progress-mini, .progress-mini .progress-bar {
- height: 5px;
- margin-bottom: 0;
-}
-
-.progress-bar-navy-light {
- background-color: #3dc7ab;
-}
-
-.progress-bar-success {
- background-color: @blue;
-}
-
-.progress-bar-info {
- background-color: @lazur;
-}
-
-.progress-bar-warning {
- background-color: @yellow;
-}
-
-.progress-bar-danger {
- background-color: @red;
-}
-
-.panel-title {
- font-size: inherit;
-}
-
-.jumbotron {
- border-radius: 6px;
- padding: 40px;
-}
-
-.jumbotron h1 {
- margin-top: 0;
-}
-
-/* COLORS */
-
-.text-navy {
- color: @navy;
-}
-
-.text-primary {
- color: inherit;
-}
-
-.text-success {
- color: @blue;
-}
-
-.text-info {
- color: @lazur;
-}
-
-.text-warning {
- color: @yellow;
-}
-
-.text-danger {
- color: @red;
-}
-
-.text-muted {
- color: #888888;
-}
-
-.text-white {
- color: #ffffff;
-}
-
-.simple_tag {
- background-color: #f3f3f4;
- border: 1px solid #e7eaec;
- border-radius: 2px;
- color: inherit;
- font-size: 10px;
- margin-right: 5px;
- margin-top: 5px;
- padding: 5px 12px;
- display: inline-block;
-}
-
-.img-shadow {
- -webkit-box-shadow: 0 0 3px 0 rgba(145, 145, 145, 1);
- -moz-box-shadow: 0 0 3px 0 rgba(145, 145, 145, 1);
- box-shadow: 0 0 3px 0 rgba(145, 145, 145, 1);
-}
-
-/* For handle diferent bg color in AngularJS version */
-.dashboards\.dashboard_2 nav.navbar,
-.dashboards\.dashboard_3 nav.navbar,
-.mailbox\.inbox nav.navbar,
-.mailbox\.email_view nav.navbar,
-.mailbox\.email_compose nav.navbar,
-.dashboards\.dashboard_4_1 nav.navbar,
-.metrics nav.navbar, .metrics\.index nav.navbar,
-.dashboards\.dashboard_5 nav.navbar {
- background: #fff;
-}
-
-/* For handle diferent bg color in MVC version */
-.Dashboard_2 .navbar.navbar-static-top,
-.Dashboard_3 .navbar.navbar-static-top,
-.Dashboard_4_1 .navbar.navbar-static-top,
-.ComposeEmail .navbar.navbar-static-top,
-.EmailView .navbar.navbar-static-top,
-.Inbox .navbar.navbar-static-top,
-.Metrics .navbar.navbar-static-top,
-.Dashboard_5 .navbar.navbar-static-top {
- background: #fff;
-}
-
-
-/* FULL HEIGHT */
-
-.full-height {
- height: 100%;
-}
-
-.fh-breadcrumb {
- height: calc(~"100% - 196px");
- margin: 0 -15px;
- position: relative
-}
-
-.fh-no-breadcrumb {
- height: calc(~"100% - 99px");
- margin: 0 -15px;
- position: relative
-}
-
-.fh-column {
- background: #fff;
- height: 100%;
- width: 240px;
- float: left
-}
-
-.modal-backdrop {
- z-index: 2040 !important;
-}
-
-.modal {
- z-index: 2050 !important;
-}
-
-.spiner-example {
- height: 200px;
- padding-top: 70px;
-}
-
-/* MARGINS & PADDINGS */
-
-.p-xxs {
- padding: 5px;
-}
-
-.p-xs {
- padding: 10px;
-}
-
-.p-sm {
- padding: 15px;
-}
-
-.p-m {
- padding: 20px;
-}
-
-.p-md {
- padding: 25px;
-}
-
-.p-lg {
- padding: 30px;
-}
-
-.p-xl {
- padding: 40px;
-}
-
-.p-w-xs {
- padding: 0 10px;
-}
-
-.p-w-sm {
- padding: 0 15px;
-
-}
-
-.p-w-m {
- padding: 0 20px;
-
-}
-
-.p-w-md {
- padding: 0 25px;
-
-}
-
-.p-w-lg {
- padding: 0 30px;
-
-}
-
-.p-w-xl {
- padding: 0 40px;
-
-}
-
-.p-h-xs {
- padding: 10px 0;
-}
-
-.p-h-sm {
- padding: 15px 0;
-
-}
-
-.p-h-m {
- padding: 20px 0;
-
-}
-
-.p-h-md {
- padding: 25px 0;
-
-}
-
-.p-h-lg {
- padding: 30px 0;
-
-}
-
-.p-h-xl {
- padding: 40px 0;
-
-}
-
-.m-xxs {
- margin: 2px 4px;
-}
-
-.m-xs {
- margin: 5px;
-}
-
-.m-sm {
- margin: 10px;
-}
-
-.m-md {
- margin: 20px;
-}
-
-.m-lg {
- margin: 30px;
-}
-
-.m-xl {
- margin: 50px;
-}
-
-.m-n {
- margin: 0 !important;
-}
-
-.m-l-none {
- margin-left: 0;
-}
-
-.m-l-xs {
- margin-left: 5px;
-}
-
-.m-l-sm {
- margin-left: 10px;
-}
-
-.m-l {
- margin-left: 15px;
-}
-
-.m-l-md {
- margin-left: 20px;
-}
-
-.m-l-lg {
- margin-left: 30px;
-}
-
-.m-l-xl {
- margin-left: 40px;
-}
-
-.m-l-n-xxs {
- margin-left: -1px;
-}
-
-.m-l-n-xs {
- margin-left: -5px;
-}
-
-.m-l-n-sm {
- margin-left: -10px;
-}
-
-.m-l-n {
- margin-left: -15px;
-}
-
-.m-l-n-md {
- margin-left: -20px;
-}
-
-.m-l-n-lg {
- margin-left: -30px;
-}
-
-.m-l-n-xl {
- margin-left: -40px;
-}
-
-.m-t-none {
- margin-top: 0;
-}
-
-.m-t-xxs {
- margin-top: 1px;
-}
-
-.m-t-xs {
- margin-top: 5px;
-}
-
-.m-t-sm {
- margin-top: 10px;
-}
-
-.m-t {
- margin-top: 15px;
-}
-
-.m-t-md {
- margin-top: 20px;
-}
-
-.m-t-lg {
- margin-top: 30px;
-}
-
-.m-t-xl {
- margin-top: 40px;
-}
-
-.m-t-n-xxs {
- margin-top: -1px;
-}
-
-.m-t-n-xs {
- margin-top: -5px;
-}
-
-.m-t-n-sm {
- margin-top: -10px;
-}
-
-.m-t-n {
- margin-top: -15px;
-}
-
-.m-t-n-md {
- margin-top: -20px;
-}
-
-.m-t-n-lg {
- margin-top: -30px;
-}
-
-.m-t-n-xl {
- margin-top: -40px;
-}
-
-.m-r-none {
- margin-right: 0;
-}
-
-.m-r-xxs {
- margin-right: 1px;
-}
-
-.m-r-xs {
- margin-right: 5px;
-}
-
-.m-r-sm {
- margin-right: 10px;
-}
-
-.m-r {
- margin-right: 15px;
-}
-
-.m-r-md {
- margin-right: 20px;
-}
-
-.m-r-lg {
- margin-right: 30px;
-}
-
-.m-r-xl {
- margin-right: 40px;
-}
-
-.m-r-n-xxs {
- margin-right: -1px;
-}
-
-.m-r-n-xs {
- margin-right: -5px;
-}
-
-.m-r-n-sm {
- margin-right: -10px;
-}
-
-.m-r-n {
- margin-right: -15px;
-}
-
-.m-r-n-md {
- margin-right: -20px;
-}
-
-.m-r-n-lg {
- margin-right: -30px;
-}
-
-.m-r-n-xl {
- margin-right: -40px;
-}
-
-.m-b-none {
- margin-bottom: 0;
-}
-
-.m-b-xxs {
- margin-bottom: 1px;
-}
-
-.m-b-xs {
- margin-bottom: 5px;
-}
-
-.m-b-sm {
- margin-bottom: 10px;
-}
-
-.m-b {
- margin-bottom: 15px;
-}
-
-.m-b-md {
- margin-bottom: 20px;
-}
-
-.m-b-lg {
- margin-bottom: 30px;
-}
-
-.m-b-xl {
- margin-bottom: 40px;
-}
-
-.m-b-n-xxs {
- margin-bottom: -1px;
-}
-
-.m-b-n-xs {
- margin-bottom: -5px;
-}
-
-.m-b-n-sm {
- margin-bottom: -10px;
-}
-
-.m-b-n {
- margin-bottom: -15px;
-}
-
-.m-b-n-md {
- margin-bottom: -20px;
-}
-
-.m-b-n-lg {
- margin-bottom: -30px;
-}
-
-.m-b-n-xl {
- margin-bottom: -40px;
-}
-
-.space-15 {
- margin: 15px 0;
-}
-
-.space-20 {
- margin: 20px 0;
-}
-
-.space-25 {
- margin: 25px 0;
-}
-
-.space-30 {
- margin: 30px 0;
-}
-
-// IMAGES SIZE
-
-.img-sm {
- width: 40px;
- height: 40px;
-}
-
-.img-md {
- width: 64px;
- height: 64px;
-}
-
-.img-lg {
- width: 96px;
- height: 96px;
-}
-
-.img-blg {
- width: 150px;
- height: 150px;
-}
-
-
-// BORDER RADIUS
-
-.b-r-xs {
- -webkit-border-radius: 1px;
- -moz-border-radius: 1px;
- border-radius: 1px;
-}
-
-.b-r-sm {
- -webkit-border-radius: 3px;
- -moz-border-radius: 3px;
- border-radius: 3px;
-}
-
-.b-r-md {
- -webkit-border-radius: 6px;
- -moz-border-radius: 6px;
- border-radius: 6px;
-}
-
-.b-r-lg {
- -webkit-border-radius: 12px;
- -moz-border-radius: 12px;
- border-radius: 12px;
-}
-
-.b-r-xl {
- -webkit-border-radius: 24px;
- -moz-border-radius: 24px;
- border-radius: 24px;
-}
-
-// Fullscreen functions
-
-.fullscreen-ibox-mode .animated {
- animation: none;
-}
-
-#body.fullscreen-ibox-mode {
- overflow-y: hidden;
-}
-
-.ibox.fullscreen {
- z-index: 2030;
- position: fixed;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
- overflow: auto;
- margin-bottom: 0;
-}
-
-.ibox.fullscreen .collapse-link {
- display: none;
-}
-
-.ibox.fullscreen .ibox-content {
- min-height: calc(~"100% - 48px");
-}
-
-// Bootstrap issue in 3.3.0 with modal https://github.com/twbs/bootstrap/issues/9855
-// Fix
-#body.modal-open {
- padding-right: inherit !important;
-}
-
-// Fix for modal backdrop with animate.css
-#body.modal-open .animated {
- animation-fill-mode: initial;
- z-index: inherit
-}
-
-// Remove animation on fullscreen video
-
-.fullscreen-video .animated {
- animation: none;
-}
diff --git a/src/assets/css/inspinia/buttons.less b/src/assets/css/inspinia/buttons.less
deleted file mode 100644
index b0c6867..0000000
--- a/src/assets/css/inspinia/buttons.less
+++ /dev/null
@@ -1,309 +0,0 @@
-
-.btn {
- border-radius: @btn-border-radius;
-}
-
-.float-e-margins .btn {
- margin-bottom: 5px;
-}
-
-.btn-w-m {
- min-width: 120px;
-}
-
-.btn-primary.btn-outline {
- color: @navy;
-}
-
-.btn-success.btn-outline {
- color: @blue;
-}
-
-.btn-info.btn-outline {
- color: @lazur;
-}
-
-.btn-warning.btn-outline {
- color: @yellow;
-}
-
-.btn-danger.btn-outline {
- color: @red;
-}
-
-.btn-primary.btn-outline:hover,
-.btn-success.btn-outline:hover,
-.btn-info.btn-outline:hover,
-.btn-warning.btn-outline:hover,
-.btn-danger.btn-outline:hover {
- color: #fff;
-}
-
-.btn-primary {
- background-color: @navy;
- border-color: @navy;
- color: #FFFFFF;
-}
-
-.btn-primary:hover, .btn-primary:focus, .btn-primary:active, .btn-primary.active, .open .dropdown-toggle.btn-primary, .btn-primary:active:focus, .btn-primary:active:hover, .btn-primary.active:hover, .btn-primary.active:focus {
- background-color: darken(@navy, 3%);
- border-color: darken(@navy, 3%);
- color: #FFFFFF;
-}
-
-.btn-primary:active, .btn-primary.active, .open .dropdown-toggle.btn-primary {
- background-image: none;
-}
-
-.btn-primary.disabled, .btn-primary.disabled:hover, .btn-primary.disabled:focus, .btn-primary.disabled:active, .btn-primary.disabled.active, .btn-primary[disabled], .btn-primary[disabled]:hover, .btn-primary[disabled]:focus, .btn-primary[disabled]:active, .btn-primary.active[disabled], fieldset[disabled] .btn-primary, fieldset[disabled] .btn-primary:hover, fieldset[disabled] .btn-primary:focus, fieldset[disabled] .btn-primary:active, fieldset[disabled] .btn-primary.active {
- background-color: lighten(@navy, 4%);
- border-color: lighten(@navy, 4%);
-}
-
-.btn-success {
- background-color: @blue;
- border-color: @blue;
- color: #FFFFFF;
-}
-
-.btn-success:hover, .btn-success:focus, .btn-success:active, .btn-success.active, .open .dropdown-toggle.btn-success, .btn-success:active:focus, .btn-success:active:hover, .btn-success.active:hover, .btn-success.active:focus {
- background-color: darken(@blue, 3%);
- border-color: darken(@blue, 3%);
- color: #FFFFFF;
-}
-
-.btn-success:active, .btn-success.active, .open .dropdown-toggle.btn-success {
- background-image: none;
-}
-
-.btn-success.disabled, .btn-success.disabled:hover, .btn-success.disabled:focus, .btn-success.disabled:active, .btn-success.disabled.active, .btn-success[disabled], .btn-success[disabled]:hover, .btn-success[disabled]:focus, .btn-success[disabled]:active, .btn-success.active[disabled], fieldset[disabled] .btn-success, fieldset[disabled] .btn-success:hover, fieldset[disabled] .btn-success:focus, fieldset[disabled] .btn-success:active, fieldset[disabled] .btn-success.active {
- background-color: lighten(@blue, 4%);
- border-color: lighten(@blue, 4%);
-}
-
-.btn-info {
- background-color: @lazur;
- border-color: @lazur;
- color: #FFFFFF;
-}
-
-.btn-info:hover, .btn-info:focus, .btn-info:active, .btn-info.active, .open .dropdown-toggle.btn-info, .btn-info:active:focus, .btn-info:active:hover, .btn-info.active:hover, .btn-info.active:focus {
- background-color: darken(@lazur, 3%);
- border-color: darken(@lazur, 3%);
- color: #FFFFFF;
-}
-
-.btn-info:active, .btn-info.active, .open .dropdown-toggle.btn-info {
- background-image: none;
-}
-
-.btn-info.disabled, .btn-info.disabled:hover, .btn-info.disabled:focus, .btn-info.disabled:active, .btn-info.disabled.active, .btn-info[disabled], .btn-info[disabled]:hover, .btn-info[disabled]:focus, .btn-info[disabled]:active, .btn-info.active[disabled], fieldset[disabled] .btn-info, fieldset[disabled] .btn-info:hover, fieldset[disabled] .btn-info:focus, fieldset[disabled] .btn-info:active, fieldset[disabled] .btn-info.active {
- background-color: lighten(@lazur, 4%);
- border-color: lighten(@lazur, 4%);
-}
-
-.btn-default {
- color: inherit;
- background: white;
- border: 1px solid @border-color;
-}
-
-.btn-default:hover, .btn-default:focus, .btn-default:active, .btn-default.active, .open .dropdown-toggle.btn-default, .btn-default:active:focus, .btn-default:active:hover, .btn-default.active:hover, .btn-default.active:focus {
- color: inherit;
- border: 1px solid #d2d2d2;
-}
-
-.btn-default:active, .btn-default.active, .open .dropdown-toggle.btn-default {
- box-shadow: 0 2px 5px rgba(0, 0, 0, 0.15) inset;
-}
-
-.btn-default.disabled, .btn-default.disabled:hover, .btn-default.disabled:focus, .btn-default.disabled:active, .btn-default.disabled.active, .btn-default[disabled], .btn-default[disabled]:hover, .btn-default[disabled]:focus, .btn-default[disabled]:active, .btn-default.active[disabled], fieldset[disabled] .btn-default, fieldset[disabled] .btn-default:hover, fieldset[disabled] .btn-default:focus, fieldset[disabled] .btn-default:active, fieldset[disabled] .btn-default.active {
- color: #cacaca;
-}
-
-.btn-warning {
- background-color: @yellow;
- border-color: @yellow;
- color: #FFFFFF;
-}
-
-.btn-warning:hover, .btn-warning:focus, .btn-warning:active, .btn-warning.active, .open .dropdown-toggle.btn-warning, .btn-warning:active:focus, .btn-warning:active:hover, .btn-warning.active:hover, .btn-warning.active:focus {
- background-color: darken(@yellow, 3%);
- border-color: darken(@yellow, 3%);
- color: #FFFFFF;
-}
-
-.btn-warning:active, .btn-warning.active, .open .dropdown-toggle.btn-warning {
- background-image: none;
-}
-
-.btn-warning.disabled, .btn-warning.disabled:hover, .btn-warning.disabled:focus, .btn-warning.disabled:active, .btn-warning.disabled.active, .btn-warning[disabled], .btn-warning[disabled]:hover, .btn-warning[disabled]:focus, .btn-warning[disabled]:active, .btn-warning.active[disabled], fieldset[disabled] .btn-warning, fieldset[disabled] .btn-warning:hover, fieldset[disabled] .btn-warning:focus, fieldset[disabled] .btn-warning:active, fieldset[disabled] .btn-warning.active {
- background-color: lighten(@yellow, 4%);
- border-color: lighten(@yellow, 4%);
-}
-
-.btn-danger {
- background-color: @red;
- border-color: @red;
- color: #FFFFFF;
-}
-
-.btn-danger:hover, .btn-danger:focus, .btn-danger:active, .btn-danger.active, .open .dropdown-toggle.btn-danger, .btn-danger:active:focus, .btn-danger:active:hover, .btn-danger.active:hover, .btn-danger.active:focus {
- background-color: darken(@red, 3%);
- border-color: darken(@red, 3%);
- color: #FFFFFF;
-}
-
-.btn-danger:active, .btn-danger.active, .open .dropdown-toggle.btn-danger {
- background-image: none;
-}
-
-.btn-danger.disabled, .btn-danger.disabled:hover, .btn-danger.disabled:focus, .btn-danger.disabled:active, .btn-danger.disabled.active, .btn-danger[disabled], .btn-danger[disabled]:hover, .btn-danger[disabled]:focus, .btn-danger[disabled]:active, .btn-danger.active[disabled], fieldset[disabled] .btn-danger, fieldset[disabled] .btn-danger:hover, fieldset[disabled] .btn-danger:focus, fieldset[disabled] .btn-danger:active, fieldset[disabled] .btn-danger.active {
- background-color: lighten(@red, 4%);
- border-color: lighten(@red, 4%);
-}
-
-.btn-link {
- color: inherit;
-}
-
-.btn-link:hover, .btn-link:focus, .btn-link:active, .btn-link.active, .open .dropdown-toggle.btn-link {
- color: @navy;
- text-decoration: none;
-}
-
-.btn-link:active, .btn-link.active, .open .dropdown-toggle.btn-link {
- background-image: none;
-}
-
-.btn-link.disabled, .btn-link.disabled:hover, .btn-link.disabled:focus, .btn-link.disabled:active, .btn-link.disabled.active, .btn-link[disabled], .btn-link[disabled]:hover, .btn-link[disabled]:focus, .btn-link[disabled]:active, .btn-link.active[disabled], fieldset[disabled] .btn-link, fieldset[disabled] .btn-link:hover, fieldset[disabled] .btn-link:focus, fieldset[disabled] .btn-link:active, fieldset[disabled] .btn-link.active {
- color: #cacaca;
-}
-
-.btn-white {
- color: inherit;
- background: white;
- border: 1px solid @border-color;
-}
-
-.btn-white:hover, .btn-white:focus, .btn-white:active, .btn-white.active, .open .dropdown-toggle.btn-white, .btn-white:active:focus, .btn-white:active:hover, .btn-white.active:hover, .btn-white.active:focus {
- color: inherit;
- border: 1px solid #d2d2d2;
-}
-
-.btn-white:active, .btn-white.active {
- box-shadow: 0 2px 5px rgba(0, 0, 0, 0.15) inset;
-}
-
-.btn-white:active, .btn-white.active, .open .dropdown-toggle.btn-white {
- background-image: none;
-}
-
-.btn-white.disabled, .btn-white.disabled:hover, .btn-white.disabled:focus, .btn-white.disabled:active, .btn-white.disabled.active, .btn-white[disabled], .btn-white[disabled]:hover, .btn-white[disabled]:focus, .btn-white[disabled]:active, .btn-white.active[disabled], fieldset[disabled] .btn-white, fieldset[disabled] .btn-white:hover, fieldset[disabled] .btn-white:focus, fieldset[disabled] .btn-white:active, fieldset[disabled] .btn-white.active {
- color: #cacaca;
-}
-
-.form-control, .form-control:focus, .has-error .form-control:focus, .has-success .form-control:focus, .has-warning .form-control:focus, .navbar-collapse, .navbar-form, .navbar-form-custom .form-control:focus, .navbar-form-custom .form-control:hover, .open .btn.dropdown-toggle, .panel, .popover, .progress, .progress-bar {
- box-shadow: none;
-}
-
-.btn-outline {
- color: inherit;
- background-color: transparent;
- transition: all .5s;
-}
-
-.btn-rounded {
- border-radius: 50px;
-}
-
-.btn-large-dim {
- width: 90px;
- height: 90px;
- font-size: 42px;
-}
-
-button.dim {
- display: inline-block;
- text-decoration: none;
- text-transform: uppercase;
- text-align: center;
- padding-top: 6px;
- margin-right: 10px;
- position: relative;
- cursor: pointer;
- border-radius: 5px;
- font-weight: 600;
- margin-bottom: 20px !important;
-}
-
-button.dim:active {
- top: 3px;
-}
-
-button.btn-primary.dim {
- box-shadow: inset 0 0 0 darken(@navy, 6%), 0 5px 0 0 darken(@navy, 6%), 0 10px 5px #999;
-}
-
-button.btn-primary.dim:active {
- box-shadow: inset 0 0 0 darken(@navy, 6%), 0 2px 0 0 darken(@navy, 6%), 0 5px 3px #999;
-}
-
-button.btn-default.dim {
- box-shadow: inset 0 0 0 darken(@dark-gray, 6%), 0 5px 0 0 darken(@dark-gray, 6%), 0 10px 5px #999;
-}
-
-button.btn-default.dim:active {
- box-shadow: inset 0 0 0 darken(@dark-gray, 6%), 0 2px 0 0 darken(@dark-gray, 6%), 0 5px 3px #999;
-}
-
-button.btn-warning.dim {
- box-shadow: inset 0 0 0 darken(@yellow, 6%), 0 5px 0 0 darken(@yellow, 6%), 0 10px 5px #999;
-}
-
-button.btn-warning.dim:active {
- box-shadow: inset 0 0 0 darken(@yellow, 6%), 0 2px 0 0 darken(@yellow, 6%), 0 5px 3px #999;
-}
-
-button.btn-info.dim {
- box-shadow: inset 0 0 0 darken(@lazur, 6%), 0 5px 0 0 darken(@lazur, 6%), 0 10px 5px #999;
-}
-
-button.btn-info.dim:active {
- box-shadow: inset 0 0 0 darken(@lazur, 6%), 0 2px 0 0 darken(@lazur, 6%), 0 5px 3px #999;
-}
-
-button.btn-success.dim {
- box-shadow: inset 0 0 0 darken(@blue, 6%), 0 5px 0 0 darken(@blue, 6%), 0 10px 5px #999;
-}
-
-button.btn-success.dim:active {
- box-shadow: inset 0 0 0 darken(@blue, 6%), 0 2px 0 0 darken(@blue, 6%), 0 5px 3px #999;
-}
-
-button.btn-danger.dim {
- box-shadow: inset 0 0 0 darken(@red, 6%), 0 5px 0 0 darken(@red, 6%), 0 10px 5px #999;
-}
-
-button.btn-danger.dim:active {
- box-shadow: inset 0 0 0 darken(@red, 6%), 0 2px 0 0 darken(@red, 6%), 0 5px 3px #999;
-}
-
-button.dim:before {
- font-size: 50px;
- line-height: 1em;
- font-weight: normal;
- color: #fff;
- display: block;
- padding-top: 10px;
-
-}
-
-button.dim:active:before {
- top: 7px;
- font-size: 50px;
-}
-
-.btn:focus {
- outline: none !important;
-}
diff --git a/src/assets/css/inspinia/chat.less b/src/assets/css/inspinia/chat.less
deleted file mode 100644
index 0941739..0000000
--- a/src/assets/css/inspinia/chat.less
+++ /dev/null
@@ -1,119 +0,0 @@
-#small-chat {
- position: fixed;
- bottom: 20px;
- right: 20px;
- z-index: 100;
-}
-
-#small-chat .badge {
- position: absolute;
- top: -3px;
- right: -4px;
-}
-
-.open-small-chat {
- height: 38px;
- width: 38px;
- display: block;
- background: #1ab394;
- padding: 9px 8px;
- text-align: center;
- color: #fff;
- border-radius: 50%;
-}
-
-.open-small-chat:hover {
- color: white;
- background: #1ab394;
-}
-
-.small-chat-box {
- display: none;
- position: fixed;
- bottom: 20px;
- right: 75px;
- background: #fff;
- border: 1px solid @border-color;
- width: 230px;
- height: 320px;
- border-radius: 4px;
-}
-
-.small-chat-box.ng-small-chat {
- display: block;
-}
-
-
-.small-chat-box.active {
- display: block;
-}
-
-.small-chat-box {
-
- .heading {
- background: @nav-bg;
- padding: 8px 15px;
- font-weight: bold;
- color: #fff;
- }
-
- .chat-date {
- opacity: 0.6;
- font-size: 10px;
- font-weight: normal;
- }
-
- .content {
- padding: 15px 15px;
-
- .author-name {
- font-weight: bold;
- margin-bottom: 3px;
- font-size: 11px;
- }
-
- > div {
- padding-bottom: 20px;
- }
-
- .chat-message {
- padding: 5px 10px;
- border-radius: 6px;
- font-size: 11px;
- line-height: 14px;
- max-width: 80%;
- background: #f3f3f4;
- margin-bottom: 10px;
- }
-
- .chat-message.active {
- background: #1ab394;
- color: #fff;
- }
-
- .left {
- text-align: left;
- clear: both;
-
- .chat-message {
- float: left;
- }
- }
-
- .right {
- text-align: right;
- clear: both;
-
- .chat-message {
- float: right;
- }
-
- }
-
- }
-
- .form-chat {
- padding: 10px 10px;
- }
-
-}
\ No newline at end of file
diff --git a/src/assets/css/inspinia/elements.less b/src/assets/css/inspinia/elements.less
deleted file mode 100644
index 328cd5a..0000000
--- a/src/assets/css/inspinia/elements.less
+++ /dev/null
@@ -1,2471 +0,0 @@
-/* TOOGLE SWICH */
-
-.onoffswitch {
- position: relative;
- width: 64px;
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
-}
-
-.onoffswitch-checkbox {
- display: none;
-}
-
-.onoffswitch-label {
- display: block;
- overflow: hidden;
- cursor: pointer;
- border: 2px solid @navy;
- border-radius: 2px;
-}
-
-.onoffswitch-inner {
- width: 200%;
- margin-left: -100%;
- -moz-transition: margin 0.3s ease-in 0s;
- -webkit-transition: margin 0.3s ease-in 0s;
- -o-transition: margin 0.3s ease-in 0s;
- transition: margin 0.3s ease-in 0s;
-}
-
-.onoffswitch-inner:before, .onoffswitch-inner:after {
- float: left;
- width: 50%;
- height: 20px;
- padding: 0;
- line-height: 20px;
- font-size: 12px;
- color: white;
- font-family: Trebuchet, Arial, sans-serif;
- font-weight: bold;
- -moz-box-sizing: border-box;
- -webkit-box-sizing: border-box;
- box-sizing: border-box;
-}
-
-.onoffswitch-inner:before {
- content: "ON";
- padding-left: 10px;
- background-color: @navy;
- color: #FFFFFF;
-}
-
-.onoffswitch-inner:after {
- content: "OFF";
- padding-right: 10px;
- background-color: #FFFFFF;
- color: #999999;
- text-align: right;
-}
-
-.onoffswitch-switch {
- width: 20px;
- margin: 0;
- background: #FFFFFF;
- border: 2px solid @navy;
- border-radius: 2px;
- position: absolute;
- top: 0;
- bottom: 0;
- right: 44px;
- -moz-transition: all 0.3s ease-in 0s;
- -webkit-transition: all 0.3s ease-in 0s;
- -o-transition: all 0.3s ease-in 0s;
- transition: all 0.3s ease-in 0s;
-}
-
-.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-inner {
- margin-left: 0;
-}
-
-.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-switch {
- right: 0;
-}
-
-.onoffswitch-checkbox:disabled + .onoffswitch-label .onoffswitch-inner:before {
- background-color: #919191;
-}
-
-.onoffswitch-checkbox:disabled + .onoffswitch-label,
-.onoffswitch-checkbox:disabled + .onoffswitch-label .onoffswitch-switch{
- border-color: #919191;
-}
-
-/* CHOSEN PLUGIN */
-
-.chosen-container-single .chosen-single {
- background: #ffffff;
- box-shadow: none;
- -moz-box-sizing: border-box;
- border-radius: 2px;
- cursor: text;
- height: auto !important;
- margin: 0;
- min-height: 30px;
- overflow: hidden;
- padding: 4px 12px;
- position: relative;
- width: 100%;
-}
-
-.chosen-container-multi .chosen-choices li.search-choice {
- background: #f1f1f1;
- border: 1px solid #e5e6e7;
- border-radius: 2px;
- box-shadow: none;
- color: #333333;
- cursor: default;
- line-height: 13px;
- margin: 3px 0 3px 5px;
- padding: 3px 20px 3px 5px;
- position: relative;
-}
-
-/* Tags Input Plugin */
-
-.bootstrap-tagsinput {
- border: 1px solid #e5e6e7;
- box-shadow: none;
-}
-
-/* PAGINATIN */
-
-.pagination > .active > a, .pagination > .active > span, .pagination > .active > a:hover, .pagination > .active > span:hover, .pagination > .active > a:focus, .pagination > .active > span:focus {
- background-color: #f4f4f4;
- border-color: #DDDDDD;
- color: inherit;
- cursor: default;
- z-index: 2;
-}
-
-.pagination > li > a, .pagination > li > span {
- background-color: #FFFFFF;
- border: 1px solid #DDDDDD;
- color: inherit;
- float: left;
- line-height: 1.42857;
- margin-left: -1px;
- padding: 4px 10px;
- position: relative;
- text-decoration: none;
-}
-
-/* TOOLTIPS */
-
-.tooltip-inner {
- background-color: #2F4050;
-}
-
-.tooltip.top .tooltip-arrow {
- border-top-color: #2F4050;
-}
-
-.tooltip.right .tooltip-arrow {
- border-right-color: #2F4050;
-}
-
-.tooltip.bottom .tooltip-arrow {
- border-bottom-color: #2F4050;
-}
-
-.tooltip.left .tooltip-arrow {
- border-left-color: #2F4050;
-}
-
-/* EASY PIE CHART*/
-
-.easypiechart {
- position: relative;
- text-align: center;
-}
-
-.easypiechart .h2 {
- margin-left: 10px;
- margin-top: 10px;
- display: inline-block;
-}
-
-.easypiechart canvas {
- top: 0;
- left: 0;
-}
-
-.easypiechart .easypie-text {
- line-height: 1;
- position: absolute;
- top: 33px;
- width: 100%;
- z-index: 1;
-}
-
-.easypiechart img {
- margin-top: -4px;
-}
-
-.jqstooltip {
- -webkit-box-sizing: content-box;
- -moz-box-sizing: content-box;
- box-sizing: content-box;
-}
-
-/* FULLCALENDAR */
-
-.fc-state-default {
- background-color: #ffffff;
- background-image: none;
- background-repeat: repeat-x;
- box-shadow: none;
- color: #333333;
- text-shadow: none;
-}
-
-.fc-state-default {
- border: 1px solid;
-}
-
-.fc-button {
- color: inherit;
- border: 1px solid @border-color;
- cursor: pointer;
- display: inline-block;
- height: 1.9em;
- line-height: 1.9em;
- overflow: hidden;
- padding: 0 0.6em;
- position: relative;
- white-space: nowrap;
-}
-
-.fc-state-active {
- background-color: @navy;
- border-color: @navy;
- color: #ffffff;
-}
-
-.fc-header-title h2 {
- font-size: 16px;
- font-weight: 600;
- color: inherit;
-}
-
-.fc-content .fc-widget-header, .fc-content .fc-widget-content {
- border-color: @border-color;
- font-weight: normal;
-}
-
-.fc-border-separate tbody {
- background-color: #F8F8F8;
-}
-
-.fc-state-highlight {
- background: none repeat scroll 0 0 #FCF8E3;
-}
-
-.external-event {
- padding: 5px 10px;
- border-radius: 2px;
- cursor: pointer;
- margin-bottom: 5px;
-}
-
-.fc-ltr .fc-event-hori.fc-event-end, .fc-rtl .fc-event-hori.fc-event-start {
- border-radius: 2px;
-}
-
-.fc-event,
-.fc-agenda .fc-event-time,
-.fc-event a {
- padding: 4px 6px;
- background-color: @navy; /* background color */
- border-color: @navy; /* border color */
-}
-
-.fc-event-time, .fc-event-title {
- color: #717171;
- padding: 0 1px;
-}
-
-.ui-calendar .fc-event-time, .ui-calendar .fc-event-title {
- color: #fff;
-}
-
-/* Chat */
-.chat-activity-list .chat-element {
- border-bottom: 1px solid @border-color;
-}
-
-.chat-element:first-child {
- margin-top: 0;
-}
-
-.chat-element {
- padding-bottom: 15px;
-}
-
-.chat-element, .chat-element .media {
- margin-top: 15px;
-}
-
-.chat-element, .media-body {
- overflow: hidden;
-}
-
-.media-body {
- display: block;
- width: auto;
-}
-
-.chat-element > .pull-left {
- margin-right: 10px;
-}
-
-.chat-element img.img-circle, .dropdown-messages-box img.img-circle {
- width: 38px;
- height: 38px;
-}
-
-.chat-element .well {
- border: 1px solid @border-color;
- box-shadow: none;
- margin-top: 10px;
- margin-bottom: 5px;
- padding: 10px 20px;
- font-size: 11px;
- line-height: 16px;
-}
-
-.chat-element .actions {
- margin-top: 10px;
-}
-
-.chat-element .photos {
- margin: 10px 0;
-
-}
-
-.right.chat-element > .pull-right {
- margin-left: 10px;
-}
-
-.chat-photo {
- max-height: 180px;
- border-radius: 4px;
- overflow: hidden;
- margin-right: 10px;
- margin-bottom: 10px;
-}
-
-.chat {
- margin: 0;
- padding: 0;
- list-style: none;
-}
-
-.chat li {
- margin-bottom: 10px;
- padding-bottom: 5px;
- border-bottom: 1px dotted #B3A9A9;
-}
-
-.chat li.left .chat-body {
- margin-left: 60px;
-}
-
-.chat li.right .chat-body {
- margin-right: 60px;
-}
-
-.chat li .chat-body p {
- margin: 0;
- color: #777777;
-}
-
-.panel .slidedown .glyphicon,
-.chat .glyphicon {
- margin-right: 5px;
-}
-
-.chat-panel .panel-body {
- height: 350px;
- overflow-y: scroll;
-}
-
-/* LIST GROUP */
-
-a.list-group-item.active, a.list-group-item.active:hover, a.list-group-item.active:focus {
- background-color: @navy;
- border-color: @navy;
- color: #FFFFFF;
- z-index: 2;
-}
-
-.list-group-item-heading {
- margin-top: 10px;
-}
-
-.list-group-item-text {
- margin: 0 0 10px;
- color: inherit;
- font-size: 12px;
- line-height: inherit;
-}
-
-.no-padding .list-group-item {
- border-left: none;
- border-right: none;
- border-bottom: none;
-}
-
-.no-padding .list-group-item:first-child {
- border-left: none;
- border-right: none;
- border-bottom: none;
- border-top: none;
-}
-
-.no-padding .list-group {
- margin-bottom: 0;
-}
-
-.list-group-item {
- background-color: inherit;
- border: 1px solid @border-color;
- display: block;
- margin-bottom: -1px;
- padding: 10px 15px;
- position: relative;
-}
-
-.elements-list .list-group-item {
- border-left: none;
- border-right: none;
- padding: 15px 25px;
-
-}
-
-.elements-list .list-group-item:first-child {
- border-left: none;
- border-right: none;
- border-top: none !important;
-}
-
-.elements-list .list-group {
- margin-bottom: 0;
-}
-
-.elements-list a {
- color: inherit;
-}
-
-.elements-list .list-group-item.active,
-.elements-list .list-group-item:hover {
- background: #f3f3f4;
- color: inherit;
- border-color: #e7eaec;
- /*border-bottom: 1px solid #e7eaec;*/
- /*border-top: 1px solid #e7eaec;*/
- border-radius: 0;
-}
-
-.elements-list li.active {
- transition: none;
-}
-
-.element-detail-box {
- padding: 25px;
-}
-
-/* FLOT CHART */
-
-.flot-chart {
- display: block;
- height: 200px;
-}
-
-.widget .flot-chart.dashboard-chart {
- display: block;
- height: 120px;
- margin-top: 40px;
-}
-
-.flot-chart.dashboard-chart {
- display: block;
- height: 180px;
- margin-top: 40px;
-}
-
-.flot-chart-content {
- width: 100%;
- height: 100%;
-}
-
-.flot-chart-pie-content {
- width: 200px;
- height: 200px;
- margin: auto;
-}
-
-.jqstooltip {
- position: absolute;
- display: block;
- left: 0;
- top: 0;
- visibility: hidden;
- background: rgb(43, 48, 58);
- background-color: rgba(43, 48, 58, 0.8);
- color: white;
- text-align: left;
- white-space: nowrap;
- z-index: 10000;
- padding: 5px 5px 5px 5px;
- min-height: 22px;
- border-radius: 3px;
-}
-
-.jqsfield {
- color: white;
- text-align: left;
-}
-
-.fh-150 {
- height: 150px;
-}
-
-.fh-200 {
- height: 200px;
-}
-
-.h-150 {
- min-height: 150px;
-}
-
-.h-200 {
- min-height: 200px;
-}
-
-.h-300 {
- min-height: 300px;
-}
-
-.w-150 {
- min-width: 150px;
-}
-
-.w-200 {
- min-width: 200px;
-}
-
-.w-300 {
- min-width: 300px;
-}
-
-.legendLabel {
- padding-left: 5px;
-}
-
-.stat-list li:first-child {
- margin-top: 0;
-}
-
-.stat-list {
- list-style: none;
- padding: 0;
- margin: 0;
-}
-
-.stat-percent {
- float: right;
-}
-
-.stat-list li {
- margin-top: 15px;
- position: relative;
-}
-
-/* DATATABLES */
-
-table.dataTable thead .sorting,
-table.dataTable thead .sorting_asc:after,
-table.dataTable thead .sorting_desc,
-table.dataTable thead .sorting_asc_disabled,
-table.dataTable thead .sorting_desc_disabled {
- background: transparent;
-}
-
-.dataTables_wrapper {
- padding-bottom: 30px;
-}
-
-.dataTables_length {
- float: left;
-}
-
-.dataTables_filter label {
- margin-right: 5px;
-}
-
-.html5buttons {
- float: right;
-}
-
-.html5buttons a {
- border: 1px solid #e7eaec;
- background: #fff;
- color: #676a6c;
- box-shadow: none;
- padding: 6px 8px;
- font-size: 12px;
-
- &:hover, &:focus:active {
- background-color: #eee;
- color: inherit;
- border-color: #d2d2d2;
- }
-}
-
-div.dt-button-info {
- z-index: 100;
-}
-
-@media (max-width: 768px) {
- .html5buttons {
- float: none;
- margin-top: 10px;
- }
-
- .dataTables_length {
- float: none;
- }
-}
-
-/* CIRCLE */
-
-.img-circle {
- border-radius: 50%;
- width: 80px;
- height: 80px;
-}
-
-.btn-circle {
- width: 30px;
- height: 30px;
- padding: 6px 0;
- border-radius: 15px;
- text-align: center;
- font-size: 12px;
- line-height: 1.428571429;
-}
-
-.btn-circle.btn-lg {
- background-color:blue;
- width: 50px;
- height: 50px;
- padding: 10px 16px;
- border-radius: 25px;
- font-size: 18px;
- line-height: 1.33;
-}
-
-.btn-circle.btn-xl {
- width: 70px;
- height: 70px;
- padding: 10px 16px;
- border-radius: 35px;
- font-size: 24px;
- line-height: 1.33;
-}
-
-.show-grid [class^="col-"] {
- padding-top: 10px;
- padding-bottom: 10px;
- border: 1px solid #ddd;
- background-color: #eee !important;
-}
-
-.show-grid {
- margin: 15px 0;
-}
-
-/* ANIMATION */
-
-.css-animation-box h1 {
- font-size: 44px;
-}
-
-.animation-efect-links a {
- padding: 4px 6px;
- font-size: 12px;
-}
-
-#animation_box {
- background-color: #f9f8f8;
- border-radius: 16px;
- width: 80%;
- margin: 0 auto;
- padding-top: 80px;
-}
-
-.animation-text-box {
- position: absolute;
- margin-top: 40px;
- left: 50%;
- margin-left: -100px;
- width: 200px;
-}
-
-.animation-text-info {
- position: absolute;
- margin-top: -60px;
- left: 50%;
- margin-left: -100px;
- width: 200px;
- font-size: 10px;
-}
-
-.animation-text-box h2 {
- font-size: 54px;
- font-weight: 600;
- margin-bottom: 5px;
-}
-
-.animation-text-box p {
- font-size: 12px;
- text-transform: uppercase;
-}
-
-
-/* WIDGETS */
-
-.widget {
- border-radius: 5px;
- padding: 15px 20px;
- margin-bottom: 10px;
- margin-top: 10px;
-}
-
-.widget.style1 h2 {
- font-size: 30px;
-}
-
-.widget h2, .widget h3 {
- margin-top: 5px;
- margin-bottom: 0;
-}
-
-.widget-text-box {
- padding: 20px;
- border: 1px solid @border-color;
- background: #ffffff;
-}
-
-.widget-head-color-box {
- border-radius: 5px 5px 0 0;
- margin-top: 10px;
-
-}
-
-.widget .flot-chart {
- height: 100px;
-}
-
-.vertical-align div {
- display: inline-block;
- vertical-align: middle;
-}
-
-.vertical-align h2, .vertical-align h3 {
- margin: 0;
-}
-
-.todo-list {
- list-style: none outside none;
- margin: 0;
- padding: 0;
- font-size: 14px;
-}
-
-.todo-list.small-list {
- font-size: 12px;
-}
-
-.todo-list.small-list > li {
- background: @gray;
- border-left: none;
- border-right: none;
- border-radius: 4px;
- color: inherit;
- margin-bottom: 2px;
- padding: 6px 6px 6px 12px;
-}
-
-.todo-list.small-list .btn-xs, .todo-list.small-list .btn-group-xs > .btn {
- border-radius: 5px;
- font-size: 10px;
- line-height: 1.5;
- padding: 1px 2px 1px 5px;
-}
-
-.todo-list > li {
- background: @gray;
- border-left: 6px solid @border-color;
- border-right: 6px solid @border-color;
- border-radius: 4px;
- color: inherit;
- margin-bottom: 2px;
- padding: 10px;
-}
-
-.todo-list .handle {
- cursor: move;
- display: inline-block;
- font-size: 16px;
- margin: 0 5px;
-}
-
-.todo-list > li .label {
- font-size: 9px;
- margin-left: 10px;
-}
-
-.check-link {
- font-size: 16px;
-}
-
-.todo-completed {
- text-decoration: line-through;
-}
-
-.geo-statistic h1 {
- font-size: 36px;
- margin-bottom: 0;
-}
-
-.glyphicon.fa {
- font-family: "FontAwesome";
-}
-
-/* INPUTS */
-.inline {
- display: inline-block !important;
-}
-
-.input-s-sm {
- width: 120px;
-}
-
-.input-s {
- width: 200px;
-}
-
-.input-s-lg {
- width: 250px;
-}
-
-.i-checks {
- padding-left: 0;
-}
-
-.form-control, .single-line {
- background-color: #FFFFFF;
- background-image: none;
- border: 1px solid #e5e6e7;
- border-radius: 1px;
- color: inherit;
- display: block;
- padding: 6px 12px;
- transition: border-color 0.15s ease-in-out 0s, box-shadow 0.15s ease-in-out 0s;
- width: 100%;
- font-size: 14px
-}
-
-.form-control:focus, .single-line:focus {
- border-color: @navy !important;
-}
-
-.has-success .form-control {
- border-color: @navy;
-}
-
-.has-warning .form-control {
- border-color: @yellow;
-}
-
-.has-error .form-control {
- border-color: @red;
-}
-
-.has-success .control-label {
- color: @navy;
-}
-
-.has-warning .control-label {
- color: @yellow;
-}
-
-.has-error .control-label {
- color: @red;
-}
-
-.input-group-addon {
- background-color: #fff;
- border: 1px solid #E5E6E7;
- border-radius: 1px;
- color: inherit;
- font-size: 14px;
- font-weight: 400;
- line-height: 1;
- padding: 6px 12px;
- text-align: center;
-}
-
-.spinner-buttons.input-group-btn .btn-xs {
- line-height: 1.13;
-}
-
-.spinner-buttons.input-group-btn {
- width: 20%;
-}
-
-.noUi-connect {
- background: none repeat scroll 0 0 @navy;
- box-shadow: none;
-}
-
-.slider_red .noUi-connect {
- background: none repeat scroll 0 0 @red;
- box-shadow: none;
-}
-
-/* UI Sortable */
-
-.ui-sortable .ibox-title {
- cursor: move;
-}
-
-.ui-sortable-placeholder {
- border: 1px dashed #cecece !important;
- visibility: visible !important;
- background: #e7eaec;
-}
-
-.ibox.ui-sortable-placeholder {
- margin: 0 0 23px !important;
-}
-
-/* SWITCHES */
-.onoffswitch {
- position: relative;
- width: 54px;
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
-}
-
-.onoffswitch-checkbox {
- display: none;
-}
-
-.onoffswitch-label {
- display: block;
- overflow: hidden;
- cursor: pointer;
- border: 2px solid #1AB394;
- border-radius: 3px;
-}
-
-.onoffswitch-inner {
- display: block;
- width: 200%;
- margin-left: -100%;
- -moz-transition: margin 0.3s ease-in 0s;
- -webkit-transition: margin 0.3s ease-in 0s;
- -o-transition: margin 0.3s ease-in 0s;
- transition: margin 0.3s ease-in 0s;
-}
-
-.onoffswitch-inner:before, .onoffswitch-inner:after {
- display: block;
- float: left;
- width: 50%;
- height: 16px;
- padding: 0;
- line-height: 16px;
- font-size: 10px;
- color: white;
- font-family: Trebuchet, Arial, sans-serif;
- font-weight: bold;
- -moz-box-sizing: border-box;
- -webkit-box-sizing: border-box;
- box-sizing: border-box;
-}
-
-.onoffswitch-inner:before {
- content: "ON";
- padding-left: 7px;
- background-color: #1AB394;
- color: #FFFFFF;
-}
-
-.onoffswitch-inner:after {
- content: "OFF";
- padding-right: 7px;
- background-color: #FFFFFF;
- color: #919191;
- text-align: right;
-}
-
-.onoffswitch-switch {
- display: block;
- width: 18px;
- margin: 0;
- background: #FFFFFF;
- border: 2px solid #1AB394;
- border-radius: 3px;
- position: absolute;
- top: 0;
- bottom: 0;
- right: 36px;
- -moz-transition: all 0.3s ease-in 0s;
- -webkit-transition: all 0.3s ease-in 0s;
- -o-transition: all 0.3s ease-in 0s;
- transition: all 0.3s ease-in 0s;
-}
-
-.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-inner {
- margin-left: 0;
-}
-
-.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-switch {
- right: 0;
-}
-
-/* jqGrid */
-
-.ui-jqgrid {
- -moz-box-sizing: content-box;
-}
-
-.ui-jqgrid-btable {
- border-collapse: separate;
-}
-
-.ui-jqgrid-htable {
- border-collapse: separate;
-}
-
-.ui-jqgrid-titlebar {
- height: 40px;
- line-height: 15px;
- color: #676a6c;
- background-color: #F9F9F9;
- text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
-}
-
-.ui-jqgrid .ui-jqgrid-title {
- float: left;
- margin: 1.1em 1em 0.2em;
-}
-
-.ui-jqgrid .ui-jqgrid-titlebar {
- position: relative;
- border-left: 0 solid;
- border-right: 0 solid;
- border-top: 0 solid;
-}
-
-.ui-widget-header {
- background: none;
- background-image: none;
- background-color: #f5f5f6;
- text-transform: uppercase;
- border-top-left-radius: 0;
- border-top-right-radius: 0;
-}
-
-.ui-jqgrid tr.ui-row-ltr td {
- border-right-color: inherit;
- border-right-style: solid;
- border-right-width: 1px;
- text-align: left;
- border-color: #DDDDDD;
- background-color: inherit;
-}
-
-.ui-search-toolbar input[type="text"] {
- font-size: 12px;
- height: 15px;
- border: 1px solid #CCCCCC;
- border-radius: 0;
-}
-
-.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
- background: #F9F9F9;
- border: 1px solid #DDDDDD;
- line-height: 15px;
- font-weight: bold;
- color: #676a6c;
- text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
-}
-
-.ui-widget-content {
- box-sizing: content-box;
-}
-
-.ui-icon-triangle-1-n {
- background-position: 1px -16px;
-}
-
-.ui-jqgrid tr.ui-search-toolbar th {
- border-top-width: 0 !important;
- border-top-color: inherit !important;
- border-top-style: ridge !important
-}
-
-.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus {
- background: #f5f5f5;
- border-collapse: separate;
-}
-
-.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {
- background: #f2fbff;
-}
-
-.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active {
- border: 1px solid #dddddd;
- background: #ffffff;
- font-weight: normal;
- color: #212121;
-}
-
-.ui-jqgrid .ui-pg-input {
- font-size: inherit;
- width: 50px;
- border: 1px solid #CCCCCC;
- height: 15px;
-}
-
-.ui-jqgrid .ui-pg-selbox {
- display: block;
- font-size: 1em;
- height: 25px;
- line-height: 18px;
- margin: 0;
- width: auto;
-}
-
-.ui-jqgrid .ui-pager-control {
- position: relative;
-}
-
-.ui-jqgrid .ui-jqgrid-pager {
- height: 32px;
- position: relative;
-}
-
-.ui-pg-table .navtable .ui-corner-all {
- border-radius: 0;
-}
-
-.ui-jqgrid .ui-pg-button:hover {
- padding: 1px;
- border: 0;
-}
-
-.ui-jqgrid .loading {
- position: absolute;
- top: 45%;
- left: 45%;
- width: auto;
- height: auto;
- z-index: 101;
- padding: 6px;
- margin: 5px;
- text-align: center;
- font-weight: bold;
- display: none;
- border-width: 2px !important;
- font-size: 11px;
-}
-
-.ui-jqgrid .form-control {
- height: 10px;
- width: auto;
- display: inline;
- padding: 10px 12px;
-}
-
-.ui-jqgrid-pager {
- height: 32px;
-}
-
-.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl {
- border-top-left-radius: 0;
-}
-
-.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr {
- border-top-right-radius: 0;
-}
-
-.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl {
- border-bottom-left-radius: 0;
-}
-
-.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br {
- border-bottom-right-radius: 0;
-}
-
-.ui-widget-content {
- border: 1px solid #ddd;
-}
-
-.ui-jqgrid .ui-jqgrid-titlebar {
- padding: 0;
-}
-
-.ui-jqgrid .ui-jqgrid-titlebar {
- border-bottom: 1px solid #ddd;
-}
-
-.ui-jqgrid tr.jqgrow td {
- padding: 6px;
-}
-
-.ui-jqdialog .ui-jqdialog-titlebar {
- padding: 10px 10px;
-
-}
-
-.ui-jqdialog .ui-jqdialog-title {
- float: none !important;
-}
-
-.ui-jqdialog > .ui-resizable-se {
- position: absolute;
-}
-
-/* Nestable list */
-
-.dd {
- position: relative;
- display: block;
- margin: 0;
- padding: 0;
- list-style: none;
- font-size: 13px;
- line-height: 20px;
-}
-
-.dd-list {
- display: block;
- position: relative;
- margin: 0;
- padding: 0;
- list-style: none;
-}
-
-.dd-list .dd-list {
- padding-left: 30px;
-}
-
-.dd-collapsed .dd-list {
- display: none;
-}
-
-.dd-item,
-.dd-empty,
-.dd-placeholder {
- display: block;
- position: relative;
- margin: 0;
- padding: 0;
- min-height: 20px;
- font-size: 13px;
- line-height: 20px;
-}
-
-.dd-handle {
- display: block;
- margin: 5px 0;
- padding: 5px 10px;
- color: #333;
- text-decoration: none;
- border: 1px solid #e7eaec;
- background: #f5f5f5;
- -webkit-border-radius: 3px;
- border-radius: 3px;
- box-sizing: border-box;
- -moz-box-sizing: border-box;
-}
-
-.dd-handle span {
- font-weight: bold;
-}
-
-.dd-handle:hover {
- background: #f0f0f0;
- cursor: pointer;
- font-weight: bold;
-}
-
-.dd-item > button {
- display: block;
- position: relative;
- cursor: pointer;
- float: left;
- width: 25px;
- height: 20px;
- margin: 5px 0;
- padding: 0;
- text-indent: 100%;
- white-space: nowrap;
- overflow: hidden;
- border: 0;
- background: transparent;
- font-size: 12px;
- line-height: 1;
- text-align: center;
- font-weight: bold;
-}
-
-.dd-item > button:before {
- content: '+';
- display: block;
- position: absolute;
- width: 100%;
- text-align: center;
- text-indent: 0;
-}
-
-.dd-item > button[data-action="collapse"]:before {
- content: '-';
-}
-
-#nestable2 .dd-item > button {
- font-family: FontAwesome;
- height: 34px;
- width: 33px;
- color: #c1c1c1;
-
-}
-
-#nestable2 .dd-item > button:before {
- content: "\f067";
-}
-
-#nestable2 .dd-item > button[data-action="collapse"]:before {
- content: "\f068";
-}
-
-.dd-placeholder,
-.dd-empty {
- margin: 5px 0;
- padding: 0;
- min-height: 30px;
- background: #f2fbff;
- border: 1px dashed #b6bcbf;
- box-sizing: border-box;
- -moz-box-sizing: border-box;
-}
-
-.dd-empty {
- border: 1px dashed #bbb;
- min-height: 100px;
- background-color: #e5e5e5;
- background-image: -webkit-linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff), -webkit-linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff);
- background-image: -moz-linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff), -moz-linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff);
- background-image: linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff), linear-gradient(45deg, #fff 25%, transparent 25%, transparent 75%, #fff 75%, #fff);
- background-size: 60px 60px;
- background-position: 0 0, 30px 30px;
-}
-
-.dd-dragel {
- position: absolute;
- z-index: 9999;
- pointer-events: none;
-}
-
-.dd-dragel > .dd-item .dd-handle {
- margin-top: 0;
-}
-
-.dd-dragel .dd-handle {
- -webkit-box-shadow: 2px 4px 6px 0 rgba(0, 0, 0, .1);
- box-shadow: 2px 4px 6px 0 rgba(0, 0, 0, .1);
-}
-
-/**
-* Nestable Extras
-*/
-.nestable-lists {
- display: block;
- clear: both;
- padding: 30px 0;
- width: 100%;
- border: 0;
- border-top: 2px solid #ddd;
- border-bottom: 2px solid #ddd;
-}
-
-#nestable-menu {
- padding: 0;
- margin: 10px 0 20px 0;
-}
-
-#nestable-output,
-#nestable2-output {
- width: 100%;
- font-size: 0.75em;
- line-height: 1.333333em;
- font-family: open sans, lucida grande, lucida sans unicode, helvetica, arial, sans-serif;
- padding: 5px;
- box-sizing: border-box;
- -moz-box-sizing: border-box;
-}
-
-#nestable2 .dd-handle {
- color: inherit;
- border: 1px dashed #e7eaec;
- background: #f3f3f4;
- padding: 10px;
-}
-
-#nestable2 .dd-handle:hover {
- /*background: #bbb;*/
-}
-
-#nestable2 span.label {
- margin-right: 10px;
-}
-
-#nestable-output,
-#nestable2-output {
- font-size: 12px;
- padding: 25px;
- box-sizing: border-box;
- -moz-box-sizing: border-box;
-}
-
-/* CodeMirror */
-.CodeMirror {
- border: 1px solid #eee;
- height: auto;
-}
-
-.CodeMirror-scroll {
- overflow-y: hidden;
- overflow-x: auto;
-}
-
-/* Google Maps */
-.google-map {
- height: 300px;
-}
-
-/* Validation */
-label.error {
- color: #cc5965;
- display: inline-block;
- margin-left: 5px;
-}
-
-.form-control.error {
- border: 1px dotted #cc5965;
-}
-
-/* ngGrid */
-.gridStyle {
- border: 1px solid rgb(212, 212, 212);
- width: 100%;
- height: 400px
-}
-
-.gridStyle2 {
- border: 1px solid rgb(212, 212, 212);
- width: 500px;
- height: 300px;
-}
-
-.ngH eaderCell {
- border-right: none;
- border-bottom: 1px solid #e7eaec;
-}
-
-.ngCell {
- border-right: none;
-}
-
-.ngTopPanel {
- background: #F5F5F6;
-}
-
-.ngRow.even {
- background: #f9f9f9;
-}
-
-.ngRow.selected {
- background: #EBF2F1;
-}
-
-.ngRow {
- border-bottom: 1px solid #e7eaec;
-}
-
-.ngCell {
- background-color: transparent;
-}
-
-.ngHeaderCell {
- border-right: none;
-}
-
-/* Toastr custom style */
-
-#toast-container > .toast {
- background-image: none !important;
-}
-
-#toast-container > .toast:before {
- position: fixed;
- font-family: FontAwesome;
- font-size: 24px;
- line-height: 24px;
- float: left;
- color: #FFF;
- padding-right: 0.5em;
- margin: auto 0.5em auto -1.5em;
-}
-
-#toast-container > .toast-warning:before {
- content: "\f0e7";
-}
-
-#toast-container > .toast-error:before {
- content: "\f071";
-}
-
-#toast-container > .toast-info:before {
- content: "\f005";
-}
-
-#toast-container > .toast-success:before {
- content: "\f00C";
-}
-
-#toast-container > div {
- -moz-box-shadow: 0 0 3px #999;
- -webkit-box-shadow: 0 0 3px #999;
- box-shadow: 0 0 3px #999;
- opacity: .9;
- -ms-filter: alpha(Opacity=90);
- filter: alpha(opacity=90)
-}
-
-#toast-container > :hover {
- -moz-box-shadow: 0 0 4px #999;
- -webkit-box-shadow: 0 0 4px #999;
- box-shadow: 0 0 4px #999;
- opacity: 1;
- -ms-filter: alpha(Opacity=100);
- filter: alpha(opacity=100);
- cursor: pointer
-}
-
-.toast {
- background-color: @navy
-}
-
-.toast-success {
- background-color: @navy
-}
-
-.toast-error {
- background-color: @red
-}
-
-.toast-info {
- background-color: @lazur
-}
-
-.toast-warning {
- background-color: @yellow
-}
-
-.toast-top-full-width {
- margin-top: 20px;
-}
-
-.toast-bottom-full-width {
- margin-bottom: 20px;
-}
-
-/* Notifie */
-.cg-notify-message.inspinia-notify {
- background: #fff;
- padding: 0;
- box-shadow: 0 0 1px rgba(0, 0, 0, 0.1), 0 2px 4px rgba(0, 0, 0, 0.2);
- -webkit-box-shadow: 0 0 1px rgba(0, 0, 0, 0.1), 0 2px 4px rgba(0, 0, 0, 0.2);
- -moz-box-shadow: 0 0 1px rgba(0, 0, 0, 0.1), 0 2px 4px rgba(0, 0, 0, 0.2);
- border: none;
- margin-top: 30px;
- color: inherit;
-}
-
-.inspinia-notify.alert-warning {
- border-left: 6px solid @yellow;
-}
-
-.inspinia-notify.alert-success {
- border-left: 6px solid @blue;
-}
-
-.inspinia-notify.alert-danger {
- border-left: 6px solid @red;
-}
-
-.inspinia-notify.alert-info {
- border-left: 6px solid @navy;
-}
-
-/* Image cropper style */
-.img-container, .img-preview {
- overflow: hidden;
- text-align: center;
- width: 100%;
-}
-
-.img-preview-sm {
- height: 130px;
- width: 200px;
-}
-
-/* Forum styles */
-.forum-post-container .media {
- margin: 10px 10px 10px 10px;
- padding: 20px 10px 20px 10px;
- border-bottom: 1px solid #f1f1f1;
-}
-
-.forum-avatar {
- float: left;
- margin-right: 20px;
- text-align: center;
- width: 110px;
-}
-
-.forum-avatar .img-circle {
- height: 48px;
- width: 48px;
-}
-
-.author-info {
- color: #676a6c;
- font-size: 11px;
- margin-top: 5px;
- text-align: center;
-}
-
-.forum-post-info {
- padding: 9px 12px 6px 12px;
- background: #f9f9f9;
- border: 1px solid #f1f1f1;
-}
-
-.media-body > .media {
- background: #f9f9f9;
- border-radius: 3px;
- border: 1px solid #f1f1f1;
-}
-
-.forum-post-container .media-body .photos {
- margin: 10px 0;
-}
-
-.forum-photo {
- max-width: 140px;
- border-radius: 3px;
-
-}
-
-.media-body > .media .forum-avatar {
- width: 70px;
- margin-right: 10px;
-}
-
-.media-body > .media .forum-avatar .img-circle {
- height: 38px;
- width: 38px;
-}
-
-.mid-icon {
- font-size: 66px;
-}
-
-.forum-item {
- margin: 10px 0;
- padding: 10px 0 20px;
- border-bottom: 1px solid #f1f1f1;
-}
-
-.views-number {
- font-size: 24px;
- line-height: 18px;
- font-weight: 400;
-}
-
-.forum-container, .forum-post-container {
- padding: 30px !important;
-}
-
-.forum-item small {
- color: #999;
-}
-
-.forum-item .forum-sub-title {
- color: #999;
- margin-left: 50px;
-}
-
-.forum-title {
- margin: 15px 0 15px 0;
-}
-
-.forum-info {
- text-align: center;
-}
-
-.forum-desc {
- color: #999;
-}
-
-.forum-icon {
- float: left;
- width: 30px;
- margin-right: 20px;
- text-align: center;
-}
-
-a.forum-item-title {
- color: inherit;
- display: block;
- font-size: 18px;
- font-weight: 600;
-}
-
-a.forum-item-title:hover {
- color: inherit;
-}
-
-.forum-icon .fa {
-
- font-size: 30px;
- margin-top: 8px;
- color: #9b9b9b;
-}
-
-.forum-item.active .fa {
- color: @navy;
-}
-
-.forum-item.active a.forum-item-title {
- color: @navy;
-}
-
-@media (max-width: 992px) {
-
- .forum-info {
- margin: 15px 0 10px 0;
-
- /* Comment this is you want to show forum info in small devices */
- display: none;
- }
-
- .forum-desc {
- float: none !important;
- }
-
-}
-
-/* New Timeline style */
-
-.vertical-container {
- /* this class is used to give a max-width to the element it is applied to, and center it horizontally when it reaches that max-width */
- width: 90%;
- max-width: 1170px;
- margin: 0 auto;
-}
-
-.vertical-container::after {
- /* clearfix */
- content: '';
- display: table;
- clear: both;
-}
-
-#vertical-timeline {
- position: relative;
- padding: 0;
- margin-top: 2em;
- margin-bottom: 2em;
-}
-
-#vertical-timeline::before {
- content: '';
- position: absolute;
- top: 0;
- left: 18px;
- height: 100%;
- width: 4px;
- background: #f1f1f1;
-}
-
-.vertical-timeline-content .btn {
- float: right;
-}
-
-#vertical-timeline.light-timeline:before {
- background: #e7eaec;
-}
-
-.dark-timeline .vertical-timeline-content:before {
- border-color: transparent #f5f5f5 transparent transparent;
-}
-
-.dark-timeline.center-orientation .vertical-timeline-content:before {
- border-color: transparent transparent transparent #f5f5f5;
-}
-
-.dark-timeline .vertical-timeline-block:nth-child(2n) .vertical-timeline-content:before,
-.dark-timeline.center-orientation .vertical-timeline-block:nth-child(2n) .vertical-timeline-content:before {
- border-color: transparent #f5f5f5 transparent transparent;
-}
-
-.dark-timeline .vertical-timeline-content,
-.dark-timeline.center-orientation .vertical-timeline-content {
- background: #f5f5f5;
-}
-
-@media only screen and (min-width: 1170px) {
- #vertical-timeline.center-orientation {
- margin-top: 3em;
- margin-bottom: 3em;
- }
-
- #vertical-timeline.center-orientation:before {
- left: 50%;
- margin-left: -2px;
- }
-}
-
-@media only screen and (max-width: 1170px) {
- .center-orientation.dark-timeline .vertical-timeline-content:before {
- border-color: transparent #f5f5f5 transparent transparent;
- }
-}
-
-.vertical-timeline-block {
- position: relative;
- margin: 2em 0;
-}
-
-.vertical-timeline-block:after {
- content: "";
- display: table;
- clear: both;
-}
-
-.vertical-timeline-block:first-child {
- margin-top: 0;
-}
-
-.vertical-timeline-block:last-child {
- margin-bottom: 0;
-}
-
-@media only screen and (min-width: 1170px) {
- .center-orientation .vertical-timeline-block {
- margin: 4em 0;
- }
-
- .center-orientation .vertical-timeline-block:first-child {
- margin-top: 0;
- }
-
- .center-orientation .vertical-timeline-block:last-child {
- margin-bottom: 0;
- }
-}
-
-.vertical-timeline-icon {
- position: absolute;
- top: 0;
- left: 0;
- width: 40px;
- height: 40px;
- border-radius: 50%;
- font-size: 16px;
- border: 3px solid #f1f1f1;
- text-align: center;
-}
-
-.vertical-timeline-icon i {
- display: block;
- width: 24px;
- height: 24px;
- position: relative;
- left: 50%;
- top: 50%;
- margin-left: -12px;
- margin-top: -9px;
-}
-
-@media only screen and (min-width: 1170px) {
- .center-orientation .vertical-timeline-icon {
- width: 50px;
- height: 50px;
- left: 50%;
- margin-left: -25px;
- -webkit-transform: translateZ(0);
- -webkit-backface-visibility: hidden;
- font-size: 19px;
- }
-
- .center-orientation .vertical-timeline-icon i {
- margin-left: -12px;
- margin-top: -10px;
- }
-
- .center-orientation .cssanimations .vertical-timeline-icon.is-hidden {
- visibility: hidden;
- }
-}
-
-.vertical-timeline-content {
- position: relative;
- margin-left: 60px;
- background: white;
- border-radius: 0.25em;
- padding: 1em;
-}
-
-.vertical-timeline-content:after {
- content: "";
- display: table;
- clear: both;
-}
-
-.vertical-timeline-content h2 {
- font-weight: 400;
- margin-top: 4px;
-}
-
-.vertical-timeline-content p {
- margin: 1em 0;
- line-height: 1.6;
-}
-
-.vertical-timeline-content .vertical-date {
- float: left;
- font-weight: 500;
-}
-
-.vertical-date small {
- color: @navy;
- font-weight: 400;
-}
-
-.vertical-timeline-content::before {
- content: '';
- position: absolute;
- top: 16px;
- right: 100%;
- height: 0;
- width: 0;
- border: 7px solid transparent;
- border-right: 7px solid white;
-}
-
-@media only screen and (min-width: 768px) {
- .vertical-timeline-content h2 {
- font-size: 18px;
- }
-
- .vertical-timeline-content p {
- font-size: 13px;
- }
-
-}
-
-@media only screen and (min-width: 1170px) {
- .center-orientation .vertical-timeline-content {
- margin-left: 0;
- padding: 1.6em;
- width: 45%;
- }
-
- .center-orientation .vertical-timeline-content::before {
- top: 24px;
- left: 100%;
- border-color: transparent;
- border-left-color: white;
- }
-
- .center-orientation .vertical-timeline-content .btn {
- float: left;
- }
-
- .center-orientation .vertical-timeline-content .vertical-date {
- position: absolute;
- width: 100%;
- left: 122%;
- top: 2px;
- font-size: 14px;
- }
-
- .center-orientation .vertical-timeline-block:nth-child(even) .vertical-timeline-content {
- float: right;
- }
-
- .center-orientation .vertical-timeline-block:nth-child(even) .vertical-timeline-content::before {
- top: 24px;
- left: auto;
- right: 100%;
- border-color: transparent;
- border-right-color: white;
- }
-
- .center-orientation .vertical-timeline-block:nth-child(even) .vertical-timeline-content .btn {
- float: right;
- }
-
- .center-orientation .vertical-timeline-block:nth-child(even) .vertical-timeline-content .vertical-date {
- left: auto;
- right: 122%;
- text-align: right;
- }
-
- .center-orientation .cssanimations .vertical-timeline-content.is-hidden {
- visibility: hidden;
- }
-}
-
-/* Tabs */
-
-.tabs-container {
-
- .panel-body {
- background: #fff;
- border: 1px solid @border-color;
- border-radius: 2px;
- padding: 20px;
- position: relative;
- }
-
- .nav-tabs > li.active > a,
- .nav-tabs > li.active > a:hover,
- .nav-tabs > li.active > a:focus {
- border: 1px solid @border-color;
- border-bottom-color: transparent;
- background-color: #fff;
- }
-
- .nav-tabs > li {
- float: left;
- margin-bottom: -1px;
- }
-
- .tab-pane .panel-body {
- border-top: none;
- }
-
- .nav-tabs > li.active > a, .nav-tabs > li.active > a:hover, .nav-tabs > li.active > a:focus {
- border: 1px solid @border-color;
- border-bottom-color: transparent;
- }
-
- .nav-tabs {
- border-bottom: 1px solid @border-color;
- }
-
- .tab-pane .panel-body {
- border-top: none;
- }
-
- .tabs-left .tab-pane .panel-body, .tabs-right .tab-pane .panel-body {
- border-top: 1px solid @border-color;
- }
-
- .nav-tabs > li a:hover {
- background: transparent;
- border-color: transparent;
- }
-
- .tabs-below > .nav-tabs,
- .tabs-right > .nav-tabs,
- .tabs-left > .nav-tabs {
- border-bottom: 0;
- }
-
- .tabs-left .panel-body {
- position: static;
- }
-
- .tabs-left > .nav-tabs, .tabs-right > .nav-tabs {
- width: 20%;
- }
-
- .tabs-left .panel-body {
- width: 80%;
- margin-left: 20%;
- }
-
- .tabs-right .panel-body {
- width: 80%;
- margin-right: 20%;
- }
-
- .tab-content > .tab-pane,
- .pill-content > .pill-pane {
- display: none;
- }
-
- .tab-content > .active,
- .pill-content > .active {
- display: block;
- }
-
- .tabs-below > .nav-tabs {
- border-top: 1px solid @border-color;
- }
-
- .tabs-below > .nav-tabs > li {
- margin-top: -1px;
- margin-bottom: 0;
- }
-
- .tabs-below > .nav-tabs > li > a {
- -webkit-border-radius: 0 0 4px 4px;
- -moz-border-radius: 0 0 4px 4px;
- border-radius: 0 0 4px 4px;
- }
-
- .tabs-below > .nav-tabs > li > a:hover,
- .tabs-below > .nav-tabs > li > a:focus {
- border-top-color: @border-color;
- border-bottom-color: transparent;
- }
-
- .tabs-left > .nav-tabs > li,
- .tabs-right > .nav-tabs > li {
- float: none;
- }
-
- .tabs-left > .nav-tabs > li > a,
- .tabs-right > .nav-tabs > li > a {
- min-width: 74px;
- margin-right: 0;
- margin-bottom: 3px;
- }
-
- .tabs-left > .nav-tabs {
- float: left;
- margin-right: 19px;
- }
-
- .tabs-left > .nav-tabs > li > a {
- margin-right: -1px;
- -webkit-border-radius: 4px 0 0 4px;
- -moz-border-radius: 4px 0 0 4px;
- border-radius: 4px 0 0 4px;
- }
-
- .tabs-left > .nav-tabs .active > a,
- .tabs-left > .nav-tabs .active > a:hover,
- .tabs-left > .nav-tabs .active > a:focus {
- border-color: @border-color transparent @border-color @border-color;
- *border-right-color: #ffffff;
- }
-
- .tabs-right > .nav-tabs {
- float: right;
- margin-left: 19px;
- }
-
- .tabs-right > .nav-tabs > li > a {
- margin-left: -1px;
- -webkit-border-radius: 0 4px 4px 0;
- -moz-border-radius: 0 4px 4px 0;
- border-radius: 0 4px 4px 0;
- }
-
- .tabs-right > .nav-tabs .active > a,
- .tabs-right > .nav-tabs .active > a:hover,
- .tabs-right > .nav-tabs .active > a:focus {
- border-color: @border-color @border-color @border-color transparent;
- *border-left-color: #ffffff;
- z-index: 1;
- }
-
-}
-
-@media (max-width: 767px) {
- .tabs-container .nav-tabs > li {
- float: none !important;
- }
-
- .tabs-container .nav-tabs > li.active > a {
- border-bottom: 1px solid #e7eaec !important;
- margin: 0;
- }
-}
-
-/* jsvectormap */
-.jvectormap-container {
- width: 100%;
- height: 100%;
- position: relative;
- overflow: hidden;
-}
-
-.jvectormap-tip {
- position: absolute;
- display: none;
- border: solid 1px #CDCDCD;
- border-radius: 3px;
- background: #292929;
- color: white;
- font-family: sans-serif, Verdana;
- font-size: smaller;
- padding: 5px;
-}
-
-.jvectormap-zoomin, .jvectormap-zoomout, .jvectormap-goback {
- position: absolute;
- left: 10px;
- border-radius: 3px;
- background: @navy;
- padding: 3px;
- color: white;
- cursor: pointer;
- line-height: 10px;
- text-align: center;
- box-sizing: content-box;
-}
-
-.jvectormap-zoomin, .jvectormap-zoomout {
- width: 10px;
- height: 10px;
-}
-
-.jvectormap-zoomin {
- top: 10px;
-}
-
-.jvectormap-zoomout {
- top: 30px;
-}
-
-.jvectormap-goback {
- bottom: 10px;
- z-index: 1000;
- padding: 6px;
-}
-
-.jvectormap-spinner {
- position: absolute;
- left: 0;
- top: 0;
- right: 0;
- bottom: 0;
- background: center no-repeat url(data:image/gif;base64,R0lGODlhIAAgAPMAAP///wAAAMbGxoSEhLa2tpqamjY2NlZWVtjY2OTk5Ly8vB4eHgQEBAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAIAAgAAAE5xDISWlhperN52JLhSSdRgwVo1ICQZRUsiwHpTJT4iowNS8vyW2icCF6k8HMMBkCEDskxTBDAZwuAkkqIfxIQyhBQBFvAQSDITM5VDW6XNE4KagNh6Bgwe60smQUB3d4Rz1ZBApnFASDd0hihh12BkE9kjAJVlycXIg7CQIFA6SlnJ87paqbSKiKoqusnbMdmDC2tXQlkUhziYtyWTxIfy6BE8WJt5YJvpJivxNaGmLHT0VnOgSYf0dZXS7APdpB309RnHOG5gDqXGLDaC457D1zZ/V/nmOM82XiHRLYKhKP1oZmADdEAAAh+QQJCgAAACwAAAAAIAAgAAAE6hDISWlZpOrNp1lGNRSdRpDUolIGw5RUYhhHukqFu8DsrEyqnWThGvAmhVlteBvojpTDDBUEIFwMFBRAmBkSgOrBFZogCASwBDEY/CZSg7GSE0gSCjQBMVG023xWBhklAnoEdhQEfyNqMIcKjhRsjEdnezB+A4k8gTwJhFuiW4dokXiloUepBAp5qaKpp6+Ho7aWW54wl7obvEe0kRuoplCGepwSx2jJvqHEmGt6whJpGpfJCHmOoNHKaHx61WiSR92E4lbFoq+B6QDtuetcaBPnW6+O7wDHpIiK9SaVK5GgV543tzjgGcghAgAh+QQJCgAAACwAAAAAIAAgAAAE7hDISSkxpOrN5zFHNWRdhSiVoVLHspRUMoyUakyEe8PTPCATW9A14E0UvuAKMNAZKYUZCiBMuBakSQKG8G2FzUWox2AUtAQFcBKlVQoLgQReZhQlCIJesQXI5B0CBnUMOxMCenoCfTCEWBsJColTMANldx15BGs8B5wlCZ9Po6OJkwmRpnqkqnuSrayqfKmqpLajoiW5HJq7FL1Gr2mMMcKUMIiJgIemy7xZtJsTmsM4xHiKv5KMCXqfyUCJEonXPN2rAOIAmsfB3uPoAK++G+w48edZPK+M6hLJpQg484enXIdQFSS1u6UhksENEQAAIfkECQoAAAAsAAAAACAAIAAABOcQyEmpGKLqzWcZRVUQnZYg1aBSh2GUVEIQ2aQOE+G+cD4ntpWkZQj1JIiZIogDFFyHI0UxQwFugMSOFIPJftfVAEoZLBbcLEFhlQiqGp1Vd140AUklUN3eCA51C1EWMzMCezCBBmkxVIVHBWd3HHl9JQOIJSdSnJ0TDKChCwUJjoWMPaGqDKannasMo6WnM562R5YluZRwur0wpgqZE7NKUm+FNRPIhjBJxKZteWuIBMN4zRMIVIhffcgojwCF117i4nlLnY5ztRLsnOk+aV+oJY7V7m76PdkS4trKcdg0Zc0tTcKkRAAAIfkECQoAAAAsAAAAACAAIAAABO4QyEkpKqjqzScpRaVkXZWQEximw1BSCUEIlDohrft6cpKCk5xid5MNJTaAIkekKGQkWyKHkvhKsR7ARmitkAYDYRIbUQRQjWBwJRzChi9CRlBcY1UN4g0/VNB0AlcvcAYHRyZPdEQFYV8ccwR5HWxEJ02YmRMLnJ1xCYp0Y5idpQuhopmmC2KgojKasUQDk5BNAwwMOh2RtRq5uQuPZKGIJQIGwAwGf6I0JXMpC8C7kXWDBINFMxS4DKMAWVWAGYsAdNqW5uaRxkSKJOZKaU3tPOBZ4DuK2LATgJhkPJMgTwKCdFjyPHEnKxFCDhEAACH5BAkKAAAALAAAAAAgACAAAATzEMhJaVKp6s2nIkolIJ2WkBShpkVRWqqQrhLSEu9MZJKK9y1ZrqYK9WiClmvoUaF8gIQSNeF1Er4MNFn4SRSDARWroAIETg1iVwuHjYB1kYc1mwruwXKC9gmsJXliGxc+XiUCby9ydh1sOSdMkpMTBpaXBzsfhoc5l58Gm5yToAaZhaOUqjkDgCWNHAULCwOLaTmzswadEqggQwgHuQsHIoZCHQMMQgQGubVEcxOPFAcMDAYUA85eWARmfSRQCdcMe0zeP1AAygwLlJtPNAAL19DARdPzBOWSm1brJBi45soRAWQAAkrQIykShQ9wVhHCwCQCACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq+E71SRQeyqUToLA7VxF0JDyIQh/MVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiRMDjI0Fd30/iI2UA5GSS5UDj2l6NoqgOgN4gksEBgYFf0FDqKgHnyZ9OX8HrgYHdHpcHQULXAS2qKpENRg7eAMLC7kTBaixUYFkKAzWAAnLC7FLVxLWDBLKCwaKTULgEwbLA4hJtOkSBNqITT3xEgfLpBtzE/jiuL04RGEBgwWhShRgQExHBAAh+QQJCgAAACwAAAAAIAAgAAAE7xDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfZiCqGk5dTESJeaOAlClzsJsqwiJwiqnFrb2nS9kmIcgEsjQydLiIlHehhpejaIjzh9eomSjZR+ipslWIRLAgMDOR2DOqKogTB9pCUJBagDBXR6XB0EBkIIsaRsGGMMAxoDBgYHTKJiUYEGDAzHC9EACcUGkIgFzgwZ0QsSBcXHiQvOwgDdEwfFs0sDzt4S6BK4xYjkDOzn0unFeBzOBijIm1Dgmg5YFQwsCMjp1oJ8LyIAACH5BAkKAAAALAAAAAAgACAAAATwEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq+E71SRQeyqUToLA7VxF0JDyIQh/MVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GGl6NoiPOH16iZKNlH6KmyWFOggHhEEvAwwMA0N9GBsEC6amhnVcEwavDAazGwIDaH1ipaYLBUTCGgQDA8NdHz0FpqgTBwsLqAbWAAnIA4FWKdMLGdYGEgraigbT0OITBcg5QwPT4xLrROZL6AuQAPUS7bxLpoWidY0JtxLHKhwwMJBTHgPKdEQAACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq+E71SRQeyqUToLA7VxF0JDyIQh/MVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GAULDJCRiXo1CpGXDJOUjY+Yip9DhToJA4RBLwMLCwVDfRgbBAaqqoZ1XBMHswsHtxtFaH1iqaoGNgAIxRpbFAgfPQSqpbgGBqUD1wBXeCYp1AYZ19JJOYgH1KwA4UBvQwXUBxPqVD9L3sbp2BNk2xvvFPJd+MFCN6HAAIKgNggY0KtEBAAh+QQJCgAAACwAAAAAIAAgAAAE6BDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfYIDMaAFdTESJeaEDAIMxYFqrOUaNW4E4ObYcCXaiBVEgULe0NJaxxtYksjh2NLkZISgDgJhHthkpU4mW6blRiYmZOlh4JWkDqILwUGBnE6TYEbCgevr0N1gH4At7gHiRpFaLNrrq8HNgAJA70AWxQIH1+vsYMDAzZQPC9VCNkDWUhGkuE5PxJNwiUK4UfLzOlD4WvzAHaoG9nxPi5d+jYUqfAhhykOFwJWiAAAIfkECQoAAAAsAAAAACAAIAAABPAQyElpUqnqzaciSoVkXVUMFaFSwlpOCcMYlErAavhOMnNLNo8KsZsMZItJEIDIFSkLGQoQTNhIsFehRww2CQLKF0tYGKYSg+ygsZIuNqJksKgbfgIGepNo2cIUB3V1B3IvNiBYNQaDSTtfhhx0CwVPI0UJe0+bm4g5VgcGoqOcnjmjqDSdnhgEoamcsZuXO1aWQy8KAwOAuTYYGwi7w5h+Kr0SJ8MFihpNbx+4Erq7BYBuzsdiH1jCAzoSfl0rVirNbRXlBBlLX+BP0XJLAPGzTkAuAOqb0WT5AH7OcdCm5B8TgRwSRKIHQtaLCwg1RAAAOwAAAAAAAAAAAA==);
-}
-
-.jvectormap-legend-title {
- font-weight: bold;
- font-size: 14px;
- text-align: center;
-}
-
-.jvectormap-legend-cnt {
- position: absolute;
-}
-
-.jvectormap-legend-cnt-h {
- bottom: 0;
- right: 0;
-}
-
-.jvectormap-legend-cnt-v {
- top: 0;
- right: 0;
-}
-
-.jvectormap-legend {
- background: black;
- color: white;
- border-radius: 3px;
-}
-
-.jvectormap-legend-cnt-h .jvectormap-legend {
- float: left;
- margin: 0 10px 10px 0;
- padding: 3px 3px 1px 3px;
-}
-
-.jvectormap-legend-cnt-h .jvectormap-legend .jvectormap-legend-tick {
- float: left;
-}
-
-.jvectormap-legend-cnt-v .jvectormap-legend {
- margin: 10px 10px 0 0;
- padding: 3px;
-}
-
-.jvectormap-legend-cnt-h .jvectormap-legend-tick {
- width: 40px;
-}
-
-.jvectormap-legend-cnt-h .jvectormap-legend-tick-sample {
- height: 15px;
-}
-
-.jvectormap-legend-cnt-v .jvectormap-legend-tick-sample {
- height: 20px;
- width: 20px;
- display: inline-block;
- vertical-align: middle;
-}
-
-.jvectormap-legend-tick-text {
- font-size: 12px;
-}
-
-.jvectormap-legend-cnt-h .jvectormap-legend-tick-text {
- text-align: center;
-}
-
-.jvectormap-legend-cnt-v .jvectormap-legend-tick-text {
- display: inline-block;
- vertical-align: middle;
- line-height: 20px;
- padding-left: 3px;
-}
-
-/*Slick Carousel */
-
-.slick-prev:before,
-.slick-next:before {
- color: @navy !important;
-}
-
-/* Payments */
-
-.payment-card {
- background: #ffffff;
- padding: 20px;
- margin-bottom: 25px;
- border: 1px solid @border-color;
-}
-
-.payment-icon-big {
- font-size: 60px;
- color: @light-gray;
-}
-
-.payments-method.panel-group .panel + .panel {
- margin-top: -1px;
-}
-
-.payments-method .panel-heading {
- padding: 15px;
-}
-
-.payments-method .panel {
- border-radius: 0;
-}
-
-.payments-method .panel-heading h5 {
- margin-bottom: 5px;
-}
-
-.payments-method .panel-heading i {
- font-size: 26px;
-}
-
-/* Select2 custom styles */
-
-.select2-container--default .select2-selection--single,
-.select2-container--default .select2-selection--multiple {
- border-color: @border-color;
-}
-
-/* Tour */
-
-.tour-tour .btn.btn-default {
- background-color: #ffffff;
- border: 1px solid #d2d2d2;
- color: inherit;
-}
-
-.tour-step-backdrop {
- z-index: 2101;
-}
-
-.tour-backdrop {
- z-index: 2100;
- opacity: .7;
-}
-
-.popover[class*=tour-] {
- z-index: 2100;
-}
-
-#body.tour-open .animated {
- animation-fill-mode: initial;
-}
-
-
-/* Resizable */
-
-.resizable-panels .ibox {
- clear:none;
- margin: 10px;
- float: left;
- overflow:hidden;
- min-height: 150px;
- min-width: 150px;
-}
-
-.resizable-panels .ibox .ibox-content {
- height: calc(~"100% - 49px");
-}
-.ui-resizable-helper {
- background: rgba(211,211,211,0.4)
-
-}
-
-/* Wizard step fix */
-.wizard > .content > .body {
- position: relative
-}
-
-/* PDF js style */
-
-.pdf-toolbar {
- max-width: 600px;
- margin: 0 auto;
-}
-
-/* Dropzone */
-
-.dropzone {
- min-height: 140px;
- border: 1px dashed @navy;
- background: white;
- padding: 20px 20px;
-
- .dz-message {
- font-size: 16px;
-
- }
-}
diff --git a/src/assets/css/inspinia/mixins.less b/src/assets/css/inspinia/mixins.less
deleted file mode 100644
index da0c9e8..0000000
--- a/src/assets/css/inspinia/mixins.less
+++ /dev/null
@@ -1,15 +0,0 @@
-.border-radius (@radius: 3px) {
- -webkit-border-radius: @radius;
- -moz-border-radius: @radius;
- border-radius: @radius;
-
- -moz-background-clip: padding;
- -webkit-background-clip: padding-box;
- background-clip: padding-box;
-}
-
-.opacity (@opacity: 0.5) {
- -webkit-opacity: @opacity;
- -moz-opacity: @opacity;
- opacity: @opacity;
-}
\ No newline at end of file
diff --git a/src/assets/css/inspinia/pages.less b/src/assets/css/inspinia/pages.less
deleted file mode 100644
index 3bd2b3a..0000000
--- a/src/assets/css/inspinia/pages.less
+++ /dev/null
@@ -1,1358 +0,0 @@
-/* SEARCH PAGE */
-
-.search-form {
- margin-top: 10px;
-}
-
-.search-result h3 {
- margin-bottom: 0;
- color: #1E0FBE;
-}
-
-.search-result .search-link {
- color: #006621;
-}
-
-.search-result p {
- font-size: 12px;
- margin-top: 5px;
-}
-
-/* CONTACTS */
-
-.contact-box {
- background-color: #ffffff;
- border: 1px solid @border-color;
- padding: 20px;
- margin-bottom: 20px;
-}
-
-.contact-box > a {
- color: inherit;
-}
-
-.contact-box.center-version {
-
- border: 1px solid @border-color;
- padding: 0;
-}
-
-.contact-box.center-version > a {
- display: block;
- background-color: #ffffff;
- padding: 20px;
- text-align: center;
-}
-
-.contact-box.center-version > a img {
- width: 80px;
- height: 80px;
- margin-top: 10px;
- margin-bottom: 10px;
-}
-
-.contact-box.center-version address {
- margin-bottom: 0;
-}
-
-.contact-box .contact-box-footer {
- text-align: center;
- background-color: #ffffff;
- border-top: 1px solid @border-color;
- padding: 15px 20px;
-}
-
-/* INVOICE */
-
-.invoice-table tbody > tr > td:last-child, .invoice-table tbody > tr > td:nth-child(4), .invoice-table tbody > tr > td:nth-child(3), .invoice-table tbody > tr > td:nth-child(2) {
- text-align: right;
-}
-
-.invoice-table thead > tr > th:last-child, .invoice-table thead > tr > th:nth-child(4), .invoice-table thead > tr > th:nth-child(3), .invoice-table thead > tr > th:nth-child(2) {
- text-align: right;
-}
-
-.invoice-total > tbody > tr > td:first-child {
- text-align: right;
-}
-
-.invoice-total > tbody > tr > td {
- border: 0 none;
-}
-
-.invoice-total > tbody > tr > td:last-child {
- border-bottom: 1px solid #DDDDDD;
- text-align: right;
- width: 15%;
-}
-
-/* ERROR & LOGIN & LOCKSCREEN*/
-
-.middle-box {
- max-width: 400px;
- z-index: 100;
- margin: 0 auto;
- padding-top: 40px;
-}
-
-.lockscreen.middle-box {
- width: 200px;
- padding-top: 110px;
-}
-
-.loginscreen.middle-box {
- width: 300px;
-}
-
-.loginColumns {
- max-width: 800px;
- margin: 0 auto;
- padding: 100px 20px 20px 20px;
-}
-
-.passwordBox {
- max-width: 460px;
- margin: 0 auto;
- padding: 100px 20px 20px 20px;
-}
-
-.logo-name {
- color: #e6e6e6;
- font-size: 180px;
- font-weight: 800;
- letter-spacing: -10px;
- margin-bottom: 0;
-}
-
-.middle-box h1 {
- font-size: 170px;
-}
-
-.wrapper .middle-box {
- margin-top: 140px;
-}
-
-.lock-word {
- z-index: 10;
- position: absolute;
- top: 110px;
- left: 50%;
- margin-left: -470px;
-}
-
-.lock-word span {
- font-size: 100px;
- font-weight: 600;
- color: #e9e9e9;
- display: inline-block;
-}
-
-.lock-word .first-word {
- margin-right: 160px;
-}
-
-/* DASBOARD */
-
-.dashboard-header {
- border-top: 0;
- padding: 20px 20px 20px 20px;
-}
-
-.dashboard-header h2 {
- margin-top: 10px;
- font-size: 26px;
-}
-
-.fist-item {
- border-top: none !important;
-}
-
-.statistic-box {
- margin-top: 40px;
-
-}
-
-.dashboard-header .list-group-item span.label {
- margin-right: 10px;
-}
-
-.list-group.clear-list .list-group-item {
- border-top: 1px solid @border-color;
- border-bottom: 0;
- border-right: 0;
- border-left: 0;
- padding: 10px 0;
-}
-
-ul.clear-list:first-child {
- border-top: none !important;
-}
-
-/* Intimeline */
-
-.timeline-item .date i {
- position: absolute;
- top: 0;
- right: 0;
- padding: 5px;
- width: 30px;
- text-align: center;
- border-top: 1px solid @border-color;
- border-bottom: 1px solid @border-color;
- border-left: 1px solid @border-color;
- background: #f8f8f8;
-}
-
-.timeline-item .date {
- text-align: right;
- width: 110px;
- position: relative;
- padding-top: 30px;
-}
-
-.timeline-item .content {
- border-left: 1px solid @border-color;
- border-top: 1px solid @border-color;
- padding-top: 10px;
- min-height: 100px;
-}
-
-.timeline-item .content:hover {
- background: #f6f6f6;
-}
-
-/* PIN BOARD */
-ul.notes li, ul.tag-list li {
- list-style: none;
-}
-
-ul.notes li h4 {
- margin-top: 20px;
- font-size: 16px;
-}
-
-ul.notes li div {
- text-decoration: none;
- color: #000;
- background: #ffc;
- display: block;
- height: 140px;
- width: 140px;
- padding: 1em;
- position: relative;
-}
-
-ul.notes li div small {
- position: absolute;
- top: 5px;
- right: 5px;
- font-size: 10px
-}
-
-ul.notes li div a {
- position: absolute;
- right: 10px;
- bottom: 10px;
- color: inherit;
-}
-
-ul.notes li {
- margin: 10px 40px 50px 0;
- float: left;
-}
-
-ul.notes li div p {
- font-size: 12px;
-}
-
-ul.notes li div {
- text-decoration: none;
- color: #000;
- background: #ffc;
- display: block;
- height: 140px;
- width: 140px;
- padding: 1em;
- /* Firefox */
- -moz-box-shadow: 5px 5px 2px rgba(33, 33, 33, 1);
- /* Safari+Chrome */
- -webkit-box-shadow: 5px 5px 2px rgba(33, 33, 33, .7);
- /* Opera */
- box-shadow: 5px 5px 2px rgba(33, 33, 33, .7);
-}
-
-ul.notes li div {
- -webkit-transform: rotate(-6deg);
- -o-transform: rotate(-6deg);
- -moz-transform: rotate(-6deg);
-}
-
-ul.notes li:nth-child(even) div {
- -o-transform: rotate(4deg);
- -webkit-transform: rotate(4deg);
- -moz-transform: rotate(4deg);
- position: relative;
- top: 5px;
-}
-
-ul.notes li:nth-child(3n) div {
- -o-transform: rotate(-3deg);
- -webkit-transform: rotate(-3deg);
- -moz-transform: rotate(-3deg);
- position: relative;
- top: -5px;
-}
-
-ul.notes li:nth-child(5n) div {
- -o-transform: rotate(5deg);
- -webkit-transform: rotate(5deg);
- -moz-transform: rotate(5deg);
- position: relative;
- top: -10px;
-}
-
-ul.notes li div:hover, ul.notes li div:focus {
-
- -webkit-transform: scale(1.1);
- -moz-transform: scale(1.1);
- -o-transform: scale(1.1);
- position: relative;
- z-index: 5;
-}
-
-ul.notes li div {
- text-decoration: none;
- color: #000;
- background: #ffc;
- display: block;
- height: 210px;
- width: 210px;
- padding: 1em;
- -moz-box-shadow: 5px 5px 7px rgba(33, 33, 33, 1);
- -webkit-box-shadow: 5px 5px 7px rgba(33, 33, 33, .7);
- box-shadow: 5px 5px 7px rgba(33, 33, 33, .7);
- -moz-transition: -moz-transform .15s linear;
- -o-transition: -o-transform .15s linear;
- -webkit-transition: -webkit-transform .15s linear;
-}
-
-/* FILE MANAGER */
-
-.file-box {
- float: left;
- width: 220px;
-}
-
-.file-manager h5 {
- text-transform: uppercase;
-}
-
-.file-manager {
- list-style: none outside none;
- margin: 0;
- padding: 0;
-}
-
-.folder-list li a {
- color: #666666;
- display: block;
- padding: 5px 0;
-}
-
-.folder-list li {
- border-bottom: 1px solid @border-color;
- display: block;
-}
-
-.folder-list li i {
- margin-right: 8px;
- color: #3d4d5d;
-}
-
-.category-list li a {
- color: #666666;
- display: block;
- padding: 5px 0;
-}
-
-.category-list li {
- display: block;
-}
-
-.category-list li i {
- margin-right: 8px;
- color: #3d4d5d;
-}
-
-.category-list li a .text-navy {
- color: @navy;
-}
-
-.category-list li a .text-primary {
- color: @blue;
-}
-
-.category-list li a .text-info {
- color: @lazur;
-}
-
-.category-list li a .text-danger {
- color: #EF5352;
-}
-
-.category-list li a .text-warning {
- color: #F8AC59;
-}
-
-.file-manager h5.tag-title {
- margin-top: 20px;
-}
-
-.tag-list li {
- float: left;
-}
-
-.tag-list li a {
- font-size: 10px;
- background-color: @gray;
- padding: 5px 12px;
- color: inherit;
- border-radius: 2px;
- border: 1px solid @border-color;
- margin-right: 5px;
- margin-top: 5px;
- display: block;
-}
-
-.file {
- border: 1px solid @border-color;
- padding: 0;
- background-color: #ffffff;
- position: relative;
- margin-bottom: 20px;
- margin-right: 20px;
-}
-
-.file-manager .hr-line-dashed {
- margin: 15px 0;
-}
-
-.file .icon, .file .image {
- height: 100px;
- overflow: hidden;
-}
-
-.file .icon {
- padding: 15px 10px;
- text-align: center;
-}
-
-.file-control {
- color: inherit;
- font-size: 11px;
- margin-right: 10px;
-}
-
-.file-control.active {
- text-decoration: underline;
-}
-
-.file .icon i {
- font-size: 70px;
- color: #dadada;
-}
-
-.file .file-name {
- padding: 10px;
- background-color: #f8f8f8;
- border-top: 1px solid @border-color;
-}
-
-.file-name small {
- color: @text-color;
-}
-
-.corner {
- position: absolute;
- display: inline-block;
- width: 0;
- height: 0;
- line-height: 0;
- border: 0.6em solid transparent;
- border-right: 0.6em solid #f1f1f1;
- border-bottom: 0.6em solid #f1f1f1;
- right: 0em;
- bottom: 0em
-}
-
-a.compose-mail {
- padding: 8px 10px;
-}
-
-.mail-search {
- max-width: 300px;
-}
-
-/* PROFILE */
-
-.profile-content {
- border-top: none !important;
-}
-
-.profile-stats {
- margin-right: 10px;
-}
-
-.profile-image {
- width: 120px;
- float: left;
-}
-
-.profile-image img {
- width: 96px;
- height: 96px;
-}
-
-.profile-info {
- margin-left: 120px;
-}
-
-.feed-activity-list .feed-element {
- border-bottom: 1px solid @border-color;
-}
-
-.feed-element:first-child {
- margin-top: 0;
-}
-
-.feed-element {
- padding-bottom: 15px;
-}
-
-.feed-element, .feed-element .media {
- margin-top: 15px;
-}
-
-.feed-element, .media-body {
- overflow: hidden;
-}
-
-.feed-element > .pull-left {
- margin-right: 10px;
-}
-
-.feed-element img.img-circle, .dropdown-messages-box img.img-circle {
- width: 38px;
- height: 38px;
-}
-
-.feed-element .well {
- border: 1px solid @border-color;
- box-shadow: none;
- margin-top: 10px;
- margin-bottom: 5px;
- padding: 10px 20px;
- font-size: 11px;
- line-height: 16px;
-}
-
-.feed-element .actions {
- margin-top: 10px;
-}
-
-.feed-element .photos {
- margin: 10px 0;
-
-}
-
-.feed-photo {
- max-height: 180px;
- border-radius: 4px;
- overflow: hidden;
- margin-right: 10px;
- margin-bottom: 10px;
-}
-
-.file-list li {
- padding: 5px 10px;
- font-size: 11px;
- border-radius: 2px;
- border: 1px solid @border-color;
- margin-bottom: 5px;
-
-}
-
-.file-list li a {
- color: inherit;
-}
-
-.file-list li a:hover {
- color: @navy;
-}
-
-.user-friends img {
- width: 42px;
- height: 42px;
- margin-bottom: 5px;
- margin-right: 5px;
-
-}
-
-/* MAILBOX */
-
-.mail-box {
- background-color: #ffffff;
- border: 1px solid @border-color;
- border-top: 0;
- padding: 0;
- margin-bottom: 20px;
-}
-
-.mail-box-header {
- background-color: #ffffff;
- border: 1px solid @border-color;
- border-bottom: 0;
- padding: 30px 20px 20px 20px;
-}
-
-.mail-box-header h2 {
- margin-top: 0;
-}
-
-.mailbox-content .tag-list li a {
- background: #ffffff;
-}
-
-.mail-body {
- border-top: 1px solid @border-color;
- padding: 20px;
-}
-
-.mail-text {
- border-top: 1px solid @border-color;
-}
-
-.mail-text .note-toolbar {
- padding: 10px 15px;
-}
-
-.mail-body .form-group {
- margin-bottom: 5px;
-}
-
-.mail-text .note-editor .note-toolbar {
- background-color: #F9F8F8;
-}
-
-.mail-attachment {
- border-top: 1px solid @border-color;
- padding: 20px;
- font-size: 12px;
-}
-
-.mailbox-content {
- background: none;
- border: none;
- padding: 10px;
-}
-
-.mail-ontact {
- width: 23%;
-}
-
-/* PROJECTS */
-.project-people, .project-actions {
- text-align: right;
- vertical-align: middle;
-}
-
-dd.project-people {
- text-align: left;
- margin-top: 5px;
-}
-
-.project-people img {
- width: 32px;
- height: 32px;
-}
-
-.project-title a {
- font-size: 14px;
- color: @text-color;
- font-weight: 600;
-}
-
-.project-list table tr td {
- border-top: none;
- border-bottom: 1px solid @border-color;
- padding: 15px 10px;
- vertical-align: middle;
-}
-
-.project-manager .tag-list li a {
- font-size: 10px;
- background-color: white;
- padding: 5px 12px;
- color: inherit;
- border-radius: 2px;
- border: 1px solid @border-color;
- margin-right: 5px;
- margin-top: 5px;
- display: block;
-}
-
-.project-files li a {
- font-size: 11px;
- color: @text-color;
- margin-left: 10px;
- line-height: 22px;
-}
-
-/* FAQ */
-
-.faq-item {
- padding: 20px;
- margin-bottom: 2px;
- background: #fff;
-}
-
-.faq-question {
- font-size: 18px;
- font-weight: 600;
- color: @navy;
- display: block;
-}
-
-.faq-question:hover {
- color: darken(@navy, 5%);
-}
-
-.faq-answer {
- margin-top: 10px;
- background: @gray;
- border: 1px solid @border-color;
- border-radius: 3px;
- padding: 15px;
-}
-
-.faq-item .tag-item {
- background: @gray;
- padding: 2px 6px;
- font-size: 10px;
- text-transform: uppercase;
-}
-
-/* Chat view */
-.message-input {
- height: 90px !important;
-}
-
-.chat-avatar {
- white: 36px;
- height: 36px;
- float: left;
- margin-right: 10px;
-}
-
-.chat-user-name {
- padding: 10px;
-}
-
-.chat-user {
- padding: 8px 10px;
- border-bottom: 1px solid #e7eaec;
-}
-
-.chat-user a {
- color: inherit;
-}
-
-.chat-view {
- z-index: 20012;
-}
-
-.chat-users, .chat-statistic {
- margin-left: -30px;
-}
-
-@media (max-width: 992px) {
- .chat-users, .chat-statistic {
- margin-left: 0;
- }
-}
-
-.chat-view .ibox-content {
- padding: 0;
-}
-
-.chat-message {
- padding: 10px 20px;
-}
-
-.message-avatar {
- height: 48px;
- width: 48px;
- border: 1px solid #e7eaec;
- border-radius: 4px;
- margin-top: 1px;
-}
-
-.chat-discussion .chat-message.left .message-avatar {
- float: left;
- margin-right: 10px;
-}
-
-.chat-discussion .chat-message.right .message-avatar {
- float: right;
- margin-left: 10px;
-}
-
-.message {
- background-color: #fff;
- border: 1px solid #e7eaec;
- text-align: left;
- display: block;
- padding: 10px 20px;
- position: relative;
- border-radius: 4px;
-}
-
-.chat-discussion .chat-message.left .message-date {
- float: right;
-}
-
-.chat-discussion .chat-message.right .message-date {
- float: left;
-}
-
-.chat-discussion .chat-message.left .message {
- text-align: left;
- margin-left: 55px;
-}
-
-.chat-discussion .chat-message.right .message {
- text-align: right;
- margin-right: 55px;
-}
-
-.message-date {
- font-size: 10px;
- color: #888888;
-}
-
-.message-content {
- display: block;
-}
-
-.chat-discussion {
- background: #eee;
- padding: 15px;
- height: 400px;
- overflow-y: auto;
-}
-
-.chat-users {
- overflow-y: auto;
- height: 400px;
-}
-
-.chat-message-form .form-group {
- margin-bottom: 0;
-}
-
-/* jsTree */
-.jstree-open > .jstree-anchor > .fa-folder:before {
- content: "\f07c";
-}
-
-.jstree-default .jstree-icon.none {
- width: 0;
-}
-
-/* CLIENTS */
-
-.clients-list {
- margin-top: 20px;
-}
-
-.clients-list .tab-pane {
- position: relative;
- height: 600px;
-}
-
-.client-detail {
- position: relative;
- height: 620px;
-}
-
-.clients-list table tr td {
- height: 46px;
- vertical-align: middle;
- border: none;
-}
-
-.client-link {
- font-weight: 600;
- color: inherit;
-}
-
-.client-link:hover {
- color: inherit;
-}
-
-.client-avatar {
- width: 42px;
-}
-
-.client-avatar img {
- width: 28px;
- height: 28px;
- border-radius: 50%;
-}
-
-.contact-type {
- width: 20px;
- color: lighten(@text-color, 35%);
-}
-
-.client-status {
- text-align: left;
-}
-
-.client-detail .vertical-timeline-content p {
- margin: 0;
-}
-
-.client-detail .vertical-timeline-icon.gray-bg {
- color: lighten(@text-color, 25px);
-}
-
-.clients-list {
- .nav-tabs > li.active > a, .nav-tabs > li.active > a:hover, .nav-tabs > li.active > a:focus {
- border-bottom: 1px solid #fff;
- }
-}
-
-/* BLOG ARTICLE */
-.blog h2 {
- font-weight: 700;
-}
-
-.blog h5 {
- margin: 0 0 5px 0;
-}
-
-.blog .btn {
- margin: 0 0 5px 0;
-}
-
-.article h1 {
- font-size: 48px;
- font-weight: 700;
- color: #2F4050;
-}
-
-.article p {
- font-size: 15px;
- line-height: 26px;
-}
-
-.article-title {
- text-align: center;
- margin: 40px 0 100px 0;
-}
-
-.article .ibox-content {
- padding: 40px;
-}
-
-/* ISSUE TRACKER */
-
-.issue-tracker .btn-link {
- color: @navy;
-}
-
-table.issue-tracker tbody tr td {
- vertical-align: middle;
- height: 50px;
-}
-
-.issue-info {
- width: 50%;
-}
-
-.issue-info a {
- font-weight: 600;
- color: @text-color;
-}
-
-.issue-info small {
- display: block;
-}
-
-/* TEAMS */
-.team-members {
- margin: 10px 0;
-}
-
-.team-members img.img-circle {
- width: 42px;
- height: 42px;
- margin-bottom: 5px;
-}
-
-/* AGILE BOARD */
-
-.sortable-list {
- padding: 10px 0;
-}
-
-.agile-list {
- list-style: none;
- margin: 0;
-}
-
-.agile-list li {
-
- background: #FAFAFB;
- border: 1px solid #e7eaec;
- margin: 0 0 10px 0;
- padding: 10px;
- border-radius: 2px;
-}
-
-.agile-list li:hover {
- cursor: pointer;
- background: #fff;
-}
-
-.agile-list li.warning-element {
- border-left: 3px solid @yellow;
-}
-
-.agile-list li.danger-element {
- border-left: 3px solid @red;
-}
-
-.agile-list li.info-element {
- border-left: 3px solid @blue;
-}
-
-.agile-list li.success-element {
- border-left: 3px solid @navy;
-}
-
-.agile-detail {
- margin-top: 5px;
- font-size: 12px;
-}
-
-/* DIFF */
-ins {
- background-color: #c6ffc6;
- text-decoration: none;
-}
-
-del {
- background-color: #ffc6c6;
-}
-
-/* E-commerce */
-.product-box {
- padding: 0;
-
- border: 1px solid @border-color;
-}
-
-.product-box:hover,
-.product-box.active {
- border: 1px solid transparent;
- -webkit-box-shadow: 0 3px 7px 0 rgba(168, 168, 168, 1);
- -moz-box-shadow: 0 3px 7px 0 rgba(168, 168, 168, 1);
- box-shadow: 0 3px 7px 0 rgba(168, 168, 168, 1);
-}
-
-.product-imitation {
- text-align: center;
- padding: 90px 0;
- background-color: lighten(@gray, 2%);
- color: darken(@gray, 20%);
- font-weight: 600;
-}
-
-.cart-product-imitation {
- text-align: center;
- padding-top: 30px;
- height: 80px;
- width: 80px;
- background-color: lighten(@gray, 2%);
-}
-
-.product-imitation.xl {
- padding: 120px 0;
-}
-
-.product-desc {
- padding: 20px;
- position: relative;
-}
-
-.ecommerce .tag-list {
- padding: 0;
-}
-
-.ecommerce .fa-star {
- color: @light-gray;
-}
-
-.ecommerce .fa-star.active {
- color: @yellow;
-}
-
-.ecommerce .note-editor {
- border: 1px solid @border-color;
-}
-
-table.shoping-cart-table {
- margin-bottom: 0;
-
- tr td {
- border: none;
- text-align: right;
- }
-
- tr td.desc, tr td:first-child {
- text-align: left;
- }
-
- tr td:last-child {
- width: 80px;
- }
-
-}
-
-.product-name {
- font-size: 16px;
- font-weight: 600;
- color: @text-color;
- display: block;
- margin: 2px 0 5px 0;
-}
-
-.product-name:hover,
-.product-name:focus {
- color: @navy;
-}
-
-.product-price {
- font-size: 14px;
- font-weight: 600;
- color: #ffffff;
- background-color: @navy;
- padding: 6px 12px;
-
- position: absolute;
- top: -32px;
- right: 0;
-}
-
-.product-detail .ibox-content {
- padding: 30px 30px 50px 30px;
-}
-
-.image-imitation {
- background-color: lighten(@gray, 2%);
- text-align: center;
- padding: 200px 0;
-
-}
-
-.product-main-price small {
- font-size: 10px;
-
-}
-
-.product-images {
- margin: 0 20px;
-}
-
-/* Social feed */
-.social-feed-separated .social-feed-box {
- margin-left: 62px;
-}
-
-.social-feed-separated .social-avatar {
- float: left;
- padding: 0;
-}
-
-.social-feed-separated .social-avatar img {
- width: 52px;
- height: 52px;
- border: 1px solid #e7eaec;
-}
-
-.social-feed-separated .social-feed-box .social-avatar {
- padding: 15px 15px 0 15px;
- float: none;
-}
-
-.social-feed-box {
- /*padding: 15px;*/
- border: 1px solid #e7eaec;
- background: #fff;
- margin-bottom: 15px;
-}
-
-.article .social-feed-box {
- margin-bottom: 0;
- border-bottom: none;
-}
-
-.article .social-feed-box:last-child {
- margin-bottom: 0;
- border-bottom: 1px solid @border-color;
-}
-
-.article .social-feed-box p {
- font-size: 13px;
- line-height: 18px;
-}
-
-.social-action {
- margin: 15px;
-}
-
-.social-avatar {
- padding: 15px 15px 0 15px;
-}
-
-.social-comment .social-comment {
- margin-left: 45px;
-}
-
-.social-avatar img {
- height: 40px;
- width: 40px;
- margin-right: 10px;
-}
-
-.social-avatar .media-body a {
- font-size: 14px;
- display: block;
-}
-
-.social-body {
- padding: 15px;
-}
-
-.social-body img {
- margin-bottom: 10px;
-}
-
-.social-footer {
- border-top: 1px solid #e7eaec;
- padding: 10px 15px;
- background: #f9f9f9;
-}
-
-.social-footer .social-comment img {
- width: 32px;
- margin-right: 10px;
-}
-
-.social-comment:first-child {
- margin-top: 0;
-}
-
-.social-comment {
- margin-top: 15px;
-}
-
-.social-comment textarea {
- font-size: 12px;
-}
-
-/* Vote list */
-
-.vote-item {
- padding: 20px 25px;
- background: #ffffff;
- border-top: 1px solid @border-color;
-}
-
-.vote-item:last-child {
- border-bottom: 1px solid @border-color;
-}
-
-.vote-item:hover {
- background: lighten(@gray, 3%);
-}
-
-.vote-actions {
- float: left;
- width: 30px;
- margin-right: 15px;
- text-align: center;
-
-}
-
-.vote-actions a {
- color: @navy;
- font-weight: 600;
-}
-
-.vote-actions {
- font-weight: 600;
-}
-
-.vote-title {
- display: block;
- color: inherit;
- font-size: 18px;
- font-weight: 600;
- margin-top: 5px;
- margin-bottom: 2px;
-}
-
-.vote-title:hover, .vote-title:focus {
- color: inherit;
-}
-
-.vote-info, .vote-title {
- margin-left: 45px;
-}
-
-.vote-info, .vote-info a {
- color: lighten(@text-color, 30%);
- font-size: 12px;
-}
-
-.vote-info a {
- margin-right: 10px;
-}
-
-.vote-info a:hover {
- color: @navy;
-}
-
-.vote-icon {
- text-align: right;
- font-size: 38px;
- display: block;
- color: lighten(@text-color, 50%);
-}
-
-.vote-icon.active {
- color: @navy;
-}
-
-
-.lightBoxGallery {
- text-align: center
-}
-
-.lightBoxGallery img {
- margin: 5px
-}
-
diff --git a/src/assets/css/inspinia/sidebar.less b/src/assets/css/inspinia/sidebar.less
deleted file mode 100644
index 1c9250c..0000000
--- a/src/assets/css/inspinia/sidebar.less
+++ /dev/null
@@ -1,191 +0,0 @@
-.sidebard-panel {
- width: 220px;
- background: darken(@gray, 3%);
- padding: 10px 20px;
- position: absolute;
- right: 0;
-}
-
-.sidebard-panel .feed-element img.img-circle {
- width: 32px;
- height: 32px;
-}
-
-.sidebard-panel .feed-element, .media-body, .sidebard-panel p {
- font-size: 12px;
-}
-
-.sidebard-panel .feed-element {
- margin-top: 20px;
- padding-bottom: 0;
-}
-
-.sidebard-panel .list-group {
- margin-bottom: 10px;
-}
-
-.sidebard-panel .list-group .list-group-item {
- padding: 5px 0;
- font-size: 12px;
- border: 0;
-}
-
-.sidebar-content .wrapper, .wrapper.sidebar-content {
- padding-right: 230px !important;
-}
-
-// Right sidebar
-
-#right-sidebar {
- background-color: #fff;
- border-left: 1px solid #e7eaec;
- border-top: 1px solid #e7eaec;
- overflow: hidden;
- position: fixed;
- top: 60px;
- width: 260px !important;
- z-index: 1009;
- bottom: 0;
- right: -260px;
-}
-
-#right-sidebar.sidebar-open {
- right: 0;
-}
-
-#right-sidebar.sidebar-open.sidebar-top {
- top: 0;
- border-top: none;
-}
-
-.sidebar-container {
-
- ul.nav-tabs {
- border: none;
- }
-
- ul.nav-tabs.navs-4 li {
- width: 25%;
- }
- ul.nav-tabs.navs-3 li {
- width: 33.3333%;
- }
- ul.nav-tabs.navs-2 li {
- width: 50%;
- }
-
- ul.nav-tabs li {
- border: none;
- }
-
- ul.nav-tabs li a {
- border: none;
- padding: 12px 10px;
- margin: 0;
- border-radius: 0;
- background: @nav-bg;
- color: #fff;
- text-align: center;
-
- border-right: 1px solid lighten(@nav-bg, 2%);
- }
-
- ul.nav-tabs li.active a {
- border: none;
- background: #f9f9f9;
- color: @text-color;
- font-weight: bold;
-
- }
-
- .nav-tabs > li.active > a:hover,
- .nav-tabs > li.active > a:focus {
-
- border: none;
-
- }
-
- ul.sidebar-list {
- margin: 0;
- padding: 0;
- }
-
- ul.sidebar-list li {
- border-bottom: 1px solid @border-color;
- padding: 15px 20px;
- list-style: none;
-
- font-size: 12px;
- }
-
- ul.sidebar-list li:nth-child(2n+2) {
- // background: #f9f9f9;
- }
-
- .sidebar-message:nth-child(2n+2) {
- background: #f9f9f9;
- }
-
- ul.sidebar-list li a {
- text-decoration: none;
- color: inherit;
- }
-
- .sidebar-content {
- padding: 15px 20px;
- font-size: 12px;
- }
-
- .date-item {
-
- }
-
- .sidebar-title {
- background: #f9f9f9;
- padding: 20px;
- border-bottom: 1px solid @border-color;
-
- h3 {
- margin-bottom: 3px;
- padding-left: 2px;
- }
- }
-
- .tab-content {
-
- h4 {
- margin-bottom: 5px;
- }
-
- }
-
- .sidebar-message > a > .pull-left {
- margin-right: 10px;
- }
-
- .sidebar-message > a {
- text-decoration: none;
- color: inherit;
- }
-
- .sidebar-message {
- padding: 15px 20px;
- }
-
- .sidebar-message:hover {
- // background: #f9f9f9;
- }
-
- .sidebar-message .message-avatar {
- height: 38px;
- width: 38px;
- border-radius: 50%;
- }
-
- .setings-item {
- padding: 15px 20px;
- border-bottom: 1px solid @border-color;
- }
-
-}
-
diff --git a/src/assets/css/inspinia/spinners.less b/src/assets/css/inspinia/spinners.less
deleted file mode 100644
index 8b49257..0000000
--- a/src/assets/css/inspinia/spinners.less
+++ /dev/null
@@ -1,997 +0,0 @@
-/*
- * Usage:
- *
- *
- *
- */
-
-.sk-spinner-rotating-plane.sk-spinner {
- width: 30px;
- height: 30px;
- background-color: @spin-color;
- margin: @spin-margin;
- -webkit-animation: sk-rotatePlane 1.2s infinite ease-in-out;
- animation: sk-rotatePlane 1.2s infinite ease-in-out;
-}
-
-@-webkit-keyframes sk-rotatePlane {
- 0% {
- -webkit-transform: perspective(120px) rotateX(0deg) rotateY(0deg);
- transform: perspective(120px) rotateX(0deg) rotateY(0deg);
- }
-
- 50% {
- -webkit-transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg);
- transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg);
- }
-
- 100% {
- -webkit-transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg);
- transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg);
- }
-}
-
-@keyframes sk-rotatePlane {
- 0% {
- -webkit-transform: perspective(120px) rotateX(0deg) rotateY(0deg);
- transform: perspective(120px) rotateX(0deg) rotateY(0deg);
- }
-
- 50% {
- -webkit-transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg);
- transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg);
- }
-
- 100% {
- -webkit-transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg);
- transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg);
- }
-}
-
-/*
- * Usage:
- *
- *
- *
- */
-.sk-spinner-double-bounce.sk-spinner {
- width: 40px;
- height: 40px;
- position: relative;
- margin: @spin-margin;
-}
-
-.sk-spinner-double-bounce .sk-double-bounce1, .sk-spinner-double-bounce .sk-double-bounce2 {
- width: 100%;
- height: 100%;
- border-radius: 50%;
- background-color: @spin-color;
- opacity: 0.6;
- position: absolute;
- top: 0;
- left: 0;
- -webkit-animation: sk-doubleBounce 2s infinite ease-in-out;
- animation: sk-doubleBounce 2s infinite ease-in-out;
-}
-
-.sk-spinner-double-bounce .sk-double-bounce2 {
- -webkit-animation-delay: -1s;
- animation-delay: -1s;
-}
-
-@-webkit-keyframes sk-doubleBounce {
- 0%, 100% {
- -webkit-transform: scale(0);
- transform: scale(0);
- }
-
- 50% {
- -webkit-transform: scale(1);
- transform: scale(1);
- }
-}
-
-@keyframes sk-doubleBounce {
- 0%, 100% {
- -webkit-transform: scale(0);
- transform: scale(0);
- }
-
- 50% {
- -webkit-transform: scale(1);
- transform: scale(1);
- }
-}
-
-/*
- * Usage:
- *
- *
- *
- */
-.sk-spinner-wave.sk-spinner {
- margin: @spin-margin;
- width: 50px;
- height: 30px;
- text-align: center;
- font-size: 10px;
-}
-
-.sk-spinner-wave div {
- background-color: @spin-color;
- height: 100%;
- width: 6px;
- display: inline-block;
- -webkit-animation: sk-waveStretchDelay 1.2s infinite ease-in-out;
- animation: sk-waveStretchDelay 1.2s infinite ease-in-out;
-}
-
-.sk-spinner-wave .sk-rect2 {
- -webkit-animation-delay: -1.1s;
- animation-delay: -1.1s;
-}
-
-.sk-spinner-wave .sk-rect3 {
- -webkit-animation-delay: -1s;
- animation-delay: -1s;
-}
-
-.sk-spinner-wave .sk-rect4 {
- -webkit-animation-delay: -0.9s;
- animation-delay: -0.9s;
-}
-
-.sk-spinner-wave .sk-rect5 {
- -webkit-animation-delay: -0.8s;
- animation-delay: -0.8s;
-}
-
-@-webkit-keyframes sk-waveStretchDelay {
- 0%, 40%, 100% {
- -webkit-transform: scaleY(0.4);
- transform: scaleY(0.4);
- }
-
- 20% {
- -webkit-transform: scaleY(1);
- transform: scaleY(1);
- }
-}
-
-@keyframes sk-waveStretchDelay {
- 0%, 40%, 100% {
- -webkit-transform: scaleY(0.4);
- transform: scaleY(0.4);
- }
-
- 20% {
- -webkit-transform: scaleY(1);
- transform: scaleY(1);
- }
-}
-
-/*
- * Usage:
- *
- *
- *
- */
-.sk-spinner-wandering-cubes.sk-spinner {
- margin: @spin-margin;
- width: 32px;
- height: 32px;
- position: relative;
-}
-
-.sk-spinner-wandering-cubes .sk-cube1, .sk-spinner-wandering-cubes .sk-cube2 {
- background-color: @spin-color;
- width: 10px;
- height: 10px;
- position: absolute;
- top: 0;
- left: 0;
- -webkit-animation: sk-wanderingCubeMove 1.8s infinite ease-in-out;
- animation: sk-wanderingCubeMove 1.8s infinite ease-in-out;
-}
-
-.sk-spinner-wandering-cubes .sk-cube2 {
- -webkit-animation-delay: -0.9s;
- animation-delay: -0.9s;
-}
-
-@-webkit-keyframes sk-wanderingCubeMove {
- 25% {
- -webkit-transform: translateX(42px) rotate(-90deg) scale(0.5);
- transform: translateX(42px) rotate(-90deg) scale(0.5);
- }
-
- 50% {
- /* Hack to make FF rotate in the right direction */
- -webkit-transform: translateX(42px) translateY(42px) rotate(-179deg);
- transform: translateX(42px) translateY(42px) rotate(-179deg);
- }
-
- 50.1% {
- -webkit-transform: translateX(42px) translateY(42px) rotate(-180deg);
- transform: translateX(42px) translateY(42px) rotate(-180deg);
- }
-
- 75% {
- -webkit-transform: translateX(0px) translateY(42px) rotate(-270deg) scale(0.5);
- transform: translateX(0px) translateY(42px) rotate(-270deg) scale(0.5);
- }
-
- 100% {
- -webkit-transform: rotate(-360deg);
- transform: rotate(-360deg);
- }
-}
-
-@keyframes sk-wanderingCubeMove {
- 25% {
- -webkit-transform: translateX(42px) rotate(-90deg) scale(0.5);
- transform: translateX(42px) rotate(-90deg) scale(0.5);
- }
-
- 50% {
- /* Hack to make FF rotate in the right direction */
- -webkit-transform: translateX(42px) translateY(42px) rotate(-179deg);
- transform: translateX(42px) translateY(42px) rotate(-179deg);
- }
-
- 50.1% {
- -webkit-transform: translateX(42px) translateY(42px) rotate(-180deg);
- transform: translateX(42px) translateY(42px) rotate(-180deg);
- }
-
- 75% {
- -webkit-transform: translateX(0px) translateY(42px) rotate(-270deg) scale(0.5);
- transform: translateX(0px) translateY(42px) rotate(-270deg) scale(0.5);
- }
-
- 100% {
- -webkit-transform: rotate(-360deg);
- transform: rotate(-360deg);
- }
-}
-
-/*
- * Usage:
- *
- *
- *
- */
-.sk-spinner-pulse.sk-spinner {
- width: 40px;
- height: 40px;
- margin: @spin-margin;
- background-color: @spin-color;
- border-radius: 100%;
- -webkit-animation: sk-pulseScaleOut 1s infinite ease-in-out;
- animation: sk-pulseScaleOut 1s infinite ease-in-out;
-}
-
-@-webkit-keyframes sk-pulseScaleOut {
- 0% {
- -webkit-transform: scale(0);
- transform: scale(0);
- }
-
- 100% {
- -webkit-transform: scale(1);
- transform: scale(1);
- opacity: 0;
- }
-}
-
-@keyframes sk-pulseScaleOut {
- 0% {
- -webkit-transform: scale(0);
- transform: scale(0);
- }
-
- 100% {
- -webkit-transform: scale(1);
- transform: scale(1);
- opacity: 0;
- }
-}
-
-/*
- * Usage:
- *
- *
- *
- */
-.sk-spinner-chasing-dots.sk-spinner {
- margin: @spin-margin;
- width: 40px;
- height: 40px;
- position: relative;
- text-align: center;
- -webkit-animation: sk-chasingDotsRotate 2s infinite linear;
- animation: sk-chasingDotsRotate 2s infinite linear;
-}
-
-.sk-spinner-chasing-dots .sk-dot1, .sk-spinner-chasing-dots .sk-dot2 {
- width: 60%;
- height: 60%;
- display: inline-block;
- position: absolute;
- top: 0;
- background-color: @spin-color;
- border-radius: 100%;
- -webkit-animation: sk-chasingDotsBounce 2s infinite ease-in-out;
- animation: sk-chasingDotsBounce 2s infinite ease-in-out;
-}
-
-.sk-spinner-chasing-dots .sk-dot2 {
- top: auto;
- bottom: 0;
- -webkit-animation-delay: -1s;
- animation-delay: -1s;
-}
-
-@-webkit-keyframes sk-chasingDotsRotate {
- 100% {
- -webkit-transform: rotate(360deg);
- transform: rotate(360deg);
- }
-}
-
-@keyframes sk-chasingDotsRotate {
- 100% {
- -webkit-transform: rotate(360deg);
- transform: rotate(360deg);
- }
-}
-
-@-webkit-keyframes sk-chasingDotsBounce {
- 0%, 100% {
- -webkit-transform: scale(0);
- transform: scale(0);
- }
-
- 50% {
- -webkit-transform: scale(1);
- transform: scale(1);
- }
-}
-
-@keyframes sk-chasingDotsBounce {
- 0%, 100% {
- -webkit-transform: scale(0);
- transform: scale(0);
- }
-
- 50% {
- -webkit-transform: scale(1);
- transform: scale(1);
- }
-}
-
-/*
- * Usage:
- *
- *
- *
- */
-.sk-spinner-three-bounce.sk-spinner {
- margin: @spin-margin;
- width: 70px;
- text-align: center;
-}
-
-.sk-spinner-three-bounce div {
- width: 18px;
- height: 18px;
- background-color: @spin-color;
- border-radius: 100%;
- display: inline-block;
- -webkit-animation: sk-threeBounceDelay 1.4s infinite ease-in-out;
- animation: sk-threeBounceDelay 1.4s infinite ease-in-out;
- /* Prevent first frame from flickering when animation starts */
- -webkit-animation-fill-mode: both;
- animation-fill-mode: both;
-}
-
-.sk-spinner-three-bounce .sk-bounce1 {
- -webkit-animation-delay: -0.32s;
- animation-delay: -0.32s;
-}
-
-.sk-spinner-three-bounce .sk-bounce2 {
- -webkit-animation-delay: -0.16s;
- animation-delay: -0.16s;
-}
-
-@-webkit-keyframes sk-threeBounceDelay {
- 0%, 80%, 100% {
- -webkit-transform: scale(0);
- transform: scale(0);
- }
-
- 40% {
- -webkit-transform: scale(1);
- transform: scale(1);
- }
-}
-
-@keyframes sk-threeBounceDelay {
- 0%, 80%, 100% {
- -webkit-transform: scale(0);
- transform: scale(0);
- }
-
- 40% {
- -webkit-transform: scale(1);
- transform: scale(1);
- }
-}
-
-/*
- * Usage:
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- */
-.sk-spinner-circle.sk-spinner {
- margin: @spin-margin;
- width: 22px;
- height: 22px;
- position: relative;
-}
-
-.sk-spinner-circle .sk-circle {
- width: 100%;
- height: 100%;
- position: absolute;
- left: 0;
- top: 0;
-}
-
-.sk-spinner-circle .sk-circle:before {
- content: '';
- display: block;
- margin: @spin-margin;
- width: 20%;
- height: 20%;
- background-color: @spin-color;
- border-radius: 100%;
- -webkit-animation: sk-circleBounceDelay 1.2s infinite ease-in-out;
- animation: sk-circleBounceDelay 1.2s infinite ease-in-out;
- /* Prevent first frame from flickering when animation starts */
- -webkit-animation-fill-mode: both;
- animation-fill-mode: both;
-}
-
-.sk-spinner-circle .sk-circle2 {
- -webkit-transform: rotate(30deg);
- -ms-transform: rotate(30deg);
- transform: rotate(30deg);
-}
-
-.sk-spinner-circle .sk-circle3 {
- -webkit-transform: rotate(60deg);
- -ms-transform: rotate(60deg);
- transform: rotate(60deg);
-}
-
-.sk-spinner-circle .sk-circle4 {
- -webkit-transform: rotate(90deg);
- -ms-transform: rotate(90deg);
- transform: rotate(90deg);
-}
-
-.sk-spinner-circle .sk-circle5 {
- -webkit-transform: rotate(120deg);
- -ms-transform: rotate(120deg);
- transform: rotate(120deg);
-}
-
-.sk-spinner-circle .sk-circle6 {
- -webkit-transform: rotate(150deg);
- -ms-transform: rotate(150deg);
- transform: rotate(150deg);
-}
-
-.sk-spinner-circle .sk-circle7 {
- -webkit-transform: rotate(180deg);
- -ms-transform: rotate(180deg);
- transform: rotate(180deg);
-}
-
-.sk-spinner-circle .sk-circle8 {
- -webkit-transform: rotate(210deg);
- -ms-transform: rotate(210deg);
- transform: rotate(210deg);
-}
-
-.sk-spinner-circle .sk-circle9 {
- -webkit-transform: rotate(240deg);
- -ms-transform: rotate(240deg);
- transform: rotate(240deg);
-}
-
-.sk-spinner-circle .sk-circle10 {
- -webkit-transform: rotate(270deg);
- -ms-transform: rotate(270deg);
- transform: rotate(270deg);
-}
-
-.sk-spinner-circle .sk-circle11 {
- -webkit-transform: rotate(300deg);
- -ms-transform: rotate(300deg);
- transform: rotate(300deg);
-}
-
-.sk-spinner-circle .sk-circle12 {
- -webkit-transform: rotate(330deg);
- -ms-transform: rotate(330deg);
- transform: rotate(330deg);
-}
-
-.sk-spinner-circle .sk-circle2:before {
- -webkit-animation-delay: -1.1s;
- animation-delay: -1.1s;
-}
-
-.sk-spinner-circle .sk-circle3:before {
- -webkit-animation-delay: -1s;
- animation-delay: -1s;
-}
-
-.sk-spinner-circle .sk-circle4:before {
- -webkit-animation-delay: -0.9s;
- animation-delay: -0.9s;
-}
-
-.sk-spinner-circle .sk-circle5:before {
- -webkit-animation-delay: -0.8s;
- animation-delay: -0.8s;
-}
-
-.sk-spinner-circle .sk-circle6:before {
- -webkit-animation-delay: -0.7s;
- animation-delay: -0.7s;
-}
-
-.sk-spinner-circle .sk-circle7:before {
- -webkit-animation-delay: -0.6s;
- animation-delay: -0.6s;
-}
-
-.sk-spinner-circle .sk-circle8:before {
- -webkit-animation-delay: -0.5s;
- animation-delay: -0.5s;
-}
-
-.sk-spinner-circle .sk-circle9:before {
- -webkit-animation-delay: -0.4s;
- animation-delay: -0.4s;
-}
-
-.sk-spinner-circle .sk-circle10:before {
- -webkit-animation-delay: -0.3s;
- animation-delay: -0.3s;
-}
-
-.sk-spinner-circle .sk-circle11:before {
- -webkit-animation-delay: -0.2s;
- animation-delay: -0.2s;
-}
-
-.sk-spinner-circle .sk-circle12:before {
- -webkit-animation-delay: -0.1s;
- animation-delay: -0.1s;
-}
-
-@-webkit-keyframes sk-circleBounceDelay {
- 0%, 80%, 100% {
- -webkit-transform: scale(0);
- transform: scale(0);
- }
-
- 40% {
- -webkit-transform: scale(1);
- transform: scale(1);
- }
-}
-
-@keyframes sk-circleBounceDelay {
- 0%, 80%, 100% {
- -webkit-transform: scale(0);
- transform: scale(0);
- }
-
- 40% {
- -webkit-transform: scale(1);
- transform: scale(1);
- }
-}
-
-/*
- * Usage:
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- */
-.sk-spinner-cube-grid {
- /*
- * Spinner positions
- * 1 2 3
- * 4 5 6
- * 7 8 9
- */
-}
-
-.sk-spinner-cube-grid.sk-spinner {
- width: 30px;
- height: 30px;
- margin: @spin-margin;
-}
-
-.sk-spinner-cube-grid .sk-cube {
- width: 33%;
- height: 33%;
- background-color: @spin-color;
- float: left;
- -webkit-animation: sk-cubeGridScaleDelay 1.3s infinite ease-in-out;
- animation: sk-cubeGridScaleDelay 1.3s infinite ease-in-out;
-}
-
-.sk-spinner-cube-grid .sk-cube:nth-child(1) {
- -webkit-animation-delay: 0.2s;
- animation-delay: 0.2s;
-}
-
-.sk-spinner-cube-grid .sk-cube:nth-child(2) {
- -webkit-animation-delay: 0.3s;
- animation-delay: 0.3s;
-}
-
-.sk-spinner-cube-grid .sk-cube:nth-child(3) {
- -webkit-animation-delay: 0.4s;
- animation-delay: 0.4s;
-}
-
-.sk-spinner-cube-grid .sk-cube:nth-child(4) {
- -webkit-animation-delay: 0.1s;
- animation-delay: 0.1s;
-}
-
-.sk-spinner-cube-grid .sk-cube:nth-child(5) {
- -webkit-animation-delay: 0.2s;
- animation-delay: 0.2s;
-}
-
-.sk-spinner-cube-grid .sk-cube:nth-child(6) {
- -webkit-animation-delay: 0.3s;
- animation-delay: 0.3s;
-}
-
-.sk-spinner-cube-grid .sk-cube:nth-child(7) {
- -webkit-animation-delay: 0s;
- animation-delay: 0s;
-}
-
-.sk-spinner-cube-grid .sk-cube:nth-child(8) {
- -webkit-animation-delay: 0.1s;
- animation-delay: 0.1s;
-}
-
-.sk-spinner-cube-grid .sk-cube:nth-child(9) {
- -webkit-animation-delay: 0.2s;
- animation-delay: 0.2s;
-}
-
-@-webkit-keyframes sk-cubeGridScaleDelay {
- 0%, 70%, 100% {
- -webkit-transform: scale3D(1, 1, 1);
- transform: scale3D(1, 1, 1);
- }
-
- 35% {
- -webkit-transform: scale3D(0, 0, 1);
- transform: scale3D(0, 0, 1);
- }
-}
-
-@keyframes sk-cubeGridScaleDelay {
- 0%, 70%, 100% {
- -webkit-transform: scale3D(1, 1, 1);
- transform: scale3D(1, 1, 1);
- }
-
- 35% {
- -webkit-transform: scale3D(0, 0, 1);
- transform: scale3D(0, 0, 1);
- }
-}
-
-/*
- * Usage:
- *
- *
- *
- *
- *
- */
-.sk-spinner-wordpress.sk-spinner {
- background-color: @spin-color;
- width: 30px;
- height: 30px;
- border-radius: 30px;
- position: relative;
- margin: @spin-margin;
- -webkit-animation: sk-innerCircle 1s linear infinite;
- animation: sk-innerCircle 1s linear infinite;
-}
-
-.sk-spinner-wordpress .sk-inner-circle {
- display: block;
- background-color: #fff;
- width: 8px;
- height: 8px;
- position: absolute;
- border-radius: 8px;
- top: 5px;
- left: 5px;
-}
-
-@-webkit-keyframes sk-innerCircle {
- 0% {
- -webkit-transform: rotate(0);
- transform: rotate(0);
- }
-
- 100% {
- -webkit-transform: rotate(360deg);
- transform: rotate(360deg);
- }
-}
-
-@keyframes sk-innerCircle {
- 0% {
- -webkit-transform: rotate(0);
- transform: rotate(0);
- }
-
- 100% {
- -webkit-transform: rotate(360deg);
- transform: rotate(360deg);
- }
-}
-
-/*
- * Usage:
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- */
-.sk-spinner-fading-circle.sk-spinner {
- margin: @spin-margin;
- width: 22px;
- height: 22px;
- position: relative;
-}
-
-.sk-spinner-fading-circle .sk-circle {
- width: 100%;
- height: 100%;
- position: absolute;
- left: 0;
- top: 0;
-}
-
-.sk-spinner-fading-circle .sk-circle:before {
- content: '';
- display: block;
- margin: @spin-margin;
- width: 18%;
- height: 18%;
- background-color: @spin-color;
- border-radius: 100%;
- -webkit-animation: sk-circleFadeDelay 1.2s infinite ease-in-out;
- animation: sk-circleFadeDelay 1.2s infinite ease-in-out;
- /* Prevent first frame from flickering when animation starts */
- -webkit-animation-fill-mode: both;
- animation-fill-mode: both;
-}
-
-.sk-spinner-fading-circle .sk-circle2 {
- -webkit-transform: rotate(30deg);
- -ms-transform: rotate(30deg);
- transform: rotate(30deg);
-}
-
-.sk-spinner-fading-circle .sk-circle3 {
- -webkit-transform: rotate(60deg);
- -ms-transform: rotate(60deg);
- transform: rotate(60deg);
-}
-
-.sk-spinner-fading-circle .sk-circle4 {
- -webkit-transform: rotate(90deg);
- -ms-transform: rotate(90deg);
- transform: rotate(90deg);
-}
-
-.sk-spinner-fading-circle .sk-circle5 {
- -webkit-transform: rotate(120deg);
- -ms-transform: rotate(120deg);
- transform: rotate(120deg);
-}
-
-.sk-spinner-fading-circle .sk-circle6 {
- -webkit-transform: rotate(150deg);
- -ms-transform: rotate(150deg);
- transform: rotate(150deg);
-}
-
-.sk-spinner-fading-circle .sk-circle7 {
- -webkit-transform: rotate(180deg);
- -ms-transform: rotate(180deg);
- transform: rotate(180deg);
-}
-
-.sk-spinner-fading-circle .sk-circle8 {
- -webkit-transform: rotate(210deg);
- -ms-transform: rotate(210deg);
- transform: rotate(210deg);
-}
-
-.sk-spinner-fading-circle .sk-circle9 {
- -webkit-transform: rotate(240deg);
- -ms-transform: rotate(240deg);
- transform: rotate(240deg);
-}
-
-.sk-spinner-fading-circle .sk-circle10 {
- -webkit-transform: rotate(270deg);
- -ms-transform: rotate(270deg);
- transform: rotate(270deg);
-}
-
-.sk-spinner-fading-circle .sk-circle11 {
- -webkit-transform: rotate(300deg);
- -ms-transform: rotate(300deg);
- transform: rotate(300deg);
-}
-
-.sk-spinner-fading-circle .sk-circle12 {
- -webkit-transform: rotate(330deg);
- -ms-transform: rotate(330deg);
- transform: rotate(330deg);
-}
-
-.sk-spinner-fading-circle .sk-circle2:before {
- -webkit-animation-delay: -1.1s;
- animation-delay: -1.1s;
-}
-
-.sk-spinner-fading-circle .sk-circle3:before {
- -webkit-animation-delay: -1s;
- animation-delay: -1s;
-}
-
-.sk-spinner-fading-circle .sk-circle4:before {
- -webkit-animation-delay: -0.9s;
- animation-delay: -0.9s;
-}
-
-.sk-spinner-fading-circle .sk-circle5:before {
- -webkit-animation-delay: -0.8s;
- animation-delay: -0.8s;
-}
-
-.sk-spinner-fading-circle .sk-circle6:before {
- -webkit-animation-delay: -0.7s;
- animation-delay: -0.7s;
-}
-
-.sk-spinner-fading-circle .sk-circle7:before {
- -webkit-animation-delay: -0.6s;
- animation-delay: -0.6s;
-}
-
-.sk-spinner-fading-circle .sk-circle8:before {
- -webkit-animation-delay: -0.5s;
- animation-delay: -0.5s;
-}
-
-.sk-spinner-fading-circle .sk-circle9:before {
- -webkit-animation-delay: -0.4s;
- animation-delay: -0.4s;
-}
-
-.sk-spinner-fading-circle .sk-circle10:before {
- -webkit-animation-delay: -0.3s;
- animation-delay: -0.3s;
-}
-
-.sk-spinner-fading-circle .sk-circle11:before {
- -webkit-animation-delay: -0.2s;
- animation-delay: -0.2s;
-}
-
-.sk-spinner-fading-circle .sk-circle12:before {
- -webkit-animation-delay: -0.1s;
- animation-delay: -0.1s;
-}
-
-@-webkit-keyframes sk-circleFadeDelay {
- 0%, 39%, 100% {
- opacity: 0;
- }
-
- 40% {
- opacity: 1;
- }
-}
-
-@keyframes sk-circleFadeDelay {
- 0%, 39%, 100% {
- opacity: 0;
- }
-
- 40% {
- opacity: 1;
- }
-}
-
diff --git a/src/assets/css/inspinia/style.less b/src/assets/css/inspinia/style.less
deleted file mode 100644
index 9520119..0000000
--- a/src/assets/css/inspinia/style.less
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- *
- * INSPINIA - Responsive Admin Theme
- * version 2.6.2
- *
-*/
-// Variables, Mixins
-@import "../global/variables.less";
-@import "mixins.less";
-// INSPINIA Theme Elements
-@import "typography.less";
-@import "buttons.less";
-@import "badgets_labels.less";
-@import "elements.less";
-@import "sidebar.less";
-@import "base.less";
-@import "pages.less";
-@import "chat.less";
-@import "spinners.less";
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/assets/css/inspinia/typography.less b/src/assets/css/inspinia/typography.less
deleted file mode 100644
index d2b51af..0000000
--- a/src/assets/css/inspinia/typography.less
+++ /dev/null
@@ -1,32 +0,0 @@
-h1, h2, h3, h4, h5, h6 {
- font-weight: 100;
-}
-
-h1 {
- font-size: 30px;
-}
-
-h2 {
- font-size: 24px;
-}
-
-h3 {
- font-size: 16px;
-}
-
-h4 {
- font-size: 14px;
-}
-
-h5 {
- font-size: 12px;
-}
-
-h6 {
- font-size: 10px;
-}
-
-h3, h4, h5 {
- margin-top: 5px;
- font-weight: 600;
-}
\ No newline at end of file
diff --git a/src/assets/css/mixin/bootstrap-variables.less b/src/assets/css/mixin/bootstrap-variables.less
deleted file mode 100644
index 93d27c1..0000000
--- a/src/assets/css/mixin/bootstrap-variables.less
+++ /dev/null
@@ -1 +0,0 @@
-@import "~bootstrap/less/variables.less";
\ No newline at end of file
diff --git a/src/assets/img/avatar.png b/src/assets/img/avatar.png
deleted file mode 100644
index 222f0b4..0000000
Binary files a/src/assets/img/avatar.png and /dev/null differ
diff --git a/src/assets/img/error.png b/src/assets/img/error.png
deleted file mode 100644
index 97f79c9..0000000
Binary files a/src/assets/img/error.png and /dev/null differ
diff --git a/src/assets/img/eyeblue.png b/src/assets/img/eyeblue.png
deleted file mode 100644
index e5bdc2c..0000000
Binary files a/src/assets/img/eyeblue.png and /dev/null differ
diff --git a/src/assets/img/favicon.ico b/src/assets/img/favicon.ico
deleted file mode 100644
index 11db608..0000000
Binary files a/src/assets/img/favicon.ico and /dev/null differ
diff --git a/src/assets/img/file/alien.svg b/src/assets/img/file/alien.svg
deleted file mode 100644
index 0c4e1cc..0000000
--- a/src/assets/img/file/alien.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/src/assets/img/file/archive.svg b/src/assets/img/file/archive.svg
deleted file mode 100644
index e4cc6ae..0000000
--- a/src/assets/img/file/archive.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/img/file/audio.svg b/src/assets/img/file/audio.svg
deleted file mode 100644
index 61d679d..0000000
--- a/src/assets/img/file/audio.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/img/file/doc.svg b/src/assets/img/file/doc.svg
deleted file mode 100644
index 5f0c6a6..0000000
--- a/src/assets/img/file/doc.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/img/file/file.svg b/src/assets/img/file/file.svg
deleted file mode 100644
index 90cfac4..0000000
--- a/src/assets/img/file/file.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/img/file/folder.svg b/src/assets/img/file/folder.svg
deleted file mode 100644
index 7556f2a..0000000
--- a/src/assets/img/file/folder.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/src/assets/img/file/image.svg b/src/assets/img/file/image.svg
deleted file mode 100644
index ae44150..0000000
--- a/src/assets/img/file/image.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/img/file/pdf.svg b/src/assets/img/file/pdf.svg
deleted file mode 100644
index 8eb62e6..0000000
--- a/src/assets/img/file/pdf.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/img/file/ppt.svg b/src/assets/img/file/ppt.svg
deleted file mode 100644
index 91e8b70..0000000
--- a/src/assets/img/file/ppt.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/img/file/psd.svg b/src/assets/img/file/psd.svg
deleted file mode 100644
index d2d7499..0000000
--- a/src/assets/img/file/psd.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/img/file/text.svg b/src/assets/img/file/text.svg
deleted file mode 100644
index 74e9b0b..0000000
--- a/src/assets/img/file/text.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/img/file/video.svg b/src/assets/img/file/video.svg
deleted file mode 100644
index cba33b3..0000000
--- a/src/assets/img/file/video.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/img/file/xls.svg b/src/assets/img/file/xls.svg
deleted file mode 100644
index 1f08d9f..0000000
--- a/src/assets/img/file/xls.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/img/logo.png b/src/assets/img/logo.png
deleted file mode 100644
index 2dfe1ae..0000000
Binary files a/src/assets/img/logo.png and /dev/null differ
diff --git a/src/assets/img/success.svg b/src/assets/img/success.svg
deleted file mode 100644
index d5336e0..0000000
--- a/src/assets/img/success.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/img/upload.png b/src/assets/img/upload.png
deleted file mode 100644
index d6fe75b..0000000
Binary files a/src/assets/img/upload.png and /dev/null differ
diff --git a/src/common/directive/directive.js b/src/common/directive/directive.js
deleted file mode 100644
index 2880d31..0000000
--- a/src/common/directive/directive.js
+++ /dev/null
@@ -1,15 +0,0 @@
-import Vue from 'vue'
-import $ from 'jquery'
-
-//用于表单验证的指令
-Vue.directive('validator', {
- update: function (el, binding, vnode) {
- if (binding.value && binding.value !== binding.oldValue) {
- //先删除之前的,再寻求添加新的
- $(el).find('.validate').children().removeClass('border-danger').next('div').remove()
- $(el).find('.validate').children().addClass('border-danger').parent().append(' ' + binding.value + '
')
- } else if (!binding.value) {
- $(el).find('.validate').children().removeClass('border-danger').next('div').remove()
- }
- }
-})
diff --git a/src/common/filter/index.js b/src/common/filter/index.js
deleted file mode 100644
index 3bf7f18..0000000
--- a/src/common/filter/index.js
+++ /dev/null
@@ -1,8 +0,0 @@
-import * as numberFilters from './number'
-import * as timeFilters from './time'
-import * as strFilters from './str'
-
-
-export default {...numberFilters, ...timeFilters, ...strFilters}
-
-
diff --git a/src/common/filter/number.js b/src/common/filter/number.js
deleted file mode 100644
index 6223d97..0000000
--- a/src/common/filter/number.js
+++ /dev/null
@@ -1,13 +0,0 @@
-export function twoDigital(num) {
-
- if (num) {
- if (parseInt(num) === num) {
- return num;
- } else {
- return num.toFixed(2);
- }
- } else {
- return num;
- }
-
-}
diff --git a/src/common/filter/str.js b/src/common/filter/str.js
deleted file mode 100644
index 16224f3..0000000
--- a/src/common/filter/str.js
+++ /dev/null
@@ -1,132 +0,0 @@
-export function startWith(str, prefix) {
- if (typeof prefix === 'undefined' || prefix === null || prefix === '' || typeof str === 'undefined' || str === null || str.length === 0 || prefix.length > str.length) {
- return false
- }
-
- return str.substr(0, prefix.length) === prefix
-}
-
-export function endWith(str, suffix) {
- if (suffix === null || suffix === '' || str === null || str.length === 0 || suffix.length > str.length) {
- return false
- }
-
- return str.substring(str.length - suffix.length) === suffix
-}
-
-//获取文件后缀名
-export function getExtension(filename) {
-
- if (!filename) {
- return ''
- }
-
- let index1 = filename.lastIndexOf('.')
- if (index1 === -1) {
- return ''
- }
- let index2 = filename.length
- return filename.substring(index1, index2)
-}
-
-//一个字符串包含子字符串
-export function containStr(father, child) {
-
- if (father === null || father === '') {
- return false
- }
- return father.indexOf(child) !== -1
-}
-
-//把一个大小转变成方便读的格式
-//human readable file size
-export function humanFileSize(bytes, si = false) {
- let thresh = si ? 1000 : 1024
- if (Math.abs(bytes) < thresh) {
- return bytes + ' B'
- }
- let units = si
- ? ['KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB']
- : ['kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']
- let u = -1
- do {
- bytes /= thresh
- ++u
- } while (Math.abs(bytes) >= thresh && u < units.length - 1)
- return bytes.toFixed(1) + ' ' + units[u]
-}
-
-//把数字转换成中文大写金额
-export function numberCapital(num) {
- let strOutput = ''
- let strUnit = '仟佰拾亿仟佰拾万仟佰拾元角分'
- num += '00'
- let intPos = num.indexOf('.')
- if (intPos >= 0) {
-
- num = num.substring(0, intPos) + num.substr(intPos + 1, 2)
- }
- strUnit = strUnit.substr(strUnit.length - num.length)
- for (let i = 0; i < num.length; i++) {
-
- strOutput += '零壹贰叁肆伍陆柒捌玖'.substr(num.substr(i, 1), 1) + strUnit.substr(i, 1)
- }
- return strOutput.replace(/零角零分$/, '整').replace(/零[仟佰拾]/g, '零').replace(/零{2,}/g, '零').replace(/零([亿|万])/g, '$1').replace(/零+元/, '元').replace(/亿零{0,3}万/, '亿').replace(/^元/, '零元')
-}
-
-//转换成首字母小写的驼峰法
-export function lowerCamel(str) {
-
- if (!str) {
- console.error('不能转换空的驼峰字符串。')
- return str
- }
-
- return str.replace(/(?:^\w|[A-Z]|\b\w)/g, function (letter, index) {
- return index === 0 ? letter.toLowerCase() : letter.toUpperCase()
- }).replace(/\s+/g, '')
-}
-
-//转换成全部小写的使用 /分隔的字符串. 比如uploadToken会得到 /upload/token
-export function lowerSlash(str) {
- return str.replace(/(?:^\w|[A-Z]|\b\w)/g, function (letter, index) {
- return '/' + letter.toLowerCase()
- }).replace(/\s+/g, '')
-}
-
-/*
- 名词变复数归纳总结
- 1.一般情况下,在名词后加“s”或“es”.
- 2.以s,sh,ch,x结尾的名字,在名词后直接加“es”.
- 3.以o结尾的名字,有两种情况:
- 1)有生命的名词,在名词后加“es”.
- 如:tomato-tomatoes potato-potatoes
- 2)无生命的名字,在名字后加“s”.
- 如:photo-photos radio-radios
- 注意:使用java一律采用加“s”的策略
- 4.以辅音字母+y结尾的名词,将y改变为i,再加-es.
- 元音字母+y结尾的名词则直接加s
- */
-export function toPlural(singular) {
-
- if (!singular) {
- console.error('不能转换空字符为复数形式。')
- return singular
- }
- let length = singular.length
- //一个字母的直接加个s.
- if (length === 1) {
- return singular + 's'
- }
-
- let lastChar = singular[length - 1]
- let lastSecondChar = singular[length - 2]
- if (lastChar === 's' || lastChar === 'x' || (lastChar === 'h' && (lastSecondChar === 's' || lastSecondChar === 'c'))) {
- return singular + 'es'
- } else if (lastChar === 'y' && (lastSecondChar !== 'a' && lastSecondChar !== 'e' && lastSecondChar !== 'i' && lastSecondChar !== 'o' && lastSecondChar !== 'u')) {
- return singular.substring(0, length - 1) + 'ies'
- } else {
- return singular + 's'
- }
-
-}
diff --git a/src/common/filter/time.js b/src/common/filter/time.js
deleted file mode 100644
index 2ccbe17..0000000
--- a/src/common/filter/time.js
+++ /dev/null
@@ -1,379 +0,0 @@
-//定义一个转换器
-/** * 对Date的扩展,将 Date 转化为指定格式的String * 月(M)、日(d)、12小时(h)、24小时(H)、分(m)、秒(s)、周(E)、季度(q)
- 可以用 1-2 个占位符 * 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字) * eg: * (new
- Date()).pattern("yyyy-MM-dd hh:mm:ss.S")==> 2006-07-02 08:09:04.423
- * (new Date()).pattern("yyyy-MM-dd E HH:mm:ss") ==> 2009-03-10 二 20:09:04
- * (new Date()).pattern("yyyy-MM-dd EE hh:mm:ss") ==> 2009-03-10 周二 08:09:04
- * (new Date()).pattern("yyyy-MM-dd EEE hh:mm:ss") ==> 2009-03-10 星期二 08:09:04
- * (new Date()).pattern("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18
- */
-if (!Date.prototype.format) {
- Date.prototype.format = function (fmt) {
- let o = {
- 'M+': this.getMonth() + 1, //月份
- 'd+': this.getDate(), //日
- 'h+': this.getHours() % 12 === 0 ? 12 : this.getHours() % 12, //小时
- 'H+': this.getHours(), //小时
- 'm+': this.getMinutes(), //分
- 's+': this.getSeconds(), //秒
- 'q+': Math.floor((this.getMonth() + 3) / 3), //季度
- 'S': this.getMilliseconds() //毫秒
- }
- let week = {
- '0': '/u65e5',
- '1': '/u4e00',
- '2': '/u4e8c',
- '3': '/u4e09',
- '4': '/u56db',
- '5': '/u4e94',
- '6': '/u516d'
- }
- if (/(y+)/.test(fmt)) {
- fmt = fmt.replace(RegExp.$1, (this.getFullYear() + '').substr(4 - RegExp.$1.length))
- }
- if (/(E+)/.test(fmt)) {
- fmt = fmt.replace(RegExp.$1, ((RegExp.$1.length > 1) ? (RegExp.$1.length > 2 ? '/u661f/u671f' : '/u5468') : '') + week[this.getDay() + ''])
- }
- for (let k in o) {
- if (new RegExp('(' + k + ')').test(fmt)) {
- fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length)))
- }
- }
- return fmt
- }
-}
-
-if (!Date.prototype.setISO8601) {
- Date.prototype.setISO8601 = function (string) {
- let regexp = '([0-9]{4})(-([0-9]{2})(-([0-9]{2})' +
- '(T([0-9]{2}):([0-9]{2})(:([0-9]{2})(\.([0-9]+))?)?' +
- '(Z|(([-+])([0-9]{2}):([0-9]{2})))?)?)?)?'
- if (string) {
- let d = string.match(new RegExp(regexp))
- let offset = 0
- let date = new Date(d[1], 0, 1)
-
- if (d[3]) {
- date.setMonth(d[3] - 1)
- }
- if (d[5]) {
- date.setDate(d[5])
- }
- if (d[7]) {
- date.setHours(d[7])
- }
- if (d[8]) {
- date.setMinutes(d[8])
- }
- if (d[10]) {
- date.setSeconds(d[10])
- }
- if (d[12]) {
- date.setMilliseconds(Number('0.' + d[12]) * 1000)
- }
- if (d[14]) {
- offset = (Number(d[16]) * 60) + Number(d[17])
- offset *= ((d[15] === '-') ? 1 : -1)
- }
- offset -= date.getTimezoneOffset()
- let time = (Number(date) + (offset * 60 * 1000))
- this.setTime(Number(time))
- }
- }
-}
-
-//将js的时间对象,转换成yyyy-MM-dd格式的字符串
-export function simpleDate (d, fallback = null) {
- if (d instanceof Date) {
- return d.format('yyyy-MM-dd')
- } else if (d === null) {
- return fallback
- } else {
- return 'Invalid Date:' + d
- }
-}
-
-//将js的时间对象,转换成MM-dd格式的字符串
-export function simpleMiniDate (d, fallback = null) {
- if (d instanceof Date) {
- return d.format('MM-dd')
- } else if (d === null) {
- return fallback
- } else {
- return 'Invalid Date:' + d
- }
-}
-
-//将js的时间对象,转换成yyyy-MM-dd HH:mm:ss格式的字符串
-export function simpleDateTime (d, fallback = null) {
- if (d instanceof Date) {
- return d.format('yyyy-MM-dd HH:mm:ss')
- } else if (d === null) {
- return fallback
- } else {
- console.error('Time format error:' + d)
- return 'Invalid Date:' + d
- }
-}
-
-//将js的时间对象,转换成yyyy-MM-dd HH:mm格式的字符串
-export function simpleDateHourMinute (d, fallback = null) {
- if (d instanceof Date) {
- return d.format('yyyy-MM-dd HH:mm')
- } else if (d === null) {
- return fallback
- } else {
- console.error('Time format error:' + d)
- return 'Invalid Date:' + d
- }
-}
-
-//将js的时间对象,转换成HH:mm:ss格式的字符串
-export function simpleTime (d, fallback = null) {
-
- if (d instanceof Date) {
- return d.format('HH:mm:ss')
- } else if (d === null) {
- return fallback
- } else {
- return 'Invalid Date:' + d
- }
-}
-
-//将js的时间对象,转换成HH:mm格式的字符串
-export function simpleMinute (d, fallback = null) {
-
- if (d instanceof Date) {
- return d.format('HH:mm')
- } else if (d === null) {
- return fallback
- } else {
- return 'Invalid Date:' + d
- }
-}
-
-//将js的时间对象,转换成dd格式的字符串
-export function simpleDay (d, fallback = null) {
-
- if (d instanceof Date) {
- return d.format('dd')
- } else if (d === null) {
- return fallback
- } else {
- return 'Invalid Date:' + d
- }
-}
-
-//将js的时间对象,转换成yyyy-MM格式的字符串
-export function simpleYearAndMonth (d, fallback = null) {
-
- if (d instanceof Date) {
- return d.format('yyyy-MM')
- } else if (d === null) {
- return fallback
- } else {
- return 'Invalid Date:' + d
- }
-}
-
-//将js的时间对象,转换成人性化的时间。当天:15:34 2017-04-03
-export function humanTime (d, fallback = null) {
-
- let now = new Date()
- if (d instanceof Date) {
-
- if (now.toDateString() === d.toDateString()) {
- return d.format('HH:mm')
- } else {
- return d.format('yyyy-MM-dd')
- }
- } else if (d === null) {
- return fallback
- } else {
- return 'Invalid Date:' + d
- }
-}
-
-//将时间戳转换成易读的格式
-export function unixTimeStamp2simpleDate (timestamp) {
-
- if ((typeof timestamp) === 'number') {
- let unixTimestamp = new Date(timestamp)
-
- return unixTimestamp.format('yyyy-MM-dd')
-
- } else {
-
- return 'Invalid timestamp'
-
- }
-}
-
-//将时间戳转换成易读的格式
-export function unixTimeStamp2simpleDateTime (timestamp) {
-
- if ((typeof timestamp) === 'number') {
-
- let unixTimestamp = new Date(timestamp)
-
- return unixTimestamp.format('yyyy-MM-dd HH:mm')
-
- } else {
-
- return 'Invalid timestamp'
-
- }
-}
-
-//将java时间字符串转换成易读的格式
-export function str2simpleDate (str) {
- if (!str) {
- return 'Invalid time'
- }
-
- let d = new Date()
- d.setISO8601(str)
-
- return d.format('yyyy-MM-dd')
-
-}
-
-//将java时间字符串转换成易读的格式
-export function str2simpleDateTime (str) {
-
- if (!str) {
- return 'Invalid time'
- }
-
- let d = new Date()
- d.setISO8601(str)
- return d.format('yyyy-MM-dd HH:mm')
-
-}
-
-//将java时间字符串转换成易读的格式
-export function str2DateTime (str) {
-
- if (!str) {
- return 'Invalid time'
- }
-
- let d = new Date()
- d.setISO8601(str)
- return d.format('yyyy-MM-dd HH:mm:ss')
-
-}
-
-//将java时间字符串转化成js date
-export function str2Date (str) {
- if (!str) {
- return null
- }
-
- if (str instanceof Date) {
- return str
- }
-
- //尝试转换时间戳
- if (typeof str === 'number') {
- return new Date(str)
- }
- //尝试转换yyyy-MM-dd HH:mm:ss 这种格式
- if (str.length === 19) {
- return new Date(Date.parse(str.replace(/-/g, '/')))
- }
-
- //尝试转换yyyy-MM-dd这种格式
- if (str.length === 10) {
- return new Date(str)
- }
-
- let d = new Date()
- try {
- d.setISO8601(str)
- return d
- } catch (e) {
- console.error('error date format:' + str)
- return null
- }
-
-}
-
-//将时间戳转换成易读的格式
-export function str2simpleTime (str) {
-
- if (!str) {
- return 'Invalid time'
- }
- let d = new Date()
- d.setISO8601(str)
- return d.format('HH:mm')
-}
-
-//将时间戳转换成毫秒形式
-export function str2timeStamp (str) {
-
- if (!str) {
- return 'Invalid time'
- }
- let d = new Date()
- d.setISO8601(str)
- return d.getTime()
-}
-
-//将日期转换成相对于今天的星期几。昨天,明天,今天
-export function date2Weekday (date) {
- let today = new Date()
- let dateYear = date.getFullYear()
- let dateMonth = date.getMonth()
- let dateDate = date.getDate()
- let todayYear = today.getFullYear()
- let todayMonth = today.getMonth()
- let todayDate = today.getDate()
- if (dateYear === todayYear && dateMonth === todayMonth && Math.abs(dateDate - todayDate) <= 1) {
- if (dateDate === todayDate) {
- return '今天'
- } else if (dateDate === (todayDate + 1)) {
- return '明天'
- } else if (dateDate === (todayDate - 1)) {
- return '昨天'
- }
- } else {
- if (date.getDay() === 0) {
- return '星期日'
- } else if (date.getDay() === 1) {
- return '星期一'
- } else if (date.getDay() === 2) {
- return '星期二'
- } else if (date.getDay() === 3) {
- return '星期三'
- } else if (date.getDay() === 4) {
- return '星期四'
- } else if (date.getDay() === 5) {
- return '星期五'
- } else if (date.getDay() === 6) {
- return '星期六'
- }
- }
-}
-
-//返回前一天的日期
-export function preDay (date) {
- return new Date(date.getTime() - 24 * 60 * 60 * 1000)
-}
-
-//返回后一天的日期
-export function nextDay (date) {
- return new Date(date.getTime() + 24 * 60 * 60 * 1000)
-}
-
-//这个是为了兼容pdf预览时pebble的过滤器。
-export function date (d, format) {
-
- if (d instanceof Date) {
- return d.format(format)
- } else {
- return ''
- }
-
-}
diff --git a/src/common/fork/icheck/blue.css b/src/common/fork/icheck/blue.css
deleted file mode 100644
index c290097..0000000
--- a/src/common/fork/icheck/blue.css
+++ /dev/null
@@ -1,59 +0,0 @@
-/* iCheck plugin Minimal skin, blue
------------------------------------ */
-.icheckbox_minimal-blue,
-.iradio_minimal-blue {
- display: inline-block;
- *display: inline;
- vertical-align: middle;
- margin: 0;
- padding: 0;
- width: 18px;
- height: 18px;
- background: url(blue.png) no-repeat;
- border: none;
- cursor: pointer;
-}
-
-.icheckbox_minimal-blue {
- background-position: 0 0;
-}
- .icheckbox_minimal-blue.hover {
- background-position: -20px 0;
- }
- .icheckbox_minimal-blue.checked {
- background-position: -40px 0;
- }
- .icheckbox_minimal-blue.disabled {
- background-position: -60px 0;
- cursor: default;
- }
- .icheckbox_minimal-blue.checked.disabled {
- background-position: -80px 0;
- }
-
-.iradio_minimal-blue {
- background-position: -100px 0;
-}
- .iradio_minimal-blue.hover {
- background-position: -120px 0;
- }
- .iradio_minimal-blue.checked {
- background-position: -140px 0;
- }
- .iradio_minimal-blue.disabled {
- background-position: -160px 0;
- cursor: default;
- }
- .iradio_minimal-blue.checked.disabled {
- background-position: -180px 0;
- }
-
-/* HiDPI support */
-@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
- .icheckbox_minimal-blue,
- .iradio_minimal-blue {
- background-image: url(blue@2x.png);
- -webkit-background-size: 200px 20px;
- background-size: 200px 20px;
- }
-}
\ No newline at end of file
diff --git a/src/common/fork/icheck/blue.png b/src/common/fork/icheck/blue.png
deleted file mode 100644
index 8c42422..0000000
Binary files a/src/common/fork/icheck/blue.png and /dev/null differ
diff --git a/src/common/fork/icheck/blue@2x.png b/src/common/fork/icheck/blue@2x.png
deleted file mode 100644
index bca845c..0000000
Binary files a/src/common/fork/icheck/blue@2x.png and /dev/null differ
diff --git a/src/common/fork/icheck/icheck-vue.js b/src/common/fork/icheck/icheck-vue.js
deleted file mode 100644
index 396c635..0000000
--- a/src/common/fork/icheck/icheck-vue.js
+++ /dev/null
@@ -1,510 +0,0 @@
-/*!
- * iCheck v1.0.2, http://git.io/arlzeA
- * ===================================
- * Powerful jQuery and Zepto plugin for checkboxes and radio buttons customization
- *
- * (c) 2013 Damir Sultanov, http://fronteed.com
- * MIT Licensed
- */
-
-export default function iCheck($) {
-
- // Cached vars
- var _iCheck = 'iCheck',
- _iCheckHelper = _iCheck + '-helper',
- _checkbox = 'checkbox',
- _radio = 'radio',
- _checked = 'checked',
- _unchecked = 'un' + _checked,
- _disabled = 'disabled',
- _determinate = 'determinate',
- _indeterminate = 'in' + _determinate,
- _update = 'update',
- _type = 'type',
- _click = 'click',
- _touch = 'touchbegin.i touchend.i',
- _add = 'addClass',
- _remove = 'removeClass',
- _callback = 'trigger',
- _label = 'label',
- _cursor = 'cursor',
- _mobile = /ipad|iphone|ipod|android|blackberry|windows phone|opera mini|silk/i.test(navigator.userAgent);
-
- // Plugin init
- $.fn[_iCheck] = function (options, fire) {
-
- // Walker
- var handle = 'input[type="' + _checkbox + '"], input[type="' + _radio + '"]',
- stack = $(),
- walker = function (object) {
- object.each(function () {
- var self = $(this);
-
- if (self.is(handle)) {
- stack = stack.add(self);
- } else {
- stack = stack.add(self.find(handle));
- }
- });
- };
-
- // Check if we should operate with some method
- if (/^(check|uncheck|toggle|indeterminate|determinate|disable|enable|update|destroy)$/i.test(options)) {
-
- // Normalize method's name
- options = options.toLowerCase();
-
- // Find checkboxes and radio buttons
- walker(this);
-
- return stack.each(function () {
- var self = $(this);
-
- if (options == 'destroy') {
- tidy(self, 'ifDestroyed');
- } else {
- operate(self, true, options);
- }
-
- // Fire method's callback
- if ($.isFunction(fire)) {
- fire();
- }
- });
-
- // Customization
- } else if (typeof options == 'object' || !options) {
-
- // Check if any options were passed
- var settings = $.extend({
- checkedClass: _checked,
- disabledClass: _disabled,
- indeterminateClass: _indeterminate,
- labelHover: true
- }, options),
-
- selector = settings.handle,
- hoverClass = settings.hoverClass || 'hover',
- focusClass = settings.focusClass || 'focus',
- activeClass = settings.activeClass || 'active',
- labelHover = !!settings.labelHover,
- labelHoverClass = settings.labelHoverClass || 'hover',
-
- // Setup clickable area
- area = ('' + settings.increaseArea).replace('%', '') | 0;
-
- // Selector limit
- if (selector == _checkbox || selector == _radio) {
- handle = 'input[type="' + selector + '"]';
- }
-
- // Clickable area limit
- if (area < -50) {
- area = -50;
- }
-
- // Walk around the selector
- walker(this);
-
- return stack.each(function () {
- var self = $(this);
-
- // If already customized
- tidy(self);
-
- var node = this,
- id = node.id,
-
- // Layer styles
- offset = -area + '%',
- size = 100 + (area * 2) + '%',
- layer = {
- position: 'absolute',
- top: offset,
- left: offset,
- display: 'block',
- width: size,
- height: size,
- margin: 0,
- padding: 0,
- background: '#fff',
- border: 0,
- opacity: 0
- },
-
- // Choose how to hide input
- hide = _mobile ? {
- position: 'absolute',
- visibility: 'hidden'
- } : area ? layer : {
- position: 'absolute',
- opacity: 0
- },
-
- // Get proper class
- className = node[_type] == _checkbox ? settings.checkboxClass || 'i' + _checkbox : settings.radioClass || 'i' + _radio,
-
- // Find assigned labels
- label = $(_label + '[for="' + id + '"]').add(self.closest(_label)),
-
- // Check ARIA option
- aria = !!settings.aria,
-
- // Set ARIA placeholder
- ariaID = _iCheck + '-' + Math.random().toString(36).substr(2, 6),
-
- // Parent & helper
- parent = '
')[_callback]('ifCreated').parent().append(settings.insert);
-
- // Layer addition
- helper = $(' ').css(layer).appendTo(parent);
-
- // Finalize customization
- self.data(_iCheck, {o: settings, s: self.attr('style')}).css(hide);
- !!settings.inheritClass && parent[_add](node.className || '');
- !!settings.inheritID && id && parent.attr('id', _iCheck + '-' + id);
- parent.css('position') == 'static' && parent.css('position', 'relative');
- operate(self, true, _update);
-
- // Label events
- if (label.length) {
- label.on(_click + '.i mouseover.i mouseout.i ' + _touch, function (event) {
- var type = event[_type],
- item = $(this);
-
- // Do nothing if input is disabled
- if (!node[_disabled]) {
-
- // Click
- if (type == _click) {
- if ($(event.target).is('a')) {
- return;
- }
- operate(self, false, true);
-
- // Hover state
- } else if (labelHover) {
-
- // mouseout|touchend
- if (/ut|nd/.test(type)) {
- parent[_remove](hoverClass);
- item[_remove](labelHoverClass);
- } else {
- parent[_add](hoverClass);
- item[_add](labelHoverClass);
- }
- }
-
- if (_mobile) {
- event.stopPropagation();
- } else {
- return false;
- }
- }
- });
- }
-
- // Input events
- self.on(_click + '.i focus.i blur.i keyup.i keydown.i keypress.i', function (event) {
- var type = event[_type],
- key = event.keyCode;
-
- // Click
- if (type == _click) {
- return false;
-
- // Keydown
- } else if (type == 'keydown' && key == 32) {
- if (!(node[_type] == _radio && node[_checked])) {
- if (node[_checked]) {
- off(self, _checked);
- } else {
- on(self, _checked);
- }
- }
-
- return false;
-
- // Keyup
- } else if (type == 'keyup' && node[_type] == _radio) {
- !node[_checked] && on(self, _checked);
-
- // Focus/blur
- } else if (/us|ur/.test(type)) {
- parent[type == 'blur' ? _remove : _add](focusClass);
- }
- });
-
- // Helper events
- helper.on(_click + ' mousedown mouseup mouseover mouseout ' + _touch, function (event) {
- var type = event[_type],
-
- // mousedown|mouseup
- toggle = /wn|up/.test(type) ? activeClass : hoverClass;
-
- // Do nothing if input is disabled
- if (!node[_disabled]) {
-
- // Click
- if (type == _click) {
- operate(self, false, true);
-
- // Active and hover states
- } else {
-
- // State is on
- if (/wn|er|in/.test(type)) {
-
- // mousedown|mouseover|touchbegin
- parent[_add](toggle);
-
- // State is off
- } else {
- parent[_remove](toggle + ' ' + activeClass);
- }
-
- // Label hover
- if (label.length && labelHover && toggle == hoverClass) {
-
- // mouseout|touchend
- label[/ut|nd/.test(type) ? _remove : _add](labelHoverClass);
- }
- }
-
- if (_mobile) {
- event.stopPropagation();
- } else {
- return false;
- }
- }
- });
- });
- } else {
- return this;
- }
- };
-
- // Do something with inputs
- function operate(input, direct, method) {
- var node = input[0],
- state = /er/.test(method) ? _indeterminate : /bl/.test(method) ? _disabled : _checked,
- active = method == _update ? {
- checked: node[_checked],
- disabled: node[_disabled],
- indeterminate: input.attr(_indeterminate) == 'true' || input.attr(_determinate) == 'false'
- } : node[state];
-
- // Check, disable or indeterminate
- if (/^(ch|di|in)/.test(method) && !active) {
- on(input, state);
-
- // Uncheck, enable or determinate
- } else if (/^(un|en|de)/.test(method) && active) {
- off(input, state);
-
- // Update
- } else if (method == _update) {
-
- // Handle states
- for (var each in active) {
- if (active[each]) {
- on(input, each, true);
- } else {
- off(input, each, true);
- }
- }
-
- } else if (!direct || method == 'toggle') {
-
- // Helper or label was clicked
- if (!direct) {
- input[_callback]('ifClicked');
- }
-
- // Toggle checked state
- if (active) {
- if (node[_type] !== _radio) {
- off(input, state);
- }
- } else {
- on(input, state);
- }
- }
- }
-
- // Add checked, disabled or indeterminate state
- function on(input, state, keep) {
- var node = input[0],
- parent = input.parent(),
- checked = state == _checked,
- indeterminate = state == _indeterminate,
- disabled = state == _disabled,
- callback = indeterminate ? _determinate : checked ? _unchecked : 'enabled',
- regular = option(input, callback + capitalize(node[_type])),
- specific = option(input, state + capitalize(node[_type]));
-
- // Prevent unnecessary actions
- if (node[state] !== true) {
-
- // Toggle assigned radio buttons
- if (!keep && state == _checked && node[_type] == _radio && node.name) {
- var form = input.closest('form'),
- inputs = 'input[name="' + node.name + '"]';
-
- inputs = form.length ? form.find(inputs) : $(inputs);
-
- inputs.each(function () {
- if (this !== node && $(this).data(_iCheck)) {
- off($(this), state);
- }
- });
- }
-
- // Indeterminate state
- if (indeterminate) {
-
- // Add indeterminate state
- node[state] = true;
-
- // Remove checked state
- if (node[_checked]) {
- off(input, _checked, 'force');
- }
-
- // Checked or disabled state
- } else {
-
- // Add checked or disabled state
- if (!keep) {
- node[state] = true;
- }
-
- // Remove indeterminate state
- if (checked && node[_indeterminate]) {
- off(input, _indeterminate, false);
- }
- }
-
- // Trigger callbacks
- callbacks(input, checked, state, keep);
- }
-
- // Add proper cursor
- if (node[_disabled] && !!option(input, _cursor, true)) {
- parent.find('.' + _iCheckHelper).css(_cursor, 'default');
- }
-
- // Add state class
- parent[_add](specific || option(input, state) || '');
-
- // Set ARIA attribute
- if (!!parent.attr('role') && !indeterminate) {
- parent.attr('aria-' + (disabled ? _disabled : _checked), 'true');
- }
-
- // Remove regular state class
- parent[_remove](regular || option(input, callback) || '');
- }
-
- // Remove checked, disabled or indeterminate state
- function off(input, state, keep) {
- var node = input[0],
- parent = input.parent(),
- checked = state == _checked,
- indeterminate = state == _indeterminate,
- disabled = state == _disabled,
- callback = indeterminate ? _determinate : checked ? _unchecked : 'enabled',
- regular = option(input, callback + capitalize(node[_type])),
- specific = option(input, state + capitalize(node[_type]));
-
- // Prevent unnecessary actions
- if (node[state] !== false) {
-
- // Toggle state
- if (indeterminate || !keep || keep == 'force') {
- node[state] = false;
- }
-
- // Trigger callbacks
- callbacks(input, checked, callback, keep);
- }
-
- // Add proper cursor
- if (!node[_disabled] && !!option(input, _cursor, true)) {
- parent.find('.' + _iCheckHelper).css(_cursor, 'pointer');
- }
-
- // Remove state class
- parent[_remove](specific || option(input, state) || '');
-
- // Set ARIA attribute
- if (!!parent.attr('role') && !indeterminate) {
- parent.attr('aria-' + (disabled ? _disabled : _checked), 'false');
- }
-
- // Add regular state class
- parent[_add](regular || option(input, callback) || '');
- }
-
- // Remove all traces
- function tidy(input, callback) {
- if (input.data(_iCheck)) {
-
- // Remove everything except input
- input.parent().html(input.attr('style', input.data(_iCheck).s || ''));
-
- // Callback
- if (callback) {
- input[_callback](callback);
- }
-
- // Unbind events
- input.off('.i').unwrap();
- $(_label + '[for="' + input[0].id + '"]').add(input.closest(_label)).off('.i');
- }
- }
-
- // Get some option
- function option(input, state, regular) {
- if (input.data(_iCheck)) {
- return input.data(_iCheck).o[state + (regular ? '' : 'Class')];
- }
- }
-
- // Capitalize some string
- function capitalize(string) {
- return string.charAt(0).toUpperCase() + string.slice(1);
- }
-
- // Executable handlers
- function callbacks(input, checked, callback, keep) {
- if (!keep) {
- if (checked) {
- input[_callback]('ifToggled');
- }
-
- input[_callback]('ifChanged')[_callback]('if' + capitalize(callback));
- }
- }
-}
-
diff --git a/src/common/i18n/index.js b/src/common/i18n/index.js
deleted file mode 100644
index 677c434..0000000
--- a/src/common/i18n/index.js
+++ /dev/null
@@ -1,567 +0,0 @@
-// 准备翻译的语言环境信息
-let i18nMessage = {
- en: {
- eyeblueTank: "EyeblueTank",
- dashboard: {
- totalInvokeNum: 'Total PV',
- weekRate: 'Week',
- dayRate: 'Day',
- yesterdayInvoke: 'Yesterday PV',
- totalUV: 'Total UV',
- yesterdayUV: 'Yesterday UV',
- totalMatterNum: 'Total file num',
- yesterdayMatterNum: 'Yesterday File Num',
- totalFileSize: 'Total File Size',
- yesterdayMatterSize: 'Yesterday File Size',
- recentDayInvokeUV: 'Recent {0} days PV/UV',
- downloadMatterTop10: 'File download TOP10',
- activeIpTop10: 'Active IP TOP10',
- loading: 'loading...',
- date: 'Date',
- num: 'Num'
- },
- install: {
- configMysql: "Config MySQL",
- port: "Port",
- schema: "Schema",
- mysqlConnectionPass: "Connect MySQL Ok",
- testMysqlConnection: "Tes MySQL Connection",
- notice: "Notice",
- mysqlNotice1: "If Mysql and EyeblueTank installed on the same server, Host is 127.0.0.1",
- mysqlNotice2: "Your mysql account must have access to create table, or the second step will fail.",
- validateMysqlFirst: "Please test the mysql connection firstly.",
- preStep: "Pre Step",
- nextStep: "Next Step",
- createTable: "Craete Tables",
- installed: "Installed",
- installedButMissing: "Installed, but missing fields",
- toBeInstalled: "To be installed",
- allFields: "All fields",
- missingFields: "Missing fields",
- tableNotice: "'Create Tables' will trigger the following actions:",
- tableNotice1: "If a table not exist, create it.",
- tableNotice2: "If a table exist and no fields missing, nothing will do on this table.",
- tableNotice3: "If a table exist but some fields is missing, it will add the missing fields.",
- tableNotice4: "If a table exist and some fields not necessary, nothing will do on this table.",
- oneKeyCreate: "Create Tables",
- createFinish: "Finish Creating Tables",
- createTableSuccess: "Create tables successfully",
- crateTableFirst: "Please click 'Create Tables'",
- setAdministrator: "Config Administrator",
- detectAdministrator: "Detect the following administrators:",
- useOrCreateAdministrator: "You can validate one of them, or you can create a new one.",
- validateAdministrator: "Validate administrator",
- createAdministrator: "Create administrator",
- administratorUsername: "username",
- administratorPassword: "password",
- administratorRePassword: "Enter administrator password again",
- usernameRule: "EyeblueTank will use username as directory name, so only lowercase letter and number and _ is permitted.",
- congratulationInstall: "Congratulations, install successfully!",
- configAdminFirst: "Please config administrator first.",
- createAdminSuccess: "Create administrator successfully!",
- validateAdminSuccess: "Validate administrator successfully!",
- enterHome: "Click to enter home",
- charset: "Charset",
- },
- layout: {
- allFiles: "Files",
- myShare: "My Share",
- setting: "Setting",
- dashboard: "Dashboard",
- users: "Users",
- logout: "Logout",
- about: "About",
- install: "Install",
- dragMouseUp: "Put file here~"
- },
- matter: {
- file: "File",
- directory: "Directory",
- rename: "Rename",
- download: "Download",
- delete: "Delete",
- more: "More",
- share: "Share",
- close: "Close",
- size: "Size",
- preview: "Preview",
- move: "Move",
- upload: "Upload",
- create: "Create",
- createTime: "Create Time",
- updateTime: "Update Time",
- root: "Root",
- fillInPicLink: "Fill in Picture Link",
- rePick: "Re Choose",
- chooseImage: "Choose Image",
- uploadMode: "Upload Mode",
- fillMode: "Fill Mode",
- sizeExceedLimit: "File size exceed limit {0}>{1}",
- setPublic: "Set as public",
- setPrivate: "Set as private",
- copyLink: "Copy Link",
- enterName: "Please enter name",
- publicFileEveryoneCanVisit: "Public file, anyone can access",
- fileDetail: "File info",
- expire: "Expire",
- copyLinkAndCode: "Copy link and code",
- uploaded: "Uploaded",
- speed: "Speed",
- fileInfo: "File basic info",
- fileName: "Filename",
- path: "Path",
- copyPath: "Copy path",
- publicOrPrivate: "Public or private",
- privateInfo: "Private file, only self or auth user can download",
- publicInfo: "Public file, anyone can download",
- downloadTimes: "Download times",
- operations: "Operation",
- oneTimeLink: "One time link",
- oneTimeLinkInfo: "One time link will expire after downloading, click to copy",
- imageCache: "Image cache",
- searchFile: "Search file",
- noContentYet: "No content under this directory yet",
- allFiles: "All Files",
- newDirectory: "New directory",
- notChoose: "Not choose any file",
- exceed1000: "Exceed file limit 1000"
- },
- router: {
- allFiles: "All Files",
- fileDetail: "File Detail",
- login: "Login",
- autoLogin: "Auto Login",
- register: "Register",
- users: "Users",
- userDetail: "User Detail",
- changePassword: "Change password",
- editUser: "Edit User",
- createUser: "Create User",
- shareDetail: "Share Detail",
- myShare: "My Share",
- dashboard: "Dashboard",
- install: "Install",
- setting: "Setting"
- },
- preference: {
- websiteName: "Website Name",
- logo: "Logo",
- logoSquare: "Logo will be cropped to square size",
- onlyAllowIco: "Only .ico allowed",
- copyright: "Copyright (support html)",
- extraInfo: "Extra info (support html)",
- zipMaxNumLimit: "Zip download max num limit",
- zipMaxSizeLimit: "Zip download max size limit(B)",
- current: "Current",
- noLimit: "No limit",
- userDefaultSizeLimit: "User default size limit(B) ",
- docLink: "Document Link",
- tankDocLink: "https://tank-doc.eyeblue.cn",
- allowRegister: "Allow register",
- systemCleanup: "System Cleanup",
- systemCleanupDescription: "This operation will cleanup everything except administrators' data",
- systemCleanupPrompt: "This operation will cleanup everything except administrators' account data, please input login password.",
- officeUrl: "Office Preview Url",
- },
- share: {
- shareDetail: "Share Detail",
- shareTime: "Share Time",
- expireTime: "Expire Time",
- noExpire: "Never Expire",
- expired: "Expired",
- copyLinkAndCode: "Copy Link And Code",
- shareSuccess: "Share Successfully",
- sharer: "Share Person",
- link: "Link",
- copyLink: "Copy Link",
- code: "Code",
- copyCode: "Copy Code",
- copySuccess: "Copy Successfully",
- more: "More",
- cancelShare: "Cancel Share",
- getLink: "Get Link",
- allFiles: "All Files",
- noContent: "No content in this directory",
- enterCode: "Please enter code",
- getFiles: "Get Files",
- codeError: "Code Error",
- cancelPrompt: "This operation will cancel sharing forever, continue?",
- hour: "1 Hour",
- day: "1 Day",
- week: "1 Week",
- month: "1 Month",
- year: "1 Year",
- infinity: "Forever",
- },
- user: {
- redirecting: "Redirecting...",
- oldPassword: "Old Password",
- newPassword: "New Password",
- confirmNewPassword: "Confirm New Password",
- cannotBeNull: "Cannot be null!",
- passwordNotSame: "Old and new password not same!",
- role: "Role",
- singleFileSizeLimit: "Single File Limit",
- totalFileSizeLimit: "Total Space Limit",
- current: "Current",
- noLimit: "No Limit",
- totalFileSize: "Used Space",
- status: "Status",
- lastLoginIp: "Last Login Ip",
- lastLoginTime: "Last Login Time",
- resetPassword: "Reset Password",
- transfiguration: "Transfiguration",
- changePassword: "Edit Password",
- enterPassword: "Enter Password",
- profile: "Profile",
- avatar: "Avatar",
- username: "Username",
- password: "Password",
- confirmPassword: "Confirm Password",
- disabled: "Disabled",
- disableUser: "Disable this user",
- activeUser: "Active this user",
- welcomeLogin: "Welcome Login",
- logining: "Login...",
- login: "Login",
- toToRegister: "Go To Register",
- welcomeRegister: "Welcome Register",
- registering: "Login...",
- register: "Register",
- goToLogin: "Go To Login",
- roleGuest: "Guest",
- roleUser: "User",
- roleAdministrator: "Administrator",
- statusActive: "Ok",
- statusDisabled: "Disabled",
- webdavLink: "WebDAV Link",
- docLink: "Document Link",
- },
- model: {
- usernameRule: "only lowercase letter and number and _ is permitted.",
- passwordRule: "Password must have more than 6 chars",
- linkCodeText: "Link:{0} Code:{1}",
- copyLinkCodeSuccess: "Copy Link and Code successfully",
- transfigurationPromptText: "Transfiguration Prompt",
- transfigurationPrompt: "You will login as this user.Please visit this link in other browser, if in current browser, you will logout.{0}",
- },
- plugin: {
- cannotPreview: "Cannot Preview",
- emptyHintDefault: "No Items",
- everyPage: "Every Page",
- items: "Items",
- total: "Total",
- clickRefresh: "Click To Refresh",
- },
- selectAll: "All",
- edit: "Edit",
- createTime: "Create Time",
- download: "Download",
- close: "Close",
- required: "Required",
- cancel: "Cancel",
- delete: "Delete",
- actionCanNotRevertConfirm: "This action cannot be reverted, confirm?",
- prompt: "Prompt",
- confirm: "Confirm",
- copy: "Copy",
- showMore: "Show More",
- username: "Username",
- password: "Password",
- submit: "Submit",
- save: "Save",
- create: "Create",
- finish: "Finish",
- operationSuccess: "Operation success",
- notFound: "404 Not Found",
- login: "Login",
- logout: "Logout",
- yes: "Yes",
- no: "No",
- all: "All",
- refresh: "refresh",
- },
- zh: {
- eyeblueTank: "蓝眼云盘",
- dashboard: {
- totalInvokeNum: '总PV',
- weekRate: '周环比',
- dayRate: '日环比',
- yesterdayInvoke: '昨日PV',
- totalUV: '总UV',
- yesterdayUV: '昨日UV',
- totalMatterNum: '总文件数',
- yesterdayMatterNum: '昨日文件数',
- totalFileSize: '文件总大小',
- yesterdayMatterSize: '昨日文件大小',
- recentDayInvokeUV: '最近{0}日PV/UV',
- downloadMatterTop10: '文件下载量TOP10',
- activeIpTop10: '活跃IP TOP10',
- loading: '加载中…',
- date: '日期',
- num: '数量'
- },
- install: {
- configMysql: "配置MySQL",
- port: "端口",
- schema: "库名",
- mysqlConnectionPass: "MySQL连接测试通过",
- testMysqlConnection: "测试MySQL连接",
- notice: "注意",
- mysqlNotice1: "如果数据库和蓝眼云盘安装在同一台服务器,Host可以直接填写 127.0.0.1。",
- mysqlNotice2: "数据库账户的权限要求要能够创建表,否则第二步\"创建表\"操作会出错",
- validateMysqlFirst: "请首先验证数据库连接",
- preStep: "上一步",
- nextStep: "下一步",
- createTable: "创建表",
- installed: "已安装",
- installedButMissing: "已安装,字段缺失",
- toBeInstalled: "待安装",
- allFields: "所有字段",
- missingFields: "缺失字段",
- tableNotice: "点击\"一键建表\"后会按照以下逻辑执行操作:",
- tableNotice1: "如果某表不存在,则直接创建表。",
- tableNotice2: "如果某表存在并且字段齐全,那么不会对该表做任何操作。",
- tableNotice3: "如果某表存在但是部分字段缺失,那么会在该表中增加缺失字段。",
- tableNotice4: "如果表中有多余的字段(多余字段即不是蓝眼云盘需要的字段),不会做删除处理,而会维持原样。",
- oneKeyCreate: "一键建表",
- createFinish: "建表完成",
- createTableSuccess: "建表成功",
- crateTableFirst: "请首先点击'一键建表'",
- setAdministrator: "设置管理员",
- detectAdministrator: "检测到系统中已经存在有以下管理员:",
- useOrCreateAdministrator: "你可以使用其中一位管理员的用户名和密码进行验证,或者创建一位新的管理员账户",
- validateAdministrator: "验证管理员账户",
- createAdministrator: "创建管理员账户",
- administratorUsername: "创建管理员账户",
- administratorPassword: "管理员密码",
- administratorRePassword: "再次输入密码",
- usernameRule: "由于用户名将作为文件上传的目录,因此只允许字母数字以及\"_\"。",
- congratulationInstall: "恭喜,安装成功!",
- configAdminFirst: "请首先配置管理员信息!",
- createAdminSuccess: "创建管理员成功!",
- validateAdminSuccess: "验证管理员成功!",
- enterHome: "点击进入首页",
- charset: "编码",
- },
- layout: {
- allFiles: "所有文件",
- myShare: "我的分享",
- setting: "网站设置",
- dashboard: "监控统计",
- users: "用户列表",
- logout: "退出登录",
- about: "关于",
- install: "安装网站",
- dragMouseUp: "可以松手啦~"
- },
- matter: {
- file: "文件",
- directory: "文件夹",
- rename: "重命名",
- download: "下载",
- delete: "删除",
- more: "更多",
- share: "分享",
- close: "关闭",
- size: "大小",
- preview: "预览",
- move: "移动",
- upload: "上传",
- create: "新建",
- createTime: "创建日期",
- updateTime: "修改日期",
- root: "根目录",
- fillInPicLink: "请填写图片链接",
- rePick: "重新选择",
- chooseImage: "选择图片",
- uploadMode: "上传模式",
- fillMode: "填写模式",
- sizeExceedLimit: "文件大小超过了限制{0}>{1}",
- setPublic: "设置为公有文件",
- setPrivate: "设置为私有文件",
- copyLink: "复制下载链接",
- enterName: "请输入名称",
- publicFileEveryoneCanVisit: "公有文件,任何人可以访问",
- fileDetail: "文件详情",
- expire: "有效期",
- copyLinkAndCode: "复制链接+提取码",
- uploaded: "已上传",
- speed: "速度",
- fileInfo: "文件基本信息",
- fileName: "文件名",
- path: "路径",
- copyPath: "复制路径",
- publicOrPrivate: "文件公开性",
- privateInfo: "私有文件,只有自己或者授权的用户可以下载",
- publicInfo: "公有文件,任何人可以通过链接下载",
- downloadTimes: "下载次数",
- operations: "操作",
- oneTimeLink: "一次性链接",
- oneTimeLinkInfo: "使用一次性链接下载后链接立即失效,可以分享这个链接给朋友,点击复制",
- imageCache: "图片缓存",
- searchFile: "搜索文件",
- noContentYet: "该目录下暂无任何内容",
- allFiles: "全部文件",
- newDirectory: "新建文件夹",
- notChoose: "没有选择文件",
- exceed1000: "最多只能同时选取1000个文件"
- },
- router: {
- allFiles: "全部文件",
- fileDetail: "文件详情",
- login: "登录",
- autoLogin: "自动登录",
- register: "注册",
- users: "用户列表",
- userDetail: "用户详情",
- changePassword: "修改密码",
- editUser: "编辑用户",
- createUser: "创建用户",
- shareDetail: "分享详情",
- myShare: "我的分享",
- dashboard: "监控统计",
- install: "安装网站",
- setting: "网站设置"
- },
- preference: {
- websiteName: "网站名称",
- logo: "Logo",
- logoSquare: "logo请使用正方形图片,否则在显示时会裁剪成正方形",
- onlyAllowIco: "只允许上传.ico图标",
- copyright: "版权信息(支持html)",
- extraInfo: "备案信息(支持html)",
- zipMaxNumLimit: "zip下载数量限制",
- zipMaxSizeLimit: "zip下载大小限制(B)",
- current: "当前值",
- noLimit: "无限制",
- userDefaultSizeLimit: "用户默认总大小限制(B) ",
- docLink: "文档链接",
- tankDocLink: "https://tank-doc.eyeblue.cn/zh",
- allowRegister: "允许自主注册",
- systemCleanup: "重置系统",
- systemCleanupDescription: "重置系统将清空除管理员账号外所有数据",
- systemCleanupPrompt: "重置系统将清空除管理员账号外所有数据,事关重大,请输入登录密码",
- officeUrl: "Office预览链接",
- },
- share: {
- shareDetail: "分享详情",
- shareTime: "分享时间",
- expireTime: "失效时间",
- noExpire: "永久有效",
- expired: "已过期",
- copyLinkAndCode: "复制链接+提取码",
- shareSuccess: "分享成功",
- sharer: "分享者",
- link: "链接",
- copyLink: "复制链接",
- code: "提取码",
- copyCode: "复制提取码",
- copySuccess: "复制成功",
- more: "更多",
- cancelShare: "取消分享",
- getLink: "获取链接",
- allFiles: "全部文件",
- noContent: "该目录下暂无任何内容",
- enterCode: "请输入提取码",
- getFiles: "提取文件",
- codeError: "提取码错误",
- cancelPrompt: "此操作将永久取消该分享, 是否继续?",
- hour: "1小时",
- day: "1天",
- week: "1周",
- month: "1个月",
- year: "1年",
- infinity: "永远有效",
- },
- user: {
- redirecting: "正在转跳...",
- oldPassword: "旧密码",
- newPassword: "新密码",
- confirmNewPassword: "确认新密码",
- cannotBeNull: "不能为空!",
- passwordNotSame: "两次输入不一致!",
- role: "角色",
- singleFileSizeLimit: "单文件限制",
- totalFileSizeLimit: "总空间限制",
- current: "当前值",
- noLimit: "无限制",
- totalFileSize: "已使用空间",
- status: "状态",
- lastLoginIp: "上次登录IP",
- lastLoginTime: "上次登录时间",
- resetPassword: "重置密码",
- transfiguration: "变身",
- changePassword: "修改密码",
- enterPassword: "输入新密码",
- profile: "个人详情",
- avatar: "头像",
- username: "用户名",
- password: "密码",
- confirmPassword: "确认密码",
- disabled: "已禁用",
- disableUser: "禁用该用户",
- activeUser: "激活该用户",
- welcomeLogin: "欢迎登录",
- logining: "正在登录...",
- login: "登录",
- toToRegister: "立即注册",
- welcomeRegister: "欢迎注册",
- registering: "正在登录...",
- register: "登录",
- goToLogin: "前往登录",
- roleGuest: "游客",
- roleUser: "注册用户",
- roleAdministrator: "管理员",
- statusActive: "正常",
- statusDisabled: "禁用",
- webdavLink: "WebDAV 地址",
- docLink: "文档链接",
- },
- model: {
- usernameRule: "用户名只能包含字母,数字和\"_\"",
- passwordRule: "密码长度至少为6位",
- linkCodeText: "链接:{0} 提取码:{1}",
- copyLinkCodeSuccess: "复制链接提取码成功",
- transfigurationPromptText: "变身提示",
- transfigurationPrompt: "您将使用该用户的身份登录。请复制以下链接到其他浏览器访问,在当前浏览器访问会导致当前用户登录信息失效。{0}",
- },
- plugin: {
- cannotPreview: "无法预览",
- emptyHintDefault: "没有符合条件的项目",
- everyPage: "每页",
- items: "条",
- total: "共",
- clickRefresh: "点击刷新",
- },
- selectAll: "全选",
- edit: "修改",
- createTime: "创建时间",
- download: "下载",
- close: "关闭",
- required: "必填",
- cancel: "取消",
- delete: "删除",
- actionCanNotRevertConfirm: "此操作不可撤回, 是否继续?",
- prompt: "提示",
- confirm: "确定",
- copy: "复制",
- showMore: "显示更多",
- username: "用户名",
- password: "密码",
- submit: "提交",
- save: "保存",
- create: "创建",
- finish: "完成",
- operationSuccess: "操作成功",
- notFound: "404 页面找不到",
- login: "登录",
- logout: "退出",
- yes: "是",
- no: "否",
- all: "所有",
- refresh: "刷新",
-
- }
-}
-export default i18nMessage
diff --git a/src/common/util/BrowserUtil.js b/src/common/util/BrowserUtil.js
deleted file mode 100644
index 6d359e2..0000000
--- a/src/common/util/BrowserUtil.js
+++ /dev/null
@@ -1,14 +0,0 @@
-export default class BrowserUtil {
-
- //只支持zh和en
- static browserLang() {
- let lang = navigator.language || navigator.userLanguage;//常规浏览器语言和IE浏览器
- lang = lang.substr(0, 2);//截取lang前2位字符
- if (lang === "zh") {
- return "zh"
- } else {
- return "en"
- }
- }
-
-}
diff --git a/src/common/util/FileUtil.js b/src/common/util/FileUtil.js
deleted file mode 100644
index 7bc5d70..0000000
--- a/src/common/util/FileUtil.js
+++ /dev/null
@@ -1,88 +0,0 @@
-import {getMimeType} from "./MimeUtil";
-import {endWith, getExtension, startWith} from "../filter/str";
-
-export default class FileUtil {
-
-
- static isImage(name) {
- let mimeType = getMimeType(name)
- return startWith(mimeType, 'image');
- }
-
- static isPdf(name) {
- let mimeType = getMimeType(name)
- return startWith(mimeType, 'application/pdf');
- }
-
- static isText(name) {
- let mimeType = getMimeType(name)
- return startWith(mimeType, 'text');
- }
-
- static isDoc(name) {
- let mimeType = getMimeType(name)
- return startWith(mimeType, 'application/msword') || startWith(mimeType, 'application/vnd.openxmlformats-officedocument.wordprocessingml.document');
- }
-
- static isPpt(name) {
- let mimeType = getMimeType(name)
- return startWith(mimeType, 'application/vnd.ms-powerpoint') || startWith(mimeType, 'application/vnd.openxmlformats-officedocument.presentationml.presentation');
- }
-
- static isXls(name) {
- let mimeType = getMimeType(name)
- return startWith(mimeType, 'application/vnd.ms-excel') || startWith(mimeType, 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
- }
-
- static isAudio(name) {
- let mimeType = getMimeType(name)
- return startWith(mimeType, 'audio');
- }
-
- static isVideo(name) {
- let mimeType = getMimeType(name)
- return startWith(mimeType, 'video');
- }
-
- static isPsd(name) {
- let extension = getExtension(name)
- return extension === '.psd';
- }
-
- /**
- * 根据名字获取对应的图标。imageIcon传值了,那么图片格式采用imageIcon
- * @param name
- * @param idDir
- */
- static getIcon(name, idDir = false) {
-
- if (idDir) {
- return require("../../assets/img/file/folder.svg")
- }
-
- if (FileUtil.isPdf(name)) {
- return require("../../assets/img/file/pdf.svg")
- } else if (FileUtil.isDoc(name)) {
- return require("../../assets/img/file/doc.svg")
- } else if (FileUtil.isPpt(name)) {
- return require("../../assets/img/file/ppt.svg")
- } else if (FileUtil.isXls(name)) {
- return require("../../assets/img/file/xls.svg")
- } else if (FileUtil.isAudio(name)) {
- return require("../../assets/img/file/audio.svg")
- } else if (FileUtil.isVideo(name) || getExtension(name) === ".mkv") {
- return require("../../assets/img/file/video.svg")
- } else if (FileUtil.isText(name)) {
- return require("../../assets/img/file/text.svg")
- } else if (FileUtil.isPsd(name)) {
- return require("../../assets/img/file/psd.svg")
- } else if (FileUtil.isImage(name)) {
- return require("../../assets/img/file/image.svg")
- } else if (endWith(name, 'zip') || endWith(name, 'rar') || endWith(name, '7z') || endWith(name, 'tar') || endWith(name, 'tar') || endWith(name, 'gz')) {
- return require("../../assets/img/file/archive.svg")
- } else {
- return require("../../assets/img/file/file.svg")
- }
-
- }
-}
diff --git a/src/common/util/ImageUtil.js b/src/common/util/ImageUtil.js
deleted file mode 100644
index 1b27d5b..0000000
--- a/src/common/util/ImageUtil.js
+++ /dev/null
@@ -1,55 +0,0 @@
-//应用的占位图片,到处都要用到。 生成网址:http://png-pixel.com/
-//rgb(240,240,240)
-import NumberUtil from "./NumberUtil";
-import {getExtension} from "./MimeUtil";
-
-export var IMAGE_PLACEHOLDER_10_10 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAQAAAAnOwc2AAAAEUlEQVR42mP88J8BAzAOZUEAoc4TYb5Mv7IAAAAASUVORK5CYII=";
-
-export var IMAGE_PLACEHOLDER_20_7 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAQAAACiwqWzAAAAEklEQVR42mP88J+BKMA4IhUCAJ1VDZFobOQaAAAAAElFTkSuQmCC";
-
-export var IMAGE_PLACEHOLDER_4_3 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAQAAAAe/WZNAAAAEElEQVR42mP88J8BDBgxGABf8QXRk11CBwAAAABJRU5ErkJggg==";
-
-export var IMAGE_PLACEHOLDER_16_9 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAJCAQAAACRI2S5AAAAEklEQVR42mP88J8BL2AcVQAGACSgEXHKPyH/AAAAAElFTkSuQmCC";
-
-export var IMAGE_PLACEHOLDER_2_1 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAQAAAAeXLZtAAAAE0lEQVR42mP88J+BKMA4qpC+CgH2ThNhpeSxLAAAAABJRU5ErkJggg==";
-
-
-/**
- * 统一处理图片url。
- * @param url 原图片路径
- * @param origin 是否使用原图,一般在查看图片详情的时候使用
- * @param width 如果origin=false 裁剪的宽度
- * @param height 如果origin=false 裁剪的高度
- * @returns
- */
-export function handleImageUrl(url = null, origin = false, width = 200, height = 200) {
- if (url) {
- if (origin) {
- return url;
- } else {
- //目前支持这几种格式的处理。 jpg jpeg png tif tiff bmp gif
- let supportExtensions = [".jpg", ".jpeg", ".png", ".tif", ".tiff", ".bmp", ".gif"];
- let extension = getExtension(url);
- if (supportExtensions.indexOf(extension) === -1) {
- return url;
- } else {
- return url + "?ir=fill_" + width + "_" + height
- }
- }
- } else {
- if (NumberUtil.fractionEqual(1, 1, width, height)) {
- return IMAGE_PLACEHOLDER_10_10;
- } else if (NumberUtil.fractionEqual(20, 7, width, height)) {
- return IMAGE_PLACEHOLDER_20_7;
- } else if (NumberUtil.fractionEqual(4, 3, width, height)) {
- return IMAGE_PLACEHOLDER_4_3;
- } else if (NumberUtil.fractionEqual(16, 9, width, height)) {
- return IMAGE_PLACEHOLDER_16_9;
- } else if (NumberUtil.fractionEqual(2, 1, width, height)) {
- return IMAGE_PLACEHOLDER_2_1;
- } else {
- return IMAGE_PLACEHOLDER_10_10;
- }
-
- }
-}
diff --git a/src/common/util/JsonUtils.js b/src/common/util/JsonUtils.js
deleted file mode 100644
index d2c3020..0000000
--- a/src/common/util/JsonUtils.js
+++ /dev/null
@@ -1,21 +0,0 @@
-//将一个json字符串转换成 json 数组
-export function parseList(str) {
- if (!str) {
- return []
- }
- if (str instanceof Array) {
- return str;
- }
- try {
- let list = JSON.parse(str);
- if (list instanceof Array) {
- return list;
- } else {
- console.error("不能将" + str + "转换成数组");
- return [];
- }
- } catch (e) {
- console.error("不能将" + str + "转换成JSON");
- return [];
- }
-}
diff --git a/src/common/util/MimeUtil.js b/src/common/util/MimeUtil.js
deleted file mode 100644
index 2b98a4b..0000000
--- a/src/common/util/MimeUtil.js
+++ /dev/null
@@ -1,639 +0,0 @@
-let MimeUtil = {
- '.323': 'text/h323',
- '.3g2': 'video/3gpp2',
- '.3gp': 'video/3gpp',
- '.3gp2': 'video/3gpp2',
- '.3gpp': 'video/3gpp',
- '.7z': 'application/x-7z-compressed',
- '.aa': 'audio/audible',
- '.AAC': 'audio/aac',
- '.aaf': 'application/octet-stream',
- '.aax': 'audio/vnd.audible.aax',
- '.ac3': 'audio/ac3',
- '.aca': 'application/octet-stream',
- '.accda': 'application/msaccess.addin',
- '.accdb': 'application/msaccess',
- '.accdc': 'application/msaccess.cab',
- '.accde': 'application/msaccess',
- '.accdr': 'application/msaccess.runtime',
- '.accdt': 'application/msaccess',
- '.accdw': 'application/msaccess.webapplication',
- '.accft': 'application/msaccess.ftemplate',
- '.acx': 'application/internet-property-stream',
- '.AddIn': 'text/xml',
- '.ade': 'application/msaccess',
- '.adobebridge': 'application/x-bridge-url',
- '.adp': 'application/msaccess',
- '.ADT': 'audio/vnd.dlna.adts',
- '.ADTS': 'audio/aac',
- '.afm': 'application/octet-stream',
- '.ai': 'application/postscript',
- '.aif': 'audio/aiff',
- '.aifc': 'audio/aiff',
- '.aiff': 'audio/aiff',
- '.air': 'application/vnd.adobe.air-application-installer-package+zip',
- '.amc': 'application/mpeg',
- '.anx': 'application/annodex',
- '.apk': 'application/vnd.android.package-archive',
- '.application': 'application/x-ms-application',
- '.art': 'image/x-jg',
- '.asa': 'application/xml',
- '.asax': 'application/xml',
- '.ascx': 'application/xml',
- '.asd': 'application/octet-stream',
- '.asf': 'video/x-ms-asf',
- '.ashx': 'application/xml',
- '.asi': 'application/octet-stream',
- '.asm': 'text/plain',
- '.asmx': 'application/xml',
- '.aspx': 'application/xml',
- '.asr': 'video/x-ms-asf',
- '.asx': 'video/x-ms-asf',
- '.atom': 'application/atom+xml',
- '.au': 'audio/basic',
- '.avi': 'video/x-msvideo',
- '.axa': 'audio/annodex',
- '.axs': 'application/olescript',
- '.axv': 'video/annodex',
- '.bas': 'text/plain',
- '.bat': 'text/plain',
- '.bcpio': 'application/x-bcpio',
- '.bin': 'application/octet-stream',
- '.bmp': 'image/bmp',
- '.c': 'text/plain',
- '.cab': 'application/octet-stream',
- '.caf': 'audio/x-caf',
- '.calx': 'application/vnd.ms-office.calx',
- '.cat': 'application/vnd.ms-pki.seccat',
- '.cc': 'text/plain',
- '.cd': 'text/plain',
- '.cdda': 'audio/aiff',
- '.cdf': 'application/x-cdf',
- '.cer': 'application/x-x509-ca-cert',
- '.cfg': 'text/plain',
- '.chm': 'application/octet-stream',
- '.class': 'application/x-java-applet',
- '.clp': 'application/x-msclip',
- '.cmd': 'text/plain',
- '.cmx': 'image/x-cmx',
- '.cnf': 'text/plain',
- '.cod': 'image/cis-cod',
- '.config': 'application/xml',
- '.contact': 'text/x-ms-contact',
- '.coverage': 'application/xml',
- '.cpio': 'application/x-cpio',
- '.cpp': 'text/plain',
- '.crd': 'application/x-mscardfile',
- '.crl': 'application/pkix-crl',
- '.crt': 'application/x-x509-ca-cert',
- '.cs': 'text/plain',
- '.csdproj': 'text/plain',
- '.csh': 'application/x-csh',
- '.csproj': 'text/plain',
- '.css': 'text/css',
- '.csv': 'application/csv',
- '.cur': 'application/octet-stream',
- '.cxx': 'text/plain',
- '.dat': 'application/octet-stream',
- '.datasource': 'application/xml',
- '.dbproj': 'text/plain',
- '.dcr': 'application/x-director',
- '.def': 'text/plain',
- '.deploy': 'application/octet-stream',
- '.der': 'application/x-x509-ca-cert',
- '.dgml': 'application/xml',
- '.dib': 'image/bmp',
- '.dif': 'video/x-dv',
- '.dir': 'application/x-director',
- '.disco': 'text/xml',
- '.divx': 'video/divx',
- '.dll': 'application/x-msdownload',
- '.dll.config': 'text/xml',
- '.dlm': 'text/dlm',
- '.doc': 'application/msword',
- '.docm': 'application/vnd.ms-word.document.macroEnabled.12',
- '.docx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
- '.dot': 'application/msword',
- '.dotm': 'application/vnd.ms-word.template.macroEnabled.12',
- '.dotx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.template',
- '.dsp': 'application/octet-stream',
- '.dsw': 'text/plain',
- '.dtd': 'text/xml',
- '.dtsConfig': 'text/xml',
- '.dv': 'video/x-dv',
- '.dvi': 'application/x-dvi',
- '.dwf': 'drawing/x-dwf',
- '.dwg': 'application/acad',
- '.dwp': 'application/octet-stream',
- '.dxf': 'application/x-dxf',
- '.dxr': 'application/x-director',
- '.eml': 'message/rfc822',
- '.emz': 'application/octet-stream',
- '.eot': 'application/vnd.ms-fontobject',
- '.eps': 'application/postscript',
- '.etl': 'application/etl',
- '.etx': 'text/x-setext',
- '.evy': 'application/envoy',
- '.exe': 'application/octet-stream',
- '.exe.config': 'text/xml',
- '.fdf': 'application/vnd.fdf',
- '.fif': 'application/fractals',
- '.filters': 'application/xml',
- '.fla': 'application/octet-stream',
- '.flac': 'audio/flac',
- '.flr': 'x-world/x-vrml',
- '.flv': 'video/x-flv',
- '.fsscript': 'application/fsharp-script',
- '.fsx': 'application/fsharp-script',
- '.generictest': 'application/xml',
- '.gif': 'image/gif',
- '.gpx': 'application/gpx+xml',
- '.group': 'text/x-ms-group',
- '.gradle': 'text/plain',
- '.gsm': 'audio/x-gsm',
- '.gtar': 'application/x-gtar',
- '.gz': 'application/x-gzip',
- '.h': 'text/plain',
- '.hdf': 'application/x-hdf',
- '.hdml': 'text/x-hdml',
- '.hhc': 'application/x-oleobject',
- '.hhk': 'application/octet-stream',
- '.hhp': 'application/octet-stream',
- '.hlp': 'application/winhlp',
- '.hpp': 'text/plain',
- '.hqx': 'application/mac-binhex40',
- '.hta': 'application/hta',
- '.htc': 'text/x-component',
- '.htm': 'text/html',
- '.html': 'text/html',
- '.htt': 'text/webviewhtml',
- '.hxa': 'application/xml',
- '.hxc': 'application/xml',
- '.hxd': 'application/octet-stream',
- '.hxe': 'application/xml',
- '.hxf': 'application/xml',
- '.hxh': 'application/octet-stream',
- '.hxi': 'application/octet-stream',
- '.hxk': 'application/xml',
- '.hxq': 'application/octet-stream',
- '.hxr': 'application/octet-stream',
- '.hxs': 'application/octet-stream',
- '.hxt': 'text/html',
- '.hxv': 'application/xml',
- '.hxw': 'application/octet-stream',
- '.hxx': 'text/plain',
- '.i': 'text/plain',
- '.ico': 'image/x-icon',
- '.ics': 'application/octet-stream',
- '.idl': 'text/plain',
- '.ief': 'image/ief',
- '.iii': 'application/x-iphone',
- '.inc': 'text/plain',
- '.inf': 'application/octet-stream',
- '.ini': 'text/plain',
- '.inl': 'text/plain',
- '.ins': 'application/x-internet-signup',
- '.ipa': 'application/x-itunes-ipa',
- '.ipg': 'application/x-itunes-ipg',
- '.ipproj': 'text/plain',
- '.ipsw': 'application/x-itunes-ipsw',
- '.iqy': 'text/x-ms-iqy',
- '.isp': 'application/x-internet-signup',
- '.ite': 'application/x-itunes-ite',
- '.itlp': 'application/x-itunes-itlp',
- '.itms': 'application/x-itunes-itms',
- '.itpc': 'application/x-itunes-itpc',
- '.IVF': 'video/x-ivf',
- '.jar': 'application/java-archive',
- '.java': 'text/plain',
- '.jck': 'application/liquidmotion',
- '.jcz': 'application/liquidmotion',
- '.jfif': 'image/pjpeg',
- '.jnlp': 'application/x-java-jnlp-file',
- '.jpb': 'application/octet-stream',
- '.jpe': 'image/jpeg',
- '.jpeg': 'image/jpeg',
- '.jpg': 'image/jpeg',
- '.js': 'text/plain',
- '.json': 'application/json',
- '.jsx': 'text/jscript',
- '.jsxbin': 'text/plain',
- '.latex': 'application/x-latex',
- '.less': 'text/plain',
- '.library-ms': 'application/windows-library+xml',
- '.lit': 'application/x-ms-reader',
- '.loadtest': 'application/xml',
- '.lpk': 'application/octet-stream',
- '.lsf': 'video/x-la-asf',
- '.lst': 'text/plain',
- '.lsx': 'video/x-la-asf',
- '.lzh': 'application/octet-stream',
- '.m13': 'application/x-msmediaview',
- '.m14': 'application/x-msmediaview',
- '.m1v': 'video/mpeg',
- '.m2t': 'video/vnd.dlna.mpeg-tts',
- '.m2ts': 'video/vnd.dlna.mpeg-tts',
- '.m2v': 'video/mpeg',
- '.m3u': 'audio/x-mpegurl',
- '.m3u8': 'audio/x-mpegurl',
- '.m4a': 'audio/m4a',
- '.m4b': 'audio/m4b',
- '.m4p': 'audio/m4p',
- '.m4r': 'audio/x-m4r',
- '.m4v': 'video/x-m4v',
- '.mac': 'image/x-macpaint',
- '.mak': 'text/plain',
- '.man': 'application/x-troff-man',
- '.manifest': 'application/x-ms-manifest',
- '.map': 'text/plain',
- '.master': 'application/xml',
- '.mbox': 'application/mbox',
- '.md': 'text/plain',
- '.mda': 'application/msaccess',
- '.mdb': 'application/x-msaccess',
- '.mde': 'application/msaccess',
- '.mdp': 'application/octet-stream',
- '.me': 'application/x-troff-me',
- '.mfp': 'application/x-shockwave-flash',
- '.mht': 'message/rfc822',
- '.mhtml': 'message/rfc822',
- '.mid': 'audio/mid',
- '.midi': 'audio/mid',
- '.mix': 'application/octet-stream',
- '.mk': 'text/plain',
- '.mmf': 'application/x-smaf',
- '.mno': 'text/xml',
- '.mny': 'application/x-msmoney',
- '.mod': 'video/mpeg',
- '.mov': 'video/quicktime',
- '.movie': 'video/x-sgi-movie',
- '.mp2': 'video/mpeg',
- '.mp2v': 'video/mpeg',
- '.mp3': 'audio/mpeg',
- '.mp4': 'video/mp4',
- '.mp4v': 'video/mp4',
- '.mpa': 'video/mpeg',
- '.mpe': 'video/mpeg',
- '.mpeg': 'video/mpeg',
- '.mpf': 'application/vnd.ms-mediapackage',
- '.mpg': 'video/mpeg',
- '.mpp': 'application/vnd.ms-project',
- '.mpv2': 'video/mpeg',
- '.mqv': 'video/quicktime',
- '.ms': 'application/x-troff-ms',
- '.msg': 'application/vnd.ms-outlook',
- '.msi': 'application/octet-stream',
- '.mso': 'application/octet-stream',
- '.mts': 'video/vnd.dlna.mpeg-tts',
- '.mtx': 'application/xml',
- '.mvb': 'application/x-msmediaview',
- '.mvc': 'application/x-miva-compiled',
- '.mxp': 'application/x-mmxp',
- '.nc': 'application/x-netcdf',
- '.nsc': 'video/x-ms-asf',
- '.nws': 'message/rfc822',
- '.ocx': 'application/octet-stream',
- '.oda': 'application/oda',
- '.odb': 'application/vnd.oasis.opendocument.database',
- '.odc': 'application/vnd.oasis.opendocument.chart',
- '.odf': 'application/vnd.oasis.opendocument.formula',
- '.odg': 'application/vnd.oasis.opendocument.graphics',
- '.odh': 'text/plain',
- '.odi': 'application/vnd.oasis.opendocument.image',
- '.odl': 'text/plain',
- '.odm': 'application/vnd.oasis.opendocument.text-master',
- '.odp': 'application/vnd.oasis.opendocument.presentation',
- '.ods': 'application/vnd.oasis.opendocument.spreadsheet',
- '.odt': 'application/vnd.oasis.opendocument.text',
- '.oga': 'audio/ogg',
- '.ogg': 'audio/ogg',
- '.ogv': 'video/ogg',
- '.ogx': 'application/ogg',
- '.one': 'application/onenote',
- '.onea': 'application/onenote',
- '.onepkg': 'application/onenote',
- '.onetmp': 'application/onenote',
- '.onetoc': 'application/onenote',
- '.onetoc2': 'application/onenote',
- '.opus': 'audio/ogg',
- '.orderedtest': 'application/xml',
- '.osdx': 'application/opensearchdescription+xml',
- '.otf': 'application/font-sfnt',
- '.otg': 'application/vnd.oasis.opendocument.graphics-template',
- '.oth': 'application/vnd.oasis.opendocument.text-web',
- '.otp': 'application/vnd.oasis.opendocument.presentation-template',
- '.ots': 'application/vnd.oasis.opendocument.spreadsheet-template',
- '.ott': 'application/vnd.oasis.opendocument.text-template',
- '.oxt': 'application/vnd.openofficeorg.extension',
- '.p10': 'application/pkcs10',
- '.p12': 'application/x-pkcs12',
- '.p7b': 'application/x-pkcs7-certificates',
- '.p7c': 'application/pkcs7-mime',
- '.p7m': 'application/pkcs7-mime',
- '.p7r': 'application/x-pkcs7-certreqresp',
- '.p7s': 'application/pkcs7-signature',
- '.pbm': 'image/x-portable-bitmap',
- '.pcast': 'application/x-podcast',
- '.pct': 'image/pict',
- '.pcx': 'application/octet-stream',
- '.pcz': 'application/octet-stream',
- '.pdf': 'application/pdf',
- '.pfb': 'application/octet-stream',
- '.pfm': 'application/octet-stream',
- '.pfx': 'application/x-pkcs12',
- '.pgm': 'image/x-portable-graymap',
- '.pic': 'image/pict',
- '.pict': 'image/pict',
- '.pkgdef': 'text/plain',
- '.pkgundef': 'text/plain',
- '.pko': 'application/vnd.ms-pki.pko',
- '.pls': 'audio/scpls',
- '.pma': 'application/x-perfmon',
- '.pmc': 'application/x-perfmon',
- '.pml': 'application/x-perfmon',
- '.pmr': 'application/x-perfmon',
- '.pmw': 'application/x-perfmon',
- '.png': 'image/png',
- '.pnm': 'image/x-portable-anymap',
- '.pnt': 'image/x-macpaint',
- '.pntg': 'image/x-macpaint',
- '.pnz': 'image/png',
- '.pot': 'application/vnd.ms-powerpoint',
- '.potm': 'application/vnd.ms-powerpoint.template.macroEnabled.12',
- '.potx': 'application/vnd.openxmlformats-officedocument.presentationml.template',
- '.ppa': 'application/vnd.ms-powerpoint',
- '.ppam': 'application/vnd.ms-powerpoint.addin.macroEnabled.12',
- '.ppm': 'image/x-portable-pixmap',
- '.pps': 'application/vnd.ms-powerpoint',
- '.ppsm': 'application/vnd.ms-powerpoint.slideshow.macroEnabled.12',
- '.ppsx': 'application/vnd.openxmlformats-officedocument.presentationml.slideshow',
- '.ppt': 'application/vnd.ms-powerpoint',
- '.pptm': 'application/vnd.ms-powerpoint.presentation.macroEnabled.12',
- '.pptx': 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
- '.prf': 'application/pics-rules',
- '.prm': 'application/octet-stream',
- '.prx': 'application/octet-stream',
- '.ps': 'application/postscript',
- '.psc1': 'application/PowerShell',
- '.psd': 'application/octet-stream',
- '.psess': 'application/xml',
- '.psm': 'application/octet-stream',
- '.psp': 'application/octet-stream',
- '.pst': 'application/vnd.ms-outlook',
- '.pub': 'application/x-mspublisher',
- '.py': 'text/plain',
- '.pwz': 'application/vnd.ms-powerpoint',
- '.qht': 'text/x-html-insertion',
- '.qhtm': 'text/x-html-insertion',
- '.qt': 'video/quicktime',
- '.qti': 'image/x-quicktime',
- '.qtif': 'image/x-quicktime',
- '.qtl': 'application/x-quicktimeplayer',
- '.qxd': 'application/octet-stream',
- '.ra': 'audio/x-pn-realaudio',
- '.ram': 'audio/x-pn-realaudio',
- '.rar': 'application/x-rar-compressed',
- '.ras': 'image/x-cmu-raster',
- '.rat': 'application/rat-file',
- '.rc': 'text/plain',
- '.rc2': 'text/plain',
- '.rct': 'text/plain',
- '.rdlc': 'application/xml',
- '.reg': 'text/plain',
- '.resx': 'application/xml',
- '.rf': 'image/vnd.rn-realflash',
- '.rgb': 'image/x-rgb',
- '.rgs': 'text/plain',
- '.rm': 'application/vnd.rn-realmedia',
- '.rmi': 'audio/mid',
- '.rmp': 'application/vnd.rn-rn_music_package',
- '.roff': 'application/x-troff',
- '.rpm': 'audio/x-pn-realaudio-plugin',
- '.rqy': 'text/x-ms-rqy',
- '.rtf': 'application/rtf',
- '.rtx': 'text/richtext',
- '.rvt': 'application/octet-stream',
- '.ruleset': 'application/xml',
- '.s': 'text/plain',
- '.safariextz': 'application/x-safari-safariextz',
- '.scd': 'application/x-msschedule',
- '.scr': 'text/plain',
- '.sct': 'text/scriptlet',
- '.sd2': 'audio/x-sd2',
- '.sdp': 'application/sdp',
- '.sea': 'application/octet-stream',
- '.searchConnector-ms': 'application/windows-search-connector+xml',
- '.setpay': 'application/set-payment-initiation',
- '.setreg': 'application/set-registration-initiation',
- '.settings': 'application/xml',
- '.sgimb': 'application/x-sgimb',
- '.sgml': 'text/sgml',
- '.sh': 'text/plain',
- '.shar': 'application/x-shar',
- '.shtml': 'text/html',
- '.sit': 'application/x-stuffit',
- '.sitemap': 'application/xml',
- '.skin': 'application/xml',
- '.skp': 'application/x-koan',
- '.sldm': 'application/vnd.ms-powerpoint.slide.macroEnabled.12',
- '.sldx': 'application/vnd.openxmlformats-officedocument.presentationml.slide',
- '.slk': 'application/vnd.ms-excel',
- '.sln': 'text/plain',
- '.slupkg-ms': 'application/x-ms-license',
- '.smd': 'audio/x-smd',
- '.smi': 'application/octet-stream',
- '.smx': 'audio/x-smd',
- '.smz': 'audio/x-smd',
- '.snd': 'audio/basic',
- '.snippet': 'application/xml',
- '.snp': 'application/octet-stream',
- '.sol': 'text/plain',
- '.sor': 'text/plain',
- '.spc': 'application/x-pkcs7-certificates',
- '.spl': 'application/futuresplash',
- '.spx': 'audio/ogg',
- '.sql': 'text/plain',
- '.src': 'application/x-wais-source',
- '.srf': 'text/plain',
- '.SSISDeploymentManifest': 'text/xml',
- '.ssm': 'application/streamingmedia',
- '.sst': 'application/vnd.ms-pki.certstore',
- '.stl': 'application/vnd.ms-pki.stl',
- '.sv4cpio': 'application/x-sv4cpio',
- '.sv4crc': 'application/x-sv4crc',
- '.svc': 'application/xml',
- '.svg': 'image/svg+xml',
- '.swf': 'application/x-shockwave-flash',
- '.step': 'application/step',
- '.stp': 'application/step',
- '.t': 'application/x-troff',
- '.tar': 'application/x-tar',
- '.tcl': 'application/x-tcl',
- '.testrunconfig': 'application/xml',
- '.testsettings': 'application/xml',
- '.tex': 'application/x-tex',
- '.texi': 'application/x-texinfo',
- '.texinfo': 'application/x-texinfo',
- '.tgz': 'application/x-compressed',
- '.thmx': 'application/vnd.ms-officetheme',
- '.thn': 'application/octet-stream',
- '.tif': 'image/tiff',
- '.tiff': 'image/tiff',
- '.tlh': 'text/plain',
- '.tli': 'text/plain',
- '.toc': 'application/octet-stream',
- '.tr': 'application/x-troff',
- '.trm': 'application/x-msterminal',
- '.trx': 'application/xml',
- '.ts': 'video/vnd.dlna.mpeg-tts',
- '.tsv': 'text/tab-separated-values',
- '.ttf': 'application/font-sfnt',
- '.tts': 'video/vnd.dlna.mpeg-tts',
- '.txt': 'text/plain',
- '.u32': 'application/octet-stream',
- '.uls': 'text/iuls',
- '.user': 'text/plain',
- '.ustar': 'application/x-ustar',
- '.vb': 'text/plain',
- '.vbdproj': 'text/plain',
- '.vbk': 'video/mpeg',
- '.vbproj': 'text/plain',
- '.vbs': 'text/vbscript',
- '.vcf': 'text/x-vcard',
- '.vcproj': 'application/xml',
- '.vcs': 'text/plain',
- '.vcxproj': 'application/xml',
- '.vddproj': 'text/plain',
- '.vdp': 'text/plain',
- '.vdproj': 'text/plain',
- '.vdx': 'application/vnd.ms-visio.viewer',
- '.vml': 'text/xml',
- '.vscontent': 'application/xml',
- '.vsct': 'text/xml',
- '.vsd': 'application/vnd.visio',
- '.vsi': 'application/ms-vsi',
- '.vsix': 'application/vsix',
- '.vsixlangpack': 'text/xml',
- '.vsixmanifest': 'text/xml',
- '.vsmdi': 'application/xml',
- '.vspscc': 'text/plain',
- '.vss': 'application/vnd.visio',
- '.vsscc': 'text/plain',
- '.vssettings': 'text/xml',
- '.vssscc': 'text/plain',
- '.vst': 'application/vnd.visio',
- '.vstemplate': 'text/xml',
- '.vsto': 'application/x-ms-vsto',
- '.vsw': 'application/vnd.visio',
- '.vsx': 'application/vnd.visio',
- '.vtx': 'application/vnd.visio',
- '.wav': 'audio/wav',
- '.wave': 'audio/wav',
- '.wax': 'audio/x-ms-wax',
- '.wbk': 'application/msword',
- '.wbmp': 'image/vnd.wap.wbmp',
- '.wcm': 'application/vnd.ms-works',
- '.wdb': 'application/vnd.ms-works',
- '.wdp': 'image/vnd.ms-photo',
- '.webarchive': 'application/x-safari-webarchive',
- '.webm': 'video/webm',
- '.webp': 'image/webp', /* https"://en.wikipedia.org/wiki/WebP */
- '.webtest': 'application/xml',
- '.wiq': 'application/xml',
- '.wiz': 'application/msword',
- '.wks': 'application/vnd.ms-works',
- '.WLMP': 'application/wlmoviemaker',
- '.wlpginstall': 'application/x-wlpg-detect',
- '.wlpginstall3': 'application/x-wlpg3-detect',
- '.wm': 'video/x-ms-wm',
- '.wma': 'audio/x-ms-wma',
- '.wmd': 'application/x-ms-wmd',
- '.wmf': 'application/x-msmetafile',
- '.wml': 'text/vnd.wap.wml',
- '.wmlc': 'application/vnd.wap.wmlc',
- '.wmls': 'text/vnd.wap.wmlscript',
- '.wmlsc': 'application/vnd.wap.wmlscriptc',
- '.wmp': 'video/x-ms-wmp',
- '.wmv': 'video/x-ms-wmv',
- '.wmx': 'video/x-ms-wmx',
- '.wmz': 'application/x-ms-wmz',
- '.woff': 'application/font-woff',
- '.wpl': 'application/vnd.ms-wpl',
- '.wps': 'application/vnd.ms-works',
- '.wri': 'application/x-mswrite',
- '.wrl': 'x-world/x-vrml',
- '.wrz': 'x-world/x-vrml',
- '.wsc': 'text/scriptlet',
- '.wsdl': 'text/xml',
- '.wvx': 'video/x-ms-wvx',
- '.x': 'application/directx',
- '.xaf': 'x-world/x-vrml',
- '.xaml': 'application/xaml+xml',
- '.xap': 'application/x-silverlight-app',
- '.xbap': 'application/x-ms-xbap',
- '.xbm': 'image/x-xbitmap',
- '.xdr': 'text/plain',
- '.xht': 'application/xhtml+xml',
- '.xhtml': 'application/xhtml+xml',
- '.xla': 'application/vnd.ms-excel',
- '.xlam': 'application/vnd.ms-excel.addin.macroEnabled.12',
- '.xlc': 'application/vnd.ms-excel',
- '.xld': 'application/vnd.ms-excel',
- '.xlk': 'application/vnd.ms-excel',
- '.xll': 'application/vnd.ms-excel',
- '.xlm': 'application/vnd.ms-excel',
- '.xls': 'application/vnd.ms-excel',
- '.xlsb': 'application/vnd.ms-excel.sheet.binary.macroEnabled.12',
- '.xlsm': 'application/vnd.ms-excel.sheet.macroEnabled.12',
- '.xlsx': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
- '.xlt': 'application/vnd.ms-excel',
- '.xltm': 'application/vnd.ms-excel.template.macroEnabled.12',
- '.xltx': 'application/vnd.openxmlformats-officedocument.spreadsheetml.template',
- '.xlw': 'application/vnd.ms-excel',
- '.xml': 'text/xml',
- '.xmp': 'application/octet-stream',
- '.xmta': 'application/xml',
- '.xof': 'x-world/x-vrml',
- '.XOML': 'text/plain',
- '.xpm': 'image/x-xpixmap',
- '.xps': 'application/vnd.ms-xpsdocument',
- '.xrm-ms': 'text/xml',
- '.xsc': 'application/xml',
- '.xsd': 'text/xml',
- '.xsf': 'text/xml',
- '.xsl': 'text/xml',
- '.xslt': 'text/xml',
- '.xsn': 'application/octet-stream',
- '.xss': 'application/xml',
- '.xspf': 'application/xspf+xml',
- '.xtp': 'application/octet-stream',
- '.xwd': 'image/x-xwindowdump',
- '.z': 'application/x-compress',
- '.zip': 'application/zip'
-}
-
-//根据一个文件名,获取其后缀名(一律使用小写),如果没有后缀名,那么返回""
-export function getExtension(filename) {
-
- if (filename == null) {
- return "";
- }
- let dotIndex = filename.lastIndexOf(".");
- if (dotIndex === -1) {
- return "";
- } else {
- return filename.substring(dotIndex).toLowerCase();
- }
-}
-
-//根据一个文件名(带后缀的),获取对应的文件类型。
-export function getMimeType(filename) {
- let extension = getExtension(filename);
- if (MimeUtil[extension]) {
- return MimeUtil[extension];
- } else {
- return "application/octet-stream";
- }
-}
-
-export {MimeUtil}
diff --git a/src/common/util/NumberUtil.js b/src/common/util/NumberUtil.js
deleted file mode 100644
index 5546957..0000000
--- a/src/common/util/NumberUtil.js
+++ /dev/null
@@ -1,23 +0,0 @@
-export default class NumberUtil {
-
- //求最大公约数
- static gcd(a, b) {
- return b ? NumberUtil.gcd(b, a % b) : a;
- };
-
- //约分 numerator:分子 denominator:分母
- static reduce(numerator, denominator) {
-
- let maxFactor = NumberUtil.gcd(numerator, denominator);
- return [numerator / maxFactor, denominator / maxFactor];
- }
-
- //比较两个分数是否相等
- static fractionEqual(numerator1, denominator1, numerator2, denominator2) {
- let fraction1 = NumberUtil.reduce(numerator1, denominator1);
- let fraction2 = NumberUtil.reduce(numerator2, denominator2);
-
- return fraction1[0] === fraction2[0] && fraction1[1] === fraction2[1];
- }
-
-}
diff --git a/src/common/util/Utils.js b/src/common/util/Utils.js
deleted file mode 100644
index d666309..0000000
--- a/src/common/util/Utils.js
+++ /dev/null
@@ -1,207 +0,0 @@
-//check whether an obj is number.
-import {startWith} from "../filter/str";
-
-export function isInteger(obj) {
- return typeof obj === 'number' && obj % 1 === 0
-}
-
-export function isAndroid() {
- let u = navigator.memberAgent;
-
-
- //android终端
- return u.indexOf('Android') > -1 || u.indexOf('Adr') > -1;
-
-}
-
-export function isIOS() {
- let u = navigator.memberAgent;
-
- //ios终端
- return !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);
-}
-
-
-//判断当前是否是微信浏览器
-export function isWeixinBrowser() {
- let ua = navigator.userAgent.toLowerCase();
- if (ua) {
- if (ua.toLowerCase().indexOf("micromessenger") !== -1) {
- return true;
- }
- }
-}
-
-//判断当前是否是往测试数据库写内容
-export function isProductionEnv() {
- let host = window.location.host;
- return startWith(host, "erhua.howimetmrright.com");
-}
-
-//check whether an obj is empty
-export function isEmptyObject(obj) {
-
- for (let key in obj) {
- return false;
- }
- return true
-}
-
-
-//两个id是否相等
-export function isIdEqual(id1, id2) {
-
- return (id1 + "") === (id2 + "");
-
-
-}
-
-export function isLocalStorageNameSupported() {
- let testKey = 'test';
- let storage = window.localStorage;
- try {
- storage.setItem(testKey, '1');
- storage.removeItem(testKey);
- return true;
- } catch (error) {
- return false;
- }
-}
-
-
-export function readLocalStorage(key) {
- if (isLocalStorageNameSupported()) {
- return window.localStorage[key];
- } else {
- console.error("not support localStorage.");
- return null;
- }
-}
-
-export function saveToLocalStorage(key, content) {
- if (isLocalStorageNameSupported()) {
- window.localStorage[key] = content;
- } else {
- console.error("not support localStorage.");
- }
-}
-
-export function removeLocalStorage(key) {
- if (isLocalStorageNameSupported()) {
- window.localStorage.removeItem(key);
- } else {
- console.error("not support localStorage.");
- }
-}
-
-
-//获取一个function的名字
-export function functionName(func) {
- // Match:
- // - ^ the beginning of the string
- // - function the word 'function'
- // - \s+ at least some white space
- // - ([\w\$]+) capture one or more valid JavaScript identifier characters
- // - \s* optionally followed by white space (in theory there won't be any here,
- // so if performance is an issue this can be omitted[1]
- // - \( followed by an opening brace
- //
- let result = /^function\s+([\w\$]+)\s*\(/.exec(func.toString())
-
- return result ? result[1] : '' // for an anonymous function there won't be a match
-}
-
-/*
-高亮部分文字
-
-DEMO:
-document.getElementById("setSelection").onmousedown = function() {
- var input = document.getElementById("i");
- setInputSelection(input, 4, 7);
- return false;
-};
-
-
-
- */
-export function setInputSelection(input, startPos, endPos) {
- input.focus();
- if (typeof input.selectionStart !== "undefined") {
- input.selectionStart = startPos;
- input.selectionEnd = endPos;
- } else if (document.selection && document.selection.createRange) {
- // IE branch
- input.select();
- let range = document.selection.createRange();
- range.collapse(true);
- range.moveEnd("character", endPos);
- range.moveStart("character", startPos);
- range.select();
- }
-}
-
-//在字符串a后面追加字符串b
-export function appendString(a, b, seperator = "") {
-
- if (a === null || typeof a !== "string") {
- return b;
- } else {
- return a + seperator + b;
- }
-}
-
-//获取当前的host
-export function currentHost() {
- return window.location.protocol + "//" + window.location.host;
-}
-
-
-//调用某个函数,安全的调用
-export function safeCallback(callback) {
- if (typeof callback === "function") {
- return callback
- } else {
- return function () {
- }
- }
-}
-
-//https://stackoverflow.com/questions/9847580/how-to-detect-safari-chrome-ie-firefox-and-opera-browser
-// Opera 8.0+
-export function isOpera() {
- return (!!window.opr && !!opr.addons) || !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;
-
-}
-
-// Firefox 1.0+
-export function isFirefox() {
- return typeof InstallTrigger !== 'undefined';
-}
-
-// Safari 3.0+ "[object HTMLElementConstructor]"
-export function isSafari() {
- return /constructor/i.test(window.HTMLElement) || (function (p) {
- return p.toString() === "[object SafariRemoteNotification]";
- })(!window['safari'] || (typeof safari !== 'undefined' && safari.pushNotification));
-
-}
-
-// Internet Explorer 6-11
-export function isIE() {
- return /*@cc_on!@*/false || !!document.documentMode;
-}
-
-// Edge 20+
-export function isEdge() {
- return !isIE() && !!window.StyleMedia;
-}
-
-// Chrome 1+
-export function isChrome() {
- return !!window.chrome && !!window.chrome.webstore;
-}
-
-// Blink engine detection
-export function isBlink() {
- return (isChrome() || isOpera()) && !!window.CSS;
-}
diff --git a/src/components/CreateSaveButton.vue b/src/components/CreateSaveButton.vue
deleted file mode 100644
index 39ca529..0000000
--- a/src/components/CreateSaveButton.vue
+++ /dev/null
@@ -1,68 +0,0 @@
-
-
-
-
-
- {{$t('create')}}
-
-
-
-
- {{$t('save')}}
-
-
-
-
-
diff --git a/src/components/LoadingFrame.vue b/src/components/LoadingFrame.vue
deleted file mode 100644
index fb5ae91..0000000
--- a/src/components/LoadingFrame.vue
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
-
-
-
-
diff --git a/src/components/NbBtnDropdown.vue b/src/components/NbBtnDropdown.vue
deleted file mode 100644
index c877d2c..0000000
--- a/src/components/NbBtnDropdown.vue
+++ /dev/null
@@ -1,113 +0,0 @@
-
-
-
- {{name}}
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/components/NbCheckbox.vue b/src/components/NbCheckbox.vue
deleted file mode 100644
index d2df692..0000000
--- a/src/components/NbCheckbox.vue
+++ /dev/null
@@ -1,118 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/components/NbExpanding.vue b/src/components/NbExpanding.vue
deleted file mode 100644
index 109821a..0000000
--- a/src/components/NbExpanding.vue
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/components/NbPager.vue b/src/components/NbPager.vue
deleted file mode 100644
index 63b9e0c..0000000
--- a/src/components/NbPager.vue
+++ /dev/null
@@ -1,251 +0,0 @@
-
-
-
-
-
-
-
-
-
- {{emptyHint?emptyHint:$t('plugin.emptyHintDefault')}}
-
-
-
-
-
-
-
-
-
-
- {{pager.errorMessage}}
-
-
- {{$t('plugin.clickRefresh')}}
-
-
-
-
-
-
-
-
-
-
-
-
- {{$t('plugin.everyPage')}}
-
- {{size}}
-
-
- {{pager.pageSize}}
-
-
-
- {{$t('plugin.items')}}
-
- {{$t('plugin.total')}} {{pager.totalItems}} {{$t('plugin.items')}}
-
-
-
-
-
-
-
diff --git a/src/components/NbRadio.vue b/src/components/NbRadio.vue
deleted file mode 100644
index 5aa6adc..0000000
--- a/src/components/NbRadio.vue
+++ /dev/null
@@ -1,91 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/components/NbSlidePanel.vue b/src/components/NbSlidePanel.vue
deleted file mode 100644
index 2cdd441..0000000
--- a/src/components/NbSlidePanel.vue
+++ /dev/null
@@ -1,91 +0,0 @@
-
-
-
- {{title}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/components/NbSwitcher.vue b/src/components/NbSwitcher.vue
deleted file mode 100644
index 358d0b2..0000000
--- a/src/components/NbSwitcher.vue
+++ /dev/null
@@ -1,268 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/components/copy/CopyPlguinLayout.vue b/src/components/copy/CopyPlguinLayout.vue
deleted file mode 100644
index 737f0db..0000000
--- a/src/components/copy/CopyPlguinLayout.vue
+++ /dev/null
@@ -1,61 +0,0 @@
-
-
- {{textToCopy}}
-
-
-
-
diff --git a/src/components/copy/CopyPlugin.js b/src/components/copy/CopyPlugin.js
deleted file mode 100644
index 2813623..0000000
--- a/src/components/copy/CopyPlugin.js
+++ /dev/null
@@ -1,32 +0,0 @@
-import CopyPlguinLayout from "./CopyPlguinLayout"
-
-export default class CopyPlugin {
-
- constructor() {
- this.$vm = null;
- }
-
- install(Vue, options) {
-
- const CopyPlguinComponent = Vue.extend(CopyPlguinLayout)
- if (!this.$vm) {
- this.$vm = new CopyPlguinComponent({
- el: document.createElement('div'),
- propsData: {}
- })
- document.body.appendChild(this.$vm.$el)
- }
-
- Vue.$copyPlguin = this;
-
- Vue.mixin({
- created: function () {
- this.$copyPlguin = Vue.$copyPlguin
- }
- })
- }
-
- copy(text, successCallback) {
- this.$vm.copy(text, successCallback);
- }
-}
diff --git a/src/components/filter/NbFilter.vue b/src/components/filter/NbFilter.vue
deleted file mode 100644
index 4e5ae33..0000000
--- a/src/components/filter/NbFilter.vue
+++ /dev/null
@@ -1,268 +0,0 @@
-
-
-
-
-
-
-
-
- 收起筛选
-
-
- 打开筛选
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/components/filter/NbFilterCheck.vue b/src/components/filter/NbFilterCheck.vue
deleted file mode 100644
index f56f719..0000000
--- a/src/components/filter/NbFilterCheck.vue
+++ /dev/null
@@ -1,61 +0,0 @@
-
-
-
-
-
- 所有
- 是
- 否
-
-
-
-
-
-
-
-
diff --git a/src/components/filter/NbFilterDate.vue b/src/components/filter/NbFilterDate.vue
deleted file mode 100644
index f99e9da..0000000
--- a/src/components/filter/NbFilterDate.vue
+++ /dev/null
@@ -1,100 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/components/filter/NbFilterDateTime.vue b/src/components/filter/NbFilterDateTime.vue
deleted file mode 100644
index 13e6782..0000000
--- a/src/components/filter/NbFilterDateTime.vue
+++ /dev/null
@@ -1,99 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/components/filter/NbFilterHttpInputSelection.vue b/src/components/filter/NbFilterHttpInputSelection.vue
deleted file mode 100644
index 8a3f7bf..0000000
--- a/src/components/filter/NbFilterHttpInputSelection.vue
+++ /dev/null
@@ -1,82 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/components/filter/NbFilterHttpSelection.vue b/src/components/filter/NbFilterHttpSelection.vue
deleted file mode 100644
index abfe87d..0000000
--- a/src/components/filter/NbFilterHttpSelection.vue
+++ /dev/null
@@ -1,83 +0,0 @@
-
-
-
-
-
- 所有
-
- {{item.getDisplayName()}}
-
-
-
-
-
-
-
-
-
diff --git a/src/components/filter/NbFilterMultiSelection.vue b/src/components/filter/NbFilterMultiSelection.vue
deleted file mode 100644
index b0c0ecf..0000000
--- a/src/components/filter/NbFilterMultiSelection.vue
+++ /dev/null
@@ -1,65 +0,0 @@
-
-
-
-
-
- {{option.name}}
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/components/filter/NbFilterSelection.vue b/src/components/filter/NbFilterSelection.vue
deleted file mode 100644
index 1fb768d..0000000
--- a/src/components/filter/NbFilterSelection.vue
+++ /dev/null
@@ -1,86 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/components/filter/NbFilterSort.vue b/src/components/filter/NbFilterSort.vue
deleted file mode 100644
index 3312ab6..0000000
--- a/src/components/filter/NbFilterSort.vue
+++ /dev/null
@@ -1,106 +0,0 @@
-
-
-
-
-
-
-
-
-
-
- {{filter.name}}
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/components/filter/NbPlainFilter.vue b/src/components/filter/NbPlainFilter.vue
deleted file mode 100644
index 31c5117..0000000
--- a/src/components/filter/NbPlainFilter.vue
+++ /dev/null
@@ -1,146 +0,0 @@
-
-
-
-
-
-
-
- {{filter.name}}:
-
-
-
-
-
-
-
- {{filter.name}}:
-
-
-
-
-
-
- {{filter.name}}:
-
-
-
-
-
-
- {{filter.name}}:
-
-
-
-
-
-
-
- {{filter.name}}:
-
-
-
-
-
-
-
- {{filter.name}}:
-
-
-
-
-
-
- {{filter.name}}:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/components/photoswipe/PhotoSwipeLayout.vue b/src/components/photoswipe/PhotoSwipeLayout.vue
deleted file mode 100644
index 8c4ec00..0000000
--- a/src/components/photoswipe/PhotoSwipeLayout.vue
+++ /dev/null
@@ -1,62 +0,0 @@
-
-
-
-
-
-
diff --git a/src/components/photoswipe/PhotoSwipePlugin.js b/src/components/photoswipe/PhotoSwipePlugin.js
deleted file mode 100644
index 5fb0da5..0000000
--- a/src/components/photoswipe/PhotoSwipePlugin.js
+++ /dev/null
@@ -1,149 +0,0 @@
-import PhotoSwipeLayout from "./PhotoSwipeLayout";
-import PhotoSwipe from 'x-photoswipe/dist/photoswipe'
-import PhotoSwipeUIDefault from 'x-photoswipe/dist/photoswipe-ui-default'
-//PhotoSwipe的样式
-import "x-photoswipe/dist/photoswipe.css";
-import "x-photoswipe/dist/default-skin/default-skin.css";
-
-/**
- *
- * 图片预览控件,主要提供给H5端使用。
- */
-export default class PhotoSwipePlugin {
-
- constructor() {
-
-
- this.$vm = null;
-
- //核心
- this.photoSwipe = null;
-
- }
-
-
- install(Vue, options) {
-
- const PhotoSwipePluginComponent = Vue.extend(PhotoSwipeLayout)
- if (!this.$vm) {
- this.$vm = new PhotoSwipePluginComponent({
- el: document.createElement('div'),
- propsData: {}
- })
- document.body.appendChild(this.$vm.$el)
- }
-
- Vue.$photoSwipePlugin = this;
-
- Vue.mixin({
- created: function () {
- this.$photoSwipePlugin = Vue.$photoSwipePlugin
- }
- })
- }
-
- //展示一张图片
- showSinglePhoto(url, width = 0, height = 0) {
-
- let that = this;
- let items = [{
- src: url,
- w: width,
- h: height
- }];
-
- let options = {
- //不需要历史纪录
- history: false,
- //不需要全屏按钮
- fullscreenEl: false,
- //不需要分享按钮
- shareEl: false,
- //点击不要让控制按钮消失
- tapToToggleControls: false,
- //当前从第0张展示。
- index: 0
- };
- this.photoSwipe = new PhotoSwipe(this.$vm.$el, PhotoSwipeUIDefault, items, options);
-
- this.photoSwipe.listen('gettingData', function (index, item) {
- if (!item.w || !item.h || item.w < 1 || item.h < 1) {
- const img = new Image()
- img.onload = function () {
- item.w = this.width
- item.h = this.height
- that.photoSwipe.updateSize(true)
- }
- img.src = item.src
- }
- })
- this.photoSwipe.init();
-
- this.photoSwipe.listen('close', () => {
- })
- this.photoSwipe.listen('afterChange', (a, b) => {
- })
- }
-
- //展示一系列图片
- showMultiPhoto(urls = [], index = 0) {
-
- let that = this;
- let items = [];
- urls.forEach((url) => {
- items.push({
- src: url,
- w: 0,
- h: 0
- })
- })
-
- let options = {
- //不需要历史纪录
- history: false,
- //不需要全屏按钮
- fullscreenEl: false,
- //不需要分享按钮
- shareEl: false,
- //点击不要让控制按钮消失
- tapToToggleControls: false,
- //当前从第0张展示。
- index: index
- };
- this.photoSwipe = new PhotoSwipe(this.$vm.$el, PhotoSwipeUIDefault, items, options);
-
- this.photoSwipe.listen('gettingData', function (index, item) {
- if (!item.w || !item.h || item.w < 1 || item.h < 1) {
- const img = new Image()
- img.onload = function () {
- item.w = this.width
- item.h = this.height
- that.photoSwipe.updateSize(true)
- }
- img.src = item.src
- }
- })
- this.photoSwipe.init();
-
- this.photoSwipe.listen('close', () => {
- //photoSwipe事件:close
- })
- this.photoSwipe.listen('afterChange', (a, b) => {
- //photoSwipe事件:afterChange
- })
- }
-
-
- //展示一张图片。
- showPhoto(url) {
- this.showSinglePhoto(url);
- }
-
-
- //展示一系列图片
- showPhotos(urls, index = 0) {
- this.showMultiPhoto(urls, index);
- }
-
-}
-
diff --git a/src/components/previewer/Previewer.js b/src/components/previewer/Previewer.js
deleted file mode 100644
index f8a30bb..0000000
--- a/src/components/previewer/Previewer.js
+++ /dev/null
@@ -1,49 +0,0 @@
-import PreviewerLayout from "./PreviewerLayout"
-
-export default class Previewer {
-
- constructor() {
- this.$vm = null;
- }
-
- install(Vue, options) {
-
- const PreviewerComponent = Vue.extend(PreviewerLayout)
- if (!this.$vm) {
- this.$vm = new PreviewerComponent({
- el: document.createElement('div'),
- propsData: {}
- })
- document.body.appendChild(this.$vm.$el)
- }
-
- Vue.$previewer = this;
-
- Vue.mixin({
- created: function () {
- this.$previewer = Vue.$previewer
- }
- })
- }
-
- previewPdf(name, url, size) {
- this.$vm.previewPdf(name, url, size);
- }
-
- previewText(name, url, size) {
- this.$vm.previewText(name, url, size);
- }
-
- previewOffice(name, url, size) {
- this.$vm.previewOffice(name, url, size);
- }
-
- previewAudio(name, url, size) {
- this.$vm.previewAudio(name, url, size);
- }
-
- previewVideo(name, url, size) {
- this.$vm.previewVideo(name, url, size);
- }
-
-}
diff --git a/src/components/previewer/PreviewerLayout.vue b/src/components/previewer/PreviewerLayout.vue
deleted file mode 100644
index 7c01170..0000000
--- a/src/components/previewer/PreviewerLayout.vue
+++ /dev/null
@@ -1,189 +0,0 @@
-
-
-
-
-
-
-
diff --git a/src/components/previewer/panels/AudioPanel.vue b/src/components/previewer/panels/AudioPanel.vue
deleted file mode 100644
index 96ebb22..0000000
--- a/src/components/previewer/panels/AudioPanel.vue
+++ /dev/null
@@ -1,57 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/components/previewer/panels/OfficePanel.vue b/src/components/previewer/panels/OfficePanel.vue
deleted file mode 100644
index 2702deb..0000000
--- a/src/components/previewer/panels/OfficePanel.vue
+++ /dev/null
@@ -1,103 +0,0 @@
-
-
-
-
-
-
-
- Cannot preview
-
-
- Office Preview is powered by Microsoft Office Online Preview ,
- Because Microsoft server cannot get {{name}} , so url with
- localhost(127.0.0.1) cannot preview office files.
-
-
-
- Cannot preview with custom office url.
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/components/previewer/panels/PdfPanel.vue b/src/components/previewer/panels/PdfPanel.vue
deleted file mode 100644
index 2751f1c..0000000
--- a/src/components/previewer/panels/PdfPanel.vue
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/src/components/previewer/panels/TextPanel.vue b/src/components/previewer/panels/TextPanel.vue
deleted file mode 100644
index 4ec391d..0000000
--- a/src/components/previewer/panels/TextPanel.vue
+++ /dev/null
@@ -1,42 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/components/previewer/panels/VideoPanel.vue b/src/components/previewer/panels/VideoPanel.vue
deleted file mode 100644
index 380ea92..0000000
--- a/src/components/previewer/panels/VideoPanel.vue
+++ /dev/null
@@ -1,57 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/index.css b/src/index.css
new file mode 100644
index 0000000..ec2585e
--- /dev/null
+++ b/src/index.css
@@ -0,0 +1,13 @@
+body {
+ margin: 0;
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
+ 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
+ sans-serif;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+code {
+ font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
+ monospace;
+}
diff --git a/src/index.tsx b/src/index.tsx
new file mode 100644
index 0000000..f5185c1
--- /dev/null
+++ b/src/index.tsx
@@ -0,0 +1,17 @@
+import React from 'react';
+import ReactDOM from 'react-dom';
+import './index.css';
+import App from './App';
+import * as serviceWorker from './serviceWorker';
+
+ReactDOM.render(
+
+
+ ,
+ document.getElementById('root')
+);
+
+// If you want your app to work offline and load faster, you can change
+// unregister() to register() below. Note this comes with some pitfalls.
+// Learn more about service workers: https://bit.ly/CRA-PWA
+serviceWorker.unregister();
diff --git a/src/logo.svg b/src/logo.svg
new file mode 100644
index 0000000..6b60c10
--- /dev/null
+++ b/src/logo.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/src/main.js b/src/main.js
deleted file mode 100644
index 4358f27..0000000
--- a/src/main.js
+++ /dev/null
@@ -1,74 +0,0 @@
-//For IE Exception.
-import "babel-polyfill";
-
-//custom directive.
-import "./common/directive/directive"
-
-//自定义文本框插件
-import CopyPlugin from "./components/copy/CopyPlugin";
-import PhotoSwipePlugin from "./components/photoswipe/PhotoSwipePlugin";
-import Previewer from "./components/previewer/Previewer";
-
-import Vue from 'vue'
-import VueI18n from 'vue-i18n'
-import App from './App.vue'
-import store from './vuex'
-
-import router from './router'
-import {sync} from 'vuex-router-sync'
-import VueResource from 'vue-resource'
-import NProgress from 'vue-nprogress'
-import filters from './common/filter'
-import i18nMessage from "./common/i18n"
-import BrowserUtil from "./common/util/BrowserUtil";
-
-import { Tabs, TabPane, DatePicker, Dialog, Message, MessageBox } from 'element-ui';
-
-Vue.use(Tabs);
-Vue.use(TabPane);
-Vue.use(Dialog);
-Vue.use(DatePicker);
-Vue.prototype.$msgbox = MessageBox;
-Vue.prototype.$alert = MessageBox.alert;
-Vue.prototype.$confirm = MessageBox.confirm;
-Vue.prototype.$prompt = MessageBox.prompt;
-Vue.prototype.$message = Message;
-
-//expose to global.
-Vue.store = store;
-//expose to global.
-Vue.router = router;
-sync(store, router)
-Vue.use(VueResource)
-Vue.use(NProgress)
-
-
-//使用自定义插件
-Vue.use(new CopyPlugin())
-Vue.use(new PhotoSwipePlugin())
-Vue.use(new Previewer())
-
-// register global utility filters.
-Object.keys(filters).forEach(key => {
- Vue.filter(key, filters[key])
-})
-
-Vue.use(VueI18n)
-
-// 通过选项创建 VueI18n 实例
-const i18n = new VueI18n({
- locale: Vue.store.state.lang, // 设置地区
- messages: i18nMessage // 设置地区信息
-})
-Vue.i18n = i18n
-
-
-const nprogress = new NProgress({parent: '.nprogress-container'})
-
-new Vue({
- nprogress,
- i18n,
- store,
- router,
- render: h => h(App),
-}).$mount('#app')
diff --git a/src/model/base/Base.js b/src/model/base/Base.js
deleted file mode 100644
index 3daf46c..0000000
--- a/src/model/base/Base.js
+++ /dev/null
@@ -1,376 +0,0 @@
-import $ from 'jquery'
-import Vue from 'vue'
-import {Message} from 'element-ui'
-import {lowerCamel, lowerSlash, startWith, toPlural} from '../../common/filter/str'
-import {str2Date} from '../../common/filter/time'
-import {functionName} from "../../common/util/Utils";
-import {parseList} from "../../common/util/JsonUtils";
-import {ResultCode} from "./ResultCode";
-
-export default class Base {
-
- constructor(args) {
-
- //错误信息提示。
- this.errorMessage = null
- //是否处于编辑状态。区别于展示和编辑。
- this.editMode = false
- //是否处于创建状态。区别于创建和编辑。
- this.createMode = false
-
- this.loading = false
-
- //加载详情时的loading,这是一种特殊的loading状态,只有详情加载好了,我们才展示整个页面,在LoadingFrame中有用到
- this.detailLoading = false
- }
-
- render(obj) {
- if (obj) {
- $.extend(this, obj)
- }
- }
-
- //如果自己仅仅是作为一个列表中的属性渲染的话,那么我们只关心个别关键词段。
- //比如在SpaceApply中SpaceSeats,这个如果使用render的话,那么页面加载速度将非常慢。
- simpleRender(obj) {
- this.render(obj)
- }
-
- /**
- * 根据一个类型,渲染出对应的数组。
- * @param json 字符串或者数组对象。
- * @param Clazz 需要渲染的目标对象
- * @returns {*}
- */
- static assignList(json, Clazz) {
-
- let target = []
-
- let arr = []
-
- if (json instanceof String) {
-
- arr = parseList(json);
-
- } else if (json instanceof Array) {
- arr = json
- } else {
-
- console.error("Src must be string or array", json)
- return target
- }
-
- //如果我们要转换成字符串的数组形式,那么this[field]应该是一个字符串才对。
- if (Clazz === String) {
- return arr
- }
-
- if (!Clazz || !(Clazz.prototype instanceof Base)) {
- console.error("Class must be Base subclass ")
- return target
- }
-
- for (let i = 0; i < arr.length; i++) {
- let bean = arr[i]
-
- let clazz = new Clazz()
-
- clazz.render(bean)
-
- target.push(clazz)
- }
-
- return target
- }
-
-
- /**
- *
- * @param field 字段名
- * @param Clazz 类型名
- * @param simpleRender 是否使用极简的渲染方式。
- */
- renderList(field, Clazz, simpleRender = true) {
-
- //如果我们要转换成字符串的数组形式,那么this[field]应该是一个字符串才对。
- if (Clazz === String) {
- this[field] = parseList(this[field]);
- return
- }
-
- //下面就是转换实体数组了。
- let beans = this[field]
- if (!beans) {
- //服务器返回这个字段为空 维持构造函数中的默认值(一般而言是一个[])
- this[field] = (new this.constructor())[field]
- return
- }
-
- if (!Clazz) {
- return
- }
-
- this[field] = []
-
- for (let i = 0; i < beans.length; i++) {
- let bean = beans[i]
- let clazz = new Clazz()
-
- if (simpleRender) {
- clazz.simpleRender(bean)
- } else {
- clazz.render(bean)
- }
-
- this[field].push(clazz)
- }
- }
-
- //直接render出一个Entity. field字段名,Clazz类名。
- renderEntity(field, Clazz) {
-
- let obj = this[field]
- if (!obj) {
- if (Clazz) {
- let EntityClazz = this.constructor
- obj = (new EntityClazz())[field]
-
- } else {
- return
- }
- }
-
- if (Clazz === Date) {
-
- this[field] = str2Date(obj)
- } else if (Clazz.prototype instanceof Base) {
-
- //可能此处的该项属性做了特殊处理的。
- //1024*1024 以及 "图片尺寸不超过1M"用let bean = new Clazz(); 就无法反映出来。因为父类render的时候已经将avatar给变成了Object.
- let bean = (new this.constructor())[field]
- if (!bean) {
- bean = new Clazz()
- }
-
- if (obj !== null) {
- bean.render(obj)
- this[field] = bean
- }
-
- } else {
- console.error('调用错误!')
- }
-
- }
-
- //we provide a default error handing method. handle with specific errorCallback.
- defaultErrorHandler(response, errorCallback) {
-
- let msg = this.getErrorMessage(response)
-
- if (typeof errorCallback === 'function') {
- errorCallback(msg, response)
- } else {
- Message.error({
- message: msg,
- center: true
- })
- }
- }
-
- //专门捕捉没有登录这种错误。return true -> 有错误(已经处理掉了) false -> 没错误 (什么都没干)
- specialErrorHandler(response) {
-
- let temp = response['data']
- if (temp !== null && typeof temp === 'object') {
- if (temp['code'] === ResultCode.LOGIN) {
-
- //如果当前本身就是登录页面,自然没有必要提示
- if (Vue.store.state.route.path === "/user/login") {
- return true
- }
- //这个问题不能报的太频繁,比如一个页面请求了两个接口,两个接口都报没有登录。
- if ((new Date().getTime()) - Vue.store.state.lastLoginErrorTimestamp < 3000) {
- return true
- } else {
- Vue.store.state.lastLoginErrorTimestamp = (new Date().getTime());
- }
-
-
- Message.error({
- message: '您已退出,请登录后再访问。'
- })
-
- //做一次退出。
- Vue.store.state.user.innerLogout()
-
- Vue.router.push({
- path: "/user/login",
- query: {redirect: Vue.store.state.route.fullPath}
- })
-
- return true
-
- } else if (temp['code'] === ResultCode.NOT_INSTALLED) {
-
- //做一次退出。
- Vue.store.state.user.innerLogout()
-
- Vue.store.state.installed = false
- Vue.router.push("/install/index")
- return true
-
- }
- }
-
- return false
-
- }
-
-
-
- //get errorMessage from response and wrap the value to this.errorMessage.
- getErrorMessage(response) {
-
- let msg = '服务器出错,请稍后再试!'
-
- if (response === null) {
- msg = '出错啦,请稍后重试!'
- } else if (typeof response === 'string') {
- msg = response
- } else if (response['msg']) {
- msg = response['msg']
- } else if (response['message']) {
- msg = response['message']
- } else {
- let temp = response['data']
- if (temp !== null && typeof temp === 'object') {
- if (temp['message']) {
- msg = temp['message']
- } else if (temp['msg']) {
- msg = temp['msg']
- } else {
- if (temp['error'] && temp['error']['message']) {
- msg = temp['error']['message']
- }
- }
- }
- }
- this.errorMessage = msg
- return msg
- }
-
- //Vue.http.get('/someUrl', [options]).then(successCallback, errorCallback);
- //opts中可以传递一些特殊的选项。具体参考:https://github.com/pagekit/vue-resource/blob/develop/docs/http.md
- httpGet(url, params = {}, successCallback, errorCallback, opts = {}) {
-
- let that = this
-
- let options = $.extend({}, opts)
- options['params'] = params
-
- this.loading = true
- Vue.http.get(url, options).then(function (response) {
-
- that.loading = false;
- (typeof successCallback === 'function') && successCallback(response)
-
- }, function (response) {
-
- that.loading = false
-
- console.error(response)
- //错误信息一律存放在自己的errorMessage中,user httpLogout将显得不灵活了
- //that.errorMessage = that.getErrorMessage(response)
-
- //对于没有登录的错误直接跳转到登录页面
- if (that.specialErrorHandler(response)) {
- return
- }
-
- //有传入错误处理方法,就按你的执行
- if (typeof errorCallback === 'function') {
- errorCallback(that.getErrorMessage(response), response)
- } else {
- //没有传入错误处理的方法就采用默认处理方法:toast弹出该错误信息。
- that.defaultErrorHandler(response)
- }
-
- })
-
- }
-
- //Vue.http.post('/someUrl', [body], [options]).then(successCallback, errorCallback);
- //url is something like this: /article/detail/1
- //opts中可以传递一些特殊的选项。具体参考:https://github.com/pagekit/vue-resource/blob/develop/docs/http.md
- httpPost(url, params, successCallback, errorCallback, opts = {}) {
- let that = this
-
-
- let options = $.extend({}, opts)
-
- //options["emulateJSON"] = !(params instanceof FormData);
-
- //Post请求临时使用json的方式。
- options['emulateJSON'] = true
-
- this.loading = true
- Vue.http.post(url, params, options).then(function (response) {
- that.loading = false
-
- typeof successCallback === 'function' && successCallback(response)
-
- }, function (response) {
- that.loading = false
-
- console.error(response)
- //错误信息一律存放在自己的errorMessage中,user httpLogout将显得不灵活了
- //that.errorMessage = that.getErrorMessage(response)
-
- //对于没有登录的错误直接跳转到登录页面
- if (that.specialErrorHandler(response)) {
- return
- }
-
- //有传入错误处理方法,就按你的执行
- if (typeof errorCallback === 'function') {
- errorCallback(that.getErrorMessage(response), response)
- } else {
- //没有传入错误处理的方法就采用默认处理方法:toast弹出该错误信息。
- that.defaultErrorHandler(response)
- }
-
- })
-
- }
-
- //获取到当前类的单数标签。比如 Project便得到 project
- getTAG() {
-
- let className = this.constructor.name
-
- //IE无法直接通过this.constructor.name获取到相应名称
- if (!className) {
- className = functionName(this.constructor)
- }
-
- return lowerCamel(className)
- }
-
- //获取到当前实体的url前缀。
- getUrlPrefix() {
- return "/api" + lowerSlash(this.getTAG())
- }
-
- //调用某个函数,如果函数有问题,那么打印出来。
- safeCallback(callback) {
- if (typeof callback === "function") {
- return callback
- } else {
- return function () {
- }
- }
- }
-
-
-}
diff --git a/src/model/base/BaseEntity.js b/src/model/base/BaseEntity.js
deleted file mode 100644
index 9c3a960..0000000
--- a/src/model/base/BaseEntity.js
+++ /dev/null
@@ -1,265 +0,0 @@
-import Base from './Base'
-import Filter from './Filter'
-import {MessageBox, Message} from 'element-ui'
-import Schema from 'async-validator'
-import {FilterType} from "./FilterType";
-
-export default class BaseEntity extends Base {
-
- constructor(args) {
- super(args)
- this.uuid = null
- this.sort = null
- this.createTime = null
- this.updateTime = null
-
- //表单验证专用
- this.validatorSchema = null
- }
-
- //This is just a intermedia method.
- render(obj) {
- super.render(obj)
- this.renderEntity('createTime', Date)
- this.renderEntity('updateTime', Date)
-
- }
-
- //获取过滤器,必须每次动态生成,否则会造成filter逻辑混乱。
- getFilters() {
- return [
- new Filter(FilterType.SORT, 'Sort', 'orderSort'),
- new Filter(FilterType.SORT, 'Sort UpdateTime', 'orderUpdateTime'),
- new Filter(FilterType.SORT, 'Sort CreateTime', 'orderCreateTime')
- ]
- };
-
- //获取表单的验证规则
- getSchema() {
-
- return null
-
- }
-
-
-//该实体目前是否能够编辑
- canEdit() {
- console.error('canEdit: you should override this base method.')
- }
-
-//该实体目前是否能够删除
- canDel() {
- console.error('canDel: you should override this base method.')
- }
-
- getForm() {
- console.error('getForm: you should override this base method.')
- }
-
- /*validate () {
- console.error('validate: you should override this base method.')
- }*/
-
- validate(validatorSchema = this.validatorSchema) {
- let valid = true
- let that = this
- let schema = validatorSchema
- if (!schema) {
- return true
- }
-
- let validateArr = Object.keys(schema) //遍历规则的key值
- let validateObj = {}
- validateArr.forEach(function (i) {
- validateObj[i] = that[i]
- schema[i].error = null
- })
- let descriptor = {}
- validateArr.forEach(function (i) {
- descriptor[i] = schema[i].rules
- })
-
- new Schema(descriptor).validate(validateObj, (errors, fields) => {
-
- if (errors) {
- errors.forEach(function (i) {
- schema[i.field].error = i.message
- })
- valid = false
- }
- })
-
- return valid
- }
-
- //common http detail methods.
- httpDetail(successCallback, errorCallback) {
-
- let that = this
- if (!this.uuid) {
-
- this.errorMessage = 'No uuid error'
-
- this.defaultErrorHandler(this.errorMessage, errorCallback)
-
- return
- }
-
- let url = this.getUrlDetail(this.uuid)
-
- if (!url) {
- return
- }
-
- this.detailLoading = true
-
- this.httpGet(url, {}, function (response) {
- that.detailLoading = false
- that.editMode = true
-
- that.render(response.data.data)
-
- that.safeCallback(successCallback)(response)
-
- }, function (response) {
-
- that.detailLoading = false
-
- if (typeof errorCallback === 'function') {
- errorCallback()
- } else {
- //没有传入错误处理的方法就采用默认处理方法:toast弹出该错误信息。
- that.defaultErrorHandler(response)
- }
- })
-
- }
-
- httpSave(successCallback, errorCallback) {
-
- let that = this
-
- let url = this.getUrlCreate()
- if (this.uuid) {
- url = this.getUrlEdit()
- }
-
- if (!this.validate()) {
-
- that.defaultErrorHandler(this.errorMessage, errorCallback)
- return
- }
-
- this.httpPost(url, this.getForm(), function (response) {
-
- that.render(response.data.data)
-
- that.safeCallback(successCallback)(response)
-
- }, errorCallback)
-
- }
-
- httpDelete(successCallback, errorCallback) {
-
- let that = this
- if (!this.uuid) {
-
- this.errorMessage = 'no uuid. cannot delete'
- that.defaultErrorHandler(this.errorMessage, errorCallback)
-
- return
- }
-
- let url = this.getUrlDelete(this.uuid)
-
- if (!url) {
- return
- }
-
- this.httpPost(url, {}, function (response) {
-
- that.safeCallback(successCallback)(response)
-
- }, errorCallback)
-
- }
-
- httpSort(uuid1, sort1, uuid2, sort2, successCallback, failureCallback) {
-
- let that = this
-
- if (!uuid1 || !uuid2 || !(sort1 === 0 || sort1) || !(sort2 === 0 || sort2)) {
-
- this.errorMessage = 'params error'
- that.defaultErrorHandler(this.errorMessage, failureCallback)
-
- return
- }
-
- let url = this.getUrlSort()
-
- if (!url) {
-
- that.defaultErrorHandler(this.errorMessage, failureCallback)
- return
- }
-
- let params = {
- uuid1: uuid1,
- sort1: sort1,
- uuid2: uuid2,
- sort2: sort2
- }
-
- this.httpPost(url, params, successCallback, failureCallback)
- }
-
-
- getUrlCreate() {
- let prefix = this.getUrlPrefix()
-
- return prefix + '/create'
- }
-
- getUrlDelete(uuid = null) {
- let prefix = this.getUrlPrefix()
-
- if (uuid === null) {
- return prefix + '/delete?uuid={uuid}'
- } else {
- return prefix + '/delete?uuid=' + uuid
- }
- }
-
- getUrlEdit() {
- let prefix = this.getUrlPrefix()
-
- return prefix + '/edit'
- }
-
- getUrlDetail(uuid = null) {
- let prefix = this.getUrlPrefix()
-
- if (uuid === null) {
- return prefix + '/detail?uuid={uuid}'
- } else {
- return prefix + '/detail?uuid=' + uuid
- }
-
- }
-
- getUrlPage() {
- let prefix = this.getUrlPrefix()
-
- return prefix + '/page'
- }
-
- getUrlSort() {
- let prefix = this.getUrlPrefix()
-
- return prefix + '/sort'
- }
-
-}
-
diff --git a/src/model/base/Filter.js b/src/model/base/Filter.js
deleted file mode 100644
index 2863242..0000000
--- a/src/model/base/Filter.js
+++ /dev/null
@@ -1,153 +0,0 @@
-/**
- * 在列表页面中,筛选就需要这个类。
- *
- */
-import BaseEntity from './BaseEntity'
-import {isEmptyObject} from '../../common/util/Utils'
-import {FilterType} from "./FilterType";
-import {simpleDate, simpleDateTime} from "../../common/filter/time";
-
-export default class Filter {
-
- constructor(type, name, key, options, Clazz, visible = true) {
- if (!type || !name || !key) {
- console.error('Filter params error!' + type + ' ' + name + ' ' + key)
- return
- }
-
- //类别 搜索框,排序,下拉框
- this.type = type
- //显示名称,一般中文
- this.name = name
- //提交参数时的键值
- this.key = key
- //对于搜索框 -> 字符串 排序 -> ASC/DESC/null 下拉框 -> OK/ERROR/RUNNING等
- this.value = null
-
- //对于下拉框,当前活跃的。
- this.active = -1
-
- this.options = options
-
- this.Clazz = Clazz
-
- //是否可见。有些时候我们希望Filter不显示,但是同时又具有筛选的功能。
- this.visible = visible
-
- //HTTP_SELECTION的过滤条件。
- this.initFilter = {}
-
- if (type === FilterType.SELECTION) {
- if (!options || !(options instanceof Array)) {
- console.error('Filter SELECTION 的 options必须指定,并且为数组,同时必须包含name和value键值(style可选)!')
-
- }
- } else if (type === FilterType.MULTI_SELECTION) {
- if (!options || !(options instanceof Array)) {
- console.error('Filter MULTI_SELECTION 的 options必须指定,并且为数组,同时必须包含name和value键值(style可选)!')
-
- } else {
- this.value = []
- }
- } else if (type === FilterType.HTTP_SELECTION) {
- if (!Clazz || !(Clazz.prototype instanceof BaseEntity)) {
- console.error('Clazz必须指定,并且为BaseEntity的子类!')
-
- }
- }
-
- }
-
- isEmpty() {
-
- if (this.type === FilterType.MULTI_SELECTION) {
- return isEmptyObject(this.value)
- } else if (this.type === FilterType.CHECK) {
- return this.value === null
- } else {
- return !this.value
- }
- };
-
- reset() {
- this.value = null
- this.active = -1
- };
-
- putValue(value) {
- if (value === null) {
- this.value = null
- return
- }
-
- if (this.type === FilterType.MULTI_SELECTION) {
-
- let draftArray = null
- if (value instanceof Array) {
- draftArray = value
- } else {
- draftArray = value.split(',')
- }
- let arr = []
- for (let i = 0; i < draftArray.length; i++) {
- let item = draftArray[i]
-
- //验证值是否落在options中。
- for (let j = 0; j < this.options.length; j++) {
- let opt = this.options[j]
- if (opt.value === item) {
- //保证唯一性
- if (arr.indexOf(item) === -1) {
- arr.push(item)
- }
- break
- }
- }
- }
- this.value = arr
- } else if (this.type === FilterType.SELECTION) {
-
- for (let j = 0; j < this.options.length; j++) {
-
- let opt = this.options[j]
- if (opt.value === value) {
- this.value = value
- this.active = j
- }
-
- }
- } else {
- this.value = value
- }
-
- };
-
- //把filter中的value装填到params中,供params去进行http请求。
- getParam() {
-
- if (this.type === FilterType.MULTI_SELECTION) {
- if (this.value && this.value.length) {
- return this.value.toString()
- } else {
- return null
- }
- } else if (this.type === FilterType.DATE_TIME_SELECTION) {
- if (this.value instanceof Date) {
- return simpleDateTime(this.value)
- } else {
- return this.value
- }
- } else if (this.type === FilterType.DATE_SELECTION) {
- if (this.value instanceof Date) {
- return simpleDate(this.value)
- } else {
- return this.value
- }
- } else {
- return this.value
- }
-
- };
-
-}
-
diff --git a/src/model/base/FilterType.js b/src/model/base/FilterType.js
deleted file mode 100644
index fe0faa2..0000000
--- a/src/model/base/FilterType.js
+++ /dev/null
@@ -1,23 +0,0 @@
-let FilterType = {
- //用于boolean筛选
- CHECK: 'CHECK',
- //用于文本输入筛选
- INPUT: 'INPUT',
- //用于排序字段筛选
- SORT: 'SORT',
- //用于有限的状态筛选
- SELECTION: 'SELECTION',
- //用于从有限的状态中选出多项,比如:status = RUNNING or status = STOP
- MULTI_SELECTION: 'MULTI_SELECTION',
- //用于Pager筛选。要求一页能够展示完的那种。
- HTTP_SELECTION: 'HTTP_SELECTION',
- //用于输入框从远程筛选。
- HTTP_INPUT_SELECTION: 'HTTP_INPUT_SELECTION',
- //用于按照时间筛选,生成的时间格式是 yyyy-MM-dd HH:mm:ss
- DATE_TIME_SELECTION: 'DATE_TIME_SELECTION',
- //用于按照日期筛选,生成的时间格式是 yyyy-MM-dd
- DATE_SELECTION: 'DATE_SELECTION'
-
-}
-
-export {FilterType}
diff --git a/src/model/base/Pager.js b/src/model/base/Pager.js
deleted file mode 100644
index dc03279..0000000
--- a/src/model/base/Pager.js
+++ /dev/null
@@ -1,339 +0,0 @@
-import Base from './Base'
-import Vue from 'vue'
-import $ from 'jquery'
-import {isInteger} from '../../common/util/Utils'
-import Filter from "./Filter";
-import {FilterType} from "./FilterType";
-
-export default class Pager extends Base {
-
- static MAX_PAGE_SIZE = 100
-
- constructor(Clazz, pageSize = 10, page = 0) {
- super()
-
- this.page = page
- this.pageSize = pageSize
- this.totalItems = 0
- this.totalPages = 0
- this.data = []
-
- //this field means whether add filter query to the URL.
- this.history = null
-
- //供nb-pager使用的
- this.offset = 3
-
- //是否去服务器请求过。主要用来判断hasMore.
- this.hasRequested = false
-
- //list attributes.
- if (Clazz && (Clazz.prototype instanceof Base)) {
- this.Clazz = Clazz
-
- //考虑兼容模式,允许自定义URL_PAGE.
- let urlPage = Clazz.prototype.URL_PAGE
- if (!urlPage) {
- urlPage = Clazz.prototype.getUrlPage()
- }
- if (urlPage) {
- this.URL_PAGE = urlPage
- } else {
- console.error('The Clazz MUST define a prototype named \'URL_PAGE\'')
- }
-
- if (Clazz.prototype.getFilters) {
-
- //这个地方的Filter不能用同一个,会出问题的。
- this.filters = Clazz.prototype.getFilters()
-
- } else {
- console.error('The Clazz MUST define a prototype method named \'getFilters\'')
- }
-
- } else {
- console.error('You MUST specify a Clazz extended Base', Clazz)
- }
-
- }
-
- //hasMore
- hasMore() {
-
- if (this.hasRequested) {
-
- return this.totalPages > this.page + 1;
-
- } else {
- return true
- }
-
- }
-
- //重置Filter。
- resetFilter() {
- for (let i = 0; i < this.filters.length; i++) {
- let filter = this.filters[i]
- filter.reset()
- }
- };
-
- //重置Filter。
- resetSortFilters() {
- for (let i = 0; i < this.filters.length; i++) {
- let filter = this.filters[i]
- if (filter.type === FilterType.SORT) {
- filter.reset()
- }
- }
- };
-
- //手动设置过滤器的值
- setFilterValue(key, value) {
- if (!this.filters || !this.filters.length) {
- return
- }
- for (let i = 0; i < this.filters.length; i++) {
- let filter = this.filters[i]
- if (filter.key === key) {
- filter.putValue(value)
- }
- }
- };
-
- //根据key来删除某个Filter
- removeFilter(key) {
- if (!this.filters || !this.filters.length) {
- return
- }
- for (let i = 0; i < this.filters.length; i++) {
- let filter = this.filters[i]
- if (filter.key === key) {
- this.filters.splice(i, 1)
- break
- }
- }
- };
-
- //隐藏某个Filter,实际上我们可以根据这个filter来筛选,只不过不出现在NbFilter中而已。
- showFilter(key, visible = true) {
- if (!this.filters || !this.filters.length) {
- return
- }
- for (let i = 0; i < this.filters.length; i++) {
- let filter = this.filters[i]
- if (filter.key === key) {
- filter.visible = visible
- break
- }
- }
- };
-
- showAllFilter(visible = true) {
- if (!this.filters || !this.filters.length) {
- return
- }
- for (let i = 0; i < this.filters.length; i++) {
- let filter = this.filters[i]
- filter.visible = visible
- }
- }
-
- //根据一个key来获取某个filter
- getFilter(key) {
- if (!this.filters || !this.filters.length) {
- return null
- }
- for (let i = 0; i < this.filters.length; i++) {
- let filter = this.filters[i]
- if (filter.key === key) {
- return filter
- }
- }
- };
-
- //获取当前进行sort的那个filter
- getCurrentSortFilter() {
- if (!this.filters || !this.filters.length) {
- return null
- }
- for (let i = 0; i < this.filters.length; i++) {
- let filter = this.filters[i]
- if (filter.type === FilterType.SORT && !filter.isEmpty()) {
- return filter
- }
- }
- return null
- }
-
- //根据一个key来获取某个filter
- getFilterValue(key) {
- let filter = this.getFilter(key)
- if (!filter) {
- return null
- } else {
- return filter.getParam()
- }
-
- };
-
- //获取所有的filter参数,键值对形式
- getParams() {
-
- let params = {
- page: this.page,
- pageSize: this.pageSize
- }
- if (!this.filters || !this.filters.length) {
- return params
- }
-
- for (let i = 0; i < this.filters.length; i++) {
- let filter = this.filters[i]
-
- if (filter.getParam() !== null && filter.getParam() !== '') {
- params[filter.key] = filter.getParam()
- }
- }
-
- return params;
- };
-
- //获取当前pager中的list
- getList() {
- return this.data
- }
-
- isEmpty() {
- if (!this.data) {
- return true
- }
- return this.data.length === 0
-
- }
-
- //该方法是在地址栏添加上query参数,参数就是filters中的key和value.
- //同时地址栏上有的参数也会自动读取到filters中去
- //因此,启用该方法后返回时可以停留在之前的页码中。
- enableHistory() {
- this.history = true
-
- let query = Vue.store.state.route.query
-
- if (typeof query.page !== 'undefined') {
- this.page = parseInt(query.page)
- }
- if (typeof query.pageSize !== 'undefined') {
- this.pageSize = parseInt(query.pageSize)
- }
-
- if (!isInteger(this.page)) {
- this.page = 0
- }
- if (!isInteger(this.pageSize)) {
- this.pageSize = 10
- }
-
- //try to fill the filters by query.
- for (let i = 0; i < this.filters.length; i++) {
- let filter = this.filters[i]
-
- if (typeof query[filter.key] !== 'undefined') {
-
- let value = query[filter.key]
- //check类型的要转成boolean.
- if (filter.type === FilterType.CHECK) {
- if (value === 'true') {
- value = true
- } else if (value === 'false') {
- value = false
- } else {
- value = null
- }
- }
- filter.putValue(value)
-
- }
-
- }
- }
-
- //you can specify the page url here.
- httpCustomPage(url, params, successCallback, errorCallback) {
- let that = this
- this.loading = true
- this.errorMessage = null
-
- if (this.history) {
- history.replaceState({}, '', Vue.store.state.route.path + '?' + $.param(params))
- }
-
- //是否请求过的标志位变更。
- this.hasRequested = true
- this.httpGet(url, params, function (response) {
- that.loading = false
-
- that.render(response.data.data)
-
- that.safeCallback(successCallback)(response)
-
- }, errorCallback)
-
- };
-
- //use default filters as parameters..
- httpFastPage(successCallback, errorCallback) {
-
- if (!isInteger(this.page)) {
- this.page = 0
- }
-
- if (!isInteger(this.pageSize)) {
- this.pageSize = 10
- }
-
- let params = {
- page: this.page,
- pageSize: this.pageSize
- }
-
- for (let i = 0; i < this.filters.length; i++) {
- let filter = this.filters[i]
-
- if (filter.getParam() !== null && filter.getParam() !== '') {
- params[filter.key] = filter.getParam()
- }
- }
-
-
- this.httpCustomPage(this.URL_PAGE, params, successCallback, errorCallback)
-
- };
-
- //use default url_page.
- httpPage(params, successCallback, errorCallback) {
-
- this.httpCustomPage(this.URL_PAGE, params, successCallback, errorCallback)
-
- };
-
- render(obj) {
-
- super.render(obj)
- this.renderList('data', this.Clazz)
-
- }
-
- //清空data中的数据。
- clear() {
- this.data.splice(0, this.data.length)
- this.page = 0
- this.totalItems = 0
- this.totalPages = 0
- }
-
-}
-
-
-
-
diff --git a/src/model/base/ResultCode.js b/src/model/base/ResultCode.js
deleted file mode 100644
index 3b0f5e2..0000000
--- a/src/model/base/ResultCode.js
+++ /dev/null
@@ -1,80 +0,0 @@
-let ResultCode = {
-
- OK: "OK",
- BAD_REQUEST: "BAD_REQUEST",
- NEED_SHARE_CODE: "NEED_SHARE_CODE",
- SHARE_CODE_ERROR: "SHARE_CODE_ERROR",
- LOGIN: "LOGIN",
- USER_DISABLED: "USER_DISABLED",
- UNAUTHORIZED: "UNAUTHORIZED",
- NOT_FOUND: "NOT_FOUND",
- RANGE_NOT_SATISFIABLE: "RANGE_NOT_SATISFIABLE",
- NOT_INSTALLED: "NOT_INSTALLED",
- SERVER: "SERVER",
- UNKNOWN: "UNKNOWN",
-
-}
-
-let ResultCodeMap = {
-
- OK: {
- name: "成功",
- value: "OK"
- },
- BAD_REQUEST: {
- name: "请求不合法",
- value: "BAD_REQUEST"
- },
- NEED_SHARE_CODE: {
- name: "提取码必填",
- value: "NEED_SHARE_CODE"
- },
- SHARE_CODE_ERROR: {
- name: "提取码错误",
- value: "SHARE_CODE_ERROR"
- },
- LOGIN: {
- name: "未登录,禁止访问",
- value: "LOGIN"
- },
- USER_DISABLED: {
- name: "用户被禁用",
- value: "LOGIN"
- },
- UNAUTHORIZED: {
- name: "没有权限,禁止访问",
- value: "UNAUTHORIZED"
- },
- NOT_FOUND: {
- name: "内容不存在",
- value: "NOT_FOUND"
- },
- RANGE_NOT_SATISFIABLE: {
- name: "范围错误",
- value: "RANGE_NOT_SATISFIABLE"
- },
- NOT_INSTALLED: {
- name: "尚未安装",
- value: "NOT_INSTALLED"
- },
- SERVER: {
- name: "服务器未知错误",
- value: "SERVER"
- },
-
- UNKNOWN: {
- name: "服务器未知错误",
- value: "UNKNOWN"
- }
-
-
-}
-
-let ResultCodeList = [];
-for (let key in ResultCodeMap) {
- if (ResultCodeMap.hasOwnProperty(key)) {
- ResultCodeList.push(ResultCodeMap[key]);
- }
-}
-
-export {ResultCode, ResultCodeMap, ResultCodeList};
diff --git a/src/model/base/SortDirection.js b/src/model/base/SortDirection.js
deleted file mode 100644
index 6a31c17..0000000
--- a/src/model/base/SortDirection.js
+++ /dev/null
@@ -1,6 +0,0 @@
-let SortDirection = {
- ASC: 'ASC',
- DESC: 'DESC'
-}
-
-export {SortDirection}
diff --git a/src/model/dashboard/Dashboard.js b/src/model/dashboard/Dashboard.js
deleted file mode 100644
index cf045c9..0000000
--- a/src/model/dashboard/Dashboard.js
+++ /dev/null
@@ -1,47 +0,0 @@
-import BaseEntity from '../base/BaseEntity'
-import Filter from "../base/Filter";
-import {FilterType} from "../base/FilterType";
-import {lowerSlash} from "../../common/filter/str";
-
-export default class Dashboard extends BaseEntity {
-
- static URL_ACTIVE_IP_TOP10 = "/api/dashboard/active/ip/top10"
-
- constructor(args) {
- super(args)
-
- this.invokeNum = 0;
- this.totalInvokeNum = 0;
- this.uv = 0;
- this.totalUv = 0;
- this.matterNum = 0;
- this.totalMatterNum = 0;
- this.fileSize = 0;
- this.totalFileSize = 0;
- this.avgCost = 0;
- this.dt = 0;
- }
-
- //获取到当前实体的url前缀。
- getUrlPrefix() {
- return "/api/dashboard"
- }
-
- render(obj) {
- super.render(obj)
-
- }
-
- getFilters() {
- return [
- ...super.getFilters(),
- new Filter(FilterType.SORT, 'Sort Dt', 'orderDt')
- ]
- }
-
- httpActiveIpTop10(successCallback, errorCallback) {
- let that = this
- this.httpPost(Dashboard.URL_ACTIVE_IP_TOP10, {}, successCallback, errorCallback)
- }
-
-}
diff --git a/src/model/download/token/DownloadToken.js b/src/model/download/token/DownloadToken.js
deleted file mode 100644
index d12d935..0000000
--- a/src/model/download/token/DownloadToken.js
+++ /dev/null
@@ -1,46 +0,0 @@
-import BaseEntity from '../../base/BaseEntity'
-import Filter from "../../base/Filter";
-import {FilterType} from "../../base/FilterType";
-import {simpleDateTime} from "../../../common/filter/time";
-
-export default class DownloadToken extends BaseEntity {
-
- static URL_FETCH_DOWNLOAD_TOKEN = "/api/alien/fetch/download/token"
-
- constructor(args) {
- super(args)
- this.userUuid = null
- this.matterUuid = null
- this.expireTime = null
- this.ip = null
- }
- getUrlPrefix() {
- return "/api/download/token"
- }
-
- render(obj) {
- super.render(obj)
- this.renderEntity("expireTime", Date)
- }
-
- getFilters() {
- return [
- ...super.getFilters()
- ]
- }
-
- httpFetchDownloadToken(matterUuid, successCallback, errorCallback) {
- let that = this
- let date = new Date(new Date().getTime() + 10 * 60 * 1000)
-
- let form = {
- expireTime: simpleDateTime(date),
- matterUuid
- }
- this.httpPost(DownloadToken.URL_FETCH_DOWNLOAD_TOKEN, form, function (response) {
- that.render(response.data.data)
- that.safeCallback(successCallback)(response)
- }, errorCallback)
- }
-
-}
diff --git a/src/model/image/cache/ImageCache.js b/src/model/image/cache/ImageCache.js
deleted file mode 100644
index 08ef2d6..0000000
--- a/src/model/image/cache/ImageCache.js
+++ /dev/null
@@ -1,70 +0,0 @@
-import BaseEntity from '../../base/BaseEntity'
-import Filter from '../../base/Filter'
-import {FilterType} from "../../base/FilterType";
-import User from "../../user/User";
-import Matter from "../../matter/Matter";
-
-export default class ImageCache extends BaseEntity {
-
- static URL_DELETE_BATCH = '/api/image/cache/delete/batch'
-
- constructor(args) {
- super(args)
-
- this.name = null;
- this.userUuid = null;
- this.matterUuid = null;
- this.matterName = null;
- this.mode = null;
- this.md5 = null;
- this.size = 0;
- this.path = 0;
-
- /*
- 这部分是辅助UI的字段信息
- */
- //作为勾选变量
- this.check = false
-
- this.user = new User()
- this.matter = new Matter()
- }
- getUrlPrefix() {
- return "/api/image/cache"
- }
- render(obj) {
- super.render(obj)
-
- }
-
- getFilters() {
- return [
- ...super.getFilters(),
- new Filter(FilterType.INPUT, 'User Uuid', 'userUuid', null, null, false),
- new Filter(FilterType.INPUT, 'File Uuid', 'matterUuid', null, null, false)
- ]
- }
-
- getForm() {
- return {
- uuid: this.uuid ? this.uuid : null
- }
- }
-
- getResizeUrl() {
- return '/api/alien/preview/' + this.matterUuid + '/' + this.matterName + "?ir=" + this.mode
- }
-
- getOriginUrl() {
- return '/api/alien/download/' + this.matterUuid + '/' + this.matterName
- }
-
-
- httpDeleteBatch(uuids, successCallback, errorCallback) {
- this.httpPost(ImageCache.URL_DELETE_BATCH, {'uuids': uuids}, function (response) {
- typeof successCallback === 'function' && successCallback(response)
- }, errorCallback)
- }
-
-
-}
diff --git a/src/model/install/Install.js b/src/model/install/Install.js
deleted file mode 100644
index 2313105..0000000
--- a/src/model/install/Install.js
+++ /dev/null
@@ -1,294 +0,0 @@
-import BaseEntity from '../base/BaseEntity'
-import Vue from "vue"
-
-export default class Install extends BaseEntity {
-
- static URL_VERIFY = '/api/install/verify'
- static URL_TABLE_INFO_LIST = '/api/install/table/info/list'
- static URL_ADMIN_LIST = '/api/install/admin/list'
- static URL_CREATE_TABLE = '/api/install/create/table'
- static URL_CREATE_ADMIN = '/api/install/create/admin'
- static URL_VALIDATE_ADMIN = '/api/install/validate/admin'
- static URL_FINISH = '/api/install/finish'
-
- constructor(args) {
- super(args)
-
- //数据库名
- this.mysqlPort = 3306
- this.mysqlHost = "127.0.0.1"
- this.mysqlSchema = "tank"
- this.mysqlUsername = "tank"
- this.mysqlPassword = null
- this.mysqlCharset = "utf8"
-
- //管理员用户名
- this.adminUsername = null
- this.adminPassword = null
- this.adminRepassword = null
-
- //表元信息
- this.tableInfoList = []
-
- //管理员列表
- this.adminList = []
-
- //数据库连接是否可用
- this.verified = false
- //管理员配置完毕
- this.adminConfigured = false
-
-
- this.validatorSchema = {
- mysqlPort: {
- rules: [{required: true, message: 'MySQL required'}],
- error: null
- },
- mysqlHost: {
- rules: [{required: true, message: 'MySQL Host required'}],
- error: null
- },
- mysqlSchema: {
- rules: [{required: true, message: 'MySQL schema required'}],
- error: null
- },
- mysqlUsername: {
- rules: [{required: true, message: 'MySQL username required'}],
- error: null
- },
- mysqlPassword: {
- rules: [{required: true, message: 'MySQL password required'}],
- error: null
- }
-
- }
-
- this.adminValidatorSchema = {
- adminUsername: {
- rules: [
- {required: true, message: 'Username required'},
- {
- type: 'string',
- pattern: /^[0-9a-zA-Z_]+$/,
- message: Vue.i18n.t("model.usernameRule")
- }],
- error: null
- },
- adminPassword: {
- rules: [
- {required: true, message: 'Password required'},
- {min: 6, message: Vue.i18n.t("model.passwordRule")}
- ],
- error: null
- },
- adminRepassword: {
- rules: [
- {required: true, message: 'Password required'},
- {min: 6, message: Vue.i18n.t("model.passwordRule")}
- ],
- error: null
- }
-
- }
-
- }
-
- getUrlPrefix() {
- return "/api/install"
- }
- render(obj) {
- super.render(obj)
- }
-
- getForm() {
- return {
- mysqlPort: this.mysqlPort,
- mysqlHost: this.mysqlHost,
- mysqlSchema: this.mysqlSchema,
- mysqlUsername: this.mysqlUsername,
- mysqlPassword: this.mysqlPassword,
- mysqlCharset: this.mysqlCharset,
- }
- }
-
- validate(validatorSchema = this.validatorSchema) {
- return super.validate(validatorSchema)
- }
-
- //表创建完毕
- tableCreated() {
- if (!this.tableInfoList || this.tableInfoList.length === 0) {
- return false
- }
- for (let i = 0; i < this.tableInfoList.length; i++) {
- let tableInfo = this.tableInfoList[i]
- if (!tableInfo.tableExist) {
- return false
- }
-
- if (tableInfo.tableExist && tableInfo.missingFields.length !== 0) {
- return false
- }
- }
-
- return true;
- }
-
-
- httpVerify(successCallback, errorCallback) {
- let that = this
-
- if (!this.validate()) {
- this.defaultErrorHandler("Validate error", errorCallback)
- return
- }
-
- this.httpPost(Install.URL_VERIFY, this.getForm(), function (response) {
-
- that.safeCallback(successCallback)(response)
-
- }, errorCallback)
- }
-
- httpTableInfoList(successCallback, errorCallback) {
- let that = this
-
- if (!this.verified) {
- this.defaultErrorHandler("Please verify mysql first", errorCallback)
- return
- }
-
- this.httpPost(Install.URL_TABLE_INFO_LIST, this.getForm(), function (response) {
-
- that.tableInfoList.splice(0, that.tableInfoList.length);
- that.tableInfoList.push(...response.data.data)
-
- that.safeCallback(successCallback)(response)
-
- }, errorCallback)
- }
-
- httpCreateTable(successCallback, errorCallback) {
- let that = this
-
- if (!this.verified) {
- this.defaultErrorHandler("Please verify mysql first", errorCallback)
- return
- }
-
- this.httpPost(Install.URL_CREATE_TABLE, this.getForm(), function (response) {
-
- that.tableInfoList.splice(0, that.tableInfoList.length);
- that.tableInfoList.push(...response.data.data)
-
- that.safeCallback(successCallback)(response)
-
- }, errorCallback)
- }
-
- //获取管理员列表
- httpAdminList(successCallback, errorCallback) {
- let that = this
-
- if (!this.tableCreated()) {
- this.defaultErrorHandler("Please verify create table first", errorCallback)
- return
- }
-
-
- let form = this.getForm()
-
-
- this.httpPost(Install.URL_ADMIN_LIST, form, function (response) {
-
-
- that.adminList.splice(0, that.adminList.length);
- that.adminList.push(...response.data.data)
-
-
- that.safeCallback(successCallback)(response)
-
- }, errorCallback)
- }
-
-
- httpCreateAdmin(successCallback, errorCallback) {
- let that = this
-
- if (!this.tableCreated()) {
- this.defaultErrorHandler("Please verify create table first", errorCallback)
- return
- }
-
-
- if (!this.validate(that.adminValidatorSchema)) {
- this.defaultErrorHandler("Validate error", errorCallback)
- return
- }
-
-
- if (this.adminPassword !== this.adminRepassword) {
- this.defaultErrorHandler("password not same", errorCallback)
- return
- }
-
-
- let form = this.getForm()
- form["adminUsername"] = this.adminUsername
- form["adminPassword"] = this.adminPassword
-
-
- this.httpPost(Install.URL_CREATE_ADMIN, form, function (response) {
-
- that.adminConfigured = true
- that.safeCallback(successCallback)(response)
-
- }, errorCallback)
- }
-
-
- //验证管理员账号
- httpValidateAdmin(successCallback, errorCallback) {
- let that = this
-
- if (!this.tableCreated()) {
- this.defaultErrorHandler("Please verify create table first", errorCallback)
- return
- }
-
- if (!this.adminUsername || !this.adminPassword) {
- this.defaultErrorHandler("username and password required", errorCallback)
- return
- }
-
- let form = this.getForm()
- form["adminUsername"] = this.adminUsername
- form["adminPassword"] = this.adminPassword
-
-
- this.httpPost(Install.URL_VALIDATE_ADMIN, form, function (response) {
-
- that.adminConfigured = true
- that.safeCallback(successCallback)(response)
-
- }, errorCallback)
- }
-
-
- //完成安装过程
- httpFinish(successCallback, errorCallback) {
- let that = this
-
-
- let form = this.getForm()
-
- this.httpPost(Install.URL_FINISH, form, function (response) {
-
-
- that.safeCallback(successCallback)(response)
-
- }, errorCallback)
- }
-
-
-}
diff --git a/src/model/matter/Matter.js b/src/model/matter/Matter.js
deleted file mode 100644
index 6667109..0000000
--- a/src/model/matter/Matter.js
+++ /dev/null
@@ -1,478 +0,0 @@
-import BaseEntity from '../base/BaseEntity'
-import Filter from '../base/Filter'
-import {Message} from 'element-ui'
-import {getMimeType} from '../../common/util/MimeUtil'
-import {containStr, endWith, getExtension, startWith} from '../../common/filter/str'
-import User from '../user/User'
-import Vue from "vue"
-import {FilterType} from "../base/FilterType";
-import {handleImageUrl} from "../../common/util/ImageUtil";
-import {currentHost} from "../../common/util/Utils";
-import DownloadToken from "../download/token/DownloadToken";
-import FileUtil from "../../common/util/FileUtil";
-
-export default class Matter extends BaseEntity {
-
- static URL_MATTER_CREATE_DIRECTORY = '/api/matter/create/directory'
- static URL_MATTER_DELETE = '/api/matter/delete'
- static URL_MATTER_DELETE_BATCH = '/api/matter/delete/batch'
- static URL_MATTER_RENAME = '/api/matter/rename'
- static URL_CHANGE_PRIVACY = '/api/matter/change/privacy'
- static URL_MATTER_MOVE = '/api/matter/move'
- static URL_MATTER_DOWNLOAD = '/api/matter/download'
- static URL_MATTER_UPLOAD = '/api/matter/upload'
- static URL_MATTER_ZIP = '/api/matter/zip'
-
- static MATTER_ROOT = "root"
-
- constructor(args) {
- super(args)
- this.puuid = null
- this.userUuid = null
- this.dir = false
- this.alien = false
- this.name = null
- this.md5 = null
- this.size = 0
- this.privacy = true
- this.path = null
- this.times = 0;
-
- this.parent = null;
-
- /*
- 这部分是辅助UI的字段信息
- */
- //作为勾选变量
- this.check = false
-
- //允许用户选择的文件类型
- this.filter = "*"
- //本地字段
- //给用户的提示文字
- this.uploadHint = null
- //浏览器中选择好的原生file,未作任何处理。
- this.file = null
- //当前上传进度的数值 0-1之间
- this.progress = 0
- //实时上传速度 byte/s
- this.speed = 0
-
-
- }
-
- getFilters() {
- return [
- ...super.getFilters(),
- new Filter(FilterType.INPUT, '父级菜单uuid', 'puuid', null, null, false),
- new Filter(FilterType.INPUT, '用户', 'userUuid', null, User, false),
- new Filter(FilterType.INPUT, '关键字', 'name'),
- new Filter(FilterType.CHECK, '文件夹', 'dir'),
- new Filter(FilterType.CHECK, '应用数据', 'alien'),
- new Filter(FilterType.SORT, '文件夹', 'orderDir'),
- new Filter(FilterType.SORT, '下载次数', 'orderTimes'),
- new Filter(FilterType.SORT, '大小', 'orderSize'),
- new Filter(FilterType.SORT, '名称', 'orderName'),
- new Filter(FilterType.INPUT, '后缀名', 'extensions'),
- new Filter(FilterType.INPUT, '分享uuid', 'shareUuid'),
- new Filter(FilterType.INPUT, '提取码', 'shareCode'),
- new Filter(FilterType.INPUT, '分享根目录', 'shareRootUuid')
- ]
- }
-
- getUrlPrefix() {
- return "/api/matter"
- }
-
- render(obj) {
- super.render(obj)
- super.renderEntity("parent", Matter)
- }
-
-
- isImage() {
- return FileUtil.isImage(this.name)
- }
-
-
- isPdf() {
- return FileUtil.isPdf(this.name)
- }
-
- isText() {
- return FileUtil.isText(this.name)
- }
-
- isDoc() {
- return FileUtil.isDoc(this.name)
- }
-
- isPpt() {
- return FileUtil.isPpt(this.name)
- }
-
- isXls() {
- return FileUtil.isXls(this.name)
- }
-
- isAudio() {
- return FileUtil.isAudio(this.name)
- }
-
- isVideo() {
- return FileUtil.isVideo(this.name)
- }
-
- isPsd() {
- return FileUtil.isPsd(this.name)
- }
-
- getIcon() {
- if (FileUtil.isImage(this.name)) {
- return handleImageUrl(this.getPreviewUrl(), false, 100, 100)
- } else {
- return FileUtil.getIcon(this.name, this.dir)
- }
- }
-
- //下载文件
- download(downloadUrl = null) {
- if (!downloadUrl) {
- downloadUrl = this.getDownloadUrl()
- }
- window.open(downloadUrl)
- }
-
- //下载zip包
- downloadZip(uuidsString) {
- window.open(currentHost() + Matter.URL_MATTER_ZIP + "?uuids=" + uuidsString)
- }
-
- //预览文件 在分享的预览中才主动传入previewUrl.
- preview(previewUrl = null) {
- let that = this;
-
- let shareMode = true
- if (previewUrl) {
- shareMode = true
- } else {
- shareMode = false
- previewUrl = that.getPreviewUrl()
- }
-
- if (that.isImage()) {
-
- Vue.$photoSwipePlugin.showPhoto(previewUrl)
-
- } else if (that.isPdf()) {
-
- Vue.$previewer.previewPdf(that.name, previewUrl, that.size)
-
- } else if (that.isDoc() || that.isPpt() || that.isXls()) {
-
- //如果是分享中的预览,直接就可以公有访问。
- if (shareMode) {
- Vue.$previewer.previewOffice(that.name, previewUrl, that.size)
- } else {
-
- //如果是共有文件 office文件的预览请求一次性链接。
- if (this.privacy) {
-
- let downloadToken = new DownloadToken()
- downloadToken.httpFetchDownloadToken(that.uuid, function () {
- Vue.$previewer.previewOffice(that.name, that.getPreviewUrl(downloadToken.uuid), that.size)
- })
- } else {
- Vue.$previewer.previewOffice(that.name, previewUrl, that.size)
- }
- }
-
-
- } else if (that.isText()) {
-
- Vue.$previewer.previewText(that.name, previewUrl, that.size)
-
- } else if (that.isAudio()) {
-
- Vue.$previewer.previewAudio(that.name, previewUrl, that.size)
-
- } else if (that.isVideo()) {
-
- Vue.$previewer.previewVideo(that.name, previewUrl, that.size)
-
- } else {
- window.open(this.getPreviewUrl())
- }
- }
-
-
- httpCreateDirectory(successCallback, errorCallback) {
- let that = this
- let form = {'userUuid': that.userUuid, 'name': that.name, 'puuid': that.puuid}
-
- this.httpPost(Matter.URL_MATTER_CREATE_DIRECTORY, form, function (response) {
- that.render(response.data.data)
- typeof successCallback === 'function' && successCallback(response)
- }, errorCallback)
- }
-
- httpDelete(successCallback, errorCallback) {
- this.httpPost(Matter.URL_MATTER_DELETE, {'uuid': this.uuid}, function (response) {
- typeof successCallback === 'function' && successCallback(response)
- }, errorCallback)
- }
-
-
- httpDeleteBatch(uuids, successCallback, errorCallback) {
- this.httpPost(Matter.URL_MATTER_DELETE_BATCH, {'uuids': uuids}, function (response) {
- typeof successCallback === 'function' && successCallback(response)
- }, errorCallback)
- }
-
-
- httpRename(name, successCallback, errorCallback) {
- let that = this
- this.httpPost(Matter.URL_MATTER_RENAME, {'uuid': this.uuid, 'name': name}, function (response) {
- that.render(response.data.data)
- typeof successCallback === 'function' && successCallback(response)
- }, errorCallback)
- }
-
-
- httpChangePrivacy(privacy, successCallback, errorCallback) {
- let that = this
- this.httpPost(Matter.URL_CHANGE_PRIVACY, {'uuid': this.uuid, 'privacy': privacy}, function (response) {
- that.privacy = privacy
- if (typeof successCallback === "function") {
- successCallback(response)
- } else {
- Message.success(response.data.msg)
- }
- }, errorCallback)
- }
-
- httpMove(srcUuids, destUuid, successCallback, errorCallback) {
- let form = {'srcUuids': srcUuids}
- if (destUuid) {
- form.destUuid = destUuid
- } else {
- form.destUuid = 'root'
- }
- this.httpPost(Matter.URL_MATTER_MOVE, form, function (response) {
- typeof successCallback === 'function' && successCallback(response)
- }, errorCallback)
- }
-
-
- /*
- 以下是和上传相关的内容。
- */
-
- //从file中装填metaData
- validate() {
-
- if (!this.file) {
- this.errorMessage = '请选择上传文件'
- return false
- }
-
- this.name = this.file.name
- if (!this.name) {
- this.errorMessage = '请选择上传文件'
- return false
- }
-
- this.size = this.file.size
-
- this.errorMessage = null
- return true
-
- }
-
- //验证过滤器有没有误填写,这个方法主要给开发者使用。
- validateFilter() {
-
- let filter = this.filter
- if (filter === null || filter === '') {
- this.errorMessage = '过滤器设置错误,请检查-1'
- console.error('过滤器设置错误,请检查.-1')
- return false
- }
- if (filter !== '*') {
- let regex1 = /^(image|audio|video|text)(\|(image|audio|video|text))*$/g
- let regex2 = /^(\.[\w]+)(\|\.[\w]+)*$/
- // 测试几种特殊类型 image|audio|video|text
-
- if (!regex1.test(filter)) {
- //测试后缀名
- if (!regex2.test(filter)) {
- this.errorMessage = '过滤器设置错误,请检查-2'
- console.error('过滤器设置错误,请检查.-2')
- return false
- }
- }
- }
-
- //validate privacy
- let privacy = this.privacy
- if (privacy !== true) {
- if (privacy !== false) {
- this.errorMessage = 'privacy属性为Boolean类型'
- console.error('privacy属性为Boolean类型.')
- return false
- }
- }
-
- return true
- }
-
- //验证用户上传的文件是否符合过滤器
- validateFileType() {
- if (!this.filter) {
- this.errorMessage = '该过滤条件有问题'
- return false
- }
- if (this.filter === '*') {
- this.errorMessage = null
- return true
- }
-
- let type = getMimeType(this.name)
- let extension = getExtension(this.name)
- let simpleType = type.substring(0, type.indexOf('/'))
-
- //专门解决android微信浏览器中名字乱命名的bug.
- if (startWith(this.name, 'image%3A')) {
- extension = 'jpg'
- simpleType = 'image'
- } else if (startWith(this.name, 'video%3A')) {
- extension = 'mp4'
- simpleType = 'video'
- } else if (startWith(this.name, 'audio%3A')) {
- extension = 'mp3'
- simpleType = 'audio'
- }
-
- if (containStr(this.filter, extension)) {
- this.errorMessage = null
- return true
- }
-
- if (simpleType) {
- if (containStr(this.filter, simpleType)) {
- this.errorMessage = null
- return true
- }
- }
- this.errorMessage = '您上传的文件格式不符合要求'
- return false
- }
-
-
- //文件上传
- httpUpload(successCallback, failureCallback) {
-
- let that = this
-
- //验证是否装填好
- if (!this.validate()) {
- return
- }
-
- //验证用户填写的过滤条件是否正确
- if (!this.validateFilter()) {
- return
- }
-
- //验证是否满足过滤器
- if (!this.validateFileType()) {
- return
- }
-
- //(兼容性:chrome,ff,IE9及以上)
- let formData = new FormData()
-
- formData.append('userUuid', that.userUuid)
- formData.append('puuid', that.puuid)
- formData.append('file', that.file)
- formData.append('alien', that.alien)
- formData.append('privacy', that.privacy)
-
-
- //闭包
- let lastTimeStamp = new Date().getTime()
- let lastSize = 0
- that.httpPost(Matter.URL_MATTER_UPLOAD, formData, function (response) {
-
- that.uuid = response.data.data.uuid
-
- if (typeof successCallback === "function") {
- successCallback()
- }
-
- }, function (response) {
-
-
- that.errorMessage = '上传出错,请稍后重试'
- that.clear()
-
- that.defaultErrorHandler(response, failureCallback)
-
- }, {
- progress: function (event) {
-
- //上传进度。
- that.progress = event.loaded / event.total
-
- let currentTime = (new Date()).getTime();
- let deltaTime = currentTime - lastTimeStamp;
-
-
- //每2s计算一次速度
- if (deltaTime > 1000) {
- lastTimeStamp = currentTime;
-
- let currentSize = event.loaded;
- let deltaSize = currentSize - lastSize;
- lastSize = currentSize;
-
-
- that.speed = (deltaSize / (deltaTime / 1000)).toFixed(0);
- }
-
- }
- })
-
- }
-
- //清除文件
- clear() {
-
- //filter,privacy不变
- let matter = new Matter()
- matter.filter = this.filter
- matter.privacy = this.privacy
- matter.errorMessage = this.errorMessage
- matter.uploadHint = this.uploadHint
- this.render(matter)
-
- }
-
- getDownloadUrl(downloadTokenUuid = null) {
- return currentHost() + '/api/alien/download/' + this.uuid + '/' + this.name + (downloadTokenUuid ? '?downloadTokenUuid=' + downloadTokenUuid : '')
- }
-
- getPreviewUrl(downloadTokenUuid = null) {
- return currentHost() + '/api/alien/preview/' + this.uuid + '/' + this.name + (downloadTokenUuid ? '?downloadTokenUuid=' + downloadTokenUuid : '')
- }
-
- getShareDownloadUrl(shareUuid, shareCode, shareRootUuid) {
- return currentHost() + '/api/alien/download/' + this.uuid + '/' + this.name + '?shareUuid=' + shareUuid + "&shareCode=" + shareCode + "&shareRootUuid=" + shareRootUuid
- }
-
- getSharePreviewUrl(shareUuid, shareCode, shareRootUuid) {
- return currentHost() + '/api/alien/preview/' + this.uuid + '/' + this.name + '?shareUuid=' + shareUuid + "&shareCode=" + shareCode + "&shareRootUuid=" + shareRootUuid
- }
-
-
-}
diff --git a/src/model/preference/Preference.js b/src/model/preference/Preference.js
deleted file mode 100644
index 4f3e1fe..0000000
--- a/src/model/preference/Preference.js
+++ /dev/null
@@ -1,110 +0,0 @@
-import BaseEntity from '../base/BaseEntity'
-
-export default class Preference extends BaseEntity {
-
- static URL_API_PREFERENCE_FETCH = '/api/preference/fetch'
- static URL_API_SYSTEM_CLEANUP = '/api/preference/system/cleanup'
-
- constructor(args) {
- super(args)
- //网站名称
- this.name = null
-
- //logo
- this.logoUrl = null
- this.faviconUrl = null
-
- //版权信息
- this.copyright = null
- this.record = null
-
- //大小限制
- this.downloadDirMaxSize = -1
- //文件数量
- this.downloadDirMaxNum = -1
- //用户默认总大小限制
- this.defaultTotalSizeLimit = -1
- //是否允许自主注册
- this.allowRegister = false
- //Office预览链接
- this.officeUrl = null
- //后台版本
- this.version = null
-
- this.validatorSchema = {
- name: {
- rules: [{required: true, message: '网站名称必填'}],
- error: null
- }
- }
- }
-
- getUrlPrefix() {
- return "/api/preference"
- }
-
- render(obj) {
- super.render(obj)
- }
-
-
- getForm() {
- return {
- name: this.name,
- logoUrl: this.logoUrl,
- faviconUrl: this.faviconUrl,
- copyright: this.copyright,
- record: this.record,
- downloadDirMaxNum: this.downloadDirMaxNum,
- downloadDirMaxSize: this.downloadDirMaxSize,
- defaultTotalSizeLimit: this.defaultTotalSizeLimit,
- allowRegister: this.allowRegister,
- officeUrl: this.officeUrl
- }
- }
-
- validate() {
- return super.validate()
- }
-
-
- //修改title和favicon
- updateTitleAndFavicon() {
-
- if (this.faviconUrl) {
- //修改favicon
- let link = document.querySelector("link[rel*='icon']") || document.createElement('link');
- link.type = 'image/x-icon';
- link.rel = 'shortcut icon';
- link.href = this.faviconUrl;
- document.getElementsByTagName('head')[0].appendChild(link);
- }
-
- document.title = this.name
-
- }
-
-
- httpFetch(successCallback, errorCallback) {
- let that = this
- this.httpPost(Preference.URL_API_PREFERENCE_FETCH, {}, function (response) {
- that.render(response.data.data)
-
- that.updateTitleAndFavicon()
-
- that.safeCallback(successCallback)(response)
-
- }, errorCallback)
- }
-
- httpSystemCleanup(password, successCallback, errorCallback) {
- let that = this
- this.httpPost(Preference.URL_API_SYSTEM_CLEANUP, {password}, function (response) {
-
- that.safeCallback(successCallback)(response)
-
- }, errorCallback)
- }
-
-
-}
diff --git a/src/model/share/Share.js b/src/model/share/Share.js
deleted file mode 100644
index 6a92fc5..0000000
--- a/src/model/share/Share.js
+++ /dev/null
@@ -1,178 +0,0 @@
-import BaseEntity from '../base/BaseEntity'
-import {ShareType} from "./ShareType";
-import {simpleDateTime} from "../../common/filter/time";
-import {ShareExpireOption, ShareExpireOptionMap} from "./ShareExpireOption";
-import FileUtil from "../../common/util/FileUtil";
-import Matter from "../matter/Matter";
-import {currentHost} from "../../common/util/Utils";
-import Vue from "vue"
-import {Message, MessageBox} from 'element-ui'
-
-
-export default class Share extends BaseEntity {
-
- static URL_CREATE = '/api/share/create'
- static URL_BROWSE = '/api/share/browse'
- static URL_DELETE_BATCH = '/api/share/delete/batch'
- static URL_ZIP = '/api/share/zip'
-
- constructor(args) {
- super(args)
-
- this.name = null
- this.shareType = ShareType.MIX
- this.userUuid = 0;
- this.username = null;
- this.downloadTimes = 0;
- this.code = null;
- this.expireInfinity = false;
- this.expireTime = null;
-
- //当前正在查看的文件夹
- this.dirMatter = new Matter()
- //当前share对应的matters
- this.matters = []
-
- //当前分享正在查看的根目录。前端辅助字段。
- this.rootUuid = Matter.MATTER_ROOT
-
- //本地临时字段
- this.expireOption = ShareExpireOption.MONTH
-
-
- }
- getUrlPrefix() {
- return "/api/share"
- }
-
- render(obj) {
- super.render(obj)
-
- this.renderEntity("expireTime", Date)
- this.renderEntity("dirMatter", Matter)
- this.renderList("matters", Matter)
-
-
- }
-
- getFilters() {
- return [
- ...super.getFilters()
- ]
- }
-
- getForm() {
- return {
- name: this.name,
- uuid: this.uuid ? this.uuid : null
- }
- }
-
- getIcon() {
- if (this.shareType === ShareType.MIX) {
- return require("../../assets/img/file/archive.svg")
- } else {
- return FileUtil.getIcon(this.name, this.shareType === ShareType.DIRECTORY)
- }
-
- }
-
- getLink() {
- return currentHost() + '/share/detail/' + this.uuid;
- }
-
- hasExpired() {
- if (this.expireInfinity) {
- return false
- } else {
- if (this.expireTime) {
- return this.expireTime < new Date().getTime();
- } else {
- return false
- }
-
- }
- }
-
- copyLinkAndCode() {
- let that = this;
- let text = Vue.i18n.t("model.linkCodeText", [that.getLink(), that.code])
- Vue.$copyPlguin.copy(text, function () {
- Message.success({
- message: Vue.i18n.t("model.copyLinkCodeSuccess"),
- center: true
- })
- })
- }
-
- //获取过期时间
- getExpireTime() {
- let delta = ShareExpireOptionMap[this.expireOption].deltaMillisecond
- let now = new Date()
- return new Date(now.getTime() + delta)
- }
-
-
- //下载zip包
- downloadZip(puuid) {
- window.open(currentHost() + Share.URL_ZIP + "?shareUuid=" + this.uuid + "&code=" + this.code + "&puuid=" + puuid + "&rootUuid=" + this.rootUuid)
- }
-
-
- //创建一个分享.matterUuids要求为数组,expireTime要求为时间对象
- httpCreate(matterUuids, successCallback, errorCallback) {
- let that = this
-
- let form = {
- matterUuids: matterUuids.toString(),
- expireInfinity: this.expireOption === ShareExpireOption.INFINITY,
- expireTime: simpleDateTime(this.getExpireTime())
- }
-
- this.httpPost(Share.URL_CREATE, form, function (response) {
-
- that.render(response.data.data)
-
- that.safeCallback(successCallback)()
-
- }, errorCallback)
- }
-
- httpDeleteBatch(uuids, successCallback, errorCallback) {
- this.httpPost(Share.URL_DELETE_BATCH, {'uuids': uuids}, function (response) {
- typeof successCallback === 'function' && successCallback(response)
- }, errorCallback)
- }
-
-
- httpBrowse(puuid, rootUuid, successCallback, errorCallback) {
- let that = this
-
- let form = {
- puuid,
- rootUuid,
- shareUuid: this.uuid,
- code: this.code
- }
-
- that.detailLoading = true
- this.httpPost(Share.URL_BROWSE, form, function (response) {
-
- that.render(response.data.data)
-
- that.detailLoading = false
-
- typeof successCallback === 'function' && successCallback(response)
-
- }, function (errorMessage, response) {
-
- that.detailLoading = false
-
- typeof errorCallback === 'function' && errorCallback(errorMessage, response)
-
-
- })
- }
-
-
-}
diff --git a/src/model/share/ShareExpireOption.js b/src/model/share/ShareExpireOption.js
deleted file mode 100644
index 8788976..0000000
--- a/src/model/share/ShareExpireOption.js
+++ /dev/null
@@ -1,50 +0,0 @@
-let ShareExpireOption = {
- HOUR: 'HOUR',
- DAY: 'DAY',
- WEEK: 'WEEK',
- MONTH: 'MONTH',
- YEAR: 'YEAR',
- INFINITY: 'INFINITY'
-}
-
-let ShareExpireOptionMap = {
- HOUR: {
- name: 'share.hour',
- value: 'HOUR',
- deltaMillisecond: 60 * 60 * 1000
- },
- DAY: {
- name: 'share.day',
- value: 'DAY',
- deltaMillisecond: 24 * 60 * 60 * 1000
- },
- WEEK: {
- name: 'share.week',
- value: 'WEEK',
- deltaMillisecond: 7 * 24 * 60 * 60 * 1000
- },
- MONTH: {
- name: 'share.month',
- value: 'MONTH',
- deltaMillisecond: 30 * 24 * 60 * 60 * 1000
- },
- YEAR: {
- name: 'share.year',
- value: 'YEAR',
- deltaMillisecond: 365 * 24 * 60 * 60 * 1000
- },
- INFINITY: {
- name: 'share.infinity',
- value: 'INFINITY',
- deltaMillisecond: 0
- }
-}
-
-let ShareExpireOptionList = [];
-for (let key in ShareExpireOptionMap) {
- if (ShareExpireOptionMap.hasOwnProperty(key)) {
- ShareExpireOptionList.push(ShareExpireOptionMap[key]);
- }
-}
-
-export {ShareExpireOption, ShareExpireOptionMap, ShareExpireOptionList}
diff --git a/src/model/share/ShareType.js b/src/model/share/ShareType.js
deleted file mode 100644
index 16bc6b6..0000000
--- a/src/model/share/ShareType.js
+++ /dev/null
@@ -1,30 +0,0 @@
-let ShareType = {
- FILE: 'FILE',
- DIRECTORY: 'DIRECTORY',
- MIX: 'MIX'
-}
-
-let ShareTypeMap = {
- FILE: {
- name: '文件',
- value: 'FILE'
- },
- DIRECTORY: {
- name: '文件夹',
- value: 'DIRECTORY'
- },
- MIX: {
- name: '混合',
- value: 'MIX'
- }
-}
-
-
-let ShareTypeList = [];
-for (let key in ShareTypeMap) {
- if (ShareTypeMap.hasOwnProperty(key)) {
- ShareTypeList.push(ShareTypeMap[key]);
- }
-}
-
-export {ShareType, ShareTypeMap, ShareTypeList}
diff --git a/src/model/user/User.js b/src/model/user/User.js
deleted file mode 100644
index 6dc8286..0000000
--- a/src/model/user/User.js
+++ /dev/null
@@ -1,306 +0,0 @@
-import BaseEntity from '../base/BaseEntity'
-import Filter from '../base/Filter'
-import {currentHost, readLocalStorage, removeLocalStorage, saveToLocalStorage} from "../../common/util/Utils";
-
-import {UserRole} from "./UserRole";
-import {UserStatus, UserStatusList} from "./UserStatus";
-import {FilterType} from "../base/FilterType";
-import {handleImageUrl} from "../../common/util/ImageUtil";
-import {MessageBox, Message} from 'element-ui'
-import Vue from "vue"
-
-let defaultAvatarPath = require("../../assets/img/avatar.png")
-
-export default class User extends BaseEntity {
-
- static LOCAL_STORAGE_KEY = "user";
-
- static URL_LOGIN = '/api/user/login'
- static URL_AUTHENTICATION_LOGIN = '/api/user/authentication/login'
- static URL_REGISTER = '/api/user/register'
- static URL_LOGOUT = '/api/user/logout'
- static URL_USER_CHANGE_PASSWORD = '/api/user/change/password'
- static URL_USER_RESET_PASSWORD = '/api/user/reset/password'
- static URL_USER_TOGGLE_STATUS = '/api/user/toggle/status'
- static URL_USER_TRANSFIGURATION = '/api/user/transfiguration'
-
- constructor(args) {
- super(args)
- this.role = UserRole.GUEST
- this.username = null
- this.password = null
- this.avatarUrl = null
- this.lastIp = null
- this.lastTime = null
- //默认大小限制100Mb.
- this.sizeLimit = 104857600
- this.totalSize = 0
- this.totalSizeLimit = -1
- this.status = UserStatus.OK
-
- //local fields
- this.isLogin = false
-
- this.validatorSchema = {
- username: {
- rules: [
- {required: true, message: 'username required'},
- {
- type: 'string',
- pattern: /^[0-9a-zA-Z_]+$/,
- message: "only lowercase letter and number and _ is permitted."
- }],
- error: null
- }
- }
- }
-
- getAvatarUrl() {
- if (this.avatarUrl) {
- return handleImageUrl(this.avatarUrl)
- } else {
- return defaultAvatarPath
- }
- }
-
- getUrlPrefix() {
- return "/api/user"
- }
-
- render(obj) {
- super.render(obj)
- this.renderEntity('lastTime', Date)
- }
-
- getFilters() {
- return [
- ...super.getFilters(),
- new Filter(FilterType.INPUT, '用户', 'username', null, User, false),
- new Filter(FilterType.INPUT, '手机号', 'phone', null, null, false),
- new Filter(FilterType.SELECTION, '状态', 'status', UserStatusList),
- new Filter(FilterType.SORT, '最新更新时间', 'orderLastTime')
- ]
- }
-
- //将用户信息存储在本地。
- renderFromLocalStorage() {
-
- try {
- let userString = readLocalStorage(User.LOCAL_STORAGE_KEY)
-
- if (userString) {
- let json = JSON.parse(userString)
- this.render(json)
-
- }
-
- } catch (e) {
- removeLocalStorage(User.LOCAL_STORAGE_KEY)
- }
- }
-
- //将用户信息存储在本地。
- saveToLocalStorage(rawUserObject = null) {
-
- //有可能rawUserObject直接就是一个user对象,那么我们需要删掉一些无用的信息。
- delete rawUserObject['validatorSchema']
- delete rawUserObject['userProfile']
- delete rawUserObject['avatar']
-
- saveToLocalStorage(User.LOCAL_STORAGE_KEY, JSON.stringify(rawUserObject))
- }
-
- //清除本地的user信息
- clearLocalStorage() {
-
- removeLocalStorage(User.LOCAL_STORAGE_KEY)
- }
-
- //更新本地持久化了的个别字段。
- updateLocalStorage(opt = {}) {
- try {
- let userString = readLocalStorage(User.LOCAL_STORAGE_KEY)
-
- if (userString) {
- let json = JSON.parse(userString)
- $.extend(json, opt)
-
- saveToLocalStorage(User.LOCAL_STORAGE_KEY, JSON.stringify(json))
- }
-
- } catch (e) {
- removeLocalStorage(User.LOCAL_STORAGE_KEY)
- }
- }
-
- getForm() {
- let form = {
- username: this.username,
- password: this.password,
- role: this.role,
- avatarUrl: this.avatarUrl,
- sizeLimit: this.sizeLimit,
- totalSizeLimit: this.totalSizeLimit,
- uuid: this.uuid ? this.uuid : null
- }
-
- return form
- }
-
- validate() {
-
- return super.validate()
- }
-
- //local logout.
- innerLogout() {
-
- this.render(new User())
-
- removeLocalStorage(this.getTAG())
-
- }
-
-
- transfiguration() {
- let that = this
- this.httpTransfiguration(function (authentication) {
- let textToCopy = currentHost() + "/user/authentication/" + authentication
- MessageBox.confirm(Vue.i18n.t("model.transfigurationPrompt", [textToCopy]), Vue.i18n.t("model.transfigurationPromptText"), {
- confirmButtonText: Vue.i18n.t("copy"),
- cancelButtonText: Vue.i18n.t("cancel"),
- type: 'info'
- }).then(function () {
-
- Vue.$copyPlguin.copy(textToCopy, function () {
- Message.success({
- message: Vue.i18n.t("operationSuccess"),
- center: true
- })
- })
- },
- function () {
- }
- )
- });
- }
-
- innerLogin(response) {
- let that = this
- this.errorMessage = null
- this.render(response.data.data)
- this.isLogin = true
-
- //登录成功后去本地保存一下用户的简单信息,方便下次自动填入个别字段。
- this.saveToLocalStorage(response.data.data)
-
- }
-
- httpLogin(username, password, successCallback, errorCallback) {
-
- let that = this
-
- if (!username) {
- this.errorMessage = 'username required'
- return false
- }
-
- if (!password) {
- this.errorMessage = 'password required'
- return false
- }
-
- let form = {username, password}
-
- this.httpPost(User.URL_LOGIN, form, function (response) {
-
- that.innerLogin(response)
-
- that.safeCallback(successCallback)(response)
-
- }, errorCallback)
- }
-
- httpRegister(username, password, rePassword, successCallback, errorCallback) {
-
- let that = this
-
- if (!username) {
- this.errorMessage = 'username required'
- return
- }
-
- if (!password) {
- this.errorMessage = 'password required'
- return
- }
-
- if (rePassword !== password) {
- this.errorMessage = 'new and old password not same'
- return
- }
-
- let form = {username, password}
-
- this.httpPost(User.URL_REGISTER, form, function (response) {
- that.innerLogin(response)
- that.safeCallback(successCallback)(response)
- }, errorCallback)
- }
-
- httpLogout(successCallback, errorCallback) {
-
- let that = this
-
- that.innerLogout()
-
- this.httpPost(User.URL_LOGOUT, {}, function (response) {
-
- that.safeCallback(successCallback)(response)
- }, errorCallback)
- }
-
- httpUserChangePassword(oldPassword, newPassword, successCallback, errorCallback) {
- let that = this
- this.httpPost(User.URL_USER_CHANGE_PASSWORD, {
- 'oldPassword': oldPassword,
- 'newPassword': newPassword
- }, function (response) {
- typeof successCallback === 'function' && successCallback(response)
- }, errorCallback)
- }
-
- httpUserResetPassword(password, successCallback, errorCallback) {
- this.httpPost(User.URL_USER_RESET_PASSWORD, {'userUuid': this.uuid, 'password': password}, function (response) {
- typeof successCallback === 'function' && successCallback(response)
- }, errorCallback)
- }
-
-
- httpToggleStatus(successCallback, errorCallback) {
- let that = this
- this.httpPost(User.URL_USER_TOGGLE_STATUS, {'uuid': this.uuid}, function (response) {
- typeof successCallback === 'function' && successCallback(response)
- }, errorCallback)
- }
-
-
- httpAuthenticationLogin(authentication, successCallback, errorCallback) {
- let that = this
- let form = {authentication}
- this.httpPost(User.URL_AUTHENTICATION_LOGIN, form, function (response) {
- that.innerLogin(response)
- that.safeCallback(successCallback)(response)
- }, errorCallback)
- }
-
-
- httpTransfiguration(successCallback, errorCallback) {
- let that = this
- let form = {'uuid': this.uuid}
- this.httpPost(User.URL_USER_TRANSFIGURATION, form, function (response) {
- that.safeCallback(successCallback)(response.data.msg)
- }, errorCallback)
- }
-
-}
diff --git a/src/model/user/UserRole.js b/src/model/user/UserRole.js
deleted file mode 100644
index 69216ac..0000000
--- a/src/model/user/UserRole.js
+++ /dev/null
@@ -1,33 +0,0 @@
-let UserRole = {
- GUEST: 'GUEST',
- USER: 'USER',
- ADMINISTRATOR: 'ADMINISTRATOR'
-}
-
-let UserRoleMap = {
- GUEST: {
- name: 'user.roleGuest',
- value: 'GUEST',
- style: "warning",
- },
- USER: {
- name: 'user.roleUser',
- value: 'USER',
- style: "primary",
- },
- ADMINISTRATOR: {
- name: 'user.roleAdministrator',
- value: 'ADMINISTRATOR',
- style: "success",
- }
-}
-
-
-let UserRoleList = [];
-for (let key in UserRoleMap) {
- if (UserRoleMap.hasOwnProperty(key)) {
- UserRoleList.push(UserRoleMap[key]);
- }
-}
-
-export {UserRole, UserRoleMap, UserRoleList}
diff --git a/src/model/user/UserStatus.js b/src/model/user/UserStatus.js
deleted file mode 100644
index 852ce52..0000000
--- a/src/model/user/UserStatus.js
+++ /dev/null
@@ -1,27 +0,0 @@
-let UserStatus = {
- OK: 'OK',
- DISABLED: 'DISABLED'
-}
-
-let UserStatusMap = {
- OK: {
- name: 'user.statusActive',
- value: 'OK',
- style: 'primary'
- },
- DISABLED: {
- name: 'user.statusDisabled',
- value: 'DISABLED',
- style: 'danger'
- }
-}
-
-
-let UserStatusList = [];
-for (let key in UserStatusMap) {
- if (UserStatusMap.hasOwnProperty(key)) {
- UserStatusList.push(UserStatusMap[key]);
- }
-}
-
-export {UserStatus, UserStatusMap, UserStatusList}
diff --git a/src/react-app-env.d.ts b/src/react-app-env.d.ts
new file mode 100644
index 0000000..6431bc5
--- /dev/null
+++ b/src/react-app-env.d.ts
@@ -0,0 +1 @@
+///
diff --git a/src/router/index.js b/src/router/index.js
deleted file mode 100644
index 6c13222..0000000
--- a/src/router/index.js
+++ /dev/null
@@ -1,324 +0,0 @@
-import Vue from 'vue'
-import Router from 'vue-router'
-import ByFrameView from '../views/Frame.vue'
-import ShareList from '../views/share/List'
-import ShareDetail from '../views/share/Detail'
-import MatterList from '../views/matter/List'
-import MatterDetail from '../views/matter/Detail'
-import UserLogin from '../views/user/Login'
-import UserAuthentication from '../views/user/Authentication'
-import UserRegister from '../views/user/Register'
-import UserList from '../views/user/List'
-import UserDetail from '../views/user/Detail'
-import UserChangePassword from '../views/user/ChangePassword'
-import UserEdit from '../views/user/Edit'
-import DashboardIndex from '../views/dashboard/Index'
-import PreferenceIndex from '../views/preference/Index'
-import InstallIndex from '../views/install/Index'
-import PreferenceEdit from '../views/preference/Edit'
-import NotFound from '../views/layout/NotFound'
-import store from '../vuex'
-
-Vue.use(Router)
-
-const router = new Router({
- mode: 'history',
- linkActiveClass: 'is-link-active',
- scrollBehavior: () => ({y: 0}),
- routes: [
- {
- path: '/',
- component: ByFrameView,
- children: [
- {
- path: '',
- name: 'MatterList',
- component: MatterList,
- meta: {
- //here is i18n key
- title: 'router.allFiles',
- requiresAuth: true,
- breadcrumbs: [
- {
- name: 'MatterList',
- title: 'router.allFiles'
- }
- ]
- }
- },
- {
- path: 'matter/detail/:uuid',
- name: 'MatterDetail',
- component: MatterDetail,
- meta: {
- title: 'router.fileDetail',
- requiresAuth: true,
- breadcrumbs: [
- {
- name: 'MatterList',
- title: 'router.allFiles'
- },
- {
- name: 'MatterDetail',
- title: 'router.fileDetail'
- }
- ]
- }
- },
- {
- path: 'user/login',
- name: 'UserLogin',
- component: UserLogin,
- meta: {
- title: 'router.login',
- requiresAuth: false,
- breadcrumbs: []
- }
- },
- {
- path: 'user/authentication/:authentication',
- name: 'UserAuthentication',
- component: UserAuthentication,
- meta: {
- title: 'router.autoLogin',
- requiresAuth: false,
- breadcrumbs: []
- }
- },
- {
- path: 'user/register',
- name: 'UserRegister',
- component: UserRegister,
- meta: {
- title: 'router.register',
- requiresAuth: false,
- breadcrumbs: []
- }
- },
- {
- path: 'user/list',
- name: 'UserList',
- component: UserList,
- meta: {
- title: 'router.users',
- requiresAuth: true,
- breadcrumbs: [
- {
- name: 'UserList',
- title: 'router.users'
- }
- ]
- }
- },
- {
- path: 'user/detail/:uuid',
- name: 'UserDetail',
- component: UserDetail,
- meta: {
- title: 'router.userDetail',
- requiresAuth: true,
- breadcrumbs: [
- {
- name: 'UserList',
- title: 'router.users'
- },
- {
- name: 'UserDetail',
- title: 'router.userDetail'
- }
- ]
- }
- },
- {
- path: 'user/change/password',
- name: 'UserChangePassword',
- component: UserChangePassword,
- meta: {
- title: 'router.changePassword',
- requiresAuth: true,
- breadcrumbs: [
- {
- name: 'UserChangePassword',
- title: 'router.changePassword'
- }
- ]
- }
- },
- {
- path: 'user/create',
- name: 'UserCreate',
- component: UserEdit,
- meta: {
- title: 'router.createUser',
- requiresAuth: true,
- breadcrumbs: [
- {
- name: 'UserList',
- title: 'router.users'
- },
- {
- name: 'UserCreate',
- title: 'router.createUser'
- }
- ]
- }
- },
-
- {
- path: 'user/edit/:uuid',
- name: 'UserEdit',
- component: UserEdit,
- meta: {
- title: 'router.editUser',
- requiresAuth: true,
- breadcrumbs: [
- {
- name: 'UserList',
- title: 'router.users'
- },
- {
- name: 'UserEdit',
- title: 'router.editUser'
- }
- ]
- }
- },
-
- {
- path: 'share/detail/:uuid',
- name: 'ShareDetail',
- component: ShareDetail,
- meta: {
- title: 'router.shareDetail',
- requiresAuth: false,
- breadcrumbs: []
- }
- },
- {
- path: 'share/list',
- name: 'ShareList',
- component: ShareList,
- meta: {
- title: 'router.myShare',
- requiresAuth: true,
- breadcrumbs: [
- {
- name: 'ShareList',
- title: 'router.myShare'
- }
- ]
- }
- },
- {
- path: 'dashboard/index',
- name: 'DashboardIndex',
- component: DashboardIndex,
- meta: {
- title: 'router.dashboard',
- requiresAuth: true,
- breadcrumbs: [
- {
- name: 'DashboardIndex',
- title: 'router.dashboard'
- }
- ]
- }
- },
-
- {
- path: 'install/index',
- name: 'InstallIndex',
- component: InstallIndex,
- meta: {
- title: 'router.install',
- requiresAuth: false,
- breadcrumbs: [
- {
- name: 'InstallIndex',
- title: 'router.install'
- }
- ]
- }
- },
-
- {
- path: 'preference',
- name: 'PreferenceIndex',
- component: PreferenceIndex,
- meta: {
- title: 'router.setting',
- requiresAuth: true,
- breadcrumbs: [
- {
- name: 'PreferenceIndex',
- title: 'router.setting'
- }
- ]
- }
- },
-
- {
- path: 'preference/edit',
- name: 'PreferenceEdit',
- component: PreferenceEdit,
- meta: {
- title: 'router.setting',
- requiresAuth: true,
- breadcrumbs: [
- {
- name: 'PreferenceIndex',
- title: 'router.setting'
- },
- {
- name: 'PreferenceEdit',
- title: 'router.setting'
- }
- ]
- }
- },
- //未被上面处理的route被视为404
- {
- path: '*',
- component: NotFound,
- meta: {requiresAuth: false}
- }
- ]
- }
- ]
-})
-
-//装填面包屑
-function fillBreadcrumbs(to) {
- //清空数组
- store.state.breadcrumbs.splice(0, store.state.breadcrumbs.length);
- if (to.meta.breadcrumbs) {
- //追加一个数组
- store.state.breadcrumbs.push.apply(store.state.breadcrumbs, to.meta.breadcrumbs)
- }
-}
-
-//add global interceptor.
-router.beforeEach((to, from, next) => {
-
- //handle auth feature.
- if (to.matched.some(record => record.meta.requiresAuth)) {
- // this route requires auth, check if logged in
- // if not, redirect to login page.
- if (store.state.user.role === 'GUEST') {
- next({
- path: '/user/login',
- query: {redirect: to.fullPath}
- })
- } else {
-
- fillBreadcrumbs(to);
- next()
- }
- } else {
-
- fillBreadcrumbs(to);
- next()
- }
-})
-
-export default router
diff --git a/src/serviceWorker.ts b/src/serviceWorker.ts
new file mode 100644
index 0000000..b09523f
--- /dev/null
+++ b/src/serviceWorker.ts
@@ -0,0 +1,149 @@
+// This optional code is used to register a service worker.
+// register() is not called by default.
+
+// This lets the app load faster on subsequent visits in production, and gives
+// it offline capabilities. However, it also means that developers (and users)
+// will only see deployed updates on subsequent visits to a page, after all the
+// existing tabs open on the page have been closed, since previously cached
+// resources are updated in the background.
+
+// To learn more about the benefits of this model and instructions on how to
+// opt-in, read https://bit.ly/CRA-PWA
+
+const isLocalhost = Boolean(
+ window.location.hostname === 'localhost' ||
+ // [::1] is the IPv6 localhost address.
+ window.location.hostname === '[::1]' ||
+ // 127.0.0.0/8 are considered localhost for IPv4.
+ window.location.hostname.match(
+ /^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/
+ )
+);
+
+type Config = {
+ onSuccess?: (registration: ServiceWorkerRegistration) => void;
+ onUpdate?: (registration: ServiceWorkerRegistration) => void;
+};
+
+export function register(config?: Config) {
+ if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {
+ // The URL constructor is available in all browsers that support SW.
+ const publicUrl = new URL(
+ process.env.PUBLIC_URL,
+ window.location.href
+ );
+ if (publicUrl.origin !== window.location.origin) {
+ // Our service worker won't work if PUBLIC_URL is on a different origin
+ // from what our page is served on. This might happen if a CDN is used to
+ // serve assets; see https://github.com/facebook/create-react-app/issues/2374
+ return;
+ }
+
+ window.addEventListener('load', () => {
+ const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;
+
+ if (isLocalhost) {
+ // This is running on localhost. Let's check if a service worker still exists or not.
+ checkValidServiceWorker(swUrl, config);
+
+ // Add some additional logging to localhost, pointing developers to the
+ // service worker/PWA documentation.
+ navigator.serviceWorker.ready.then(() => {
+ console.log(
+ 'This web app is being served cache-first by a service ' +
+ 'worker. To learn more, visit https://bit.ly/CRA-PWA'
+ );
+ });
+ } else {
+ // Is not localhost. Just register service worker
+ registerValidSW(swUrl, config);
+ }
+ });
+ }
+}
+
+function registerValidSW(swUrl: string, config?: Config) {
+ navigator.serviceWorker
+ .register(swUrl)
+ .then(registration => {
+ registration.onupdatefound = () => {
+ const installingWorker = registration.installing;
+ if (installingWorker == null) {
+ return;
+ }
+ installingWorker.onstatechange = () => {
+ if (installingWorker.state === 'installed') {
+ if (navigator.serviceWorker.controller) {
+ // At this point, the updated precached content has been fetched,
+ // but the previous service worker will still serve the older
+ // content until all client tabs are closed.
+ console.log(
+ 'New content is available and will be used when all ' +
+ 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'
+ );
+
+ // Execute callback
+ if (config && config.onUpdate) {
+ config.onUpdate(registration);
+ }
+ } else {
+ // At this point, everything has been precached.
+ // It's the perfect time to display a
+ // "Content is cached for offline use." message.
+ console.log('Content is cached for offline use.');
+
+ // Execute callback
+ if (config && config.onSuccess) {
+ config.onSuccess(registration);
+ }
+ }
+ }
+ };
+ };
+ })
+ .catch(error => {
+ console.error('Error during service worker registration:', error);
+ });
+}
+
+function checkValidServiceWorker(swUrl: string, config?: Config) {
+ // Check if the service worker can be found. If it can't reload the page.
+ fetch(swUrl, {
+ headers: { 'Service-Worker': 'script' }
+ })
+ .then(response => {
+ // Ensure service worker exists, and that we really are getting a JS file.
+ const contentType = response.headers.get('content-type');
+ if (
+ response.status === 404 ||
+ (contentType != null && contentType.indexOf('javascript') === -1)
+ ) {
+ // No service worker found. Probably a different app. Reload the page.
+ navigator.serviceWorker.ready.then(registration => {
+ registration.unregister().then(() => {
+ window.location.reload();
+ });
+ });
+ } else {
+ // Service worker found. Proceed as normal.
+ registerValidSW(swUrl, config);
+ }
+ })
+ .catch(() => {
+ console.log(
+ 'No internet connection found. App is running in offline mode.'
+ );
+ });
+}
+
+export function unregister() {
+ if ('serviceWorker' in navigator) {
+ navigator.serviceWorker.ready
+ .then(registration => {
+ registration.unregister();
+ })
+ .catch(error => {
+ console.error(error.message);
+ });
+ }
+}
diff --git a/src/setupTests.ts b/src/setupTests.ts
new file mode 100644
index 0000000..74b1a27
--- /dev/null
+++ b/src/setupTests.ts
@@ -0,0 +1,5 @@
+// jest-dom adds custom jest matchers for asserting on DOM nodes.
+// allows you to do things like:
+// expect(element).toHaveTextContent(/react/i)
+// learn more: https://github.com/testing-library/jest-dom
+import '@testing-library/jest-dom/extend-expect';
diff --git a/src/views/Frame.vue b/src/views/Frame.vue
deleted file mode 100644
index 6dbcda6..0000000
--- a/src/views/Frame.vue
+++ /dev/null
@@ -1,175 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- /
-
- {{b.displayDirect?b.title:$t(b.title)}}
-
-
- {{b.displayDirect?b.title:$t(b.title)}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/views/dashboard/Index.vue b/src/views/dashboard/Index.vue
deleted file mode 100644
index d1a6ea4..0000000
--- a/src/views/dashboard/Index.vue
+++ /dev/null
@@ -1,516 +0,0 @@
-
-
-
-
-
-
-
-
{{ $t('dashboard.totalInvokeNum') }}
-
{{dashboard.totalInvokeNum}}
-
-
-
-
-
-
- {{ $t('dashboard.yesterdayInvoke') }}:{{dashboard.invokeNum}}
-
-
-
-
-
-
-
{{ $t('dashboard.totalUV') }}
-
{{dashboard.totalUv}}
-
-
-
-
-
-
-
- {{ $t('dashboard.yesterdayUV') }}:{{dashboard.uv}}
-
-
-
-
-
-
-
{{ $t('dashboard.totalMatterNum') }}
-
{{dashboard.totalMatterNum}}
-
-
-
-
-
-
-
- {{ $t('dashboard.yesterdayMatterNum') }}:{{dashboard.matterNum}}
-
-
-
-
-
-
-
{{ $t('dashboard.totalFileSize') }}
-
{{dashboard.totalFileSize | humanFileSize}}
-
-
-
-
-
-
-
- {{ $t('dashboard.yesterdayMatterSize') }}:{{dashboard.fileSize | humanFileSize}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/views/dashboard/theme.json b/src/views/dashboard/theme.json
deleted file mode 100644
index e2a8d98..0000000
--- a/src/views/dashboard/theme.json
+++ /dev/null
@@ -1,474 +0,0 @@
-{
- "color": [
- "#006699",
- "#1ab394",
- "#7bd9a5"
- ],
- "backgroundColor": "rgba(0,0,0,0)",
- "textStyle": {},
- "title": {
- "textStyle": {
- "color": "#666666"
- },
- "subtextStyle": {
- "color": "#999999"
- }
- },
- "line": {
- "itemStyle": {
- "normal": {
- "borderWidth": "2"
- }
- },
- "lineStyle": {
- "normal": {
- "width": "3"
- }
- },
- "symbolSize": "10",
- "symbol": "emptyCircle",
- "smooth": true
- },
- "radar": {
- "itemStyle": {
- "normal": {
- "borderWidth": "2"
- }
- },
- "lineStyle": {
- "normal": {
- "width": "3"
- }
- },
- "symbolSize": "10",
- "symbol": "emptyCircle",
- "smooth": true
- },
- "bar": {
- "itemStyle": {
- "normal": {
- "barBorderWidth": "0",
- "barBorderColor": "#444444"
- },
- "emphasis": {
- "barBorderWidth": "0",
- "barBorderColor": "#444444"
- }
- }
- },
- "pie": {
- "itemStyle": {
- "normal": {
- "borderWidth": "0",
- "borderColor": "#444444"
- },
- "emphasis": {
- "borderWidth": "0",
- "borderColor": "#444444"
- }
- }
- },
- "scatter": {
- "itemStyle": {
- "normal": {
- "borderWidth": "0",
- "borderColor": "#444444"
- },
- "emphasis": {
- "borderWidth": "0",
- "borderColor": "#444444"
- }
- }
- },
- "boxplot": {
- "itemStyle": {
- "normal": {
- "borderWidth": "0",
- "borderColor": "#444444"
- },
- "emphasis": {
- "borderWidth": "0",
- "borderColor": "#444444"
- }
- }
- },
- "parallel": {
- "itemStyle": {
- "normal": {
- "borderWidth": "0",
- "borderColor": "#444444"
- },
- "emphasis": {
- "borderWidth": "0",
- "borderColor": "#444444"
- }
- }
- },
- "sankey": {
- "itemStyle": {
- "normal": {
- "borderWidth": "0",
- "borderColor": "#444444"
- },
- "emphasis": {
- "borderWidth": "0",
- "borderColor": "#444444"
- }
- }
- },
- "funnel": {
- "itemStyle": {
- "normal": {
- "borderWidth": "0",
- "borderColor": "#444444"
- },
- "emphasis": {
- "borderWidth": "0",
- "borderColor": "#444444"
- }
- }
- },
- "gauge": {
- "itemStyle": {
- "normal": {
- "borderWidth": "0",
- "borderColor": "#444444"
- },
- "emphasis": {
- "borderWidth": "0",
- "borderColor": "#444444"
- }
- }
- },
- "candlestick": {
- "itemStyle": {
- "normal": {
- "color": "#d0648a",
- "color0": "#ffffff",
- "borderColor": "#d0648a",
- "borderColor0": "#22c3aa",
- "borderWidth": 1
- }
- }
- },
- "graph": {
- "itemStyle": {
- "normal": {
- "borderWidth": "0",
- "borderColor": "#444444"
- }
- },
- "lineStyle": {
- "normal": {
- "width": 1,
- "color": "#aaa"
- }
- },
- "symbolSize": "10",
- "symbol": "emptyCircle",
- "smooth": true,
- "color": [
- "#4ea397",
- "#22c3aa",
- "#7bd9a5"
- ],
- "label": {
- "normal": {
- "textStyle": {
- "color": "#ffffff"
- }
- }
- }
- },
- "map": {
- "itemStyle": {
- "normal": {
- "areaColor": "#eeeeee",
- "borderColor": "#999999",
- "borderWidth": "0.5"
- },
- "emphasis": {
- "areaColor": "rgba(34,195,170,0.25)",
- "borderColor": "#22c3aa",
- "borderWidth": "0.5"
- }
- },
- "label": {
- "normal": {
- "textStyle": {
- "color": "#28544e"
- }
- },
- "emphasis": {
- "textStyle": {
- "color": "rgb(52,158,142)"
- }
- }
- }
- },
- "geo": {
- "itemStyle": {
- "normal": {
- "areaColor": "#eeeeee",
- "borderColor": "#999999",
- "borderWidth": "0.5"
- },
- "emphasis": {
- "areaColor": "rgba(34,195,170,0.25)",
- "borderColor": "#22c3aa",
- "borderWidth": "0.5"
- }
- },
- "label": {
- "normal": {
- "textStyle": {
- "color": "#28544e"
- }
- },
- "emphasis": {
- "textStyle": {
- "color": "rgb(52,158,142)"
- }
- }
- }
- },
- "categoryAxis": {
- "axisLine": {
- "show": true,
- "lineStyle": {
- "color": "#cccccc"
- }
- },
- "axisTick": {
- "show": false,
- "lineStyle": {
- "color": "#333333"
- }
- },
- "axisLabel": {
- "show": true,
- "textStyle": {
- "color": "#999999"
- }
- },
- "splitLine": {
- "show": true,
- "lineStyle": {
- "color": [
- "#eeeeee"
- ]
- }
- },
- "splitArea": {
- "show": false,
- "areaStyle": {
- "color": [
- "rgba(250,250,250,0.3)",
- "rgba(200,200,200,0.3)"
- ]
- }
- }
- },
- "valueAxis": {
- "axisLine": {
- "show": true,
- "lineStyle": {
- "color": "#cccccc"
- }
- },
- "axisTick": {
- "show": false,
- "lineStyle": {
- "color": "#333333"
- }
- },
- "axisLabel": {
- "show": true,
- "textStyle": {
- "color": "#999999"
- }
- },
- "splitLine": {
- "show": true,
- "lineStyle": {
- "color": [
- "#eeeeee"
- ]
- }
- },
- "splitArea": {
- "show": false,
- "areaStyle": {
- "color": [
- "rgba(250,250,250,0.3)",
- "rgba(200,200,200,0.3)"
- ]
- }
- }
- },
- "logAxis": {
- "axisLine": {
- "show": true,
- "lineStyle": {
- "color": "#cccccc"
- }
- },
- "axisTick": {
- "show": false,
- "lineStyle": {
- "color": "#333333"
- }
- },
- "axisLabel": {
- "show": true,
- "textStyle": {
- "color": "#999999"
- }
- },
- "splitLine": {
- "show": true,
- "lineStyle": {
- "color": [
- "#eeeeee"
- ]
- }
- },
- "splitArea": {
- "show": false,
- "areaStyle": {
- "color": [
- "rgba(250,250,250,0.3)",
- "rgba(200,200,200,0.3)"
- ]
- }
- }
- },
- "timeAxis": {
- "axisLine": {
- "show": true,
- "lineStyle": {
- "color": "#cccccc"
- }
- },
- "axisTick": {
- "show": false,
- "lineStyle": {
- "color": "#333333"
- }
- },
- "axisLabel": {
- "show": true,
- "textStyle": {
- "color": "#999999"
- }
- },
- "splitLine": {
- "show": true,
- "lineStyle": {
- "color": [
- "#eeeeee"
- ]
- }
- },
- "splitArea": {
- "show": false,
- "areaStyle": {
- "color": [
- "rgba(250,250,250,0.3)",
- "rgba(200,200,200,0.3)"
- ]
- }
- }
- },
- "toolbox": {
- "iconStyle": {
- "normal": {
- "borderColor": "#aaaaaa"
- },
- "emphasis": {
- "borderColor": "#666"
- }
- }
- },
- "legend": {
- "textStyle": {
- "color": "#999999"
- }
- },
- "tooltip": {
- "axisPointer": {
- "lineStyle": {
- "color": "#ccc",
- "width": 1
- },
- "crossStyle": {
- "color": "#ccc",
- "width": 1
- }
- }
- },
- "timeline": {
- "lineStyle": {
- "color": "#349e8e",
- "width": 1
- },
- "itemStyle": {
- "normal": {
- "color": "#349e8e",
- "borderWidth": "1"
- },
- "emphasis": {
- "color": "#57e8d2"
- }
- },
- "controlStyle": {
- "normal": {
- "color": "#349e8e",
- "borderColor": "#349e8e",
- "borderWidth": "0"
- }
- },
- "checkpointStyle": {
- "color": "#22c3aa",
- "borderColor": "rgba(34,195,170,0.25)"
- },
- "label": {
- "normal": {
- "textStyle": {
- "color": "#349e8e"
- }
- }
- }
- },
- "visualMap": {
- "color": [
- "#d0648a",
- "#22c3aa",
- "rgba(123,217,165,0.2)"
- ]
- },
- "dataZoom": {
- "backgroundColor": "#fff",
- "dataBackgroundColor": "#dedede",
- "fillerColor": "rgba(34,195,170,0.25)",
- "handleColor": "#dddddd",
- "handleSize": "100%",
- "textStyle": {
- "color": "#999"
- }
- },
- "markPoint": {
- "label": {
- "normal": {
- "textStyle": {
- "color": "#ffffff"
- }
- },
- "emphasis": {
- "textStyle": {
- "color": "#ffffff"
- }
- }
- }
- }
-}
diff --git a/src/views/dashboard/widget/RatePanel.vue b/src/views/dashboard/widget/RatePanel.vue
deleted file mode 100644
index 09f5d19..0000000
--- a/src/views/dashboard/widget/RatePanel.vue
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
- {{name}}
-
- ∞
- -
- {{value>0?'+':''}}{{value}}%
-
-
-
-
-
-
-
-
-
diff --git a/src/views/install/Index.vue b/src/views/install/Index.vue
deleted file mode 100644
index f2c30e2..0000000
--- a/src/views/install/Index.vue
+++ /dev/null
@@ -1,495 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
MySQL {{ $t('install.port') }}
-
-
-
-
-
-
-
MySQL {{ $t('install.schema') }}
-
-
-
-
-
-
-
MySQL {{ $t('username') }}
-
-
-
-
-
-
-
MySQL {{ $t('password') }}
-
-
-
-
-
-
-
MySQL {{ $t('install.charset') }}
-
-
- utf8
- utf8mb4
- gbk
-
-
-
-
-
-
-
-
{{ $t('install.notice') }}
-
- {{ $t('install.mysqlNotice1') }}
- {{ $t('install.mysqlNotice2') }}
-
-
-
-
-
-
-
-
-
-
- {{ $t('install.mysqlConnectionPass') }}
-
-
-
- {{ $t('install.testMysqlConnection') }}
-
-
-
-
- {{ $t('install.nextStep') }}
-
-
-
-
-
-
-
-
-
-
- {{tableInfo.name}}
-
-
- {{ $t('install.installed') }}
-
-
- {{ $t('install.installedButMissing') }}
-
-
- {{ $t('install.toBeInstalled') }}
-
-
-
-
-
- {{ $t('install.allFields') }}: {{field.DBName}}
-
-
- {{ $t('install.missingFields') }}: {{field.DBName}}
-
-
-
-
-
-
-
-
{{ $t('install.tableNotice') }}
-
- {{ $t('install.tableNotice1') }}
- {{ $t('install.tableNotice2') }}
- {{ $t('install.tableNotice3') }}
- {{ $t('install.tableNotice4') }}
-
-
-
-
-
-
-
-
-
-
-
- {{ $t('install.oneKeyCreate') }}
-
-
-
-
- {{ $t('install.oneKeyCreate') }}
-
-
-
-
- {{ $t('install.preStep') }}
-
-
-
-
- {{ $t('install.nextStep') }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ $t('install.detectAdministrator') }}
-
-
- {{admin.username}}
-
-
- {{ $t('install.useOrCreateAdministrator') }}
-
-
-
-
-
-
-
- {{ $t('install.validateAdministrator') }}
-
-
-
-
- {{ $t('install.createAdministrator') }}
-
-
-
-
- {{ $t('install.preStep') }}
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ $t('install.validateAdministrator') }}
-
-
-
-
{{ $t('install.administratorUsername') }}
-
-
-
-
-
-
-
{{ $t('install.administratorPassword') }}
-
-
-
-
-
-
-
-
-
-
- {{ $t('install.preStep') }}
-
-
-
-
-
- {{ $t('submit') }}
-
-
-
-
-
-
-
-
-
-
-
-
- {{ $t('install.createAdministrator') }}
-
-
-
-
{{ $t('install.administratorUsername') }}
-
-
-
-
-
-
-
{{ $t('install.administratorPassword') }}
-
-
-
-
-
-
-
{{ $t('install.administratorRePassword') }}
-
-
-
-
-
-
-
-
-
-
{{ $t('install.notice') }}
-
- {{ $t('install.usernameRule') }}
-
-
-
-
-
-
-
-
-
-
-
-
- {{ $t('install.preStep') }}
-
-
-
-
- {{ $t('submit') }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ $t('install.congratulationInstall') }}
-
-
-
-
- {{ $t('install.enterHome') }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/views/layout/BottomNavigation.vue b/src/views/layout/BottomNavigation.vue
deleted file mode 100644
index 5881690..0000000
--- a/src/views/layout/BottomNavigation.vue
+++ /dev/null
@@ -1,108 +0,0 @@
-
-
-
-
-
-
-
diff --git a/src/views/layout/DragObscure.vue b/src/views/layout/DragObscure.vue
deleted file mode 100644
index 97b4aef..0000000
--- a/src/views/layout/DragObscure.vue
+++ /dev/null
@@ -1,38 +0,0 @@
-
-
-
-
{{ $t("layout.dragMouseUp") }}
-
-
-
-
-
-
diff --git a/src/views/layout/NotFound.vue b/src/views/layout/NotFound.vue
deleted file mode 100644
index 41df2ac..0000000
--- a/src/views/layout/NotFound.vue
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
- {{ $t('notFound') }}
-
-
-
-
-
-
diff --git a/src/views/layout/SideNavigation.vue b/src/views/layout/SideNavigation.vue
deleted file mode 100644
index df9e465..0000000
--- a/src/views/layout/SideNavigation.vue
+++ /dev/null
@@ -1,310 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/src/views/layout/TopNavigation.vue b/src/views/layout/TopNavigation.vue
deleted file mode 100644
index 98a3581..0000000
--- a/src/views/layout/TopNavigation.vue
+++ /dev/null
@@ -1,177 +0,0 @@
-
-
-
-
-
-
-
-
- {{preference.name?preference.name: $t('eyeblueTank') }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/views/matter/Detail.vue b/src/views/matter/Detail.vue
deleted file mode 100644
index ed7562b..0000000
--- a/src/views/matter/Detail.vue
+++ /dev/null
@@ -1,204 +0,0 @@
-
-
-
-
- {{$t('matter.fileInfo')}}
-
-
-
- {{$t('matter.fileInfo')}}:
- {{matter.name}}
-
-
-
- {{$t('matter.size')}}:
- {{matter.size | humanFileSize}}
-
-
- {{$t('matter.createTime')}}:
- {{matter.createTime | simpleDateTime}}
-
-
- {{$t('matter.updateTime')}}:
- {{matter.updateTime | simpleDateTime}}
-
-
- {{$t('matter.publicOrPrivate')}}:
- {{matter.privacy?$t('matter.privateInfo'):$t('matter.publicInfo')}}
-
-
- {{$t('matter.downloadTimes')}}:
- {{matter.times}}
-
-
-
-
-
-
-
-
- {{$t('matter.imageCache')}}
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/views/matter/List.vue b/src/views/matter/List.vue
deleted file mode 100644
index 6b74b35..0000000
--- a/src/views/matter/List.vue
+++ /dev/null
@@ -1,556 +0,0 @@
-
-
-
-
-
-
-
- {{ $t("selectAll") }}
-
-
-
-
- {{ $t("cancel") }}
-
-
-
-
- {{ $t("delete") }}
-
-
-
-
- {{ $t("matter.download") }}
-
-
-
-
- {{ $t("matter.move") }}
-
-
-
-
- {{ $t("matter.share") }}
-
-
-
-
-
-
-
-
-
-
-
-
- {{ $t("matter.upload") }}
-
-
-
-
-
-
- {{ $t("matter.create") }}
-
-
-
-
- {{ $t("refresh") }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/views/matter/widget/Director.js b/src/views/matter/widget/Director.js
deleted file mode 100644
index 5adce6f..0000000
--- a/src/views/matter/widget/Director.js
+++ /dev/null
@@ -1,16 +0,0 @@
-//导演类,用户来让整个工作有序进行
-export default class Director {
- constructor(args) {
- //正在重命名
- this.renameMode = false
- //正在创建新文件夹
- this.createMode = false
- //正在移动文件
- this.moveMode = false
- }
-
- isEditing() {
- return this.renameMode || this.createMode || this.moveMode
- }
-
-}
diff --git a/src/views/matter/widget/FolderTree.vue b/src/views/matter/widget/FolderTree.vue
deleted file mode 100644
index 554e6bf..0000000
--- a/src/views/matter/widget/FolderTree.vue
+++ /dev/null
@@ -1,140 +0,0 @@
-
-
-
-
-
-
-
-
- {{matter.name}}
-
-
- {{Vue.i18n.t('matter.root')}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/views/matter/widget/MatterImage.vue b/src/views/matter/widget/MatterImage.vue
deleted file mode 100644
index 6d74df4..0000000
--- a/src/views/matter/widget/MatterImage.vue
+++ /dev/null
@@ -1,145 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/views/matter/widget/MatterPanel.vue b/src/views/matter/widget/MatterPanel.vue
deleted file mode 100644
index 039e371..0000000
--- a/src/views/matter/widget/MatterPanel.vue
+++ /dev/null
@@ -1,449 +0,0 @@
-
-
-
-
-
-
diff --git a/src/views/matter/widget/MoveBatchPanel.vue b/src/views/matter/widget/MoveBatchPanel.vue
deleted file mode 100644
index 1c7955e..0000000
--- a/src/views/matter/widget/MoveBatchPanel.vue
+++ /dev/null
@@ -1,53 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/src/views/matter/widget/ShareOperationPanel.vue b/src/views/matter/widget/ShareOperationPanel.vue
deleted file mode 100644
index 6f0f08e..0000000
--- a/src/views/matter/widget/ShareOperationPanel.vue
+++ /dev/null
@@ -1,120 +0,0 @@
-
-
-
-
-
-
-
diff --git a/src/views/matter/widget/UploadMatterPanel.vue b/src/views/matter/widget/UploadMatterPanel.vue
deleted file mode 100644
index beb545a..0000000
--- a/src/views/matter/widget/UploadMatterPanel.vue
+++ /dev/null
@@ -1,90 +0,0 @@
-
-
-
-
-
-
-
- {{$t('matter.uploaded')}} {{(matter.progress * 100).toFixed(1)}}%
-
-
-
- {{$t('matter.uploaded')}}:{{ (matter.file.size * matter.progress).toFixed(0) | humanFileSize }}/{{ matter.file.size |
- humanFileSize}}
- {{$t('matter.speed')}}:{{matter.speed | humanFileSize}}/s
-
-
-
-
-
-
-
-
-
diff --git a/src/views/matter/widget/imageCache/ImageCacheList.vue b/src/views/matter/widget/imageCache/ImageCacheList.vue
deleted file mode 100644
index 42a9606..0000000
--- a/src/views/matter/widget/imageCache/ImageCacheList.vue
+++ /dev/null
@@ -1,167 +0,0 @@
-
-
-
-
-
-
-
diff --git a/src/views/matter/widget/imageCache/ImageCachePanel.vue b/src/views/matter/widget/imageCache/ImageCachePanel.vue
deleted file mode 100644
index 727e25e..0000000
--- a/src/views/matter/widget/imageCache/ImageCachePanel.vue
+++ /dev/null
@@ -1,273 +0,0 @@
-
-
-
-
-
-
diff --git a/src/views/preference/Edit.vue b/src/views/preference/Edit.vue
deleted file mode 100644
index 9b55972..0000000
--- a/src/views/preference/Edit.vue
+++ /dev/null
@@ -1,165 +0,0 @@
-
-
-
-
-
-
- {{$t('preference.websiteName')}}
-
-
-
-
-
-
-
-
- {{$t('preference.logo')}}
-
-
-
-
-
-
-
-
-
-
{{$t('preference.copyright')}}
-
-
-
-
-
-
-
{{$t('preference.extraInfo')}}
-
-
-
-
-
-
-
-
{{$t('preference.officeUrl')}}
-
-
-
-
-
-
-
-
{{$t('preference.zipMaxNumLimit')}}
-
-
-
-
-
-
-
-
{{$t('preference.zipMaxSizeLimit')}}
-
-
-
-
-
-
- {{$t('preference.current')}}:
- {{$t('preference.noLimit')}}
- {{preference.downloadDirMaxSize | humanFileSize}}
-
-
-
-
-
-
-
-
-
{{$t('preference.userDefaultSizeLimit')}}
-
-
-
-
-
-
- {{$t('preference.current')}}:
- {{$t('preference.noLimit')}}
- {{preference.defaultTotalSizeLimit | humanFileSize}}
-
-
-
-
-
-
-
-
-
{{$t('preference.allowRegister')}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/views/preference/Index.vue b/src/views/preference/Index.vue
deleted file mode 100644
index a48f17d..0000000
--- a/src/views/preference/Index.vue
+++ /dev/null
@@ -1,155 +0,0 @@
-
-
-
-
-
-
- {{$t('preference.websiteName')}}:
- {{preference.name}}
-
-
-
-
-
-
-
- {{$t('preference.copyright')}}:
-
-
-
-
- {{$t('preference.extraInfo')}}:
-
-
-
-
- {{$t('preference.officeUrl')}}:
-
-
-
-
- {{$t('preference.zipMaxNumLimit')}}:
-
-
-
-
- {{$t('preference.allowRegister')}}:
- {{preference.allowRegister?$t('yes'):$t('no')}}
-
-
-
- {{$t('preference.zipMaxSizeLimit')}}:
-
-
-
- {{preference.downloadDirMaxSize | humanFileSize}}
-
-
- {{$t('preference.noLimit')}}
-
-
-
-
-
-
- {{$t('preference.userDefaultSizeLimit')}}:
-
-
-
- {{preference.defaultTotalSizeLimit | humanFileSize}}
-
-
- {{$t('preference.noLimit')}}
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{$t('preference.systemCleanup')}}
-
-
-
- {{$t('edit')}}
-
-
-
-
-
-
-
-
-
diff --git a/src/views/share/Detail.vue b/src/views/share/Detail.vue
deleted file mode 100644
index d1a24b5..0000000
--- a/src/views/share/Detail.vue
+++ /dev/null
@@ -1,360 +0,0 @@
-
-
-
-
-
-
-
-
-
-
- {{share.name}}
- {{$t('share.expired')}}
-
-
-
-
-
-
- {{$t('download')}}
-
-
-
-
- {{$t('share.cancelShare')}}
-
-
-
-
- {{$t('share.getLink')}}
-
-
-
-
-
-
-
-
-
-
-
- {{$t('share.sharer')}}:{{share.username}}
-
-
- {{$t('createTime')}}:{{share.createTime | simpleDateHourMinute}}
-
-
- {{$t('share.expireTime')}}:{{share.expireTime | simpleDateHourMinute}}
-
-
- {{$t('share.noExpire')}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{$t('share.getFiles')}}
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/views/share/List.vue b/src/views/share/List.vue
deleted file mode 100644
index 81d57c0..0000000
--- a/src/views/share/List.vue
+++ /dev/null
@@ -1,67 +0,0 @@
-
-
-
-
-
-
-
diff --git a/src/views/share/widget/ShareBar.vue b/src/views/share/widget/ShareBar.vue
deleted file mode 100644
index b316d77..0000000
--- a/src/views/share/widget/ShareBar.vue
+++ /dev/null
@@ -1,291 +0,0 @@
-
-
-
-
-
-
diff --git a/src/views/share/widget/ShareDialogPanel.vue b/src/views/share/widget/ShareDialogPanel.vue
deleted file mode 100644
index 872473c..0000000
--- a/src/views/share/widget/ShareDialogPanel.vue
+++ /dev/null
@@ -1,98 +0,0 @@
-
-
-
-
-
-
-
diff --git a/src/views/share/widget/ShareMatterBar.vue b/src/views/share/widget/ShareMatterBar.vue
deleted file mode 100644
index 33318a7..0000000
--- a/src/views/share/widget/ShareMatterBar.vue
+++ /dev/null
@@ -1,270 +0,0 @@
-
-
-
-
-
-
diff --git a/src/views/user/Authentication.vue b/src/views/user/Authentication.vue
deleted file mode 100644
index d83ee4a..0000000
--- a/src/views/user/Authentication.vue
+++ /dev/null
@@ -1,37 +0,0 @@
-
-
-
{{$t('user.redirecting')}}
-
-
-
-
-
-
-
-
diff --git a/src/views/user/ChangePassword.vue b/src/views/user/ChangePassword.vue
deleted file mode 100644
index a4a1cc0..0000000
--- a/src/views/user/ChangePassword.vue
+++ /dev/null
@@ -1,94 +0,0 @@
-
-
-
-
-
-
-
- {{$t('user.oldPassword')}}
-
-
-
-
-
-
-
-
{{$t('user.newPassword')}}
-
-
-
-
-
-
-
{{$t('user.confirmNewPassword')}}
-
-
-
-
-
-
-
-
-
-
-
- {{$t('submit')}}
-
-
-
-
-
-
-
-
-
diff --git a/src/views/user/Detail.vue b/src/views/user/Detail.vue
deleted file mode 100644
index 77cfb62..0000000
--- a/src/views/user/Detail.vue
+++ /dev/null
@@ -1,221 +0,0 @@
-
-
-
-
-
-
-
-
-
- {{$t('user.resetPassword')}}
-
-
-
- {{$t('user.transfiguration')}}
-
-
-
- {{$t('user.changePassword')}}
-
-
-
- {{$t('edit')}}
-
-
-
-
-
-
-
-
-
diff --git a/src/views/user/Edit.vue b/src/views/user/Edit.vue
deleted file mode 100644
index 2d5b411..0000000
--- a/src/views/user/Edit.vue
+++ /dev/null
@@ -1,189 +0,0 @@
-
-
-
-
-
-
-
{{$t('user.avatar')}}
-
-
-
-
-
{{$t('user.username')}}
-
-
-
-
-
-
-
{{$t('user.password')}}
-
-
-
-
-
-
-
{{$t('user.confirmPassword')}}
-
-
-
-
-
-
-
{{$t('user.role')}}
-
-
-
- {{$t(item.name)}}
-
-
-
-
-
-
-
{{$t('user.singleFileSizeLimit')}}(B)
-
-
-
-
-
-
- {{$t('user.current')}}:
- {{$t('user.noLimit')}}
- {{currentUser.sizeLimit | humanFileSize}}
-
-
-
-
-
-
-
{{$t('user.totalFileSizeLimit')}}(B)
-
-
-
-
-
-
- {{$t('user.current')}}:
- {{$t('user.noLimit')}}
- {{currentUser.totalSizeLimit | humanFileSize}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/views/user/List.vue b/src/views/user/List.vue
deleted file mode 100644
index 563eb19..0000000
--- a/src/views/user/List.vue
+++ /dev/null
@@ -1,172 +0,0 @@
-
-
-
-
-
-
-
-
-
-
- 创建用户
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/views/user/Login.vue b/src/views/user/Login.vue
deleted file mode 100644
index 27fcad3..0000000
--- a/src/views/user/Login.vue
+++ /dev/null
@@ -1,117 +0,0 @@
-
-
-
-
{{$t('user.welcomeLogin')}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{$t('user.logining')}}
-
-
-
- {{$t('user.login')}}
-
-
-
-
- {{$t('user.toToRegister')}}
-
-
-
-
- {{user.errorMessage}}
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/views/user/Register.vue b/src/views/user/Register.vue
deleted file mode 100644
index a3dd517..0000000
--- a/src/views/user/Register.vue
+++ /dev/null
@@ -1,126 +0,0 @@
-
-
-
-
-
{{$t('user.welcomeRegister')}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{$t('user.registering')}}
-
-
-
- {{$t('user.register')}}
-
-
-
-
- {{$t('user.goToLogin')}}
-
-
-
-
-
- {{user.errorMessage}}
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/views/user/feature/FeatureType.js b/src/views/user/feature/FeatureType.js
deleted file mode 100644
index 17739e6..0000000
--- a/src/views/user/feature/FeatureType.js
+++ /dev/null
@@ -1,38 +0,0 @@
-let FeatureType = {
- PUBLIC: 'PUBLIC',
- USER_MANAGE: 'USER_MANAGE',
- USER_MINE: 'USER_MINE',
- OTHER: 'OTHER'
-}
-
-let FeatureTypeMap = {
- PUBLIC: {
- name: '公共接口',
- value: 'PUBLIC',
- style: 'info'
- },
- USER_MANAGE: {
- name: '管理用户',
- value: 'USER_MANAGE',
- style: 'info'
- },
- USER_MINE: {
- name: '查看自己资料',
- value: 'USER_MINE',
- style: 'info'
- },
- OTHER: {
- name: '其他',
- value: 'OTHER',
- style: 'info'
- }
-}
-
-let FeatureTypeList = [];
-for (let key in FeatureTypeMap) {
- if (FeatureTypeMap.hasOwnProperty(key)) {
- FeatureTypeList.push(FeatureTypeMap[key]);
- }
-}
-
-export { FeatureType, FeatureTypeMap, FeatureTypeList }
\ No newline at end of file
diff --git a/src/vuex/index.js b/src/vuex/index.js
deleted file mode 100644
index e3f0298..0000000
--- a/src/vuex/index.js
+++ /dev/null
@@ -1,62 +0,0 @@
-import Vue from 'vue'
-import Vuex from 'vuex'
-import User from "../model/user/User";
-import Preference from '../model/preference/Preference'
-import BrowserUtil from "../common/util/BrowserUtil";
-import Cookies from "js-cookie"
-
-Vue.use(Vuex)
-
-let user = new User()
-user.renderFromLocalStorage()
-
-let lang = BrowserUtil.browserLang()
-let localLang = Cookies.get("_lang");
-if (localLang === "zh" || localLang === "en") {
- lang = localLang
-}
-
-const state = {
- config: {
- mobile: false,
- showDrawer: true
- },
- //当前版本信息。
- versionName: '3.0.6',
- //当前用户,即使没有登录依然有游客的用户在。
- user,
- breadcrumbs: [],
- //全局正在上传的文件
- uploadMatters: [],
- //当前接受上传的那个Matter List.vue实例
- uploadListInstance: null,
-
- //网站是否已经安装好
- installed: true,
-
- //当前的语言
- lang: lang,
-
- //网站设置
- preference: new Preference(),
- //上次报没有登录错误的时间戳,用于控制登录提示框的个数不能太频繁。
- lastLoginErrorTimestamp: 0
-
-}
-
-const getters = {
- getConfig(state) {
- return state.config
- }
-}
-
-const mutations = {}
-
-const actions = {}
-
-export default new Vuex.Store({
- state,
- getters,
- mutations,
- actions
-})
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 0000000..f2850b7
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,25 @@
+{
+ "compilerOptions": {
+ "target": "es5",
+ "lib": [
+ "dom",
+ "dom.iterable",
+ "esnext"
+ ],
+ "allowJs": true,
+ "skipLibCheck": true,
+ "esModuleInterop": true,
+ "allowSyntheticDefaultImports": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "module": "esnext",
+ "moduleResolution": "node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "react"
+ },
+ "include": [
+ "src"
+ ]
+}
diff --git a/vue.config.js b/vue.config.js
deleted file mode 100644
index 9caea52..0000000
--- a/vue.config.js
+++ /dev/null
@@ -1,23 +0,0 @@
-module.exports = {
- publicPath: "/",
- assetsDir: "static",
- devServer: {
- port: 6015,
- proxy: {
- '/api': {
- //target: 'https://tank.eyeblue.cn',
- target: 'http://127.0.0.1:6010',
- changeOrigin: true,
- pathRewrite: {
- '^/api': '/api'
- }
- }
- }
- },
- lintOnSave: false,
- transpileDependencies: [
- 'vue-echarts',
- 'resize-detector'
- ]
-}
-