Controllers.prototype.manageStores = (function() {
'use strict';
return function(core, target, data, returnCB) {
var tableData = {
"columns": {
"name": {
"title": "Name",
"valueType": "string",
"sortable": true,
"width": "400"
},
"visits": {
"title": "In Store Visits",
"valueType": "number",
"sortable": true,
"width": "126",
"formatType": "locale"
},
},
"rows": null,
"maxPerPage": 10
};
var events = new EventManager(),
template = new Template(),
element = getElementFromString(template.index, {}),
table = null,
elements = null;
apiRequest("GET", "segments/inStoreVisits/byOwner", core.userID, null, init);
this.exit = exit;
this.search = search;
function init(d) {
var buttonsObj = getSimpleJSONCopy(segmentsButtonObj);
elements = new Elements(element, {
'actions': {
'selector': 'actions'
},
'edit': {
'selector': '.editButton'
},
'add': {
'selector': '.addButton'
},
'del': {},
'fresh': {}
});
elements.del = new ConfirmationButton(elements.actions.querySelector('.delete'), buttonsObj.del, delAction);
events.add(elements.edit, 'click', editAction);
events.add(elements.add, 'click', popAnchor);
initData(d);
target.appendChild(element);
if (returnCB) returnCB();
}
function initData(d) {
if (table) table.exit();
if (!!d.data && Object.keys(d.data).length) {
initTable(d.data);
showManage();
} else {
initFresh();
}
}
function initDefault(d) {
initTable(d);
showManage();
}
function initTable(d) {
table = NewMTable(element.querySelector('.manageTable'), getTableObj(d), tableUpdate);
tableUpdate();
}
function initFresh() {
hideManage();
elements.fresh = getElementFromString(template.fresh);
element.appendChild(elements.fresh);
}
function hideManage() {
element.querySelector('.manageRow').classList.add('noDisplay');
}
function showManage() {
element.querySelector('.manageRow').classList.remove('noDisplay');
}
function resetConfirmation() {
elements.del.resetState();
}
function getTableObj(o) {
var d = getSimpleJSONCopy(tableData),
rows = [];
loop(o, function(k, v) {
rows.push(new Segment(k, v));
});
d.rows = rows;
return d;
}
function Segment(id, isv) {
this.id = id;
this.name = isv.name;
this.visits = isv.visits;
}
function delAction(e) {
preventDefault(e);
var rows = table.getSelectedRows(),
ids = rows.map(function(v) {
return v.getData().id;
}),
cnt = ids.length;
ids.forEach(function(id) {
apiRequest("DELETE", "segments/inStoreVisits/byKey/" + core.userID, id, null, cb);
});
function cb() {
if (--cnt === 0) apiRequest("GET", "segments/inStoreVisits/byOwner", core.userID, null, initData);
}
ga('send', 'event', 'Stores', 'Delete', ids.join(', '));
}
function editAction(e) {
preventDefault(e);
var row = table.getSelectedRows()[0].getData();
pop('Pop!', 'Stores - Edit', '/dashboard/stores/edit/' + row.id);
}
function search(v) {
table.search('name', v.target.value);
}
function tableUpdate() {
resetConfirmation();
var rows = table.getSelectedRows(),
l = rows.length;
if (l > 0) {
elements.actions.className = '';
} else {
elements.actions.className = 'disabled';
}
if (l === 1) {
elements.edit.style.display = '';
} else {
elements.edit.style.display = 'none';
}
}
function Template() {
var header = '