president/public/js/manager/attributes.js

500 lines
14 KiB
JavaScript
Executable File

var openAttributes = {};
$(document).on('click', '.attribute_header', function() {
var a = $(this);
var att = a.attr('att');
var uuid = a.attr('uuid');
var contents = $('.attribute_contents[att="' + att + '"][uuid="' + uuid + '"]');
var app = contents.attr('app');
var container = $('.attribute[uuid="' + uuid + '"][att="' + att + '"]');
var state;
if (contents.is(':visible')) {
contents.hide();
state = 'closed';
}
else {
contents.show();
state = 'open';
}
if (!openAttributes[app]) { openAttributes[app] = {}; }
openAttributes[app][uuid] = state;
});
function openAttributeReopener(app) {
if (openAttributes[app]) {
$('.appointment[app="' + app + '"]').find('.attribute_contents').each(function(i,v) {
var uuid = $(v).attr('uuid');
if (openAttributes[app][uuid] == 'open') {
$(v).show();
}
else if (uuid != 'new') {
$(v).hide();
}
});
}
}
$(document).on('change', '.att', function() {
var att = $(this).closest('.attribute');
var attribute = att.attr('att');
var wind = att.closest('.appointment');
var app = wind.attr('app');
var uuid = att.attr('uuid') || 'new';
var name = att.find('.name').val();
var cost = att.find('.cost').val();
var markup = att.find('.markup').val();
var price = att.find('.price').val();
var discount = att.find('.discount').val();
var description = att.find('.description').val();
var delay_start = att.find('.delay_start').val();
var delay_stop = att.find('.delay_stop').val();
var manufacturer = att.find('.manufacturer').val() || wind.find('.appointment_setting[setting="manufacturer"]').val();
var def = att.find('.def').prop('checked');
if (def == true) {
def = 'on';
$('.attribute[app="' + app + '"]').each(function(i,v) {
if ($(v).attr('uuid') != uuid) {
$(v).find('.def').prop('checked', false);
}
});
}
var save_app = att.find('.save_app').prop('checked');
if (save_app == true) { save_app = 'on'; }
var quantity = att.find('.quantity').val();
var unit = att.find('.unit').val();
console.log(description);
var category = wind.find('.configure_input[setting="category"]').val();
var characteristics = "";
var timestamp = Date.now();
$.ajax({
url: '/manager/store/' + attribute + '/save',
type: 'POST',
data: {
uuid: uuid,
name: name,
cost: cost,
price: price,
markup: markup,
discount: discount,
app: app,
description: description,
characteristics: characteristics,
manufacturer: manufacturer,
timestamp: timestamp,
def: def,
save_app: save_app,
quantity: quantity,
unit: unit,
manufacturer: manufacturer,
delay_start: delay_start,
delay_stop: delay_stop
},
success: function(response) {
if (uuid == 'new') {
wind.find('.' + attribute + '_list').replaceWith(response.template);
}
else {
// configurationReloader(app);
var t = $(response.template).find('.attribute[uuid="' + uuid + '"]').html();
var st = $('.appointment_contents[app="' + app + '"]').scrollTop();
wind.find('.attribute[uuid="' + uuid + '"]').html(t);
$('.appointment_contents[app="' + app + '"]').scrollTop(st);
openAttributeReopener(app);
}
}
});
});
$(document).on('change', '.option_category_picker', function() {
});
$(document).on('change', '.char', function(e) {
var timestamp = Date.now();
var char = $(this);
var type = char.attr('type');
var char_input = char.attr('char_input');
var value = char.val();
if (char.attr('type') == 'checkbox') {
if (char.prop('checked') == true) {
value = 'on';
}
else {
value = 'off';
}
}
var ac = char.closest('.attribute_characteristic');
var att = ac.attr('att');
var att_uuid = ac.attr('att_uuid');
var uuid = ac.attr('uuid');
var container = char.closest('.appointment');
var app = container.attr('app');
$.ajax({
url: '/manager/store/attribute_characteristic_setter',
type: 'POST',
data: { app: app, timestamp: timestamp, uuid: uuid, att: att, att_uuid: att_uuid, input: char_input, value: value, type: type },
success: function(response) {
ac.attr('uuid', response.uuid);
var t = $(response.template).find('.attribute[uuid="' + att_uuid + '"]').html();
console.log(response);
var st = $('.appointment_contents[app="' + app + '"]').scrollTop();
container.find('.attribute[uuid="' + att_uuid + '"]').html(t);
$('.appointment_contents[app="' + app + '"]').scrollTop(st);
console.log(response.template);
openAttributeReopener(app);
// configurationReloader(app);
}
});
});
$(document).on('click', '.delete_characteristic', function() {
var a = $(this);
var attr = $(this).closest('.attribute_characteristic');
var uuid = attr.attr('uuid');
var att = attr.attr('att');
var att_uuid = attr.attr('att_uuid');
if (a.attr('armed') == 'yes') {
$.ajax({
url: '/manager/store/characteristic_delete',
type: 'POST',
data: { uuid: uuid, att: att, att_uuid: att_uuid },
success: function(response) {
var ac = $('.attribute_characteristic[uuid="' + response.uuid + '"]');
ac.next().remove();
ac.remove();
}
});
}
else {
a.attr('armed', 'yes');
var bgcolor = a.css('background-color');
a.css({'background-color': 'red' });
setTimeout(function() {
a.css({'background-color': bgcolor });
a.attr('armed', 'no');
},2000);
}
});
$(document).on('click', '.delete_attribute', function() {
var a = $(this);
var uuid = a.attr('uuid');
var att = a.attr('att');
var timestamp = Date.now();
if (a.attr('armed') == 'yes') {
$.ajax({
url: '/manager/store/attribute_delete',
type: 'POST',
data: { uuid: uuid, att: att, timestamp: timestamp },
success: function(response) {
$('.attribute[uuid="' + uuid + '"]').remove();
}
});
}
else {
a.attr('armed', 'yes');
var bgcolor = a.css('background-color');
a.css({'background-color': 'red' });
setTimeout(function() {
a.css({'background-color': bgcolor });
a.attr('armed', 'no');
},2000);
}
});
$(document).on('change', '.appointment_model_selector, .appointment_model_quantity, .appointment_model_unit', function() {
var cause = 'toggle';
if ($(this).hasClass('appointment_model_quantity')) {
cause = 'quantity';
}
if ($(this).hasClass('appointment_model_unit')) {
cause = 'unit';
}
if ($(this).hasClass('appointment_model_selector')) {
cause = 'model';
}
var model_dom = $(this).closest('.appointment_model_selector_container').find('.appointment_model_selector');
var unit_dom = $(this).closest('.appointment_model_selector_container').find('.appointment_model_unit');
var quantity_dom = $(this).closest('.appointment_model_selector_container').find('.appointment_model_quantity');
var uuid = model_dom.val();
var unit = unit_dom.val();
var source = 'list';
if (model_dom.hasClass('purchase_input')) {
source = 'transaction';
}
var app = $(this).closest('.appointment').attr('app');
var appt_uuid = $(this).closest('.appointment_detail').attr('uuid');
var quantity = quantity_dom.val();
var timestamp = Date.now();
var data = { timestamp: timestamp, uuid: uuid, appt_uuid: appt_uuid, app: app, source: source, cause: cause, quantity: quantity, unit: unit };
console.log(data);
$.ajax({
url: '/manager/store/appointment_model_selector',
type: 'POST',
data: data,
success: function(response) {
console.log(response);
}
});
});
$(document).on('change', '.appointment_model_packaging', function() {
var pack = $(this);
var sp = $(this).find('[uuid="' + pack.val() + '"]');
var pc = [ 'quantity', 'length', 'width', 'weight', 'each', 'height' ];
$.each(pc, function(i,v) {
console.log(i + ' ' + sp.attr(v));
pack.closest('.appointment_model_selector_container').find('[attribute="' + v + '"]').val(sp.attr(v));
});
});
$(document).on('click', '.appointment_option', function(e) {
if ($(e.target).hasClass('appointment_option_quantity') || $(e.target).hasClass('appointment_option_unit') || $(e.target).hasClass('appointment_option_name')) {
console.log('has it');
return;
}
var uuid = $(this).attr('uuid');
if ($(this).attr('source') == 'list') {
appointmentOptionUpdater($(this),'click');
}
else {
if ($(this).attr('select') == 'on') {
$(this).attr('select', 'off');
}
else {
$(this).attr('select', 'on');
}
}
});
function appointmentOptionUpdater(o,source) {
var ad = o.closest('.appointment_detail');
var appt_uuid = ad.attr('uuid');
var uuid = o.attr('uuid');
var ao = ad.find('.appointment_option[uuid="' + uuid + '"][appt_uuid="' + appt_uuid + '"]');
var app = ao.closest('.appointment').attr('app');
var timestamp = Date.now();
var name = ao.attr('name');
var quantity = ao.find('.appointment_option_quantity').val() || 1;
var unit = ao.find('.appointment_option_unit').val();
var select = ao.attr('select');
if (source == 'click') {
if (select == 'on') {
select = 'off';
}
else {
select = 'on';
}
}
var all_options = [];
ad.find('.appointment_option', function(i,v) {
if ($(v).attr('select') == 'on') {
all_options.push({ uuid: $(v).attr('uuid'), quantity: $(v).find('.appointment_option_quantity').val() });
}
});
all_options = JSON.stringify(all_options);
$.ajax({
url: '/manager/store/appointment_option_selector',
type: 'POST',
data: {
all_options: all_options,
timestamp: timestamp,
uuid: uuid,
app: app,
appt_uuid: appt_uuid,
quantity: quantity,
select: select,
unit: unit
},
success: function(response) {
console.log(response);
ad.find('.appointment_option[appt_uuid="' + appt_uuid + '"]').attr('select', 'off');
$.each(response, function(i,v) {
$('.appointment_option[appt_uuid="' + appt_uuid + '"][uuid="' + v['uuid'] + '"]').attr('select', 'on');
});
openAttributeReopener(app);
}
});
}
$(document).on('change', '.appointment_option_quantity, .appointment_option_unit', function() {
var uuid = $(this).attr('uuid');
appointmentOptionUpdater($(this));
});
$(document).on('change', '.appointment_status_selector', function() {
var status = $(this).val();
var app = $(this).attr('app');
var appt_uuid = $(this).attr('uuid');
var timestamp = Date.now();
$.ajax({
url: '/manager/transaction/status',
type: 'POST',
data: { app: app, status: status, appt_uuid: appt_uuid, timestamp: timestamp },
success: function(response) {
console.log(response);
}
});
});
$(document).on('change', '.appointment_markup', function() {
var app = $(this).closest('.appointment').attr('app');
var value = $(this).val();
settingSetter({ 'app': app, 'setting': 'markup', 'value': value });
});
$(document).on('change', '.appointment_setting[setting="manufacturer"]', function() {
var app = $(this).attr('app') || $(this).closest('.appointment').attr('app') || $(this).closest('.wind').attr('app');
configurationReloader(app);
});
var att_h;
$(document).on('click', '.attribute_upload_button', function() {
var att = $(this).attr('att');
var uuid = $(this).attr('uuid');
var m = $('.attribute_upload_input[uuid="' + uuid + '"][att="' + att + '"]');
att_h = $('.attribute_upload_container[att="' + att + '"][uuid="' + uuid + '"]').html();
m.trigger('click');
});
$(document).on('change', '.attribute_upload_input', function() {
var att = $(this).attr('att');
var uuid = $(this).attr('uuid');
var m = $('.attribute_upload_input[uuid="' + uuid + '"][att="' + att + '"]');
if (m[0]['files'].length > 0) {
$('.attribute_upload[uuid="' + uuid + '"][att="' + att + '"]').trigger('submit');
}
});
$(document).on('submit', ".attribute_upload", function(e) {
var att = $(this).attr('att');
var uuid = $(this).attr('uuid');
var app = $(this).attr('app');
e.preventDefault();
var mui = $('.attribute_upload_input[uuid="' + uuid + '"][att="' + att + '"]');
console.log(mui);
var formData = new FormData(this);
formData.delete('timestamp');
formData.append('timestamp', Date.now());
formData.append('attribute', att);
formData.append('uuid', uuid);
formData.append('app', app);
console.log(formData);
console.log(att_h);
$.ajax({
url: '/manager/configure/attribute_upload',
type: 'POST',
data: formData,
success: function (response) {
$('.attribute_upload_button[att="' + att + '"][uuid="' + uuid + '"]').attr('src', response);
att_h = undefined;
formData.delete('fileupload');
$('.attribute_upload[att="' + att + '"][uuid="' + uuid + '"]').remove();
$('.attribute_upload_container[att="' + att + '"][uuid="' + uuid + '"]').html(att_h);
configurationReloader(app);
openAttributeReopener(app);
},
cache: false,
contentType: false,
processData: false
});
});
$(document).on('click', '.attribute_copy', function() {
var a = $(this);
var attribute = a.closest('.attribute');
var uuid = attribute.attr('uuid');
var att = attribute.attr('att');
var app = attribute.attr('app');
var acsc = attribute.find('.attribute_copy_selection_container');
var aca = attribute.find('.attribute_copy_app');
if (aca.is(':visible')) {
acsc.hide();
}
else {
acsc.show();
}
});
$(document).on('click', '.attribute_copy_app_save', function() {
var a = $(this);
var attribute = a.closest('.attribute');
var uuid = attribute.attr('uuid');
var att = attribute.attr('att');
var aca = attribute.find('.attribute_copy_app')
var app = aca.val();
var wind = $('.wind[app="' + app + '"]');
var pre_app = attribute.attr('app');
$.ajax({
url: '/manager/configure/attribute_copy',
type: 'POST',
data: { uuid: uuid, att: att, app: app, pre_app: pre_app },
success: function(response) {
var t = $(response.template).find('.attribute[uuid="' + response.attribute.uuid + '"]').html();
var st = $('.appointment_contents[app="' + response.attribute.app + '"]').scrollTop();
var existing = wind.find('.attribute[uuid="' + response.attribute.uuid + '"]');
if (existing.length > 0) {
existing.html(t);
}
else {
wind.find('.' + att + '_list.' + att + '_attributes').replaceWith(response.template);
}
$('.appointment_contents[app="' + response.attribute.app + '"]').scrollTop(st);
openAttributeReopener(response.attribute.app);
aca.val('').hide();
a.addClass('superactive');
setTimeout(function() {
a.removeClass('superactive');
a.hide();
},2000);
}
});
});
$(document).on('change', '.appointment_model_migration', function() {
var att = $(this).attr('att');
var matt = $(this).val();
var attribute = $(this).closest('.attribute');
var app = attribute.attr('app');
var uuid = attribute.attr('uuid');
$.ajax({
url: '/manager/store/appointment_model_migration',
type: 'POST',
data: { att: att, matt: matt, uuid: uuid, app: app },
success: function(response) {
var parent = attribute.closest('.appointment');
var container = parent.find('.re_register');
container.html(response.html);
openAttributeReopener(app);
}
});
});