react-widgetconfigurator
Version:
A React app for to generate out of box widgets
643 lines (549 loc) • 21.3 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = undefined;
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
var _class;
var _react = require("react");
var _react2 = _interopRequireDefault(_react);
var _reactstrap = require("reactstrap");
var _hero = require("./Images/hero.jpg");
var _hero2 = _interopRequireDefault(_hero);
var _aculist_logo_stacked = require("./Images/aculist_logo_stacked.jpg");
var _aculist_logo_stacked2 = _interopRequireDefault(_aculist_logo_stacked);
var _reactAutosuggest = require("react-autosuggest");
var _reactAutosuggest2 = _interopRequireDefault(_reactAutosuggest);
var _OutofBoxWidget = require("./OutofBoxWidget");
var _OutofBoxWidget2 = _interopRequireDefault(_OutofBoxWidget);
var _uniqueId = require("lodash/uniqueId");
var _uniqueId2 = _interopRequireDefault(_uniqueId);
var _findIndex = require("lodash/findIndex");
var _findIndex2 = _interopRequireDefault(_findIndex);
var _SettingsModal = require("./SettingsModal");
var _SettingsModal2 = _interopRequireDefault(_SettingsModal);
var _WidgetTabs = require("./WidgetTabs");
var _WidgetTabs2 = _interopRequireDefault(_WidgetTabs);
var _WidgetStore = require("./WidgetStore");
var _WidgetStore2 = _interopRequireDefault(_WidgetStore);
var _mobxReact = require("mobx-react");
var _ViewCart = require("./ViewCart");
var _ViewCart2 = _interopRequireDefault(_ViewCart);
var _Ad = require("./Ad.js");
var _Ad2 = _interopRequireDefault(_Ad);
var _reactAzureAdb2c = require("react-azure-adb2c");
var _reactAzureAdb2c2 = _interopRequireDefault(_reactAzureAdb2c);
var _Auth = require("./Auth");
var _Auth2 = _interopRequireDefault(_Auth);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
var test = _react2.default.createContext();
var WidgetSelection = (0, _mobxReact.observer)(_class = function (_Component) {
_inherits(WidgetSelection, _Component);
function WidgetSelection(props) {
_classCallCheck(this, WidgetSelection);
var _this = _possibleConstructorReturn(this, (WidgetSelection.__proto__ || Object.getPrototypeOf(WidgetSelection)).call(this, props));
_this.onChange = function (event, _ref) {
var newValue = _ref.newValue,
method = _ref.method;
console.log('btn random7');
_this.setState({
value: newValue
});
};
_this.ontypeChange = function (event, _ref2) {
var newValue = _ref2.newValue;
// console.log('btn random8');
_this.setState({
typeValue: newValue
});
};
_this.onnameChange = function (event, _ref3) {
var newValue = _ref3.newValue;
// console.log('btn random9');
_this.setState({
nameValue: newValue
});
};
_this.ontypeSuggestionsFetchRequested = function (_ref4) {
var value = _ref4.value;
if (_this.state.typeSuggestions != _this.getSuggestions(value)) {
_this.setState({
typeSuggestions: _this.getSuggestions(value)
});
}
};
_this.ontypeSuggestionSelected = function (event, _ref5) {
var suggestion = _ref5.suggestion;
// console.log('btn random12');
console.log('selection', suggestion.countyfilter);
var widgetselections = _this.state.widgetselections;
var kpiwidgetselections = _this.state.kpiwidgetselections;
widgetselections.geo = [suggestion.type + ":" + suggestion.name + ":" + suggestion.countyfilter];
kpiwidgetselections.geo = [suggestion.type + ":" + suggestion.name + ":" + suggestion.countyfilter];
var btnactive = _this.state.btnactive;
var selectedGeo = widgetselections.geo;
// const auth = new Auth();
console.log(_this.props.usertoken);
widgetselections.usertoken = _this.props.usertoken;
kpiwidgetselections.usertoken = _this.props.usertoken;
_this.setState({
nameValue: suggestion.type + "-" + suggestion.name, typeValue: suggestion.type + "-" + suggestion.name,
widgetselections: widgetselections, btnactive: btnactive, selectedGeo: selectedGeo, kpiwidgetselections: kpiwidgetselections
});
};
_this.ontypeSuggestionsClearRequested = function () {
if (_this.state.typeSuggestions != []) {
// this.setState({
// typeSuggestions: []
// });
}
};
_this.onnameSuggestionSelected = function (event, _ref6) {
var suggestion = _ref6.suggestion;
console.log('btn random15');
_this.setState({
typeValue: suggestion.type
});
};
_this.loadgeographynames();
_this.state = {
viewcart: false,
widgetselections: {
periodtype: "Year",
period: "10",
geo: "",
usertoken: ""
},
chartselections: {
colors: ['#fdb921', '#0033a0', '#7ED321', '#1DB2B8'], charttype: ['bar', 'spline'], download: true
},
kpiwidgetselections: { measure: "",
classtype: "",
aculogo: "",
geo: [],
displaycolumns: "",
themecolor: 'black',
title: 'false',
tokenid: 'rhone',
info: "",
measurelogo: false, usertoken: "" },
geographies: [],
selectedGeo: "",
btnactive: "1",
// btnsnapshotactive: "",
// geo: "",
value: '',
typeValue: '',
typeSuggestions: [],
nameValue: '',
nameSuggestions: [],
widgetPeriodBtns: [{
id: "periodBtnToggle-1",
isOpen: false,
isActive: true,
label: "Yearly",
value: 'Year',
options: [{
id: "pty-1",
type: "3",
value: 3,
active: false
// enabled: true,
}, {
id: "pty-2",
type: "5",
value: 5,
active: false
// enabled: true,
}, {
id: "pty-3",
type: "7",
value: 7,
active: false
// enabled: false,
}, {
id: "pty-4",
type: "10",
value: 10,
active: true
// enabled: false,
}]
}, {
label: "Quarterly",
id: "periodBtnToggle-2",
isOpen: false,
isActive: false,
value: 'Quarter',
options: [{
id: "ptq-1",
type: "4",
value: 4,
active: true
// enabled: true,
}, {
id: "ptq-2",
type: "8",
value: 8,
active: false
//enabled: true,
}, {
id: "ptq-3",
type: "12",
value: 12,
active: false
// enabled: false,
}]
}, {
label: "Monthly",
id: "periodBtnToggle-3",
isOpen: false,
isActive: false,
value: 'Month',
options: [{
id: "ptm-1",
type: "12",
value: 12,
active: true
// enabled: false,
}, {
id: "ptm-2",
type: "24",
value: 24,
active: false
// enabled: true,
}]
}]
};
_this.viewCart = _this.viewCart.bind(_this);
return _this;
}
_createClass(WidgetSelection, [{
key: "loadgeographynames",
value: function loadgeographynames() {
var _this2 = this;
fetch('https://bi.aculist.com/BIEntity/vGeography').then(function (response) {
return response.json();
}).then(function (items) {
var values = items.value.filter(function (g) {
return g.GeographyType.toLowerCase().indexOf('school') == -1;
}).map(function (val) {
return {
type: val.GeographyType.toLowerCase() == "postalcode" ? 'Zip' : val.GeographyType,
name: val.GeographyName,
countyfilter: val.CountyName
};
});
_this2.state.geographies = values;
});
}
}, {
key: "escapeRegexCharacters",
value: function escapeRegexCharacters(str) {
return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
}
}, {
key: "getSuggestions",
value: function getSuggestions(value) {
var escapedValue = this.escapeRegexCharacters(value.trim());
var regex = new RegExp('^' + escapedValue, 'i');
return this.state.geographies.filter(function (geo) {
return regex.test(geo.type) || regex.test(geo.name);
});
}
}, {
key: "getSuggestiontype",
value: function getSuggestiontype(suggestion) {
// console.log('btn random3');
return suggestion.type;
}
}, {
key: "getSuggestionname",
value: function getSuggestionname(suggestion) {
// console.log('btn random4');
return suggestion.name;
}
}, {
key: "renderSuggestion",
value: function renderSuggestion(suggestion) {
// console.log('btn random5');
return _react2.default.createElement(
"span",
null,
suggestion.type,
" - ",
suggestion.name,
" (",
suggestion.countyfilter,
")"
);
}
}, {
key: "_onTrendsSelect",
value: function _onTrendsSelect(trend) {
// console.log('btn random6');
var btnactive = trend;
this.setState({ btnactive: btnactive });
}
// onnameSuggestionsClearRequested = () => {
// console.log('btn random11');
// this.setState({
// nameSuggestions: []
// });
// };
// onnameSuggestionsFetchRequested = ({ value }) => {
// console.log('btn random13');
// this.setState({
// nameSuggestions: this.getSuggestions(value)
// });
// };
}, {
key: "_periodTypeDropdownToggle",
value: function _periodTypeDropdownToggle(btn) {
console.log('btn1');
var widgetPeriodBtnsState = this.state.widgetPeriodBtns;
var index = (0, _findIndex2.default)(widgetPeriodBtnsState, function (b) {
return b.id === btn.id;
});
widgetPeriodBtnsState[index].isOpen = !widgetPeriodBtnsState[index].isOpen;
this.setState({ widgetPeriodBtnsState: widgetPeriodBtnsState });
}
}, {
key: "_periodTypeButtonClick",
value: function _periodTypeButtonClick(btn) {
var widgetPeriodBtnsState = this.state.widgetPeriodBtns;
var widgetselections = this.state.widgetselections;
for (var b in widgetPeriodBtnsState) {
widgetPeriodBtnsState[b].isActive = false;
}
var index = (0, _findIndex2.default)(widgetPeriodBtnsState, function (b) {
return b.id === btn.id;
});
var activeTypeIndex = (0, _findIndex2.default)(widgetPeriodBtnsState[index].options, function (type) {
return type.active === true;
});
widgetselections.periodtype = widgetPeriodBtnsState[index].value;
widgetselections.period = widgetPeriodBtnsState[index].options[activeTypeIndex].type;
widgetPeriodBtnsState[index].isActive = !widgetPeriodBtnsState[index].isActive;
this.setState({ widgetPeriodBtnsState: widgetPeriodBtnsState, widgetselections: widgetselections });
}
}, {
key: "_periodTypeOptionClick",
value: function _periodTypeOptionClick(periodval, btn) {
console.log('btn3');
var widgetPeriodBtnsState = this.state.widgetPeriodBtns;
var widgetselections = this.state.widgetselections;
for (var b in widgetPeriodBtnsState) {
widgetPeriodBtnsState[b].isActive = false;
}
var parentindex = (0, _findIndex2.default)(widgetPeriodBtnsState, function (b) {
return b.id === btn.id;
});
widgetPeriodBtnsState[parentindex].isActive = !widgetPeriodBtnsState[parentindex].isActive;
var activeoptionindex = (0, _findIndex2.default)(widgetPeriodBtnsState[parentindex].options, function (o) {
return o.id === periodval.id;
});
for (var record in widgetPeriodBtnsState[parentindex].options) {
widgetPeriodBtnsState[parentindex].options[record].active = false;
}
widgetPeriodBtnsState[parentindex].options[activeoptionindex].active = !widgetPeriodBtnsState[parentindex].options[activeoptionindex].active;
widgetselections.periodtype = widgetPeriodBtnsState[parentindex].value;
widgetselections.period = widgetPeriodBtnsState[parentindex].options[activeoptionindex].type;
this.setState({ widgetPeriodBtnsState: widgetPeriodBtnsState, widgetselections: widgetselections });
}
}, {
key: "applyChildSettings",
value: function applyChildSettings(colors, charttypes) {
var chartselections = this.state.chartselections;
var charttype = this.state.charttype;
chartselections.colors = colors;
//chartselections.charttype=charttypes;
this.setState({
chartselections: chartselections
});
}
}, {
key: "viewCart",
value: function viewCart() {
console.log('test');
window.open('https://aculist-widget-assets.azureedge.net/Widgetdocumentation.docx');
// this.setState({
// viewcart:true
// });
}
}, {
key: "render",
value: function render() {
var _this3 = this;
var auth = new _Auth2.default();
// let authuser=auth.currentUser().emails[0];
var _state = this.state,
typeValue = _state.typeValue,
typeSuggestions = _state.typeSuggestions,
nameValue = _state.nameValue,
nameSuggestions = _state.nameSuggestions;
var typeInputProps = {
placeholder: "Type Geography...",
value: typeValue,
onChange: this.ontypeChange
};
// const nameInputProps = {
// placeholder: "name",
// value: nameValue,
// onChange: this.onnameChange
// };
var assets = "";
var sectionStyle = {
width: "100%",
height: "180px",
backgroundImage: "url(" + _hero2.default + ")"
};
var logoStyle = {
display: 'inline-block',
height: '52px',
width: '147px',
backgroundImage: "url('https://aculist-widget-assets.azureedge.net/aculist-logo.png')"
};
var PeriodDropdownToggleButtons = this.state.widgetPeriodBtns.map(function (btn) {
var BtnOptions = btn.options.map(function (option) {
// if(!option.enabled){
// return true;
// }
return _react2.default.createElement(
_reactstrap.DropdownItem,
{ onClick: _this3._periodTypeOptionClick.bind(_this3, option, btn), key: (0, _uniqueId2.default)("periodToggleOption_"), className: "mx-0 periodType pl-0 " + (option.active === true ? "isActive" : "") },
option.type
);
}.bind(_this3));
return _react2.default.createElement(
_reactstrap.ButtonDropdown,
{ key: (0, _uniqueId2.default)("periodToggle_"), id: btn.id, isOpen: btn.isOpen, toggle: _this3._periodTypeDropdownToggle.bind(_this3, btn) },
_react2.default.createElement(
_reactstrap.Button,
{ className: "mr-0 periodbtn", active: btn.isActive, onClick: _this3._periodTypeButtonClick.bind(_this3, btn) },
btn.label
),
_react2.default.createElement(_reactstrap.DropdownToggle, { caret: true }),
_react2.default.createElement(
_reactstrap.DropdownMenu,
null,
BtnOptions
)
);
});
var widget = this.state.widgetselections.geo !== "" ? _react2.default.createElement(_WidgetTabs2.default, { widgetselections: this.state.widgetselections, kpiwidgetselections: this.state.kpiwidgetselections, chartselections: this.state.chartselections })
// <OutofBoxWidget widgetselections={this.state.widgetselections} chartselections={this.state.chartselections}/>
: "";
var viewcart = this.state.viewcart;
var widgetdisplay =
//viewcart===true?<ViewCart/>:
_react2.default.createElement(
"div",
null,
_react2.default.createElement(
"div",
{ className: "justify-content-center optionsbar" },
_react2.default.createElement(
"div",
{ className: "cartholder px-2", onClick: this.viewCart },
_react2.default.createElement("i", { className: "fa fa-question-circle widgetcart" })
),
_react2.default.createElement(
_reactstrap.Row,
{ className: "bi-geoselection autosuggestcontainer mb-0" },
_react2.default.createElement(_reactAutosuggest2.default, {
suggestions: typeSuggestions,
onSuggestionsFetchRequested: this.ontypeSuggestionsFetchRequested,
onSuggestionsClearRequested: this.ontypeSuggestionsClearRequested,
onSuggestionSelected: this.ontypeSuggestionSelected,
getSuggestionValue: this.getSuggestiontype.bind(this),
renderSuggestion: this.renderSuggestion.bind(this),
inputProps: typeInputProps
}),
_react2.default.createElement(
_reactstrap.ButtonGroup,
null,
PeriodDropdownToggleButtons
),
_react2.default.createElement(_SettingsModal2.default, { ChildSettings: this.applyChildSettings.bind(this) })
)
),
_react2.default.createElement(
_reactstrap.Container,
{
fluid: true,
className: this.state.selectedGeo === "" ? "bi-hidden" : "px-0" },
widget
),
_react2.default.createElement(
_reactstrap.Container,
{
fluid: true,
className: this.state.selectedGeo === "" ? "px-0" : "bi-hidden" },
_react2.default.createElement(_Ad2.default, null)
)
);
return _react2.default.createElement(
"div",
{ className: "container-fluid responsive body-content px-0" },
_react2.default.createElement(
"div",
null,
_react2.default.createElement(
_reactstrap.Container,
{ style: sectionStyle, fluid: true },
_react2.default.createElement(
_reactstrap.Row,
null,
_react2.default.createElement(
_reactstrap.Col,
{ xs: "6" },
_react2.default.createElement("span", { className: "logo", style: logoStyle })
),
_react2.default.createElement(
_reactstrap.Col,
{ xs: "6", className: "text-right auth" },
"Hello, ! ",
_react2.default.createElement(
"a",
{
className: "App-link",
href: "/", onClick: function onClick() {
return auth.logout();
}
},
"Sign Out"
)
)
),
_react2.default.createElement(
_reactstrap.Row,
{ className: "text-center" },
_react2.default.createElement(
_reactstrap.Col,
{ sm: "12", md: { size: 6, offset: 3 } },
" ",
_react2.default.createElement(
"div",
{ className: "bi-bannertop1 pb-0" },
"Web Widget Configurator"
),
_react2.default.createElement(
"div",
{ className: "bi-bannerbottom1 pt-0" },
"Neighborhood trends and stats updated daily"
)
)
)
)
),
widgetdisplay
);
}
}]);
return WidgetSelection;
}(_react.Component)) || _class;
exports.default = WidgetSelection;
module.exports = exports["default"];