Skip to content
This repository has been archived by the owner on Feb 23, 2020. It is now read-only.

[ 757 ] Front init + Main page #2

Merged
merged 1 commit into from
Jul 6, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .babelrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"presets": ["es2015"]
}
6 changes: 6 additions & 0 deletions .eslintrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"extends": "airbnb-base",
"globals": {
"$": true
}
}
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@ __pycache__/
*.py[cod]
*$py.class
.idea/
node_modules
env/
src/
front/build
static
stroyprombeton/settings/local.py
4 changes: 4 additions & 0 deletions .pylintrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
[FORMAT]

# Maximum number of characters on a single line.
max-line-length=80
46 changes: 46 additions & 0 deletions .scss-lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
severity: error

linters:

BorderZero:
enabled: true
convention: zero

BemDepth:
enabled: true

DeclarationOrder:
enabled: false

ExtendDirective:
enabled: true

LeadingZero:
enabled: false

NameFormat:
enabled: true

PrivateNamingConvention:
enabled: true
prefix: _

PropertySortOrder:
enabled: false

QualifyingElement:
enabled: false

SelectorFormat:
enabled: true
convention: hyphenated_BEM
class_convention: ^(?!js-).*
class_convention_explanation: should not be written in the form js-*

SingleLinePerProperty:
enabled: true
allow_single_line_rule_sets: false

StringQuotes:
enabled: true
style: double_quotes
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1 +1,5 @@
# stroyprombeton.ru
stroyprombeton.ru site's code

### Install dependencies
Run `pip install --user -r requirements.txt`
Binary file added front/fonts/fontawesome-webfont.woff
Binary file not shown.
Binary file added front/fonts/fontawesome-webfont.woff2
Binary file not shown.
Binary file added front/fonts/glyphicons-halflings-regular.woff
Binary file not shown.
Binary file added front/fonts/glyphicons-halflings-regular.woff2
Binary file not shown.
Binary file added front/images/404.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added front/images/asterisk.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added front/images/auto.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added front/images/basket-empty.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added front/images/basket.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added front/images/beton.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added front/images/bullet.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added front/images/busket-full.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added front/images/carousel-button-left.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added front/images/carousel-button-right.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added front/images/clear.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added front/images/cover.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added front/images/cover.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added front/images/darktooltip-bg.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added front/images/favicon.ico
Binary file not shown.
Binary file added front/images/grad.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added front/images/grad_red.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added front/images/header-bg.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added front/images/header-squares-left-bg.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added front/images/header-squares-right-bg.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added front/images/icon-delete.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added front/images/icon-gvds-minus.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added front/images/icon-gvds-plus.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added front/images/icon-order.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added front/images/icon-photo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added front/images/icon-v-menu-close.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added front/images/icon-v-menu-open.png
Binary file added front/images/iso-9001-2008-big.jpg
Binary file added front/images/iso-9001-2008.jpg
Binary file added front/images/logo-small.png
Binary file added front/images/logo-title.png
Binary file added front/images/logo.png
Binary file added front/images/m-izg.png
Binary file added front/images/menu-h-bg.png
Binary file added front/images/menu-h-bg2.jpg
Binary file added front/images/menu-h-hover.png
Binary file added front/images/menu-h-hover_2.png
Binary file added front/images/menu-h-selected.png
Binary file added front/images/menu-v-bg-bullet.jpg
Binary file added front/images/menu-v-bg.jpg
Binary file added front/images/menu-v-bottom.jpg
Binary file added front/images/menu-v-top.jpg
Binary file added front/images/metall.png
Binary file added front/images/modul.png
Binary file added front/images/modul_energo_logo.png
Binary file added front/images/mp-gbi-sections-header-bg.png
Binary file added front/images/ok.png
Binary file added front/images/order-draw.png
Binary file added front/images/order-price.png
Binary file added front/images/partners-table-header.png
Binary file added front/images/photo-empty.jpg
Binary file added front/images/pin-hover-to-left.png
Binary file added front/images/pin-hover-to-right.png
Binary file added front/images/pin-hover.png
Binary file added front/images/pin.png
Binary file added front/images/pr_gr_big_130.png
Binary file added front/images/praim-logo.png
Binary file added front/images/praim-ph.png
Binary file added front/images/razdelitel.png
Binary file added front/images/sk78.png
Binary file added front/images/spin-button.png
Binary file added front/images/spin-down.png
Binary file added front/images/spin-up.png
Binary file added front/images/spinner.png
Binary file added front/images/stk-logo.png
Binary file added front/images/tel-logo-praim.png
Binary file added front/images/thumb_img_logo.png
Binary file added front/images/trans.gif
Binary file added front/images/truby-kruglye-icon.png
Binary file added front/images/truby-kvadratnye-icon.png
60 changes: 60 additions & 0 deletions front/js/components/main.es6
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
const mainPage = (() => {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@duker33, @YozhEzhi кстати, для фронт-файлов можно, в принципе, использовать гит-сабмодули.
Как вариант, в каждом будет две ветки: se и stb. В master - общий функционал.

Copy link
Contributor Author

@YozhEzhi YozhEzhi Jul 6, 2016

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Т.е. положить в сабмодули наш js из shared?

const DOM = {
$btnScrollTop: $('#btn-scroll-to-top'),
$scrollWrapper: $('#scroll-wrapper'),
};

const CONFIG = {
scrollbar: {
autoReinitialise: true,
mouseWheelSpeed: 30,
},
};

const init = () => {
pluginsInit();
setupXHR();
setUpListeners();
};

// TODO: move to config module
// http://youtrack.stkmail.ru/issue/dev-748
const setupXHR = () => {
const csrfUnsafeMethod = (method) => !(/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
const token = Cookies.get('csrftoken');

$.ajaxSetup({
beforeSend: (xhr, settings) => {
if (csrfUnsafeMethod(settings.type)) {
xhr.setRequestHeader('X-CSRFToken', token);
}
},
});
};

const setUpListeners = () => {
$(window).scroll(toggleToTopBtn);
DOM.$btnScrollTop.on('click', () => $('html, body').animate({ scrollTop: 0 }, 300));
};

const pluginsInit = () => {
console.warn('Here will be plugins initialization.');
};

const enableScrollToTop = () => {
DOM.$btnScrollTop.addClass('active');
};

const disableScrollToTop = () => {
DOM.$btnScrollTop.removeClass('active');
};

/**
* Toggles to top button.
*/
const toggleToTopBtn = () => {
($(window).scrollTop() > 300) ? enableScrollToTop() : disableScrollToTop();
};

init();
})();
30 changes: 30 additions & 0 deletions front/js/shared/mediator.es6
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
/**
* We implements mediator pattern via jQuery's global events
* on empty object (it could be a window or a documents, also)
*/
const mediator = {
// Inner object, which used to bind and trigger events on it.
M: {},

/**
* Subscribes given collection of handlers to an event with a given name.
*
* @param {string} eventName
* @param handlers
*/
subscribe: (eventName, ...handlers) => {
for (const handler of handlers) {
$(mediator.M).bind(eventName, handler);
}
},

/**
* Publishes event with a given name, passes context to its subscribers.
*
* @param eventName
* @param context
*/
publish: (eventName, context) => {
$(mediator.M).trigger(eventName, context);
},
};
26 changes: 26 additions & 0 deletions front/js/shared/validator.es6
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
const validator = (() => {
const CONFIG = {
regexpPhone: /(\+\d\s|\+\d)\(?\d{3}(\)|\)\s)?-?\d{1}-?\d{1}-?(\d{1}|\d{1}\s)-?\d{1}-?(\d{1}|\d{1}\s)-?\d{1}-?\d{1}/g,
regexpEmail: /^([a-z0-9_-]+\.)*[a-z0-9_-]+@[a-z0-9_-]+(\.[a-z0-9_-]+)*\.[a-z]{2,}$/,
};

/**
* Returns boolean result of phone number validation.
* Phone number should consist of 11 numbers. Number could have whitespaces.
*
* @param data - phone number
*/
const isPhoneValid = (data) => data && !!data.match(CONFIG.regexpPhone);

/**
* Returns boolean result of email validation.
*
* @param data - email
*/
const isEmailValid = (data) => !!data.toLowerCase().match(CONFIG.regexpEmail);

return {
isPhoneValid,
isEmailValid,
};
})();
7 changes: 7 additions & 0 deletions front/js/vendors/bootstrap.min.js

Large diffs are not rendered by default.

151 changes: 151 additions & 0 deletions front/js/vendors/cookie.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,151 @@
/*!
* JavaScript Cookie v2.1.1
* https://github.com/js-cookie/js-cookie
*
* Copyright 2006, 2015 Klaus Hartl & Fagner Brack
* Released under the MIT license
*/
;(function (factory) {
if (typeof define === 'function' && define.amd) {
define(factory);
} else if (typeof exports === 'object') {
module.exports = factory();
} else {
var OldCookies = window.Cookies;
var api = window.Cookies = factory();
api.noConflict = function () {
window.Cookies = OldCookies;
return api;
};
}
}(function () {
function extend () {
var i = 0;
var result = {};
for (; i < arguments.length; i++) {
var attributes = arguments[ i ];
for (var key in attributes) {
result[key] = attributes[key];
}
}
return result;
}

function init (converter) {
function api (key, value, attributes) {
var result;
if (typeof document === 'undefined') {
return;
}

// Write

if (arguments.length > 1) {
attributes = extend({
path: '/'
}, api.defaults, attributes);

if (typeof attributes.expires === 'number') {
var expires = new Date();
expires.setMilliseconds(expires.getMilliseconds() + attributes.expires * 864e+5);
attributes.expires = expires;
}

try {
result = JSON.stringify(value);
if (/^[\{\[]/.test(result)) {
value = result;
}
} catch (e) {}

if (!converter.write) {
value = encodeURIComponent(String(value))
.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);
} else {
value = converter.write(value, key);
}

key = encodeURIComponent(String(key));
key = key.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent);
key = key.replace(/[\(\)]/g, escape);

return (document.cookie = [
key, '=', value,
attributes.expires && '; expires=' + attributes.expires.toUTCString(), // use expires attribute, max-age is not supported by IE
attributes.path && '; path=' + attributes.path,
attributes.domain && '; domain=' + attributes.domain,
attributes.secure ? '; secure' : ''
].join(''));
}

// Read

if (!key) {
result = {};
}

// To prevent the for loop in the first place assign an empty array
// in case there are no cookies at all. Also prevents odd result when
// calling "get()"
var cookies = document.cookie ? document.cookie.split('; ') : [];
var rdecode = /(%[0-9A-Z]{2})+/g;
var i = 0;

for (; i < cookies.length; i++) {
var parts = cookies[i].split('=');
var name = parts[0].replace(rdecode, decodeURIComponent);
var cookie = parts.slice(1).join('=');

if (cookie.charAt(0) === '"') {
cookie = cookie.slice(1, -1);
}

try {
cookie = converter.read ?
converter.read(cookie, name) : converter(cookie, name) ||
cookie.replace(rdecode, decodeURIComponent);

if (this.json) {
try {
cookie = JSON.parse(cookie);
} catch (e) {}
}

if (key === name) {
result = cookie;
break;
}

if (!key) {
result[name] = cookie;
}
} catch (e) {}
}

return result;
}

api.set = api;
api.get = function (key) {
return api(key);
};
api.getJSON = function () {
return api.apply({
json: true
}, [].slice.call(arguments));
};
api.defaults = {};

api.remove = function (key, attributes) {
api(key, '', extend(attributes, {
expires: -1
}));
};

api.withConverter = init;

return api;
}

return init(function () {});
}));
4 changes: 4 additions & 0 deletions front/js/vendors/jquery-2.2.4.min.js

Large diffs are not rendered by default.

41 changes: 41 additions & 0 deletions front/scss/common/_buttons.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
.btn-scroll-to-top {
@include font-smoothing;
background: $c-btn-red;
border: 2px solid $c-btn-red;
border-radius: 3px;
bottom: 20px;
box-shadow: 0 1px 0 rgba($c-white, 0.2) inset,
0 1px 2px rgba($c-black, 0.05);
color: $c-white;
cursor: pointer;
font-size: $f-size-base + 4;
font-weight: 400;
margin-bottom: 25px;
outline: none;
opacity: 0;
padding: 6px 20px;
position: fixed;
right: 0;
text-align: center;
text-decoration: none;
transition: all 0.3s ease;
z-index: 10;

&:hover,
&:focus {
background: $c-btn-red-hover;
border: 2px solid $c-btn-red-hover;
color: $c-white;
}

&:active {
box-shadow: none;
background: $c-white;
border: 2px solid $c-btn-red;
color: $c-btn-red;
}

&.active {
opacity: 1;
}
}
Loading