plugins: [ "themes", "json_data", "ui", "crrm", "dnd" ]
});
- ns.create_context_menus(data.is_template);
+ ns.create_context_menus(data);
$('#requirement_spec_tabs').on("tabsbeforeactivate", ns.tabs_before_activate);
+
+ ns.time_based_units = data.time_based_units;
};
// -------------------------------------------------------------------------
.bind('keypress', 'shift+return', function(event) { return ns.submit_function_block.apply(this, [ event, true ]); });
};
+ns.renumber_callback = function(accepted) {
+ console.log(accepted ? "yay :)" : "oh no :(");
+ if (!accepted)
+ return;
+
+ $.ajax({
+ url: 'controller.pl?action=RequirementSpec/renumber_sections',
+ type: 'post',
+ data: { id: $('#requirement_spec_id').val() },
+ success: kivi.eval_json_result
+ });
+};
+
+ns.renumber = function(opt) {
+ $('#rs-dialog-confirm').remove();
+
+ var text1 = kivi.t8('Re-numbering all sections and function blocks in the order they are currently shown cannot be undone.');
+ var text2 = kivi.t8('Do you really want to continue?');
+ var $dialog = $('<div id="rs-dialog-confirm"><p>' + text1 + '</p><p>' + text2 + '</p></div>').hide().appendTo('body');
+ var buttons = {};
+
+ buttons[kivi.t8('Yes')] = function() {
+ $(this).dialog('close');
+ ns.renumber_callback(true);
+ };
+
+ buttons[kivi.t8('No')] = function() {
+ $(this).dialog('close');
+ ns.renumber_callback(false);
+ };
+
+ $dialog.dialog({
+ resizable: false
+ , modal: true
+ , title: kivi.t8('Are you sure?')
+ , height: 250
+ , width: 400
+ , buttons: buttons
+ });
+};
+
// -------------------------------------------------------------------------
// ------------------------------- templates -------------------------------
// -------------------------------------------------------------------------
}).each(function(idx, elt) {
$(elt).val(order_part_name);
});
+
+ var unit = $('#quotations_and_orders_order_id').closest('td').data('unit');
+ var text = ns.time_based_units[unit] ? kivi.t8("time and effort based position") : kivi.t8("flat-rate position");
+
+ $('#quotations_and_orders_form [data-unit-column=1]').html(unit);
+ $('#quotations_and_orders_form [data-position-type-column=1]').html(text);
+};
+
+ns.assign_order_part_on_part_picked = function(event, item) {
+ if (!item || !item.unit)
+ return;
+
+ var $elt = $(this),
+ id = $elt.prop('id');
+
+ if (id == 'quotations_and_orders_order_id')
+ $elt.closest('td').data('unit', item.unit);
+
+ else {
+ var $tr = $elt.closest('tr');
+ var text = ns.time_based_units[item.unit] ? kivi.t8("time and effort based position") : kivi.t8("flat-rate position");
+
+ $tr.find('[data-unit-column=1]').html(item.unit);
+ $tr.find('[data-position-type-column=1]').html(text);
+ }
};
// -------------------------------------------------------------------------
$.download("controller.pl", data);
};
+ns.create_reqspec_html = function(key, opt) {
+ window.open("controller.pl?action=RequirementSpec/create_html&id=" + encodeURIComponent($('#requirement_spec_id').val()), '_blank');
+ return true;
+};
+
ns.copy_reqspec = function(key, opt) {
window.location.href = "controller.pl?action=RequirementSpec/new©_source_id=" + encodeURIComponent($('#requirement_spec_id').val());
return true;
ns.find_versioned_copy_id = function(clicked_elt) {
var id = $(clicked_elt).find("[name=versioned_copy_id]");
- return id ? id.val() : undefined;
+ return id.size() ? id.val() : undefined;
};
ns.disable_versioned_copy_item_commands = function(key, opt) {
ns.create_pdf_for_versioned_copy_ajax_call = function(key, opt) {
var data = {
action: "RequirementSpec/create_pdf",
- id: ns.find_versioned_copy_id(opt.$trigger)
+ id: ns.find_versioned_copy_id(opt.$trigger) || $('#requirement_spec_id').val()
};
$.download("controller.pl", data);
return true;
};
+ns.create_html_for_versioned_copy_ajax_call = function(key, opt) {
+ window.open("controller.pl?action=RequirementSpec/create_html&id=" + encodeURIComponent(ns.find_versioned_copy_id(opt.$trigger) || $('#requirement_spec_id').val()), '_blank');
+ return true;
+};
+
ns.revert_to_versioned_copy_ajax_call = function(key, opt) {
if (!confirm(kivi.t8('Do you really want to revert to this version?')))
return true;
// ----------------------------- context menus -----------------------------
// -------------------------------------------------------------------------
-ns.create_context_menus = function(is_template) {
- if (is_template) {
- var general_actions = {
+ns.create_context_menus = function(data) {
+ var general_actions;
+ if (data.is_template) {
+ general_actions = {
sep98: "---------"
, general_actions: { name: kivi.t8('Requirement spec template actions'), className: 'context-menu-heading' }
// , sep99: "---------"
, copy_reqspec: { name: kivi.t8('Copy template'), icon: "copy", callback: kivi.requirement_spec.copy_reqspec }
, delete_reqspec: { name: kivi.t8('Delete template'), icon: "delete", callback: kivi.requirement_spec.delete_reqspec }
+ , sep_paste_template: "---------"
+ , renumber: { name: kivi.t8('Renumber sections and function blocks'), icon: "renumber", callback: kivi.requirement_spec.renumber }
};
$.contextMenu({
});
} else { // if (is_template)
- var general_actions = {
+ general_actions = {
sep98: "---------"
, general_actions: { name: kivi.t8('Requirement spec actions'), className: 'context-menu-heading' }
, create_pdf: { name: kivi.t8('Create PDF'), icon: "pdf", callback: kivi.requirement_spec.create_reqspec_pdf }
+ , create_html: { name: kivi.t8('Create HTML'), icon: "html", callback: kivi.requirement_spec.create_reqspec_html }
, create_version: { name: kivi.t8('Create new version'), icon: "new", callback: kivi.requirement_spec.create_version, disabled: kivi.requirement_spec.disable_commands }
, copy_reqspec: { name: kivi.t8('Copy requirement spec'), icon: "copy", callback: kivi.requirement_spec.copy_reqspec }
, delete_reqspec: { name: kivi.t8('Delete requirement spec'), icon: "delete", callback: kivi.requirement_spec.delete_reqspec }
+ , sep_renumber: "---------"
+ , renumber: { name: kivi.t8('Renumber sections and function blocks'), icon: "renumber", callback: kivi.requirement_spec.renumber }
, sep_paste_template: "---------"
, paste_template: { name: kivi.t8('Paste template'), icon: "paste", callback: kivi.requirement_spec.paste_template }
};
+ var versioned_copy_actions = {
+ heading: { name: kivi.t8('Version actions'), className: 'context-menu-heading' }
+ , create_version_pdf: { name: kivi.t8('Create PDF'), icon: "pdf", callback: kivi.requirement_spec.create_pdf_for_versioned_copy_ajax_call }
+ , create_version_html: { name: kivi.t8('Create HTML'), icon: "html", callback: kivi.requirement_spec.create_html_for_versioned_copy_ajax_call }
+ , revert_to_version: { name: kivi.t8('Revert to version'), icon: "revert", callback: kivi.requirement_spec.revert_to_versioned_copy_ajax_call, disabled: kivi.requirement_spec.disable_versioned_copy_item_commands }
+ };
+
+ if (!data.html_template_exists) {
+ delete general_actions.create_html;
+ delete versioned_copy_actions.create_version_html;
+ }
+
$.contextMenu({
selector: '.versioned-copy-context-menu',
- items: $.extend({
- heading: { name: kivi.t8('Version actions'), className: 'context-menu-heading' }
- , create_version_pdf: { name: kivi.t8('Create PDF'), icon: "pdf", callback: kivi.requirement_spec.create_pdf_for_versioned_copy_ajax_call }
- , revert_to_version: { name: kivi.t8('Revert to version'), icon: "revert", callback: kivi.requirement_spec.revert_to_versioned_copy_ajax_call, disabled: kivi.requirement_spec.disable_versioned_copy_item_commands }
- }, general_actions)
+ items: $.extend(versioned_copy_actions, general_actions)
});
$.contextMenu({
- selector: '.basic-settings-context-menu',
+ selector: ':has(> .basic-settings-context-menu:visible)',
items: $.extend({
heading: { name: kivi.t8('Basic settings actions'), className: 'context-menu-heading' }
, edit: { name: kivi.t8('Edit'), icon: "edit", callback: kivi.requirement_spec.standard_basic_settings_ajax_call }
});
$.contextMenu({
- selector: '.edit-project-link-context-menu',
+ selector: ':has(> .edit-project-link-context-menu:visible)',
items: $.extend({
heading: { name: kivi.t8('Project link actions'), className: 'context-menu-heading' }
, save: { name: kivi.t8('Save'), icon: "save", callback: kivi.requirement_spec.standard_basic_settings_ajax_call }
});
$.contextMenu({
- selector: '.edit-basic-settings-context-menu',
+ selector: ':has(> .edit-basic-settings-context-menu:visible)',
items: $.extend({
heading: { name: kivi.t8('Basic settings actions'), className: 'context-menu-heading' }
, save: { name: kivi.t8('Save'), icon: "save", callback: kivi.requirement_spec.standard_basic_settings_ajax_call }
});
$.contextMenu({
- selector: '.time-cost-estimate-context-menu',
+ selector: ':has(> div > .time-cost-estimate-context-menu:visible)',
items: $.extend({
heading: { name: kivi.t8('Time/cost estimate actions'), className: 'context-menu-heading' }
, edit: { name: kivi.t8('Edit'), icon: "edit", callback: kivi.requirement_spec.standard_time_cost_estimate_ajax_call }
});
$.contextMenu({
- selector: '.edit-time-cost-estimate-context-menu',
+ selector: ':has(> .edit-time-cost-estimate-context-menu:visible)',
items: $.extend({
heading: { name: kivi.t8('Time/cost estimate actions'), className: 'context-menu-heading' }
, save: { name: kivi.t8('Save'), icon: "save", callback: kivi.requirement_spec.standard_time_cost_estimate_ajax_call }
});
$.contextMenu({
- selector: '.additional-parts-context-menu',
+ selector: ':has(> .additional-parts-context-menu:visible)',
items: $.extend({
heading: { name: kivi.t8('Additional articles actions'), className: 'context-menu-heading' }
, edit: { name: kivi.t8('Edit'), icon: "edit", callback: kivi.requirement_spec.standard_additional_parts_ajax_call }
};
$.contextMenu({
- selector: '.edit-additional-parts-context-menu',
+ selector: ':has(> .edit-additional-parts-context-menu:visible)',
items: $.extend({
heading: { name: kivi.t8('Additional articles actions'), className: 'context-menu-heading' }
}, additional_parts_actions, general_actions)
});
$.contextMenu({
- selector: '.quotations-and-orders-context-menu,.quotations-and-orders-order-context-menu',
+ selector: ':has(> .quotations-and-orders-context-menu:visible),.quotations-and-orders-order-context-menu',
items: $.extend({
heading: { name: kivi.t8('Quotations/Orders actions'), className: 'context-menu-heading' }
, edit_assignment: { name: kivi.t8('Edit article/section assignments'), icon: "edit", callback: ns.standard_quotation_order_ajax_call }
});
$.contextMenu({
- selector: '.quotations-and-orders-edit-assignment-context-menu',
+ selector: ':has(> .quotations-and-orders-edit-assignment-context-menu:visible)',
items: $.extend({
heading: { name: kivi.t8('Edit article/section assignments'), className: 'context-menu-heading' }
, save_assignment: { name: kivi.t8('Save'), icon: "edit", callback: ns.standard_quotation_order_ajax_call }
});
$.contextMenu({
- selector: '.quotations-and-orders-new-context-menu',
+ selector: ':has(> .quotations-and-orders-new-context-menu:visible)',
items: $.extend({
heading: { name: kivi.t8('Create new quotation/order'), className: 'context-menu-heading' }
, create: { name: kivi.t8('Create'), icon: "edit", callback: ns.standard_quotation_order_ajax_call }
});
$.contextMenu({
- selector: '.quotations-and-orders-update-context-menu',
+ selector: ':has(> .quotations-and-orders-update-context-menu:visible)',
items: $.extend({
heading: { name: kivi.t8('Update quotation/order'), className: 'context-menu-heading' }
, do_update: { name: kivi.t8('Update'), icon: "update", callback: ns.standard_quotation_order_ajax_call }
};
}); // end of namespace(...., function() {...
+
+function local_reinit_widgets() {
+ kivi.run_once_for('#quotations_and_orders_order_id,[name="sections[].order_part_id"]', "assign_order_part_on_part_picked", function(elt) {
+ $(elt).on('set_item:PartPicker', kivi.requirement_spec.assign_order_part_on_part_picked);
+ });
+}