meraproject/content/modulebz/js/react.js

804 lines
19 KiB
JavaScript
Raw Normal View History

var initReact;
initReact = function ($html, data = {}) {
var a, date, r, time;
time = new Date().getTime();
r = function (c, x) {
var i, j, len, ref, results;
ref = $html[0].querySelectorAll(c);
results = [];
for (j = 0, len = ref.length; j < len; j++) {
i = ref[j];
results.push(ReactDOM.render(x, i));
}
return results;
};
r('.r_portfolio_list', React.createElement(PortfolioList, {
data: data.portfolio_list
}));
r('.r_news_list', React.createElement(NewsAnnotationList, {
data: data.news_annotation
}));
r('.r_service_list', React.createElement(ServiceList, {
data: data.service_list
}));
r('.r_service_icons', React.createElement(ServiceIconsList, {
data: data.service_icons
})); // SERVICES
// MONEY
r('.r_money_dash.new', React.createElement(MoneyDash, {
type: "new"
}));
for (date in data.money_data) {
a = data.money_data[date];
if (a.minus != null) {
r('.r_money_minus[data-date="' + date + '"]', React.createElement(MoneyList, {
type: "minus",
data: a.minus
}));
}
if (a.plus != null) {
r('.r_money_plus[data-date="' + date + '"]', React.createElement(MoneyList, {
type: "plus",
data: a.plus
}));
}
if (a.transfer != null) {
r('.r_money_transfer[data-date="' + date + '"]', React.createElement(MoneyList, {
type: "transfer",
data: a.transfer
}));
}
}
return console.log('React Render', new Date().getTime() - time);
};
var NewsAnnotationList;
NewsAnnotationList = class NewsAnnotationList extends React.Component {
constructor(props) {
var data, i, j, len, ref;
super(props);
data = [];
ref = this.props.data;
for (j = 0, len = ref.length; j < len; j++) {
i = ref[j];
i.text = i.annotation;
i.ratio = '2-3';
i.column = 'c-25';
data.push(i);
}
this.state = {
data: data
};
}
render() {
var i;
if (this.state.data.length > 0) {
return React.createElement("div", null, React.createElement(Title, {
title: "НОВОСТИ",
more: "/news/",
more_text: "Смотреть все новости"
}), React.createElement("div", {
className: "dashes"
}, function () {
var j, len, ref, results;
ref = this.state.data;
results = [];
for (j = 0, len = ref.length; j < len; j++) {
i = ref[j];
results.push(React.createElement(NewsAnnotationDash, {
data: i
}));
}
return results;
}.call(this)));
} else {
return null;
}
}
};
var PortfolioList;
PortfolioList = class PortfolioList extends React.Component {
constructor(props) {
var data, i, j, len, ref;
super(props);
data = [];
ref = this.props.data;
for (j = 0, len = ref.length; j < len; j++) {
i = ref[j];
i.text = i.annotation;
i.ratio = '2-3'; //i.height = 'medium'
i.column = 'c-1-3';
data.push(i);
}
this.state = {
data: data
};
}
render() {
var i;
if (this.state.data.length > 0) {
return React.createElement("div", null, React.createElement(Title, {
title: "ПОРТФОЛИО",
more: "/portfolio/",
more_text: "Смотреть все работы"
}), React.createElement("div", {
className: "dashes"
}, function () {
var j, len, ref, results;
ref = this.state.data;
results = [];
for (j = 0, len = ref.length; j < len; j++) {
i = ref[j];
results.push(React.createElement(PortfolioDash, {
data: i
}));
}
return results;
}.call(this)));
} else {
return null;
}
}
};
var ServiceIconsList;
ServiceIconsList = class ServiceIconsList extends React.Component {
constructor(props) {
super(props);
this.state = {
data: props.data
};
}
render() {
var i, selected, url1, url2;
url1 = H.parse();
if (this.state.data.length > 0) {
return React.createElement("div", {
class: "apps"
}, function () {
var j, len, ref, results;
ref = this.state.data;
results = [];
for (j = 0, len = ref.length; j < len; j++) {
i = ref[j];
url2 = H.parse(i.link);
selected = url1[0] === url2[0] ? ' selected' : '';
results.push(React.createElement("a", {
className: "app" + selected,
href: i.link,
style: {
backgroundImage: 'url(' + i.icon + ')'
},
title: i.title
}));
}
return results;
}.call(this));
} else {
return null;
}
}
};
var ServiceList;
ServiceList = class ServiceList extends React.Component {
constructor(props) {
var data, i, j, len, ref;
super(props);
data = [];
ref = this.props.data;
for (j = 0, len = ref.length; j < len; j++) {
i = ref[j];
i.text = i.annotation;
i.ratio = '2-3'; //i.height = 'small'
i.column = 'c-20';
data.push(i);
}
this.state = {
data: data
};
}
render() {
var i;
if (this.state.data.length > 0) {
return React.createElement("div", null, React.createElement(Title, {
title: "WEB-СЕРВИСЫ",
more: "/services/",
more_text: "Смотреть все проекты"
}), React.createElement("div", {
className: "dashes"
}, function () {
var j, len, ref, results;
ref = this.state.data;
results = [];
for (j = 0, len = ref.length; j < len; j++) {
i = ref[j];
results.push(React.createElement(PortfolioDash, {
data: i
}));
}
return results;
}.call(this)));
} else {
return null;
}
}
};
var NewsAnnotationDash;
NewsAnnotationDash = class NewsAnnotationDash extends React.Component {
constructor(props) {
super(props);
}
render() {
return React.createElement(Dash, {
data: this.props.data
});
}
};
var PortfolioDash;
PortfolioDash = class PortfolioDash extends React.Component {
constructor(props) {
super(props);
}
render() {
return React.createElement(Dash, {
data: this.props.data
});
}
};
var BackgroundFocus;
BackgroundFocus = class BackgroundFocus extends React.Component {
constructor(props) {
super(props);
this.state = {
visible: props.visible != null ? props.visible : props.visible = false
};
}
componentWillReceiveProps(props) {
var visible;
return this.setState(({
visible
} = props));
}
render() {
return React.createElement("div", {
className: ["background_focus", this.state.visible ? 'show' : ''].join(" "),
onClick: this.props.onClick
});
}
};
var SelectSearch;
SelectSearch = class SelectSearch extends React.Component {
constructor(props) {
var canCreateNew, i, j, len, placeholder, ref, selected;
super(props);
({
placeholder,
canCreateNew
} = props);
selected = null;
this.data = props.data;
if (props.id != null) {
ref = this.data;
for (j = 0, len = ref.length; j < len; j++) {
i = ref[j];
if (i.id === props.id) {
selected = i;
break;
}
}
}
canCreateNew = props.canCreateNew != null ? props.canCreateNew : props.canCreateNew = false;
this.state = {
selected,
placeholder,
canCreateNew,
search: false,
selectedIndex: 0,
itemCount: 0
};
this.cancel = this.cancel.bind(this);
this.search = this.search.bind(this);
this.onKey = this.onKey.bind(this);
this.renderItem = this.renderItem.bind(this);
this.input = null;
}
cancel() {
this.setState({
search: false,
selected: null
});
if (this.input) {
return this.input.value = '';
}
}
getSelected() {
return this.state.selected;
}
search(e) {
var val;
if (e != null) {
switch (e.key) {
case "ArrowUp":
case "ArrowDown":
return false;
}
}
val = this.input.value;
if (val === '') {
val = false;
}
return this.setState({
search: val,
selectedIndex: 0
});
}
setValue(selected) {
if (selected.id === '-') {
selected = null;
return this.cancel();
} else {
return this.setState({
search: false,
selected
});
}
}
getNewItem() {
return {
id: 'new',
showTitle: 'Создать «' + this.state.search + '»',
title: this.state.search
};
}
onKey(e) {
switch (e.key) {
case "Escape":
return this.cancel();
case "Enter":
//this.setValue( this.getNewItem() )
return this.setValue(this.items[this.state.selectedIndex]);
case "ArrowUp":
e.preventDefault();
this.setState({
selectedIndex: Math.max(0, this.state.selectedIndex - 1)
});
return false;
case "ArrowDown":
e.preventDefault();
this.setState({
selectedIndex: Math.min(this.itemCount - 1, this.state.selectedIndex + 1)
});
return false;
}
}
renderItem(x, index = 0) {
var classes, res;
index = parseInt(index);
res = null;
if (x.title.toLowerCase().indexOf(this.state.search.toLowerCase()) > -1) {
classes = ["search_select_li", index === this.state.selectedIndex ? "selected" : ""].join(" ");
res = React.createElement("div", {
className: classes,
onClick: this.setValue.bind(this, x)
}, x.showTitle ? x.showTitle : x.title);
}
return res;
}
render() {
var c, canCreateNew, data, i, item, items, selected, x;
({
selected,
canCreateNew
} = this.state);
items = [];
this.items = [];
if (this.state.search) {
data = this.data;
if (typeof data === 'function') {
data = data();
}
if (Array.isArray(data)) {
for (i in data) {
x = data[i];
item = this.renderItem(x, this.items.length);
if (item) {
this.items.push(x);
items.push(item);
}
}
}
if (canCreateNew) {
c = this.getNewItem();
this.items.push(c);
items.push(this.renderItem(c, items.length));
}
this.itemCount = items.length;
} //if items.length == 0
// items.push this.renderItem({id:'-',title:'«'+this.state.search+'» Не найдено'} )
return React.createElement("div", {
className: ["select_search", this.state.search ? "focus" : ""].join(" "),
onKeyDown: this.onKey
}, React.createElement(BackgroundFocus, {
visible: this.state.search !== false,
onClick: this.cancel
}), React.createElement("div", {
className: "select_search_content"
}, selected != null ? React.createElement("div", null, selected.title, React.createElement("button", {
type: "button",
onClick: this.cancel
}, "x")) : React.createElement("input", {
onKeyUp: this.search,
ref: i => {
return this.input = i;
},
placeholder: this.state.placeholder
}), this.state.search ? React.createElement("div", {
className: ["select_search_elements"].join(" ")
}, items, items.length === 0 || canCreateNew && items.length === 1 ? React.createElement("div", {
class: "not_found"
}, 'Не найдено «' + this.state.search + '»') : null) : null));
}
};
var Title;
Title = class Title extends React.Component {
constructor(props) {
super(props);
}
render() {
var a, more_title, ref;
a = null;
if (this.props.more != null && this.props.more !== '') {
more_title = (ref = this.props.more_text) != null ? ref : "Смотреть всё";
a = React.createElement("a", {
href: this.props.more,
class: "more"
}, more_title);
}
return React.createElement("div", {
className: "h"
}, this.props.title, a);
}
};
var Dash;
Dash = class Dash extends React.Component {
constructor(props) {
super(props);
this.state = {
data: props.data
};
}
render() {
var column, data, link, ref;
data = this.state.data;
link = data.link;
column = (ref = data.column) != null ? ref : '';
return React.createElement("div", {
className: "dash " + column
}, React.createElement("div", {
className: "block white"
}, React.createElement(DashImage, {
image: data.image,
ratio: data.ratio,
height: data.height,
link: link
}), React.createElement("div", {
className: "body"
}, React.createElement("div", {
className: "cont"
}, React.createElement("div", {
className: "t"
}, React.createElement(DashTitle, {
title: data.title,
link: link
}), data.text != null && data.text !== '' ? React.createElement(DashText, {
text: data.text
}) : void 0)))));
}
};
var DashImage;
DashImage = class DashImage extends React.Component {
constructor(props) {
super(props);
}
render() {
var className, link, style;
className = ["img", this.props.ratio != null ? "pb-" + this.props.ratio : void 0, this.props.height != null ? " " + this.props.height : void 0].join(" ");
style = {
backgroundImage: 'url(' + this.props.image + ')'
};
link = this.props.link;
if (this.props.image != null) {
if (link != null) {
return React.createElement("a", {
href: link,
className: className,
style: style
});
} else {
return React.createElement("div", {
className: className,
style: style
});
}
} else {
return null;
}
}
};
var DashText;
DashText = class DashText extends React.Component {
render() {
var x;
x = {
__html: this.props.text
};
return React.createElement("div", {
className: "sub_color mt-10",
dangerouslySetInnerHTML: x
});
}
};
var DashTitle;
DashTitle = class DashTitle extends React.Component {
constructor(props) {
super(props);
}
render() {
var link, title;
title = this.props.title;
link = this.props.link;
if (link) {
title = React.createElement("a", {
href: link
}, title);
}
return React.createElement("div", {
className: "h1 mb0"
}, title);
}
};
var MoneyDash;
MoneyDash = class MoneyDash extends React.Component {
constructor(props) {
super(props);
this.state = {
type: props.type != null ? props.type : props.type = 'new',
data: props.data != null ? props.data : props.data = {}
};
}
render() {
var data, type;
type = this.state.type;
data = this.state.data;
return React.createElement("div", {
className: ["money_dash", type].join(" ")
}, type === 'new' ? React.createElement(MoneyFastForm, null) : React.createElement("div", null, React.createElement("div", {
className: "title"
}, React.createElement("div", {
className: "cat"
}, "\u0417\u0430\u0440\u043F\u043B\u0430\u0442\u0430"), React.createElement("div", {
className: "value"
}, "120000")), React.createElement("div", {
className: "info"
}, React.createElement("div", {
className: "subcat"
}, "IT-\u043E\u0442\u0434\u0435\u043B"), React.createElement("div", {
className: "comment"
}, "\u041A\u043E\u043C\u043C\u0435\u043D\u0442\u0430\u0440\u0438\u0439"))));
}
};
var MoneyFastForm;
MoneyFastForm = class MoneyFastForm extends React.Component {
constructor(props) {
super(props);
this.state = {
expand: false,
values: {}
};
this.cat = null;
this.value = null;
this.comment = null;
this.checkExpand = this.checkExpand.bind(this);
this.setValue = this.setValue.bind(this);
this.cancel = this.cancel.bind(this);
}
setValue(e) {
var t, v;
t = e.target;
v = this.state.values;
v[t.getAttribute('name')] = t.value;
this.setState({
values: v
});
return this.checkExpand();
}
checkExpand() {
var c, expand, isCat, isComment, isValue; //isCat = (this.cat == document.activeElement || (c = this.state.values.cat)? && c!='')
isCat = false;
isValue = this.value === document.activeElement || (c = this.state.values.value) != null && c !== '';
isComment = this.comment === document.activeElement || (c = this.state.values.comment) != null && c !== '';
expand = isCat || isValue || isComment;
console.log(isCat, isValue, isComment);
return this.setState({
expand
});
}
cancel() {
this.cat.cancel();
this.value.value = '';
this.comment.value = '';
return this.setState({
expand: false,
values: {}
}, this.checkExpand);
}
render() {
return React.createElement("form", {
onSubmit: this.submit
}, React.createElement("div", {
className: "inputs"
}, React.createElement(SelectSearch, {
ref: i => {
return this.cat = i;
},
data: H.getData.bind(null, 'money_categories'),
placeholder: "Категория",
canCreateNew: true
}), React.createElement("input", {
ref: i => {
return this.value = i;
},
name: "value",
className: "input_value",
placeholder: "1000.00",
onKeyUp: this.setValue,
onFocus: this.checkExpand,
onBlur: this.checkExpand
}), React.createElement("input", {
ref: i => {
return this.comment = i;
},
name: "comment",
className: "input_comment",
placeholder: "\u041A\u043E\u043C\u043C\u0435\u043D\u0442\u0430\u0440\u0438\u0439",
onKeyUp: this.setValue,
onFocus: this.checkExpand,
onBlur: this.checkExpand
})), this.state.expand ? React.createElement("div", {
className: "buttons"
}, React.createElement("button", {
type: "submit",
className: ""
}, "\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C"), React.createElement("button", {
type: "button",
className: "",
onClick: this.cancel
}, "\u041E\u0442\u043C\u0435\u043D\u0430")) : null);
}
};
var MoneyList;
MoneyList = class MoneyList extends React.Component {
constructor(props) {
super(props);
this.state = {
data: props.data != null ? props.data : props.data = [],
type: props.type != null ? props.type : props.type = 'minus'
};
}
render() {
var dashes, i, type;
type = this.state.type;
dashes = [];
for (i in this.state.data) {
dashes.push(React.createElement(MoneyDash, {
type: type,
data: i
}));
}
return dashes;
}
};
//# sourceMappingURL=react.js.map